-165 (-5.48 % of base) - System.Net.Http.SocksHelper+d__13:MoveNext():this
; Assembly listing for method System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13:MoveNext():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 49 single block inlinees; 22 inlinees without PGO data
+; 0 inlinees with PGO data; 49 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 52, 49 ) byref -> [rbp-0x118] this EH-live single-def
-; V01 loc0 [V01,T08] ( 12, 11.75) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V00 this [V00,T00] ( 52, 49 ) byref -> [rbp-0x110] this EH-live single-def
+; V01 loc0 [V01,T05] ( 12, 11.75) int -> [rbp-0x24] do-not-enreg[Z] EH-live
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.NetworkCredential>
; V03 loc2 [V03 ] ( 30, 30 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
-; V04 loc3 [V04,T11] ( 9, 9 ) struct (16) [rbp-0x48] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask>
+; V04 loc3 [V04,T07] ( 9, 9 ) struct (16) [rbp-0x48] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T18] ( 3, 6 ) ref -> rbx class-hnd single-def "dup spill" <System.Net.ICredentials>
+; V08 tmp1 [V08,T14] ( 3, 6 ) ref -> rbx class-hnd single-def "dup spill" <System.Net.ICredentials>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Uri>
-; V11 tmp4 [V11,T19] ( 5, 5 ) ref -> rbx
-; V12 tmp5 [V12,T15] ( 5, 6 ) ref -> rax single-def "spilling varStr"
+; V11 tmp4 [V11,T16] ( 5, 5 ) ref -> rbx
+; V12 tmp5 [V12,T11] ( 5, 6 ) ref -> rax single-def "spilling varStr"
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V14 tmp7 [V14,T16] ( 5, 6 ) ref -> rax single-def "spilling varStr"
+; V14 tmp7 [V14,T12] ( 5, 6 ) ref -> rax single-def "spilling varStr"
;* V15 tmp8 [V15 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V16 tmp9 [V16,T17] ( 5, 6 ) ref -> rax single-def "spilling varStr"
+; V16 tmp9 [V16,T13] ( 5, 6 ) ref -> rax single-def "spilling varStr"
;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V18 tmp11 [V18 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V24 tmp17 [V24,T31] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <System.Action`1[System.Object]>
-; V25 tmp18 [V25,T32] ( 2, 4 ) byref -> rbx single-def "impSpillLclRefs"
+; V24 tmp17 [V24,T27] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+; V25 tmp18 [V25,T28] ( 2, 4 ) byref -> rbx single-def "impSpillLclRefs"
;* V26 tmp19 [V26 ] ( 0, 0 ) byref -> zero-ref single-def
;* V27 tmp20 [V27 ] ( 0, 0 ) byref -> zero-ref single-def
-; V28 tmp21 [V28,T20] ( 5, 5 ) ref -> r15
-; V29 tmp22 [V29,T10] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
-; V30 tmp23 [V30,T83] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V31 tmp24 [V31,T33] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Net.Http.SocksHelper+<>c>
-; V32 tmp25 [V32,T34] ( 2, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V28 tmp21 [V28,T17] ( 5, 5 ) ref -> r15
+; V29 tmp22 [V29,T06] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
+; V30 tmp23 [V30,T74] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V31 tmp24 [V31,T29] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Net.Http.SocksHelper+<>c>
+; V32 tmp25 [V32,T30] ( 2, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.IO.Stream>
;* V33 tmp26 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration>
-; V34 tmp27 [V34,T57] ( 3, 3 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
-;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref
+; V34 tmp27 [V34,T52] ( 3, 3 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationTokenRegistration>
;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref
;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref
;* V40 tmp33 [V40 ] ( 0, 0 ) ref -> zero-ref
;* V41 tmp34 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp35 [V42 ] ( 0, 0 ) ref -> zero-ref
;* V43 tmp36 [V43 ] ( 0, 0 ) ref -> zero-ref
;* V44 tmp37 [V44 ] ( 0, 0 ) ref -> zero-ref
;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref
;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref
;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref
;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref
;* V50 tmp43 [V50 ] ( 0, 0 ) ref -> zero-ref
-;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V52 tmp45 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationTokenRegistration>
+;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref
+;* V52 tmp45 [V52 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask>
;* V55 tmp48 [V55 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
-; V56 tmp49 [V56,T35] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
-; V57 tmp50 [V57,T48] ( 2, 4 ) short -> rdi "Inlining Arg"
+; V56 tmp49 [V56,T31] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
+; V57 tmp50 [V57,T44] ( 2, 4 ) short -> rdi "Inlining Arg"
;* V58 tmp51 [V58 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
;* V59 tmp52 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp53 [V60,T22] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V61 tmp54 [V61,T58] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V60 tmp53 [V60,T18] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V61 tmp54 [V61,T53] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V62 tmp55 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V64 tmp57 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V65 tmp58 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V66 tmp59 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V67 tmp60 [V67,T23] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V68 tmp61 [V68,T24] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V67 tmp60 [V67,T19] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V68 tmp61 [V68,T20] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
; V70 tmp63 [V70 ] ( 11, 11 ) struct (96) [rbp-0xA8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15>
-; V71 tmp64 [V71,T36] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V72 tmp65 [V72,T37] ( 2, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
-; V73 tmp66 [V73,T49] ( 2, 4 ) int -> rdx "Inlining Arg"
-; V74 tmp67 [V74,T50] ( 2, 4 ) ubyte -> rsi "Inlining Arg"
+; V71 tmp64 [V71,T32] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V72 tmp65 [V72,T33] ( 2, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
+; V73 tmp66 [V73,T45] ( 2, 4 ) int -> rdx "Inlining Arg"
+; V74 tmp67 [V74,T46] ( 2, 4 ) ubyte -> rsi "Inlining Arg"
;* V75 tmp68 [V75 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
;* V76 tmp69 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder>
;* V77 tmp70 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V78 tmp71 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask>
;* V79 tmp72 [V79 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
-; V80 tmp73 [V80,T38] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
-; V81 tmp74 [V81,T51] ( 2, 4 ) short -> rdi "Inlining Arg"
+; V80 tmp73 [V80,T34] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
+; V81 tmp74 [V81,T47] ( 2, 4 ) short -> rdi "Inlining Arg"
;* V82 tmp75 [V82 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
;* V83 tmp76 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V84 tmp77 [V84,T25] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V85 tmp78 [V85,T59] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V84 tmp77 [V84,T21] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V85 tmp78 [V85,T54] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V86 tmp79 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
;* V87 tmp80 [V87 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V88 tmp81 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V89 tmp82 [V89 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V90 tmp83 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V91 tmp84 [V91,T26] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V92 tmp85 [V92,T27] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V91 tmp84 [V91,T22] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V92 tmp85 [V92,T23] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V93 tmp86 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
; V94 tmp87 [V94 ] ( 11, 11 ) struct (96) [rbp-0x108] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15>
-; V95 tmp88 [V95,T39] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V96 tmp89 [V96,T40] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
-; V97 tmp90 [V97,T52] ( 2, 4 ) int -> rcx "Inlining Arg"
-; V98 tmp91 [V98,T53] ( 2, 4 ) ubyte -> rsi "Inlining Arg"
+; V95 tmp88 [V95,T35] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V96 tmp89 [V96,T36] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V97 tmp90 [V97,T48] ( 2, 4 ) int -> rcx "Inlining Arg"
+; V98 tmp91 [V98,T49] ( 2, 4 ) ubyte -> rsi "Inlining Arg"
;* V99 tmp92 [V99 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
;* V100 tmp93 [V100 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder>
;* V101 tmp94 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V102 tmp95 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask>
;* V103 tmp96 [V103 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
-; V104 tmp97 [V104,T41] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
-; V105 tmp98 [V105,T54] ( 2, 4 ) short -> rdi "Inlining Arg"
+; V104 tmp97 [V104,T37] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Object>
+; V105 tmp98 [V105,T50] ( 2, 4 ) short -> rdi "Inlining Arg"
;* V106 tmp99 [V106 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
;* V107 tmp100 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V108 tmp101 [V108,T28] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V109 tmp102 [V109,T60] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V108 tmp101 [V108,T24] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V109 tmp102 [V109,T55] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V110 tmp103 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
;* V111 tmp104 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V112 tmp105 [V112 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V113 tmp106 [V113 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V114 tmp107 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V115 tmp108 [V115,T29] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V116 tmp109 [V116,T30] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V115 tmp108 [V115,T25] ( 4, 4 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V116 tmp109 [V116,T26] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V117 tmp110 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
-; V118 tmp111 [V118,T04] ( 8, 16 ) byref -> rbx "Inlining Arg"
-; V119 tmp112 [V119,T06] ( 14, 14 ) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
-; V120 tmp113 [V120,T14] ( 6, 6 ) ref -> r13 class-hnd "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
+; V118 tmp111 [V118,T01] ( 8, 16 ) byref -> rbx "Inlining Arg"
+; V119 tmp112 [V119,T03] ( 14, 14 ) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V120 tmp113 [V120,T10] ( 6, 6 ) ref -> r13 class-hnd "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
;* V121 tmp114 [V121 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V122 tmp115 [V122,T13] ( 4, 8 ) long -> registers "Inlining Arg"
-; V123 tmp116 [V123,T12] ( 4, 8 ) byref -> r15 single-def "Inlining Arg"
+; V122 tmp115 [V122,T09] ( 4, 8 ) long -> registers "Inlining Arg"
+; V123 tmp116 [V123,T08] ( 4, 8 ) byref -> r15 single-def "Inlining Arg"
;* V124 tmp117 [V124 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V125 tmp118 [V125,T03] ( 10, 20 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-; V126 tmp119 [V126,T55] ( 2, 4 ) struct ( 8) r13 "Inlining Arg" <System.Threading.Tasks.VoidTaskResult>
-; V127 tmp120 [V127,T07] ( 6, 12 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V125 tmp118 [V125,T15] ( 3, 6 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V126 tmp119 [V126,T69] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "Inlining Arg" <System.Threading.Tasks.VoidTaskResult>
+; V127 tmp120 [V127,T04] ( 6, 12 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V128 tmp121 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V129 tmp122 [V129,T56] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V129 tmp122 [V129,T51] ( 2, 4 ) int -> rbx "Inlining Arg"
;* V130 tmp123 [V130 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V131 tmp124 [V131 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V132 tmp125 [V132,T78] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V133 tmp126 [V133,T61] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V134 tmp127 [V134,T74] ( 2, 2 ) ubyte -> rdi "Inline return value spill temp"
-; V135 tmp128 [V135,T21] ( 5, 5 ) int -> [rbp-0x10C] spill-single-def "Inline stloc first use temp"
-; V136 tmp129 [V136,T66] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
-; V137 tmp130 [V137,T01] ( 6, 41 ) int -> [rbp-0x110] "Inline stloc first use temp"
-; V138 tmp131 [V138,T02] ( 3, 24 ) int -> rax "Inline stloc first use temp"
-; V139 tmp132 [V139,T62] ( 3, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Threading.ManualResetEventSlim>
-; V140 tmp133 [V140,T63] ( 3, 3 ) ref -> rax single-def "field V33._node (fldOffset=0x0)" P-INDEP
-; V141 tmp134 [V141,T67] ( 3, 3 ) long -> rbx "field V33._id (fldOffset=0x8)" P-INDEP
-;* V142 tmp135 [V142 ] ( 0, 0 ) ref -> zero-ref "field V51._node (fldOffset=0x0)" P-DEP
-;* V143 tmp136 [V143 ] ( 0, 0 ) long -> zero-ref "field V51._id (fldOffset=0x8)" P-DEP
-;* V144 tmp137 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._node (fldOffset=0x0)" P-INDEP
-;* V145 tmp138 [V145 ] ( 0, 0 ) long -> zero-ref "field V52._id (fldOffset=0x8)" P-INDEP
-; V146 tmp139 [V146,T69] ( 2, 2 ) ref -> rsi single-def "field V53._obj (fldOffset=0x0)" P-INDEP
-; V147 tmp140 [V147,T75] ( 2, 2 ) short -> rdi "field V53._token (fldOffset=0x8)" P-INDEP
-;* V148 tmp141 [V148,T79] ( 0, 0 ) ubyte -> zero-ref "field V53._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-;* V149 tmp142 [V149 ] ( 0, 0 ) ref -> zero-ref "field V54._obj (fldOffset=0x0)" P-INDEP
-;* V150 tmp143 [V150 ] ( 0, 0 ) short -> zero-ref "field V54._token (fldOffset=0x8)" P-INDEP
-;* V151 tmp144 [V151 ] ( 0, 0 ) ubyte -> zero-ref "field V54._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V152 tmp145 [V152,T70] ( 2, 2 ) ref -> r8 single-def "field V75._source (fldOffset=0x0)" P-INDEP
-;* V153 tmp146 [V153 ] ( 0, 0 ) ref -> zero-ref single-def "field V76.m_task (fldOffset=0x0)" P-INDEP
-; V154 tmp147 [V154,T71] ( 2, 2 ) ref -> rsi single-def "field V77._obj (fldOffset=0x0)" P-INDEP
-; V155 tmp148 [V155,T76] ( 2, 2 ) short -> rdi "field V77._token (fldOffset=0x8)" P-INDEP
-;* V156 tmp149 [V156,T80] ( 0, 0 ) ubyte -> zero-ref "field V77._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-;* V157 tmp150 [V157 ] ( 0, 0 ) ref -> zero-ref "field V78._obj (fldOffset=0x0)" P-INDEP
-;* V158 tmp151 [V158 ] ( 0, 0 ) short -> zero-ref "field V78._token (fldOffset=0x8)" P-INDEP
-;* V159 tmp152 [V159 ] ( 0, 0 ) ubyte -> zero-ref "field V78._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V160 tmp153 [V160,T72] ( 2, 2 ) ref -> r8 single-def "field V99._source (fldOffset=0x0)" P-INDEP
-;* V161 tmp154 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V100.m_task (fldOffset=0x0)" P-INDEP
-; V162 tmp155 [V162,T73] ( 2, 2 ) ref -> rsi single-def "field V101._obj (fldOffset=0x0)" P-INDEP
-; V163 tmp156 [V163,T77] ( 2, 2 ) short -> rdi "field V101._token (fldOffset=0x8)" P-INDEP
-;* V164 tmp157 [V164,T81] ( 0, 0 ) ubyte -> zero-ref "field V101._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-;* V165 tmp158 [V165 ] ( 0, 0 ) ref -> zero-ref "field V102._obj (fldOffset=0x0)" P-INDEP
-;* V166 tmp159 [V166 ] ( 0, 0 ) short -> zero-ref "field V102._token (fldOffset=0x8)" P-INDEP
-;* V167 tmp160 [V167 ] ( 0, 0 ) ubyte -> zero-ref "field V102._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V168 tmp161 [V168,T42] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V169 tmp162 [V169,T43] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V170 tmp163 [V170,T44] ( 2, 4 ) ref -> r15 single-def "argument with side effect"
-; V171 tmp164 [V171,T45] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V172 tmp165 [V172,T46] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V173 tmp166 [V173,T47] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V174 PSPSym [V174,T82] ( 1, 1 ) long -> [rbp-0x128] do-not-enreg[V] "PSPSym"
-; V175 cse0 [V175,T64] ( 3, 3 ) ref -> rbx "CSE #11: conservative"
-; V176 cse1 [V176,T68] ( 3, 3 ) int -> rsi "CSE #12: conservative"
-; V177 cse2 [V177,T65] ( 3, 3 ) ref -> rdi "CSE #02: conservative"
-; V178 cse3 [V178,T09] ( 4, 11 ) byref -> rbx "CSE #13: aggressive"
-; V179 cse4 [V179,T05] ( 15, 15 ) byref -> [rbp-0x120] multi-def "CSE #03: aggressive"
+; V131 tmp124 [V131,T56] ( 3, 3 ) ref -> rsi single-def "field V33._node (fldOffset=0x0)" P-INDEP
+; V132 tmp125 [V132,T59] ( 3, 3 ) long -> r13 "field V33._id (fldOffset=0x8)" P-INDEP
+;* V133 tmp126 [V133 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._node (fldOffset=0x0)" P-INDEP
+;* V134 tmp127 [V134 ] ( 0, 0 ) long -> zero-ref "field V35._id (fldOffset=0x8)" P-INDEP
+;* V135 tmp128 [V135 ] ( 0, 0 ) ref -> zero-ref "field V52._node (fldOffset=0x0)" P-DEP
+;* V136 tmp129 [V136 ] ( 0, 0 ) long -> zero-ref "field V52._id (fldOffset=0x8)" P-DEP
+; V137 tmp130 [V137,T61] ( 2, 2 ) ref -> rsi single-def "field V53._obj (fldOffset=0x0)" P-INDEP
+; V138 tmp131 [V138,T66] ( 2, 2 ) short -> rdi "field V53._token (fldOffset=0x8)" P-INDEP
+;* V139 tmp132 [V139,T70] ( 0, 0 ) ubyte -> zero-ref "field V53._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+;* V140 tmp133 [V140 ] ( 0, 0 ) ref -> zero-ref "field V54._obj (fldOffset=0x0)" P-INDEP
+;* V141 tmp134 [V141 ] ( 0, 0 ) short -> zero-ref "field V54._token (fldOffset=0x8)" P-INDEP
+;* V142 tmp135 [V142 ] ( 0, 0 ) ubyte -> zero-ref "field V54._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+; V143 tmp136 [V143,T62] ( 2, 2 ) ref -> r8 single-def "field V75._source (fldOffset=0x0)" P-INDEP
+;* V144 tmp137 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V76.m_task (fldOffset=0x0)" P-INDEP
+; V145 tmp138 [V145,T63] ( 2, 2 ) ref -> rsi single-def "field V77._obj (fldOffset=0x0)" P-INDEP
+; V146 tmp139 [V146,T67] ( 2, 2 ) short -> rdi "field V77._token (fldOffset=0x8)" P-INDEP
+;* V147 tmp140 [V147,T71] ( 0, 0 ) ubyte -> zero-ref "field V77._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+;* V148 tmp141 [V148 ] ( 0, 0 ) ref -> zero-ref "field V78._obj (fldOffset=0x0)" P-INDEP
+;* V149 tmp142 [V149 ] ( 0, 0 ) short -> zero-ref "field V78._token (fldOffset=0x8)" P-INDEP
+;* V150 tmp143 [V150 ] ( 0, 0 ) ubyte -> zero-ref "field V78._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+; V151 tmp144 [V151,T64] ( 2, 2 ) ref -> r8 single-def "field V99._source (fldOffset=0x0)" P-INDEP
+;* V152 tmp145 [V152 ] ( 0, 0 ) ref -> zero-ref single-def "field V100.m_task (fldOffset=0x0)" P-INDEP
+; V153 tmp146 [V153,T65] ( 2, 2 ) ref -> rsi single-def "field V101._obj (fldOffset=0x0)" P-INDEP
+; V154 tmp147 [V154,T68] ( 2, 2 ) short -> rdi "field V101._token (fldOffset=0x8)" P-INDEP
+;* V155 tmp148 [V155,T72] ( 0, 0 ) ubyte -> zero-ref "field V101._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+;* V156 tmp149 [V156 ] ( 0, 0 ) ref -> zero-ref "field V102._obj (fldOffset=0x0)" P-INDEP
+;* V157 tmp150 [V157 ] ( 0, 0 ) short -> zero-ref "field V102._token (fldOffset=0x8)" P-INDEP
+;* V158 tmp151 [V158 ] ( 0, 0 ) ubyte -> zero-ref "field V102._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
+; V159 tmp152 [V159,T38] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V160 tmp153 [V160,T39] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V161 tmp154 [V161,T40] ( 2, 4 ) ref -> r15 single-def "argument with side effect"
+; V162 tmp155 [V162,T41] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V163 tmp156 [V163,T42] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V164 tmp157 [V164,T43] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V165 PSPSym [V165,T73] ( 1, 1 ) long -> [rbp-0x128] do-not-enreg[V] "PSPSym"
+; V166 cse0 [V166,T57] ( 3, 3 ) ref -> r13 "CSE #11: conservative"
+; V167 cse1 [V167,T60] ( 3, 3 ) int -> rsi "CSE #12: conservative"
+; V168 cse2 [V168,T58] ( 3, 3 ) ref -> rdi "CSE #02: conservative"
+; V169 cse3 [V169,T02] ( 15, 15 ) byref -> [rbp-0x118] multi-def "CSE #03: aggressive"
;
; Lcl frame size = 272
G_M22847_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 272
lea rbp, [rsp+0x130]
xor eax, eax
mov qword ptr [rbp-0x108], rax
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x100], xmm8
mov rax, -192
vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
add rax, 48
jne SHORT -5 instr
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x128], rsp
- mov bword ptr [rbp-0x118], rdi
+ mov bword ptr [rbp-0x110], rdi
mov rdx, rdi
;; size=100 bbWeight=1 PerfScore 20.08
G_M22847_IG02:
mov edi, dword ptr [rdx+0x20]
mov dword ptr [rbp-0x24], edi
;; size=6 bbWeight=1 PerfScore 3.00
G_M22847_IG03:
cmp dword ptr [rbp-0x24], 2
jbe G_M22847_IG07
lea rbx, bword ptr [rdx+0x38]
mov rdi, 0xD1FFAB1E ; data for System.Net.Http.SocksHelper+<>c:<>9__13_0
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M22847_IG04
mov rdi, 0xD1FFAB1E ; System.Action`1[System.Object]
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Net.Http.SocksHelper+<>c:<EstablishSocksTunnelAsync>b__13_0(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Net.Http.SocksHelper+<>c:<>9__13_0
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=104 bbWeight=1 PerfScore 15.00
G_M22847_IG04:
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
mov r14, gword ptr [rdx]
test r15, r15
je G_M22847_IG53
mov rbx, gword ptr [rbx]
test rbx, rbx
- je SHORT G_M22847_IG05
+ jne SHORT G_M22847_IG05
+ xor rsi, rsi
+ xor r13d, r13d
+ jmp SHORT G_M22847_IG06
+ ;; size=34 bbWeight=1 PerfScore 10.00
+G_M22847_IG05:
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
mov r8, rax
mov rsi, r15
mov rdx, r14
mov rdi, rbx
xor rcx, rcx
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
- mov rbx, rdx
- jmp SHORT G_M22847_IG06
- align [3 bytes for IG57]
- ;; size=73 bbWeight=1 PerfScore 17.50
-G_M22847_IG05:
- xor rax, rax
- xor ebx, ebx
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M22847_IG06:
- mov rdx, bword ptr [rbp-0x118]
- lea rdi, bword ptr [rdx+0x40]
mov rsi, rax
+ mov r13, rdx
+ ;; size=44 bbWeight=1 PerfScore 8.25
+G_M22847_IG06:
+ mov rdx, bword ptr [rbp-0x110]
+ lea rdi, bword ptr [rdx+0x40]
call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rdx, bword ptr [rbp-0x118]
- mov qword ptr [rdx+0x48], rbx
- ;; size=30 bbWeight=1 PerfScore 4.75
+ mov rdx, bword ptr [rbp-0x110]
+ mov qword ptr [rdx+0x48], r13
+ ;; size=27 bbWeight=1 PerfScore 4.50
G_M22847_IG07:
cmp dword ptr [rbp-0x24], 2
ja G_M22847_IG21
;; size=10 bbWeight=1 PerfScore 3.00
G_M22847_IG08:
mov edi, dword ptr [rbp-0x24]
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M22847_IG02
add rax, rcx
jmp rax
;; size=25 bbWeight=0.75 PerfScore 5.06
G_M22847_IG09:
lea rdi, bword ptr [rdx+0x50]
;; size=4 bbWeight=1 PerfScore 0.50
G_M22847_IG10:
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M22847_IG11:
xor eax, eax
mov qword ptr [rdi], rax
mov qword ptr [rdi+0x08], rax
mov dword ptr [rbp-0x24], -1
mov dword ptr [rdx+0x20], -1
;; size=23 bbWeight=1 PerfScore 4.25
G_M22847_IG12:
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG45
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je G_M22847_IG35
mov edi, dword ptr [rax+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je G_M22847_IG45
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
jmp G_M22847_IG45
;; size=90 bbWeight=1 PerfScore 16.50
G_M22847_IG13:
lea rdi, bword ptr [rdx+0x50]
;; size=4 bbWeight=1 PerfScore 0.50
G_M22847_IG14:
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M22847_IG15:
xor eax, eax
mov qword ptr [rdi], rax
mov qword ptr [rdi+0x08], rax
mov dword ptr [rbp-0x24], -1
mov dword ptr [rdx+0x20], -1
;; size=23 bbWeight=1 PerfScore 4.25
G_M22847_IG16:
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG45
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je G_M22847_IG44
mov edi, dword ptr [rax+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je G_M22847_IG45
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
jmp G_M22847_IG45
;; size=90 bbWeight=1 PerfScore 16.50
G_M22847_IG17:
lea rdi, bword ptr [rdx+0x50]
;; size=4 bbWeight=1 PerfScore 0.50
G_M22847_IG18:
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M22847_IG19:
xor eax, eax
mov qword ptr [rdi], rax
mov qword ptr [rdi+0x08], rax
mov dword ptr [rbp-0x24], -1
mov dword ptr [rdx+0x20], -1
;; size=23 bbWeight=1 PerfScore 4.25
G_M22847_IG20:
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG45
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je G_M22847_IG40
mov edi, dword ptr [rax+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je G_M22847_IG45
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
jmp G_M22847_IG45
;; size=90 bbWeight=1 PerfScore 16.50
G_M22847_IG21:
mov rbx, gword ptr [rdx+0x08]
test rbx, rbx
je SHORT G_M22847_IG22
mov rdi, gword ptr [rdx+0x10]
mov r15, rdi
mov rax, 0xD1FFAB1E ; code for System.Uri:get_Scheme():System.String:this
cmp dword ptr [rdi], edi
call [rax]System.Uri:get_Scheme():System.String:this
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov r11, 0xD1FFAB1E ; code for System.Net.ICredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this
call [r11]System.Net.ICredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this
mov rbx, rax
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
jmp SHORT G_M22847_IG23
;; size=64 bbWeight=1 PerfScore 19.00
G_M22847_IG22:
xor rbx, rbx
;; size=2 bbWeight=1 PerfScore 0.25
G_M22847_IG23:
mov rdi, gword ptr [rdx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Uri:get_Scheme():System.String:this
cmp dword ptr [rdi], edi
call [rax]System.Uri:get_Scheme():System.String:this
test rax, rax
je SHORT G_M22847_IG26
;; size=23 bbWeight=1 PerfScore 9.50
G_M22847_IG24:
cmp dword ptr [rax+0x08], 6
jne SHORT G_M22847_IG26
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M22847_IG25:
mov rdi, 0xD1FFAB1E
or rdi, qword ptr [rax+0x0C]
mov rcx, 0xD1FFAB1E
xor rdi, rcx
mov eax, dword ptr [rax+0x14]
or eax, 32
xor eax, 0xD1FFAB1E
or rdi, rax
je G_M22847_IG36
;; size=47 bbWeight=0.25 PerfScore 1.88
G_M22847_IG26:
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
mov rdi, gword ptr [rdx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Uri:get_Scheme():System.String:this
cmp dword ptr [rdi], edi
call [rax]System.Uri:get_Scheme():System.String:this
test rax, rax
je SHORT G_M22847_IG29
;; size=30 bbWeight=1 PerfScore 10.50
G_M22847_IG27:
cmp dword ptr [rax+0x08], 7
jne SHORT G_M22847_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M22847_IG28:
mov rdi, 0xD1FFAB1E
or rdi, qword ptr [rax+0x0C]
mov rcx, 0xD1FFAB1E
xor rdi, rcx
mov rcx, 0xD1FFAB1E
or rcx, qword ptr [rax+0x12]
mov rax, 0xD1FFAB1E
xor rax, rcx
or rdi, rax
je G_M22847_IG41
;; size=63 bbWeight=0.25 PerfScore 2.19
G_M22847_IG29:
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
mov rdi, gword ptr [rdx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Uri:get_Scheme():System.String:this
cmp dword ptr [rdi], edi
call [rax]System.Uri:get_Scheme():System.String:this
test rax, rax
je G_M22847_IG45
;; size=34 bbWeight=1 PerfScore 10.50
G_M22847_IG30:
cmp dword ptr [rax+0x08], 6
jne G_M22847_IG45
;; size=10 bbWeight=0.50 PerfScore 2.00
G_M22847_IG31:
mov rdi, 0xD1FFAB1E
or rdi, qword ptr [rax+0x0C]
mov rcx, 0xD1FFAB1E
xor rdi, rcx
mov eax, dword ptr [rax+0x14]
or eax, 32
xor eax, 0xD1FFAB1E
or rdi, rax
jne G_M22847_IG45
;; size=47 bbWeight=0.25 PerfScore 1.88
G_M22847_IG32:
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
mov rdi, gword ptr [rdx]
mov rax, gword ptr [rdx+0x18]
mov ecx, dword ptr [rdx+0x24]
movzx rsi, byte ptr [rdx+0x28]
mov r8, gword ptr [rdx+0x38]
xor r9d, r9d
mov qword ptr [rbp-0xD8], r9
mov gword ptr [rbp-0xF8], rdi
mov byte ptr [rbp-0xE0], 0
mov gword ptr [rbp-0x108], rax
mov dword ptr [rbp-0xE4], ecx
mov gword ptr [rbp-0x100], rbx
mov byte ptr [rbp-0xDF], sil
mov gword ptr [rbp-0xD0], r8
mov dword ptr [rbp-0xE8], -1
lea rdi, [rbp-0x108]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15](byref)
call [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15](byref)
lea rdi, [rbp-0xD8]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:get_Task():System.Threading.Tasks.ValueTask:this
call [rax]System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:get_Task():System.Threading.Tasks.ValueTask:this
mov gword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rdx
mov rsi, gword ptr [rbp-0x48]
movsx rdi, word ptr [rbp-0x40]
mov gword ptr [rbp-0x38], rsi
mov word ptr [rbp-0x30], di
mov byte ptr [rbp-0x2E], 0
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG12
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne SHORT G_M22847_IG34
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
test eax, eax
jne G_M22847_IG12
;; size=233 bbWeight=1 PerfScore 51.75
G_M22847_IG33:
mov dword ptr [rbp-0x24], 2
- mov rdx, bword ptr [rbp-0x118]
+ mov rdx, bword ptr [rbp-0x110]
mov dword ptr [rdx+0x20], 2
lea rdi, bword ptr [rdx+0x50]
lea rsi, bword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_BYREF
movsq
lea rsi, bword ptr [rdx+0x30]
mov rdi, rdx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M22847_IG51
;; size=79 bbWeight=1 PerfScore 16.00
G_M22847_IG34:
test dword ptr [rax+0x34], 0xD1FFAB1E
jne G_M22847_IG12
jmp SHORT G_M22847_IG33
;; size=15 bbWeight=1 PerfScore 6.00
G_M22847_IG35:
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
jmp G_M22847_IG45
;; size=26 bbWeight=1 PerfScore 8.50
G_M22847_IG36:
- mov rdi, bword ptr [rbp-0x118]
+ mov rdi, bword ptr [rbp-0x110]
movzx r8, byte ptr [rdi+0x28]
mov rsi, gword ptr [rdi+0x18]
mov edx, dword ptr [rdi+0x24]
mov rdi, gword ptr [rdi]
mov rcx, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.Http.SocksHelper:EstablishSocks5TunnelAsync(System.IO.Stream,System.String,int,System.Net.NetworkCredential,ubyte):System.Threading.Tasks.ValueTask
call [rax]System.Net.Http.SocksHelper:EstablishSocks5TunnelAsync(System.IO.Stream,System.String,int,System.Net.NetworkCredential,ubyte):System.Threading.Tasks.ValueTask
mov gword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rdx
mov rsi, gword ptr [rbp-0x48]
movsx rdi, word ptr [rbp-0x40]
mov gword ptr [rbp-0x38], rsi
mov word ptr [rbp-0x30], di
mov byte ptr [rbp-0x2E], 0
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG20
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne SHORT G_M22847_IG39
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
test eax, eax
jne G_M22847_IG20
;; size=138 bbWeight=1 PerfScore 36.50
G_M22847_IG37:
xor edi, edi
mov dword ptr [rbp-0x24], edi
;; size=5 bbWeight=1 PerfScore 1.25
G_M22847_IG38:
- mov r15, bword ptr [rbp-0x118]
+ mov r15, bword ptr [rbp-0x110]
mov dword ptr [r15+0x20], edi
lea rdi, bword ptr [r15+0x50]
lea rsi, bword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_BYREF
movsq
lea rsi, bword ptr [r15+0x30]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M22847_IG47
;; size=69 bbWeight=1 PerfScore 15.00
G_M22847_IG39:
test dword ptr [rax+0x34], 0xD1FFAB1E
jne G_M22847_IG20
jmp SHORT G_M22847_IG37
;; size=15 bbWeight=1 PerfScore 6.00
G_M22847_IG40:
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
jmp G_M22847_IG45
;; size=26 bbWeight=1 PerfScore 8.50
G_M22847_IG41:
- mov rdi, bword ptr [rbp-0x118]
+ mov rdi, bword ptr [rbp-0x110]
mov rax, gword ptr [rdi]
mov rcx, gword ptr [rdi+0x18]
mov edx, dword ptr [rdi+0x24]
movzx rsi, byte ptr [rdi+0x28]
mov r8, gword ptr [rdi+0x38]
xor r9d, r9d
mov qword ptr [rbp-0x78], r9
mov gword ptr [rbp-0x98], rax
mov byte ptr [rbp-0x80], 1
mov gword ptr [rbp-0xA8], rcx
mov dword ptr [rbp-0x84], edx
mov gword ptr [rbp-0xA0], rbx
mov byte ptr [rbp-0x7F], sil
mov gword ptr [rbp-0x70], r8
mov dword ptr [rbp-0x88], -1
lea rdi, [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15](byref)
call [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15](byref)
lea rdi, [rbp-0x78]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:get_Task():System.Threading.Tasks.ValueTask:this
call [rax]System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:get_Task():System.Threading.Tasks.ValueTask:this
mov gword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rdx
mov rsi, gword ptr [rbp-0x48]
movsx rdi, word ptr [rbp-0x40]
mov gword ptr [rbp-0x38], rsi
mov word ptr [rbp-0x30], di
mov byte ptr [rbp-0x2E], 0
mov rbx, gword ptr [rbp-0x38]
test rbx, rbx
je G_M22847_IG16
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne G_M22847_IG43
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
test eax, eax
jne G_M22847_IG16
;; size=222 bbWeight=1 PerfScore 51.75
G_M22847_IG42:
mov dword ptr [rbp-0x24], 1
- mov rdi, bword ptr [rbp-0x118]
+ mov rdi, bword ptr [rbp-0x110]
mov dword ptr [rdi+0x20], 1
lea rsi, bword ptr [rdi+0x50]
- mov bword ptr [rbp-0x120], rsi
- mov rdi, bword ptr [rbp-0x120]
+ mov bword ptr [rbp-0x118], rsi
+ mov rdi, bword ptr [rbp-0x118]
lea rsi, bword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_BYREF
movsq
- mov rdi, bword ptr [rbp-0x118]
+ mov rdi, bword ptr [rbp-0x110]
lea rsi, bword ptr [rdi+0x30]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M22847_IG49
;; size=97 bbWeight=1 PerfScore 18.75
G_M22847_IG43:
test dword ptr [rax+0x34], 0xD1FFAB1E
jne G_M22847_IG16
jmp SHORT G_M22847_IG42
;; size=15 bbWeight=1 PerfScore 6.00
G_M22847_IG44:
mov rdi, rbx
movsx rsi, word ptr [rbp-0x30]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
nop
;; size=22 bbWeight=1 PerfScore 6.75
G_M22847_IG45:
cmp dword ptr [rbp-0x24], 0
jge SHORT G_M22847_IG46
- mov rdi, bword ptr [rbp-0x118]
+ mov rdi, bword ptr [rbp-0x110]
lea rbx, bword ptr [rdi+0x40]
mov r15, gword ptr [rbx]
test r15, r15
je SHORT G_M22847_IG46
mov rdi, gword ptr [r15+0x08]
mov rsi, qword ptr [rbx+0x08]
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
test eax, eax
jne SHORT G_M22847_IG46
mov r14, qword ptr [rbx+0x08]
mov rax, gword ptr [r15+0x08]
mov r13, gword ptr [rax+0x08]
cmp dword ptr [r13+0x20], 0
je SHORT G_M22847_IG46
cmp dword ptr [r13+0x20], 2
je SHORT G_M22847_IG46
mov rax, gword ptr [r15+0x08]
mov ebx, dword ptr [rax+0x30]
call System.Environment:get_CurrentManagedThreadId():int
cmp ebx, eax
je SHORT G_M22847_IG46
mov rdi, gword ptr [r15+0x08]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
;; size=117 bbWeight=1 PerfScore 48.25
G_M22847_IG46:
xor edi, edi
- mov r15, bword ptr [rbp-0x118]
+ mov r15, bword ptr [rbp-0x110]
mov qword ptr [r15+0x40], rdi
mov qword ptr [r15+0x48], rdi
jmp SHORT G_M22847_IG54
;; size=19 bbWeight=1 PerfScore 5.25
G_M22847_IG47:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M22847_IG48:
- call G_M22847_IG74
- jmp G_M22847_IG67
+ call G_M22847_IG66
+ jmp G_M22847_IG59
;; size=10 bbWeight=1 PerfScore 3.00
G_M22847_IG49:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M22847_IG50:
- call G_M22847_IG74
- jmp G_M22847_IG67
+ call G_M22847_IG66
+ jmp G_M22847_IG59
;; size=10 bbWeight=1 PerfScore 3.00
G_M22847_IG51:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M22847_IG52:
- call G_M22847_IG74
- jmp G_M22847_IG67
+ call G_M22847_IG66
+ jmp G_M22847_IG59
;; size=10 bbWeight=1 PerfScore 3.00
G_M22847_IG53:
mov edi, 0x9D7
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_M22847_IG54:
mov dword ptr [r15+0x20], -2
add r15, 48
cmp gword ptr [r15], 0
- je G_M22847_IG65
+ je G_M22847_IG57
mov r15, gword ptr [r15]
- xor r13d, r13d
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M22847_IG69
- ;; size=47 bbWeight=1 PerfScore 11.75
+ je G_M22847_IG61
+ ;; size=44 bbWeight=1 PerfScore 11.50
G_M22847_IG55:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
- mov rbx, gword ptr [rdi]
- cmp byte ptr [rbx+0x9D], 0
+ mov r13, gword ptr [rdi]
+ cmp byte ptr [r13+0x9D], 0
je SHORT G_M22847_IG56
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.Task:get_Id():int:this
- mov r14d, eax
- movzx rsi, byte ptr [rbx+0x9D]
+ mov ebx, eax
+ movzx rsi, byte ptr [r13+0x9D]
test esi, esi
je SHORT G_M22847_IG56
xor ecx, ecx
mov dword ptr [rsp], ecx
- mov rcx, qword ptr [rbx+0x80]
- mov edx, dword ptr [rbx+0x98]
- mov rdi, rbx
+ mov rcx, qword ptr [r13+0x80]
+ mov edx, dword ptr [r13+0x98]
+ mov rdi, r13
mov r8d, 4
mov r9d, 8
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
call [rax]System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
test eax, eax
je SHORT G_M22847_IG56
- mov rdi, rbx
- mov edx, r14d
+ mov rdi, r13
+ mov edx, ebx
mov esi, 15
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
;; size=131 bbWeight=1 PerfScore 31.00
G_M22847_IG56:
- mov eax, dword ptr [r15+0x34]
- mov dword ptr [rbp-0x10C], eax
- test eax, 0xD1FFAB1E
- jne G_M22847_IG70
- lea rbx, bword ptr [r15+0x34]
- mov edi, eax
- or edi, 0xD1FFAB1E
- lock
- cmpxchg dword ptr [rbx], edi
- cmp eax, dword ptr [rbp-0x10C]
- je SHORT G_M22847_IG63
- mov eax, dword ptr [r15+0x34]
- jmp SHORT G_M22847_IG58
- ;; size=51 bbWeight=1 PerfScore 30.25
-G_M22847_IG57:
- mov edi, eax
- mov eax, edi
- ;; size=4 bbWeight=8 PerfScore 4.00
-G_M22847_IG58:
- test eax, 0xD1FFAB1E
- je SHORT G_M22847_IG60
- ;; size=7 bbWeight=8 PerfScore 10.00
-G_M22847_IG59:
- xor edi, edi
+ mov rdi, r15
+ xor esi, esi
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:TrySetResult(System.Threading.Tasks.VoidTaskResult):ubyte:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:TrySetResult(System.Threading.Tasks.VoidTaskResult):ubyte:this
+ test eax, eax
+ jne SHORT G_M22847_IG59
jmp SHORT G_M22847_IG62
- ;; size=4 bbWeight=1 PerfScore 2.25
-G_M22847_IG60:
- mov edi, eax
- or edi, 0xD1FFAB1E
- mov dword ptr [rbp-0x110], eax
- lock
- cmpxchg dword ptr [rbx], edi
- mov edi, dword ptr [rbp-0x110]
- cmp eax, edi
- jne SHORT G_M22847_IG57
- ;; size=28 bbWeight=8 PerfScore 174.00
-G_M22847_IG61:
- mov edi, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M22847_IG62:
- test edi, edi
- je G_M22847_IG70
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M22847_IG63:
- mov byte ptr [r15+0x38], r13b
- mov edi, dword ptr [r15+0x34]
- or edi, 0xD1FFAB1E
- xchg dword ptr [rbx], edi
- mov rbx, gword ptr [r15+0x28]
- test rbx, rbx
- je SHORT G_M22847_IG64
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
- call [rax]System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
- mov rdi, gword ptr [rbx+0x10]
- test rdi, rdi
- je SHORT G_M22847_IG64
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+ContingentProperties:SetEvent(System.Threading.ManualResetEventSlim)
- call [rax]System.Threading.Tasks.Task+ContingentProperties:SetEvent(System.Threading.ManualResetEventSlim)
- ;; size=61 bbWeight=1 PerfScore 36.50
-G_M22847_IG64:
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FinishContinuations():this
- call [rax]System.Threading.Tasks.Task:FinishContinuations():this
- jmp SHORT G_M22847_IG67
- ;; size=17 bbWeight=1 PerfScore 5.50
-G_M22847_IG65:
+ ;; size=25 bbWeight=1 PerfScore 10.00
+G_M22847_IG57:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M22847_IG71
+ je SHORT G_M22847_IG63
;; size=15 bbWeight=1 PerfScore 4.25
-G_M22847_IG66:
+G_M22847_IG58:
mov rdi, 0xD1FFAB1E ; data for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:s_syncSuccessSentinel
mov rsi, gword ptr [rdi]
mov rdi, r15
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=21 bbWeight=1 PerfScore 3.50
-G_M22847_IG67:
+G_M22847_IG59:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M22847_IG68:
+G_M22847_IG60:
add rsp, 272
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=16 bbWeight=1 PerfScore 3.75
-G_M22847_IG69:
+G_M22847_IG61:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M22847_IG55
;; size=20 bbWeight=0 PerfScore 0.00
-G_M22847_IG70:
+G_M22847_IG62:
mov edi, 24
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException(int)
call [rax]System.ThrowHelper:ThrowInvalidOperationException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M22847_IG71:
+G_M22847_IG63:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M22847_IG66
+ jmp SHORT G_M22847_IG58
;; size=17 bbWeight=0 PerfScore 0.00
-G_M22847_IG72:
+G_M22847_IG64:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x130]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M22847_IG73:
- mov r15, bword ptr [rbp-0x118]
+G_M22847_IG65:
+ mov r15, bword ptr [rbp-0x110]
mov rdi, gword ptr [r15]
mov rax, 0xD1FFAB1E ; code for System.IO.Stream:Dispose():this
cmp dword ptr [rdi], edi
call [rax]System.IO.Stream:Dispose():this
call CORINFO_HELP_RETHROW
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M22847_IG74:
+G_M22847_IG66:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x130]
;; size=28 bbWeight=1 PerfScore 8.75
-G_M22847_IG75:
+G_M22847_IG67:
cmp dword ptr [rbp-0x24], 0
- jge SHORT G_M22847_IG76
- mov r15, bword ptr [rbp-0x118]
+ jge SHORT G_M22847_IG68
+ mov r15, bword ptr [rbp-0x110]
lea rbx, bword ptr [r15+0x40]
mov rdi, gword ptr [rbx]
mov r14, rdi
test r14, r14
- je SHORT G_M22847_IG76
+ je SHORT G_M22847_IG68
mov rdi, gword ptr [r14+0x08]
mov rsi, qword ptr [rbx+0x08]
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
test eax, eax
- jne SHORT G_M22847_IG76
+ jne SHORT G_M22847_IG68
mov rax, qword ptr [rbx+0x08]
mov rbx, rax
mov rax, gword ptr [r14+0x08]
mov r13, gword ptr [rax+0x08]
cmp dword ptr [r13+0x20], 0
- je SHORT G_M22847_IG76
+ je SHORT G_M22847_IG68
cmp dword ptr [r13+0x20], 2
- je SHORT G_M22847_IG76
+ je SHORT G_M22847_IG68
mov rax, gword ptr [r14+0x08]
mov r13d, dword ptr [rax+0x30]
call System.Environment:get_CurrentManagedThreadId():int
cmp r13d, eax
- je SHORT G_M22847_IG76
+ je SHORT G_M22847_IG68
mov rdi, gword ptr [r14+0x08]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
;; size=125 bbWeight=1 PerfScore 48.75
-G_M22847_IG76:
+G_M22847_IG68:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M22847_IG77:
+G_M22847_IG69:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M22847_IG78:
+G_M22847_IG70:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x130]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M22847_IG79:
- mov r15, bword ptr [rbp-0x118]
+G_M22847_IG71:
+ mov r15, bword ptr [rbp-0x110]
mov dword ptr [r15+0x20], -2
lea rdi, bword ptr [r15+0x30]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:SetException(System.Exception):this
- lea rax, G_M22847_IG67
+ lea rax, G_M22847_IG59
;; size=38 bbWeight=0 PerfScore 0.00
-G_M22847_IG80:
+G_M22847_IG72:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
RWD00 dd G_M22847_IG17 - G_M22847_IG02
dd G_M22847_IG13 - G_M22847_IG02
dd G_M22847_IG09 - G_M22847_IG02
-; Total bytes of code 3010, prolog size 100, PerfScore 885.33, instruction count 673, allocated bytes for code 3010 (MethodHash=3e23a6c0) for method System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13:MoveNext():this (FullOpts)
+; Total bytes of code 2845, prolog size 100, PerfScore 631.08, instruction count 630, allocated bytes for code 2845 (MethodHash=3e23a6c0) for method System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13:MoveNext():this (FullOpts)
; ============================================================
-15 (-1.25 % of base) - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 20 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.String]>
; V01 arg1 [V01,T08] ( 9, 26.50) ref -> r14 class-hnd single-def <ubyte[]>
; V02 arg2 [V02,T11] ( 11, 17 ) ref -> r12 class-hnd single-def <System.Text.Encoding>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V04 arg4 [V04,T62] ( 4, 2.50) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T12] ( 8, 18 ) int -> [rbp-0x2C]
; V06 loc1 [V06 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
;* V08 loc3 [V08,T75] ( 0, 0 ) int -> zero-ref
;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
; V11 loc6 [V11,T14] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
;* V12 loc7 [V12,T82] ( 0, 0 ) int -> zero-ref
; V13 loc8 [V13,T13] ( 8, 18 ) int -> rax
;* V14 loc9 [V14,T83] ( 0, 0 ) int -> zero-ref
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp2 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V18 tmp3 [V18,T55] ( 4, 4 ) int -> rax "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V20 tmp5 [V20,T51] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
; V21 tmp6 [V21,T36] ( 8, 8 ) int -> rbx "Inlining Arg"
; V22 tmp7 [V22,T56] ( 4, 4 ) int -> rdx "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V24 tmp9 [V24,T63] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V25 tmp10 [V25,T66] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp12 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp13 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V29 tmp14 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp17 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V33 tmp18 [V33,T04] ( 4, 32 ) int -> rdi "Inlining Arg"
;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V35 tmp20 [V35,T03] ( 4, 32 ) byref -> r15 "Inlining Arg"
; V36 tmp21 [V36,T02] ( 5, 36 ) int -> rbx "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V40 tmp25 [V40,T84] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.HttpRequestException>
;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V44 tmp29 [V44,T40] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V45 tmp30 [V45,T47] ( 2, 8 ) int -> rsi "Inlining Arg"
; V46 tmp31 [V46,T38] ( 3, 8 ) int -> r8 "Inline return value spill temp"
;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V49 tmp34 [V49,T32] ( 4, 12 ) long -> [rbp-0x40] "Inline stloc first use temp"
; V50 tmp35 [V50,T52] ( 3, 6 ) int -> [rbp-0x44] "Inline stloc first use temp"
; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x50] must-init pinned "Inline stloc first use temp"
; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
;* V53 tmp38 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V57 tmp42 [V57,T85] ( 2, 0 ) ref -> r13 class-hnd exact "Inlining Arg" <System.String>
; V58 tmp43 [V58,T05] ( 4, 32 ) int -> rax "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V60 tmp45 [V60,T18] ( 2, 16 ) byref -> r15 "Inlining Arg"
; V61 tmp46 [V61,T21] ( 2, 16 ) int -> rbx "Inlining Arg"
;* V62 tmp47 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V63 tmp48 [V63,T54] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.String>
-;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V66 tmp51 [V66,T64] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V67 tmp52 [V67,T67] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V69 tmp54 [V69,T65] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V70 tmp55 [V70,T68] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V71 tmp56 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V72 tmp57 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V73 tmp58 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V74 tmp59 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V75 tmp60 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp61 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp62 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V78 tmp63 [V78,T06] ( 4, 32 ) int -> rcx "Inlining Arg"
;* V79 tmp64 [V79 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V80 tmp65 [V80,T19] ( 2, 16 ) byref -> r8 "Inlining Arg"
; V81 tmp66 [V81,T07] ( 3, 24 ) int -> rsi "Inlining Arg"
;* V82 tmp67 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V83 tmp68 [V83,T09] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
-;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V86 tmp71 [V86,T41] ( 2, 8 ) byref -> r8 "Inlining Arg"
-; V87 tmp72 [V87,T48] ( 2, 8 ) int -> rdx "Inlining Arg"
+;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V86 tmp71 [V86,T41] ( 2, 8 ) byref -> rdx "Inlining Arg"
+; V87 tmp72 [V87,T48] ( 2, 8 ) int -> rdi "Inlining Arg"
;* V88 tmp73 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V89 tmp74 [V89,T20] ( 2, 16 ) byref -> rsi "Inlining Arg"
; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
; V91 tmp76 [V91,T10] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V92 tmp77 [V92,T15] ( 12, 13.50) int -> [rbp-0x5C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V93 tmp78 [V93,T01] ( 17, 40.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
; V94 tmp79 [V94,T00] ( 20, 49 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
;* V95 tmp80 [V95,T71] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp81 [V96,T76] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V99 tmp84 [V99 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp85 [V100 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V101 tmp86 [V101,T81] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V102 tmp87 [V102,T77] ( 2, 1 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
; V103 tmp88 [V103,T72] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V104 tmp89 [V104,T78] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
; V105 tmp90 [V105,T42] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
; V106 tmp91 [V106,T33] ( 3, 12 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP
;* V107 tmp92 [V107 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V109 tmp94 [V109 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V111 tmp96 [V111 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V113 tmp98 [V113 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V115 tmp100 [V115 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp103 [V118 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V119 tmp104 [V119,T31] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP
; V120 tmp105 [V120,T35] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
-; V121 tmp106 [V121,T57] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp107 [V122,T59] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
-;* V123 tmp108 [V123 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V121 tmp106 [V121 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp107 [V122 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V123 tmp108 [V123,T57] ( 2, 4 ) byref -> rdi "field V43._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp109 [V124,T59] ( 2, 4 ) int -> rsi "field V43._length (fldOffset=0x8)" P-INDEP
;* V125 tmp110 [V125 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp111 [V126 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V127 tmp112 [V127 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V129 tmp114 [V129 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V131 tmp116 [V131 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp117 [V132 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
; V133 tmp118 [V133,T43] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP
; V134 tmp119 [V134,T49] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
; V135 tmp120 [V135,T69] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
; V136 tmp121 [V136,T70] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
-; V137 tmp122 [V137,T73] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp123 [V138,T79] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
-;* V139 tmp124 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-;* V140 tmp125 [V140 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp122 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp123 [V138 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
+; V139 tmp124 [V139,T73] ( 2, 1 ) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp125 [V140,T79] ( 2, 1 ) int -> rdx "field V65._length (fldOffset=0x8)" P-INDEP
; V141 tmp126 [V141,T74] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
; V142 tmp127 [V142,T80] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
; V143 tmp128 [V143,T44] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
; V144 tmp129 [V144,T34] ( 3, 12 ) int -> rdx "field V71._length (fldOffset=0x8)" P-INDEP
;* V145 tmp130 [V145 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp131 [V146 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
;* V147 tmp132 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp133 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V149 tmp134 [V149 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp135 [V150 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
; V151 tmp136 [V151,T45] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp137 [V152,T61] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
-; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdi "field V82._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdx "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> r8 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp141 [V156,T60] ( 2, 4 ) int -> rdx "field V84._length (fldOffset=0x8)" P-INDEP
-;* V157 tmp142 [V157 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
-;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
+; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp140 [V155 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp141 [V156 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
+; V157 tmp142 [V157,T58] ( 2, 4 ) byref -> rdx "field V85._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp143 [V158,T60] ( 2, 4 ) int -> rdi "field V85._length (fldOffset=0x8)" P-INDEP
; V159 tmp144 [V159,T46] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
; V160 tmp145 [V160,T50] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
; V161 tmp146 [V161,T23] ( 2, 16 ) long -> rdi "Cast away GC"
; V162 tmp147 [V162,T24] ( 2, 16 ) long -> rsi "Cast away GC"
; V163 tmp148 [V163,T25] ( 2, 16 ) long -> rdi "argument with side effect"
; V164 tmp149 [V164,T26] ( 2, 16 ) long -> rsi "argument with side effect"
; V165 cse0 [V165,T53] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
; V166 rat0 [V166,T27] ( 4, 12.25) long -> [rbp-0x70] "Strength reduced derived IV"
; V167 rat1 [V167,T28] ( 4, 12.25) int -> [rbp-0x74] "Trip count IV"
; V168 rat2 [V168,T29] ( 4, 12.25) long -> r8 "Strength reduced derived IV"
; V169 rat3 [V169,T30] ( 4, 12.25) int -> rdi "Trip count IV"
; V170 rat4 [V170,T16] ( 5, 16.50) long -> [rbp-0x80] "Widened IV V14"
; V171 rat5 [V171,T17] ( 5, 16.50) long -> r12 "Widened IV V12"
;
; Lcl frame size = 104
G_M11638_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
xor eax, eax
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x58], rax
mov r13, rdi
mov eax, esi
mov r14, rdx
mov r12, rcx
mov r15, r8
mov ebx, r9d
mov rcx, bword ptr [rbp+0x10]
;; size=53 bbWeight=1 PerfScore 11.50
G_M11638_IG02:
xor edi, edi
mov bword ptr [rbp+0x10], rcx
mov dword ptr [rcx], edi
test eax, eax
je G_M11638_IG40
;; size=16 bbWeight=1 PerfScore 3.50
G_M11638_IG03:
cmp eax, 1
je G_M11638_IG38
test ebx, ebx
je G_M11638_IG15
mov dword ptr [rbp-0x5C], eax
mov edx, eax
sub edx, 1
jo G_M11638_IG46
imul edx, dword ptr [r14+0x08]
jo G_M11638_IG46
mov dword ptr [rbp-0x2C], edx
test r12, r12
je SHORT G_M11638_IG05
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M11638_IG42
;; size=69 bbWeight=0.50 PerfScore 8.75
G_M11638_IG04:
mov rsi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
cmp r12, gword ptr [rsi]
jne SHORT G_M11638_IG09
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG05:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jle G_M11638_IG13
;; size=11 bbWeight=0.50 PerfScore 1.12
G_M11638_IG06:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov edi, eax
align [4 bytes for IG07]
;; size=12 bbWeight=0.25 PerfScore 0.44
G_M11638_IG07:
mov rsi, gword ptr [r8+r13]
mov edx, dword ptr [rbp-0x2C]
add edx, dword ptr [rsi+0x08]
jo G_M11638_IG46
mov dword ptr [rbp-0x2C], edx
add r8, 8
dec edi
jne SHORT G_M11638_IG07
;; size=27 bbWeight=4 PerfScore 38.00
G_M11638_IG08:
mov byte ptr [r15], 0
mov rdx, r15
mov ecx, ebx
lea r8, [rbp-0x38]
mov edi, dword ptr [rbp-0x2C]
mov esi, 7
mov r9, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je G_M11638_IG15
mov eax, dword ptr [rbp-0x38]
cmp eax, ebx
jbe SHORT G_M11638_IG14
jmp G_M11638_IG45
;; size=54 bbWeight=0.50 PerfScore 6.00
G_M11638_IG09:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jg SHORT G_M11638_IG11
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M11638_IG10:
mov dword ptr [rbp-0x5C], eax
jmp SHORT G_M11638_IG08
;; size=5 bbWeight=0.25 PerfScore 0.75
G_M11638_IG11:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov dword ptr [rbp-0x74], eax
;; size=9 bbWeight=0.25 PerfScore 0.56
G_M11638_IG12:
mov qword ptr [rbp-0x70], r8
mov rsi, gword ptr [r8+r13]
mov rdi, r12
mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x50]
call [r10+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
mov edx, eax
add edx, dword ptr [rbp-0x2C]
jo G_M11638_IG46
mov eax, edx
mov r8, qword ptr [rbp-0x70]
add r8, 8
mov r9d, dword ptr [rbp-0x74]
dec r9d
mov dword ptr [rbp-0x2C], eax
mov dword ptr [rbp-0x74], r9d
jne SHORT G_M11638_IG12
jmp G_M11638_IG08
;; size=65 bbWeight=4 PerfScore 85.00
G_M11638_IG13:
mov dword ptr [rbp-0x5C], eax
jmp G_M11638_IG08
;; size=8 bbWeight=0.25 PerfScore 0.75
G_M11638_IG14:
mov r9d, eax
add r15, r9
sub ebx, eax
mov eax, ebx
mov r9d, dword ptr [rbp-0x2C]
cmp eax, r9d
mov dword ptr [rbp-0x2C], r9d
jge SHORT G_M11638_IG17
;; size=23 bbWeight=0.50 PerfScore 2.12
G_M11638_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11638_IG16:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG17:
mov eax, dword ptr [rbp-0x5C]
test r12, r12
je G_M11638_IG26
mov r8, gword ptr [r13]
test r8, r8
- je SHORT G_M11638_IG18
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- mov dword ptr [rbp-0x5C], eax
- jmp SHORT G_M11638_IG19
- ;; size=34 bbWeight=0.50 PerfScore 5.50
-G_M11638_IG18:
+ jne SHORT G_M11638_IG18
xor rsi, rsi
xor edx, edx
mov dword ptr [rbp-0x5C], eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
+ jmp SHORT G_M11638_IG19
+ ;; size=30 bbWeight=0.50 PerfScore 4.50
+G_M11638_IG18:
+ lea rsi, bword ptr [r8+0x0C]
+ mov edx, dword ptr [r8+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
G_M11638_IG19:
mov rcx, r15
mov r8d, ebx
mov rdi, r12
mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x58]
mov qword ptr [rbp-0x68], r10
call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
ja G_M11638_IG45
mov edx, eax
add r15, rdx
sub ebx, eax
mov qword ptr [rbp-0x80], 1
cmp dword ptr [rbp-0x5C], 1
jle G_M11638_IG24
;; size=58 bbWeight=0.50 PerfScore 7.38
G_M11638_IG20:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M11638_IG43
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov ecx, dword ptr [r14+0x08]
cmp ecx, ebx
ja G_M11638_IG45
mov r8d, ecx
add r8, r15
mov esi, ebx
sub esi, ecx
mov r15, r8
mov ebx, esi
mov rax, qword ptr [rbp-0x80]
mov rcx, gword ptr [r13+8*rax]
test rcx, rcx
- je SHORT G_M11638_IG22
+ jne SHORT G_M11638_IG22
;; size=72 bbWeight=4 PerfScore 65.00
G_M11638_IG21:
- lea r8, bword ptr [rcx+0x0C]
- mov edx, dword ptr [rcx+0x08]
- mov rdi, r8
+ xor rdx, rdx
+ xor edi, edi
jmp SHORT G_M11638_IG23
- ;; size=12 bbWeight=2 PerfScore 9.50
+ ;; size=6 bbWeight=2 PerfScore 5.00
G_M11638_IG22:
- xor rdi, rdi
- xor edx, edx
- ;; size=4 bbWeight=2 PerfScore 1.00
+ lea rdx, bword ptr [rcx+0x0C]
+ mov edi, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=2 PerfScore 5.00
G_M11638_IG23:
mov rcx, r15
mov r8d, esi
- mov rsi, rdi
+ mov rsi, rdx
+ mov edx, edi
mov rdi, r12
mov r9, qword ptr [rbp-0x68]
call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
ja G_M11638_IG45
mov esi, eax
add rsi, r15
sub ebx, eax
mov r15, rsi
mov rsi, qword ptr [rbp-0x80]
inc esi
mov eax, dword ptr [rbp-0x5C]
cmp esi, eax
mov qword ptr [rbp-0x80], rsi
jl G_M11638_IG20
- ;; size=59 bbWeight=4 PerfScore 47.00
+ ;; size=61 bbWeight=4 PerfScore 48.00
G_M11638_IG24:
mov r15d, dword ptr [rbp-0x2C]
mov eax, r15d
add eax, dword ptr [rbp-0x38]
mov r15, bword ptr [rbp+0x10]
mov dword ptr [r15], eax
mov eax, 1
;; size=22 bbWeight=0.50 PerfScore 2.75
G_M11638_IG25:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG26:
mov dword ptr [rbp-0x5C], eax
mov r12, gword ptr [r13]
mov rsi, r15
mov edx, ebx
mov rdi, r12
mov r8, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [r8]System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
mov edx, dword ptr [r12+0x08]
cmp edx, ebx
ja G_M11638_IG45
mov edi, edx
add rdi, r15
sub ebx, edx
mov r15, rdi
mov r12d, 1
cmp dword ptr [rbp-0x5C], 1
jle SHORT G_M11638_IG24
;; size=63 bbWeight=0.50 PerfScore 7.25
G_M11638_IG27:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M11638_IG43
mov rdi, r15
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [r14+0x08]
cmp edi, ebx
ja G_M11638_IG45
mov eax, edi
add r15, rax
sub ebx, edi
mov rdi, gword ptr [r13+8*r12]
mov rax, rdi
test rax, rax
- je SHORT G_M11638_IG29
+ jne SHORT G_M11638_IG29
;; size=63 bbWeight=4 PerfScore 59.00
G_M11638_IG28:
+ xor rdi, rdi
+ xor esi, esi
+ mov gword ptr [rbp-0x88], rax
+ jmp SHORT G_M11638_IG30
+ ;; size=13 bbWeight=2 PerfScore 7.00
+G_M11638_IG29:
lea rdi, bword ptr [rax+0x0C]
mov gword ptr [rbp-0x88], rax
mov esi, dword ptr [rax+0x08]
- mov rax, gword ptr [rbp-0x88]
- jmp SHORT G_M11638_IG30
- ;; size=23 bbWeight=2 PerfScore 13.00
-G_M11638_IG29:
- xor rdi, rdi
- xor esi, esi
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M11638_IG30:
cmp esi, ebx
jle SHORT G_M11638_IG32
;; size=4 bbWeight=4 PerfScore 5.00
G_M11638_IG31:
mov ecx, ebx
mov r8d, 1
- mov gword ptr [rbp-0x88], rax
mov dword ptr [rbp-0x44], r8d
jmp SHORT G_M11638_IG33
- ;; size=21 bbWeight=2 PerfScore 9.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M11638_IG32:
mov ecx, esi
xor r8d, r8d
mov dword ptr [rbp-0x44], r8d
- mov gword ptr [rbp-0x88], rax
- ;; size=16 bbWeight=2 PerfScore 5.00
+ ;; size=9 bbWeight=2 PerfScore 3.00
G_M11638_IG33:
mov bword ptr [rbp-0x50], rdi
mov bword ptr [rbp-0x58], r15
mov rsi, r15
mov qword ptr [rbp-0x40], rcx
mov rdx, rcx
mov r9, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
call [r9]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
cmp rax, qword ptr [rbp-0x40]
jne SHORT G_M11638_IG35
;; size=37 bbWeight=4 PerfScore 39.00
G_M11638_IG34:
mov r8d, dword ptr [rbp-0x44]
jmp SHORT G_M11638_IG36
;; size=6 bbWeight=2 PerfScore 6.00
G_M11638_IG35:
mov r8d, 3
;; size=6 bbWeight=2 PerfScore 0.50
G_M11638_IG36:
xor rax, rax
mov bword ptr [rbp-0x50], rax
;; size=6 bbWeight=4 PerfScore 5.00
G_M11638_IG37:
mov bword ptr [rbp-0x58], rax
cmp r8d, 3
je G_M11638_IG44
mov rax, gword ptr [rbp-0x88]
mov eax, dword ptr [rax+0x08]
cmp eax, ebx
ja G_M11638_IG45
mov ecx, eax
add r15, rcx
sub ebx, eax
inc r12d
mov eax, dword ptr [rbp-0x5C]
cmp r12d, eax
mov dword ptr [rbp-0x5C], eax
jl G_M11638_IG27
jmp G_M11638_IG24
;; size=62 bbWeight=4 PerfScore 51.00
G_M11638_IG38:
mov rdx, r15
mov ecx, ebx
mov rdi, gword ptr [r13]
mov rsi, r12
mov r8, bword ptr [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=29 bbWeight=0.50 PerfScore 3.62
G_M11638_IG39:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG40:
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp+0x10]
mov rdi, 0xD1FFAB1E ; ''
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=34 bbWeight=0.50 PerfScore 2.75
G_M11638_IG41:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG42:
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M11638_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M11638_IG43:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M11638_IG44:
mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpRequestException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String
call [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String
mov r13, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this
call [rax]System.Exception:.ctor():this
lea rdi, bword ptr [rbx+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=69 bbWeight=0 PerfScore 0.00
G_M11638_IG45:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M11638_IG46:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1199, prolog size 53, PerfScore 516.38, instruction count 342, allocated bytes for code 1199 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 1184, prolog size 53, PerfScore 512.88, instruction count 340, allocated bytes for code 1184 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; ============================================================
-15 (-1.29 % of base) - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 20 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.String]>
; V01 arg1 [V01,T08] ( 9, 26.50) ref -> r14 class-hnd single-def <ubyte[]>
; V02 arg2 [V02,T11] ( 11, 17 ) ref -> r12 class-hnd single-def <System.Text.Encoding>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V04 arg4 [V04,T62] ( 4, 2 ) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T12] ( 8, 18 ) int -> [rbp-0x2C]
; V06 loc1 [V06 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
;* V08 loc3 [V08,T75] ( 0, 0 ) int -> zero-ref
;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
; V11 loc6 [V11,T14] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
;* V12 loc7 [V12,T82] ( 0, 0 ) int -> zero-ref
; V13 loc8 [V13,T13] ( 8, 18 ) int -> rax
;* V14 loc9 [V14,T83] ( 0, 0 ) int -> zero-ref
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp2 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V18 tmp3 [V18,T55] ( 4, 4 ) int -> rax "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V20 tmp5 [V20,T51] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
; V21 tmp6 [V21,T36] ( 8, 8 ) int -> rbx "Inlining Arg"
; V22 tmp7 [V22,T56] ( 4, 4 ) int -> rdx "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V24 tmp9 [V24,T63] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V25 tmp10 [V25,T66] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp12 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp13 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V29 tmp14 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp17 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V33 tmp18 [V33,T04] ( 4, 32 ) int -> rdi "Inlining Arg"
;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V35 tmp20 [V35,T03] ( 4, 32 ) byref -> r15 "Inlining Arg"
; V36 tmp21 [V36,T02] ( 5, 36 ) int -> rbx "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V40 tmp25 [V40,T84] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.QPack.QPackEncodingException>
;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V44 tmp29 [V44,T40] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V45 tmp30 [V45,T47] ( 2, 8 ) int -> rsi "Inlining Arg"
; V46 tmp31 [V46,T38] ( 3, 8 ) int -> r8 "Inline return value spill temp"
;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V49 tmp34 [V49,T32] ( 4, 12 ) long -> [rbp-0x40] "Inline stloc first use temp"
; V50 tmp35 [V50,T52] ( 3, 6 ) int -> [rbp-0x44] "Inline stloc first use temp"
; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x50] must-init pinned "Inline stloc first use temp"
; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
;* V53 tmp38 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V57 tmp42 [V57,T85] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
; V58 tmp43 [V58,T05] ( 4, 32 ) int -> rax "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V60 tmp45 [V60,T18] ( 2, 16 ) byref -> r15 "Inlining Arg"
; V61 tmp46 [V61,T21] ( 2, 16 ) int -> rbx "Inlining Arg"
;* V62 tmp47 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V63 tmp48 [V63,T54] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.String>
-;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V66 tmp51 [V66,T64] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V67 tmp52 [V67,T67] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V69 tmp54 [V69,T65] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V70 tmp55 [V70,T68] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V71 tmp56 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V72 tmp57 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V73 tmp58 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V74 tmp59 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V75 tmp60 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp61 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp62 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V78 tmp63 [V78,T06] ( 4, 32 ) int -> rcx "Inlining Arg"
;* V79 tmp64 [V79 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V80 tmp65 [V80,T19] ( 2, 16 ) byref -> r8 "Inlining Arg"
; V81 tmp66 [V81,T07] ( 3, 24 ) int -> rsi "Inlining Arg"
;* V82 tmp67 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V83 tmp68 [V83,T09] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
-;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V86 tmp71 [V86,T41] ( 2, 8 ) byref -> r8 "Inlining Arg"
-; V87 tmp72 [V87,T48] ( 2, 8 ) int -> rdx "Inlining Arg"
+;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V86 tmp71 [V86,T41] ( 2, 8 ) byref -> rdx "Inlining Arg"
+; V87 tmp72 [V87,T48] ( 2, 8 ) int -> rdi "Inlining Arg"
;* V88 tmp73 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V89 tmp74 [V89,T20] ( 2, 16 ) byref -> rsi "Inlining Arg"
; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
; V91 tmp76 [V91,T10] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V92 tmp77 [V92,T15] ( 12, 13.50) int -> [rbp-0x5C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V93 tmp78 [V93,T01] ( 17, 40.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
; V94 tmp79 [V94,T00] ( 20, 49 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
;* V95 tmp80 [V95,T71] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp81 [V96,T76] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V99 tmp84 [V99 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp85 [V100 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V101 tmp86 [V101,T81] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V102 tmp87 [V102,T77] ( 2, 1 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
; V103 tmp88 [V103,T72] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V104 tmp89 [V104,T78] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
; V105 tmp90 [V105,T42] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
; V106 tmp91 [V106,T33] ( 3, 12 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP
;* V107 tmp92 [V107 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V109 tmp94 [V109 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V111 tmp96 [V111 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V113 tmp98 [V113 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V115 tmp100 [V115 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp103 [V118 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V119 tmp104 [V119,T31] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP
; V120 tmp105 [V120,T35] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
-; V121 tmp106 [V121,T57] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp107 [V122,T59] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
-;* V123 tmp108 [V123 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V121 tmp106 [V121 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp107 [V122 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V123 tmp108 [V123,T57] ( 2, 4 ) byref -> rdi "field V43._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp109 [V124,T59] ( 2, 4 ) int -> rsi "field V43._length (fldOffset=0x8)" P-INDEP
;* V125 tmp110 [V125 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp111 [V126 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V127 tmp112 [V127 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V129 tmp114 [V129 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V131 tmp116 [V131 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp117 [V132 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
; V133 tmp118 [V133,T43] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP
; V134 tmp119 [V134,T49] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
; V135 tmp120 [V135,T69] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
; V136 tmp121 [V136,T70] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
-; V137 tmp122 [V137,T73] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp123 [V138,T79] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
-;* V139 tmp124 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-;* V140 tmp125 [V140 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp122 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp123 [V138 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
+; V139 tmp124 [V139,T73] ( 2, 1 ) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp125 [V140,T79] ( 2, 1 ) int -> rdx "field V65._length (fldOffset=0x8)" P-INDEP
; V141 tmp126 [V141,T74] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
; V142 tmp127 [V142,T80] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
; V143 tmp128 [V143,T44] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
; V144 tmp129 [V144,T34] ( 3, 12 ) int -> rdx "field V71._length (fldOffset=0x8)" P-INDEP
;* V145 tmp130 [V145 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp131 [V146 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
;* V147 tmp132 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp133 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V149 tmp134 [V149 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp135 [V150 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
; V151 tmp136 [V151,T45] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp137 [V152,T61] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
-; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdi "field V82._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdx "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> r8 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp141 [V156,T60] ( 2, 4 ) int -> rdx "field V84._length (fldOffset=0x8)" P-INDEP
-;* V157 tmp142 [V157 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
-;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
+; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp140 [V155 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp141 [V156 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
+; V157 tmp142 [V157,T58] ( 2, 4 ) byref -> rdx "field V85._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp143 [V158,T60] ( 2, 4 ) int -> rdi "field V85._length (fldOffset=0x8)" P-INDEP
; V159 tmp144 [V159,T46] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
; V160 tmp145 [V160,T50] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
; V161 tmp146 [V161,T23] ( 2, 16 ) long -> rdi "Cast away GC"
; V162 tmp147 [V162,T24] ( 2, 16 ) long -> rsi "Cast away GC"
; V163 tmp148 [V163,T25] ( 2, 16 ) long -> rdi "argument with side effect"
; V164 tmp149 [V164,T26] ( 2, 16 ) long -> rsi "argument with side effect"
; V165 cse0 [V165,T53] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
; V166 rat0 [V166,T27] ( 4, 12.25) long -> [rbp-0x70] "Strength reduced derived IV"
; V167 rat1 [V167,T28] ( 4, 12.25) int -> [rbp-0x74] "Trip count IV"
; V168 rat2 [V168,T29] ( 4, 12.25) long -> r8 "Strength reduced derived IV"
; V169 rat3 [V169,T30] ( 4, 12.25) int -> rdi "Trip count IV"
; V170 rat4 [V170,T16] ( 5, 16.50) long -> [rbp-0x80] "Widened IV V14"
; V171 rat5 [V171,T17] ( 5, 16.50) long -> r12 "Widened IV V12"
;
; Lcl frame size = 104
G_M6373_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
xor eax, eax
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x58], rax
mov r13, rdi
mov eax, esi
mov r14, rdx
mov r12, rcx
mov r15, r8
mov ebx, r9d
;; size=49 bbWeight=1 PerfScore 10.50
G_M6373_IG02:
cmp eax, 1
je G_M6373_IG40
;; size=9 bbWeight=1 PerfScore 1.25
G_M6373_IG03:
test eax, eax
je G_M6373_IG38
test ebx, ebx
jle G_M6373_IG15
mov dword ptr [rbp-0x5C], eax
lea edx, [rax-0x01]
imul edx, dword ptr [r14+0x08]
mov dword ptr [rbp-0x2C], edx
test r12, r12
je SHORT G_M6373_IG05
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M6373_IG42
;; size=54 bbWeight=0.50 PerfScore 7.75
G_M6373_IG04:
mov rsi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
cmp r12, gword ptr [rsi]
jne SHORT G_M6373_IG09
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG05:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jle G_M6373_IG13
;; size=11 bbWeight=0.50 PerfScore 1.12
G_M6373_IG06:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov edi, eax
align [14 bytes for IG07]
;; size=22 bbWeight=0.25 PerfScore 0.44
G_M6373_IG07:
mov rsi, gword ptr [r8+r13]
mov edx, dword ptr [rbp-0x2C]
add edx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x2C], edx
add r8, 8
dec edi
jne SHORT G_M6373_IG07
;; size=21 bbWeight=4 PerfScore 34.00
G_M6373_IG08:
mov byte ptr [r15], 0
mov rdx, r15
mov ecx, ebx
lea r8, [rbp-0x38]
mov edi, dword ptr [rbp-0x2C]
mov esi, 7
mov r9, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je SHORT G_M6373_IG15
mov eax, dword ptr [rbp-0x38]
cmp eax, ebx
jbe SHORT G_M6373_IG14
jmp G_M6373_IG45
;; size=50 bbWeight=0.50 PerfScore 6.00
G_M6373_IG09:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jg SHORT G_M6373_IG11
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M6373_IG10:
mov dword ptr [rbp-0x5C], eax
jmp SHORT G_M6373_IG08
;; size=5 bbWeight=0.25 PerfScore 0.75
G_M6373_IG11:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov dword ptr [rbp-0x74], eax
;; size=9 bbWeight=0.25 PerfScore 0.56
G_M6373_IG12:
mov qword ptr [rbp-0x70], r8
mov rsi, gword ptr [r8+r13]
mov rdi, r12
mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x50]
call [r10+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
mov edx, eax
add edx, dword ptr [rbp-0x2C]
mov eax, edx
mov r8, qword ptr [rbp-0x70]
add r8, 8
mov r9d, dword ptr [rbp-0x74]
dec r9d
mov dword ptr [rbp-0x2C], eax
mov dword ptr [rbp-0x74], r9d
jne SHORT G_M6373_IG12
jmp SHORT G_M6373_IG08
;; size=56 bbWeight=4 PerfScore 81.00
G_M6373_IG13:
mov dword ptr [rbp-0x5C], eax
jmp G_M6373_IG08
;; size=8 bbWeight=0.25 PerfScore 0.75
G_M6373_IG14:
mov r9d, eax
add r15, r9
sub ebx, eax
mov eax, ebx
mov r9d, dword ptr [rbp-0x2C]
cmp eax, r9d
mov dword ptr [rbp-0x2C], r9d
jge SHORT G_M6373_IG17
;; size=23 bbWeight=0.50 PerfScore 2.12
G_M6373_IG15:
xor eax, eax
mov rcx, bword ptr [rbp+0x10]
mov dword ptr [rcx], eax
;; size=8 bbWeight=0.50 PerfScore 1.12
G_M6373_IG16:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG17:
mov eax, dword ptr [rbp-0x5C]
test r12, r12
je G_M6373_IG26
mov r8, gword ptr [r13]
test r8, r8
- je SHORT G_M6373_IG18
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- mov dword ptr [rbp-0x5C], eax
- jmp SHORT G_M6373_IG19
- ;; size=34 bbWeight=0.50 PerfScore 5.50
-G_M6373_IG18:
+ jne SHORT G_M6373_IG18
xor rsi, rsi
xor edx, edx
mov dword ptr [rbp-0x5C], eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
+ jmp SHORT G_M6373_IG19
+ ;; size=30 bbWeight=0.50 PerfScore 4.50
+G_M6373_IG18:
+ lea rsi, bword ptr [r8+0x0C]
+ mov edx, dword ptr [r8+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
G_M6373_IG19:
mov rcx, r15
mov r8d, ebx
mov rdi, r12
mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x58]
mov qword ptr [rbp-0x68], r10
call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
ja G_M6373_IG45
mov edx, eax
add r15, rdx
sub ebx, eax
mov qword ptr [rbp-0x80], 1
cmp dword ptr [rbp-0x5C], 1
jle G_M6373_IG24
;; size=58 bbWeight=0.50 PerfScore 7.38
G_M6373_IG20:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M6373_IG43
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov ecx, dword ptr [r14+0x08]
cmp ecx, ebx
ja G_M6373_IG45
mov r8d, ecx
add r8, r15
mov esi, ebx
sub esi, ecx
mov r15, r8
mov ebx, esi
mov rax, qword ptr [rbp-0x80]
mov rcx, gword ptr [r13+8*rax]
test rcx, rcx
- je SHORT G_M6373_IG22
+ jne SHORT G_M6373_IG22
;; size=72 bbWeight=4 PerfScore 65.00
G_M6373_IG21:
- lea r8, bword ptr [rcx+0x0C]
- mov edx, dword ptr [rcx+0x08]
- mov rdi, r8
+ xor rdx, rdx
+ xor edi, edi
jmp SHORT G_M6373_IG23
- ;; size=12 bbWeight=2 PerfScore 9.50
+ ;; size=6 bbWeight=2 PerfScore 5.00
G_M6373_IG22:
- xor rdi, rdi
- xor edx, edx
- ;; size=4 bbWeight=2 PerfScore 1.00
+ lea rdx, bword ptr [rcx+0x0C]
+ mov edi, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=2 PerfScore 5.00
G_M6373_IG23:
mov rcx, r15
mov r8d, esi
- mov rsi, rdi
+ mov rsi, rdx
+ mov edx, edi
mov rdi, r12
mov r9, qword ptr [rbp-0x68]
call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
ja G_M6373_IG45
mov esi, eax
add rsi, r15
sub ebx, eax
mov r15, rsi
mov rsi, qword ptr [rbp-0x80]
inc esi
mov eax, dword ptr [rbp-0x5C]
cmp esi, eax
mov qword ptr [rbp-0x80], rsi
jl G_M6373_IG20
- ;; size=59 bbWeight=4 PerfScore 47.00
+ ;; size=61 bbWeight=4 PerfScore 48.00
G_M6373_IG24:
mov r15d, dword ptr [rbp-0x2C]
mov eax, r15d
add eax, dword ptr [rbp-0x38]
mov r15, bword ptr [rbp+0x10]
mov dword ptr [r15], eax
mov eax, 1
;; size=22 bbWeight=0.50 PerfScore 2.75
G_M6373_IG25:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG26:
mov dword ptr [rbp-0x5C], eax
mov r12, gword ptr [r13]
mov rsi, r15
mov edx, ebx
mov rdi, r12
mov r8, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [r8]System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
mov edx, dword ptr [r12+0x08]
cmp edx, ebx
ja G_M6373_IG45
mov edi, edx
add rdi, r15
sub ebx, edx
mov r15, rdi
mov r12d, 1
cmp dword ptr [rbp-0x5C], 1
jle SHORT G_M6373_IG24
;; size=63 bbWeight=0.50 PerfScore 7.25
G_M6373_IG27:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M6373_IG43
mov rdi, r15
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [r14+0x08]
cmp edi, ebx
ja G_M6373_IG45
mov eax, edi
add r15, rax
sub ebx, edi
mov rdi, gword ptr [r13+8*r12]
mov rax, rdi
test rax, rax
- je SHORT G_M6373_IG29
+ jne SHORT G_M6373_IG29
;; size=63 bbWeight=4 PerfScore 59.00
G_M6373_IG28:
+ xor rdi, rdi
+ xor esi, esi
+ mov gword ptr [rbp-0x88], rax
+ jmp SHORT G_M6373_IG30
+ ;; size=13 bbWeight=2 PerfScore 7.00
+G_M6373_IG29:
lea rdi, bword ptr [rax+0x0C]
mov gword ptr [rbp-0x88], rax
mov esi, dword ptr [rax+0x08]
- mov rax, gword ptr [rbp-0x88]
- jmp SHORT G_M6373_IG30
- ;; size=23 bbWeight=2 PerfScore 13.00
-G_M6373_IG29:
- xor rdi, rdi
- xor esi, esi
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M6373_IG30:
cmp esi, ebx
jle SHORT G_M6373_IG32
;; size=4 bbWeight=4 PerfScore 5.00
G_M6373_IG31:
mov ecx, ebx
mov r8d, 1
- mov gword ptr [rbp-0x88], rax
mov dword ptr [rbp-0x44], r8d
jmp SHORT G_M6373_IG33
- ;; size=21 bbWeight=2 PerfScore 9.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M6373_IG32:
mov ecx, esi
xor r8d, r8d
mov dword ptr [rbp-0x44], r8d
- mov gword ptr [rbp-0x88], rax
- ;; size=16 bbWeight=2 PerfScore 5.00
+ ;; size=9 bbWeight=2 PerfScore 3.00
G_M6373_IG33:
mov bword ptr [rbp-0x50], rdi
mov bword ptr [rbp-0x58], r15
mov rsi, r15
mov qword ptr [rbp-0x40], rcx
mov rdx, rcx
mov r9, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
call [r9]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
cmp rax, qword ptr [rbp-0x40]
jne SHORT G_M6373_IG35
;; size=37 bbWeight=4 PerfScore 39.00
G_M6373_IG34:
mov r8d, dword ptr [rbp-0x44]
jmp SHORT G_M6373_IG36
;; size=6 bbWeight=2 PerfScore 6.00
G_M6373_IG35:
mov r8d, 3
;; size=6 bbWeight=2 PerfScore 0.50
G_M6373_IG36:
xor rax, rax
mov bword ptr [rbp-0x50], rax
;; size=6 bbWeight=4 PerfScore 5.00
G_M6373_IG37:
mov bword ptr [rbp-0x58], rax
cmp r8d, 3
je G_M6373_IG44
mov rax, gword ptr [rbp-0x88]
mov eax, dword ptr [rax+0x08]
cmp eax, ebx
ja G_M6373_IG45
mov ecx, eax
add r15, rcx
sub ebx, eax
inc r12d
mov eax, dword ptr [rbp-0x5C]
cmp r12d, eax
mov dword ptr [rbp-0x5C], eax
jl G_M6373_IG27
jmp G_M6373_IG24
;; size=62 bbWeight=4 PerfScore 51.00
G_M6373_IG38:
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp+0x10]
mov rdi, 0xD1FFAB1E ; ''
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=34 bbWeight=0.50 PerfScore 2.75
G_M6373_IG39:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG40:
mov rdx, r15
mov ecx, ebx
mov rdi, gword ptr [r13]
mov rsi, r12
mov r8, bword ptr [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=29 bbWeight=0.50 PerfScore 3.62
G_M6373_IG41:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG42:
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M6373_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M6373_IG43:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M6373_IG44:
mov rdi, 0xD1FFAB1E ; System.Net.Http.QPack.QPackEncodingException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String
call [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String
mov r15, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this
call [rax]System.Exception:.ctor():this
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=69 bbWeight=0 PerfScore 0.00
G_M6373_IG45:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1164, prolog size 49, PerfScore 505.12, instruction count 333, allocated bytes for code 1164 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 1149, prolog size 49, PerfScore 501.62, instruction count 331, allocated bytes for code 1149 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; ============================================================
-15 (-5.49 % of base) - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
; Assembly listing for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) byref -> r15 this single-def
; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rbx class-hnd single-def <System.Delegate>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Object>
; V03 arg3 [V03,T03] ( 3, 2.50) ubyte -> r13 single-def
; V04 arg4 [V04,T04] ( 3, 2.50) ubyte -> r12 single-def
; V05 loc0 [V05,T07] ( 3, 2.50) ref -> r15 class-hnd single-def <System.Threading.CancellationTokenSource>
;* V06 loc1 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Threading.CancellationTokenRegistration>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref
; V14 tmp7 [V14,T11] ( 3, 1.50) ref -> r13
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rax
; V24 tmp17 [V24,T10] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Threading.Thread>
; V25 tmp18 [V25,T08] ( 4, 2 ) ref -> rax
; V26 tmp19 [V26,T13] ( 2, 1 ) ref -> rax single-def "field V06._node (fldOffset=0x0)" P-INDEP
; V27 tmp20 [V27,T14] ( 2, 1 ) long -> rdx "field V06._id (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T15] ( 2, 1 ) struct (16) [rbp-0x38] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Threading.CancellationTokenRegistration>
; V29 rat0 [V29,T09] ( 3, 2 ) byref -> rax "TLS field access"
; V30 rat1 [V30,T06] ( 3, 3 ) long -> rax "TLS access"
; V31 rat2 [V31,T05] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
;
; Lcl frame size = 24
G_M51353_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x38], rax
mov r15, rdi
mov rbx, rsi
mov r14, rdx
mov r13d, ecx
mov r12d, r8d
;; size=40 bbWeight=1 PerfScore 9.25
G_M51353_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov r15, gword ptr [r15]
test r15, r15
- je G_M51353_IG11
- ;; size=37 bbWeight=1 PerfScore 7.00
+ jne SHORT G_M51353_IG05
+ ;; size=33 bbWeight=1 PerfScore 7.00
G_M51353_IG03:
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M51353_IG04:
+ add rsp, 24
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M51353_IG05:
test r13b, r13b
- je SHORT G_M51353_IG06
+ je SHORT G_M51353_IG08
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 3
- jle G_M51353_IG13
+ jle SHORT G_M51353_IG13
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x18]
test rax, rax
- je G_M51353_IG13
- ;; size=53 bbWeight=0.50 PerfScore 7.00
-G_M51353_IG04:
+ je SHORT G_M51353_IG13
+ ;; size=45 bbWeight=0.50 PerfScore 7.00
+G_M51353_IG06:
mov rax, gword ptr [rax+0x10]
test rax, rax
- jne SHORT G_M51353_IG05
+ jne SHORT G_M51353_IG07
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
call [rax]System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
;; size=21 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG05:
+G_M51353_IG07:
mov r13, gword ptr [rax+0x10]
- jmp SHORT G_M51353_IG07
+ jmp SHORT G_M51353_IG09
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M51353_IG06:
+G_M51353_IG08:
xor r13, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG07:
+G_M51353_IG09:
test r12b, r12b
- je SHORT G_M51353_IG08
+ je SHORT G_M51353_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
- jmp SHORT G_M51353_IG09
+ jmp SHORT G_M51353_IG11
;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG08:
+G_M51353_IG10:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG09:
+G_M51353_IG11:
mov rdi, r15
mov rsi, rbx
mov rdx, r14
mov rcx, r13
mov r8, rax
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
mov gword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x30], rdx
mov rax, gword ptr [rbp-0x38]
mov rdx, qword ptr [rbp-0x30]
;; size=43 bbWeight=0.50 PerfScore 4.25
-G_M51353_IG10:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51353_IG11:
- xor rax, rax
- xor edx, edx
- ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M51353_IG12:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M51353_IG13:
mov edi, 3
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- jmp G_M51353_IG04
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M51353_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 273, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 273 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
+; Total bytes of code 258, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 258 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
; ============================================================
-14 (-2.67 % of base) - System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
; Assembly listing for method System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T01] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Action>
; V02 loc0 [V02,T08] ( 3, 2.50) ref -> r14 class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T09] ( 4, 2 ) ref -> r13 class-hnd single-def <System.Threading.Tasks.Task>
; V04 loc2 [V04,T11] ( 3, 1.50) ref -> r12 class-hnd single-def <System.Threading.Tasks.Task>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Action,System.Threading.Tasks.Task]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
; V08 tmp3 [V08,T04] ( 4, 3.50) ref -> rsi
; V09 tmp4 [V09,T02] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Action,System.Threading.Tasks.Task]>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
; V12 tmp7 [V12,T12] ( 3, 1.50) int -> [rbp-0x2C]
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp12 [V17,T13] ( 3, 1.50) int -> [rbp-0x30]
+; V17 tmp12 [V17,T13] ( 3, 1.50) int -> registers
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp16 [V21,T15] ( 2, 1 ) int -> [rbp-0x34] spill-single-def
+; V21 tmp16 [V21,T15] ( 2, 1 ) int -> [rbp-0x30] spill-single-def
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
-; V28 tmp23 [V28,T14] ( 3, 1.50) int -> registers
+; V28 tmp23 [V28,T14] ( 3, 1.50) int -> r9
; V29 tmp24 [V29,T05] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Runtime.CompilerServices.TaskAwaiter+<>c>
;* V30 cse0 [V30,T16] ( 0, 0 ) byref -> zero-ref "CSE #02: moderate"
; V31 rat0 [V31,T10] ( 3, 2 ) byref -> rax "TLS field access"
; V32 rat1 [V32,T07] ( 3, 3 ) long -> rax "TLS access"
; V33 rat2 [V33,T06] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51686_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M51686_IG02:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
cmp byte ptr [rdi], 0
je SHORT G_M51686_IG04
;; size=15 bbWeight=1 PerfScore 4.25
G_M51686_IG03:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
call [rax]System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M51686_IG04:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M51686_IG11
;; size=27 bbWeight=1 PerfScore 6.25
G_M51686_IG05:
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 30
jle G_M51686_IG16
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0xF0]
test rax, rax
je G_M51686_IG16
;; size=51 bbWeight=0.50 PerfScore 6.38
G_M51686_IG06:
mov r13, gword ptr [rax+0x10]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:TryGetContinuationTask(System.Action):System.Threading.Tasks.Task
call [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:TryGetContinuationTask(System.Action):System.Threading.Tasks.Task
mov r12, rax
test r13, r13
- jne SHORT G_M51686_IG07
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
- call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
- mov r13d, eax
- xor edi, edi
- mov dword ptr [rbp-0x30], edi
- jmp SHORT G_M51686_IG08
- ;; size=62 bbWeight=0.50 PerfScore 8.00
-G_M51686_IG07:
+ je SHORT G_M51686_IG07
mov rdi, gword ptr [r13+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov dword ptr [rbp-0x2C], eax
mov rdi, r13
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rcx]System.Threading.Tasks.Task:get_Id():int:this
mov r13d, eax
- mov dword ptr [rbp-0x30], r13d
- mov r13d, dword ptr [rbp-0x2C]
- ;; size=47 bbWeight=0.50 PerfScore 7.50
+ jmp SHORT G_M51686_IG08
+ ;; size=68 bbWeight=0.50 PerfScore 11.00
+G_M51686_IG07:
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rdi, gword ptr [rdi]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ mov r13d, eax
+ xor eax, eax
+ mov dword ptr [rbp-0x2C], r13d
+ mov r13d, eax
+ ;; size=37 bbWeight=0.50 PerfScore 3.62
G_M51686_IG08:
mov rdi, rbx
- mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
cmp dword ptr [rdi], edi
- call [rcx]System.Threading.Tasks.Task:get_Id():int:this
- mov dword ptr [rbp-0x34], eax
+ call [rax]System.Threading.Tasks.Task:get_Id():int:this
+ mov dword ptr [rbp-0x30], eax
test r12, r12
- je SHORT G_M51686_IG09
+ jne SHORT G_M51686_IG09
+ xor r9d, r9d
+ jmp SHORT G_M51686_IG10
+ ;; size=30 bbWeight=0.50 PerfScore 5.50
+G_M51686_IG09:
mov rdi, r12
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rcx]System.Threading.Tasks.Task:get_Id():int:this
mov r9d, eax
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M51686_IG10
- ;; size=48 bbWeight=0.50 PerfScore 7.75
-G_M51686_IG09:
- mov eax, dword ptr [rbp-0x34]
- xor edi, edi
- xor r9d, r9d
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
G_M51686_IG10:
mov rdi, r14
- mov esi, r13d
- mov edx, dword ptr [rbp-0x30]
- mov ecx, eax
+ mov esi, dword ptr [rbp-0x2C]
+ mov edx, r13d
+ mov ecx, dword ptr [rbp-0x30]
mov r8d, 2
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitBegin(int,int,int,int,int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitBegin(int,int,int,int,int):this
- ;; size=29 bbWeight=0.50 PerfScore 2.62
+ ;; size=30 bbWeight=0.50 PerfScore 3.00
G_M51686_IG11:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M51686_IG17
;; size=19 bbWeight=1 PerfScore 4.25
G_M51686_IG12:
mov rdi, 0xD1FFAB1E ; data for System.Runtime.CompilerServices.TaskAwaiter+<>c:<>9__12_0
mov rsi, gword ptr [rdi]
test rsi, rsi
jne SHORT G_M51686_IG14
;; size=18 bbWeight=1 PerfScore 3.50
G_M51686_IG13:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Action,System.Threading.Tasks.Task]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Runtime.CompilerServices.TaskAwaiter+<>c:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
je SHORT G_M51686_IG18
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Runtime.CompilerServices.TaskAwaiter+<>c:<>9__12_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=80 bbWeight=0.50 PerfScore 4.75
G_M51686_IG14:
mov rdi, r15
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:CreateContinuationWrapper(System.Action,System.Action`2[System.Action,System.Threading.Tasks.Task],System.Threading.Tasks.Task):System.Action
;; size=16 bbWeight=1 PerfScore 0.75
G_M51686_IG15:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:CreateContinuationWrapper(System.Action,System.Action`2[System.Action,System.Threading.Tasks.Task],System.Threading.Tasks.Task):System.Action
;; size=17 bbWeight=1 PerfScore 5.25
G_M51686_IG16:
mov edi, 30
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M51686_IG06
;; size=15 bbWeight=0 PerfScore 0.00
G_M51686_IG17:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TaskAwaiter+<>c
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M51686_IG12
;; size=20 bbWeight=0 PerfScore 0.00
G_M51686_IG18:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 525, prolog size 25, PerfScore 71.00, instruction count 120, allocated bytes for code 525 (MethodHash=5a793619) for method System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action (FullOpts)
+; Total bytes of code 511, prolog size 22, PerfScore 70.12, instruction count 116, allocated bytes for code 511 (MethodHash=5a793619) for method System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action (FullOpts)
; ============================================================
-11 (-1.15 % of base) - System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this
; Assembly listing for method System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 14 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 10, 6.50) ref -> [rbp-0x38] this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T02] ( 4, 3 ) int -> r15 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
; V03 loc0 [V03,T20] ( 3, 1.50) ubyte -> r15
; V04 loc1 [V04,T01] ( 10, 5 ) ref -> [rbp-0x40] class-hnd exact spill-single-def <System.Threading.Tasks.TplEventSource>
; V05 loc2 [V05,T09] ( 4, 2 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Threading.Tasks.Task>
; V06 loc3 [V06,T10] ( 4, 2 ) ref -> r14 class-hnd single-def <System.Threading.Tasks.Task>
; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T06] ( 3, 3 ) int -> r12 "dup spill"
;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref
; V12 tmp5 [V12,T13] ( 2, 2 ) int -> r14 "impAppendStmt"
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V14 tmp7 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp8 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
; V19 tmp12 [V19,T21] ( 3, 1.50) int -> [rbp-0x2C]
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref single-def
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref
; V26 tmp19 [V26,T22] ( 3, 1.50) int -> [rbp-0x30]
;* V27 tmp20 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V29 tmp22 [V29,T14] ( 2, 2 ) int -> r13 "Inlining Arg"
;* V30 tmp23 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V31 tmp24 [V31,T03] ( 3, 2 ) ref -> [rbp-0x50] single-def "field V02._source (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T15] ( 2, 2 ) int -> rcx "argument with side effect"
; V33 tmp26 [V33,T16] ( 2, 2 ) int -> r13 "argument with side effect"
; V34 tmp27 [V34,T17] ( 2, 2 ) int -> r14 "argument with side effect"
; V35 tmp28 [V35,T18] ( 2, 2 ) int -> rcx "argument with side effect"
; V36 tmp29 [V36,T19] ( 2, 2 ) int -> rsi "argument with side effect"
; V37 cse0 [V37,T23] ( 3, 1.50) int -> rsi "CSE #05: moderate"
; V38 rat0 [V38,T11] ( 3, 2 ) byref -> rax "TLS field access"
; V39 rat1 [V39,T07] ( 3, 3 ) long -> rax "TLS access"
; V40 rat2 [V40,T04] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
; V41 rat3 [V41,T12] ( 3, 2 ) byref -> rax "TLS field access"
; V42 rat4 [V42,T08] ( 3, 3 ) long -> rax "TLS access"
; V43 rat5 [V43,T05] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
;
; Lcl frame size = 56
G_M24641_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
vzeroupper
lea rbp, [rsp+0x60]
mov gword ptr [rbp-0x50], rdx
mov rbx, rdi
mov r15d, esi
;; size=32 bbWeight=1 PerfScore 9.25
G_M24641_IG02:
test dword ptr [rbx+0x34], 0xD1FFAB1E
jne G_M24641_IG25
;; size=13 bbWeight=1 PerfScore 4.00
G_M24641_IG03:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M24641_IG27
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M24641_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov r13, gword ptr [rdi]
mov gword ptr [rbp-0x40], r13
movzx r12, byte ptr [r13+0x9D]
test r12d, r12d
- je G_M24641_IG12
+ je SHORT G_M24641_IG06
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 30
jle G_M24641_IG28
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0xF0]
test rax, rax
je G_M24641_IG28
- ;; size=85 bbWeight=0.50 PerfScore 9.62
+ ;; size=81 bbWeight=0.50 PerfScore 9.62
G_M24641_IG05:
mov rax, gword ptr [rax+0x10]
mov gword ptr [rbp-0x48], rax
test rax, rax
- jne G_M24641_IG13
+ je SHORT G_M24641_IG07
+ mov rdi, gword ptr [rax+0x18]
+ mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ cmp dword ptr [rdi], edi
+ call [rcx]System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ mov dword ptr [rbp-0x2C], eax
+ mov rdi, gword ptr [rbp-0x48]
+ mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
+ call [rcx]System.Threading.Tasks.Task:get_Id():int:this
+ mov dword ptr [rbp-0x30], eax
+ jmp SHORT G_M24641_IG09
+ ;; size=55 bbWeight=0.50 PerfScore 10.38
+G_M24641_IG06:
+ mov gword ptr [rbp-0x38], rbx
+ jmp SHORT G_M24641_IG10
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M24641_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M24641_IG29
- ;; size=36 bbWeight=0.50 PerfScore 4.25
-G_M24641_IG06:
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M24641_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskScheduler:s_defaultTaskScheduler
mov rdi, gword ptr [rdi]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
- xor edi, edi
- mov dword ptr [rbp-0x30], edi
+ xor ecx, ecx
mov dword ptr [rbp-0x2C], eax
+ mov dword ptr [rbp-0x30], ecx
;; size=35 bbWeight=0.50 PerfScore 5.38
-G_M24641_IG07:
+G_M24641_IG09:
mov gword ptr [rbp-0x38], rbx
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rcx]System.Threading.Tasks.Task:get_Id():int:this
mov ecx, eax
mov esi, dword ptr [rbp-0x2C]
mov edx, dword ptr [rbp-0x30]
mov rdi, r13
mov r8d, 1
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitBegin(int,int,int,int,int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitBegin(int,int,int,int,int):this
;; size=51 bbWeight=0.50 PerfScore 5.38
-G_M24641_IG08:
+G_M24641_IG10:
mov rax, 0xD1FFAB1E ; global ptr
cmp dword ptr [rax], 0
jne G_M24641_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M24641_IG09:
+G_M24641_IG11:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M24641_IG10:
+G_M24641_IG12:
call rax ; System.Diagnostics.Debugger:IsManagedDebuggerAttached():int
test eax, eax
- je SHORT G_M24641_IG11
+ je SHORT G_M24641_IG13
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debugger:<NotifyOfCrossThreadDependency>g__NotifyOfCrossThreadDependencySlow|4_0()
call [rax]System.Diagnostics.Debugger:<NotifyOfCrossThreadDependency>g__NotifyOfCrossThreadDependencySlow|4_0()
;; size=18 bbWeight=0.50 PerfScore 3.75
-G_M24641_IG11:
+G_M24641_IG13:
cmp r15d, -1
jne SHORT G_M24641_IG14
mov r14, gword ptr [rbp-0x50]
test r14, r14
jne SHORT G_M24641_IG15
mov rdi, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
call [rax]System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
test eax, eax
je SHORT G_M24641_IG16
mov rbx, gword ptr [rbp-0x38]
test dword ptr [rbx+0x34], 0xD1FFAB1E
je SHORT G_M24641_IG17
mov r15d, 1
jmp SHORT G_M24641_IG18
;; size=56 bbWeight=0.50 PerfScore 8.12
-G_M24641_IG12:
- mov gword ptr [rbp-0x38], rbx
- jmp SHORT G_M24641_IG08
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M24641_IG13:
- mov rdi, gword ptr [rax+0x18]
- mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
- cmp dword ptr [rdi], edi
- call [rcx]System.Threading.Tasks.TaskScheduler:get_Id():int:this
- mov dword ptr [rbp-0x2C], eax
- mov rdi, gword ptr [rbp-0x48]
- mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
- call [rcx]System.Threading.Tasks.Task:get_Id():int:this
- mov dword ptr [rbp-0x30], eax
- jmp G_M24641_IG07
- ;; size=45 bbWeight=0.50 PerfScore 8.25
G_M24641_IG14:
mov rbx, gword ptr [rbp-0x38]
mov r14, gword ptr [rbp-0x50]
jmp SHORT G_M24641_IG17
;; size=10 bbWeight=0.25 PerfScore 1.00
G_M24641_IG15:
mov rbx, gword ptr [rbp-0x38]
jmp SHORT G_M24641_IG17
;; size=6 bbWeight=0.25 PerfScore 0.75
G_M24641_IG16:
mov rbx, gword ptr [rbp-0x38]
;; size=4 bbWeight=0.25 PerfScore 0.25
G_M24641_IG17:
mov rdi, rbx
mov esi, r15d
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this
call [rax]System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this
mov r15d, eax
;; size=24 bbWeight=0.50 PerfScore 2.12
G_M24641_IG18:
test r12d, r12d
je G_M24641_IG23
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 30
jle G_M24641_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0xF0]
test rax, rax
je G_M24641_IG31
;; size=60 bbWeight=0.50 PerfScore 7.00
G_M24641_IG19:
mov r14, gword ptr [rax+0x10]
test r14, r14
je SHORT G_M24641_IG20
mov r12, gword ptr [rbp-0x40]
mov rdi, gword ptr [r14+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov r13d, eax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov r14d, eax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov ecx, eax
mov esi, r13d
mov edx, r14d
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitEnd(int,int,int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitEnd(int,int,int):this
jmp G_M24641_IG22
;; size=95 bbWeight=0.50 PerfScore 13.12
G_M24641_IG20:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M24641_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M24641_IG21:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskScheduler:s_defaultTaskScheduler
mov rdi, gword ptr [rdi]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov r14d, eax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov r13d, eax
mov r12, gword ptr [rbp-0x40]
movzx rsi, byte ptr [r12+0x9D]
test esi, esi
je SHORT G_M24641_IG22
xor ecx, ecx
mov dword ptr [rsp], ecx
mov rcx, qword ptr [r12+0x80]
mov edx, dword ptr [r12+0x98]
mov rdi, r12
mov r8d, 5
mov r9d, 2
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
call [rax]System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
test eax, eax
je SHORT G_M24641_IG22
mov rdi, r12
mov r8d, r13d
mov edx, r14d
mov esi, 11
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
;; size=145 bbWeight=0.50 PerfScore 15.88
G_M24641_IG22:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov esi, eax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitContinuationComplete(int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitContinuationComplete(int):this
;; size=32 bbWeight=0.50 PerfScore 3.62
G_M24641_IG23:
mov eax, r15d
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M24641_IG24:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M24641_IG25:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M24641_IG26:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M24641_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M24641_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M24641_IG28:
mov edi, 30
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M24641_IG05
;; size=15 bbWeight=0 PerfScore 0.00
G_M24641_IG29:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskScheduler
call CORINFO_HELP_GET_NONGCSTATIC_BASE
- jmp G_M24641_IG06
+ jmp G_M24641_IG08
;; size=20 bbWeight=0 PerfScore 0.00
G_M24641_IG30:
call CORINFO_HELP_POLL_GC
- jmp G_M24641_IG09
+ jmp G_M24641_IG11
;; size=10 bbWeight=0 PerfScore 0.00
G_M24641_IG31:
mov edi, 30
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M24641_IG19
;; size=15 bbWeight=0 PerfScore 0.00
G_M24641_IG32:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskScheduler
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M24641_IG21
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 958, prolog size 22, PerfScore 113.50, instruction count 218, allocated bytes for code 958 (MethodHash=bcf79fbe) for method System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
+; Total bytes of code 947, prolog size 22, PerfScore 113.50, instruction count 218, allocated bytes for code 947 (MethodHash=bcf79fbe) for method System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
-7 (-0.90 % of base) - System.IO.Path:GetTempFileName():System.String
; Assembly listing for method System.IO.Path:GetTempFileName():System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 16 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
; V01 loc1 [V01,T10] ( 6, 4 ) ref -> [rbp-0x90] class-hnd exact spill-single-def <System.String>
; V02 loc2 [V02,T19] ( 5, 3.50) int -> rax
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V04 loc4 [V04,T13] ( 4, 4 ) int -> rax
;* V05 loc5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[ubyte]>
;* V06 loc6 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V07 loc7 [V07 ] ( 2, 2 ) byref -> [rbp-0x30] must-init pinned
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T14] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V12 tmp4 [V12,T05] ( 3, 6 ) int -> rdi "Span.get_Item index"
; V13 tmp5 [V13,T08] ( 3, 5 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp9 [V17,T27] ( 2, 2 ) long -> r13 "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V20 tmp12 [V20,T21] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <ubyte[]>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V25 tmp17 [V25,T26] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V26 tmp18 [V26,T28] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V28 tmp20 [V28,T02] ( 4, 8 ) byref -> rcx single-def "Inlining Arg"
; V29 tmp21 [V29,T16] ( 2, 4 ) int -> rdx "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V31 tmp23 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp25 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp26 [V34 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
; V35 tmp27 [V35,T07] ( 5, 5 ) byref -> [rbp-0x98] "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V37 tmp29 [V37,T06] ( 3, 6 ) long -> rbx "impAppendStmt"
; V38 tmp30 [V38,T38] ( 2, 0 ) struct ( 8) [rbp-0x38] do-not-enreg[SR] multireg-ret "spilled call-like call argument" <Interop+ErrorInfo>
; V39 tmp31 [V39,T01] ( 5, 9 ) int -> rbx "Inlining Arg"
;* V40 tmp32 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V41 tmp33 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V43 tmp35 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp36 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V45 tmp37 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V46 tmp38 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
;* V47 tmp39 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V48 tmp40 [V48 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def "Inline stloc first use temp"
; V49 tmp41 [V49,T22] ( 3, 3 ) byref -> r15 "Inline return value spill temp"
;* V50 tmp42 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V51 tmp43 [V51,T23] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
;* V52 tmp44 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V53 tmp45 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V54 tmp46 [V54,T20] ( 4, 3 ) int -> r13 "Inline stloc first use temp"
; V55 tmp47 [V55,T11] ( 4, 4 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String>
; V56 tmp48 [V56 ] ( 3, 1.50) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp"
;* V57 tmp49 [V57 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V58 tmp50 [V58,T15] ( 2, 4 ) ref -> rax single-def "Single return block return value"
; V59 FramesRoot [V59,T04] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
; V60 PInvokeFrame [V60 ] ( 8, 8 ) struct (64) [rbp-0x88] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V00._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
;* V63 tmp55 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp56 [V64 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
; V65 tmp57 [V65,T03] ( 7, 6 ) byref -> [rbp-0xA0] "field V05._reference (fldOffset=0x0)" P-INDEP
; V66 tmp58 [V66,T00] ( 10, 9 ) int -> r12 "field V05._length (fldOffset=0x8)" P-INDEP
;* V67 tmp59 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp60 [V68 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V69 tmp61 [V69 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp62 [V70 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V71 tmp63 [V71 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp64 [V72 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V73 tmp65 [V73 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp66 [V74 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V75 tmp67 [V75 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp68 [V76 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V77 tmp69 [V77,T31] ( 2, 1 ) byref -> r13 single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp70 [V78 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V79 tmp71 [V79,T32] ( 2, 1 ) byref -> r13 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
; V80 tmp72 [V80,T35] ( 2, 1 ) int -> r12 "field V18._length (fldOffset=0x8)" P-INDEP
; V81 tmp73 [V81,T33] ( 2, 1 ) byref -> r13 "field V21._reference (fldOffset=0x0)" P-INDEP
; V82 tmp74 [V82,T36] ( 2, 1 ) int -> r12 "field V21._length (fldOffset=0x8)" P-INDEP
; V83 tmp75 [V83,T24] ( 3, 2 ) byref -> rsi "field V22._reference (fldOffset=0x0)" P-INDEP
; V84 tmp76 [V84,T25] ( 3, 2 ) int -> rdx "field V22._length (fldOffset=0x8)" P-INDEP
-; V85 tmp77 [V85,T34] ( 2, 1 ) byref -> rsi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp78 [V86,T37] ( 2, 1 ) int -> rdx "field V23._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp79 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp80 [V88 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
+;* V85 tmp77 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V86 tmp78 [V86 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
+; V87 tmp79 [V87,T34] ( 2, 1 ) byref -> rsi single-def "field V24._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp80 [V88,T37] ( 2, 1 ) int -> rdx "field V24._length (fldOffset=0x8)" P-INDEP
;* V89 tmp81 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp82 [V90 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V91 tmp83 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp84 [V92 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V95 tmp87 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V99 tmp91 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp92 [V100 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V101 tmp93 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp94 [V102 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
; V103 tmp95 [V103,T17] ( 2, 4 ) long -> rdi "Cast away GC"
; V104 tmp96 [V104,T18] ( 2, 4 ) long -> rdi "argument with side effect"
; V105 tmp97 [V105,T09] ( 3, 5 ) long -> r15 "Cast away GC"
; V106 tmp98 [V106,T29] ( 2, 2 ) long -> rcx "Cast away GC"
; V107 tmp99 [V107,T30] ( 2, 2 ) long -> rcx "argument with side effect"
; V108 GsCookie [V108 ] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V109 cse0 [V109,T12] ( 4, 4 ) ref -> [rbp-0xA8] spill-single-def "CSE #01: moderate"
;
; Lcl frame size = 136
G_M39088_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
vzeroupper
lea rbp, [rsp+0xB0]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0xB0], 0xD1FFAB1E
;; size=59 bbWeight=1 PerfScore 13.33
G_M39088_IG02:
lea rdi, [rbp-0x80]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov rbx, rax
mov rax, rsp
mov qword ptr [rbp-0x68], rax
mov rax, rbp
mov qword ptr [rbp-0x58], rax
mov rax, 0xD1FFAB1E ; code for System.IO.Path:GetTempPath():System.String
call [rax]System.IO.Path:GetTempPath():System.String
mov r15, rax
mov gword ptr [rbp-0x90], r15
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
mov gword ptr [rbp-0xA8], r14
mov rdi, r14
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetByteCount(System.String):int:this
call [rax]System.Text.UTF8Encoding:GetByteCount(System.String):int:this
add eax, 14
cmp eax, 256
jle SHORT G_M39088_IG04
;; size=96 bbWeight=1 PerfScore 17.25
G_M39088_IG03:
movsxd rsi, eax
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
lea r13, bword ptr [rax+0x10]
mov r12d, dword ptr [rax+0x08]
jmp SHORT G_M39088_IG05
;; size=28 bbWeight=0.50 PerfScore 3.00
G_M39088_IG04:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
cmp eax, 256
ja G_M39088_IG22
mov r12d, eax
;; size=28 bbWeight=0.50 PerfScore 2.62
G_M39088_IG05:
mov rdi, r14
test r15, r15
- je SHORT G_M39088_IG07
+ jne SHORT G_M39088_IG07
;; size=8 bbWeight=1 PerfScore 1.50
G_M39088_IG06:
- lea rsi, bword ptr [r15+0x0C]
- mov edx, dword ptr [r15+0x08]
- mov r15, gword ptr [rbp-0x90]
- jmp SHORT G_M39088_IG08
- ;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M39088_IG07:
xor rsi, rsi
xor edx, edx
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ jmp SHORT G_M39088_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
+G_M39088_IG07:
+ lea rsi, bword ptr [r15+0x0C]
+ mov edx, dword ptr [r15+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M39088_IG08:
mov rcx, r13
mov r8d, r12d
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
call [rax]System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, r12d
ja G_M39088_IG22
mov ecx, eax
add rcx, r13
mov edx, r12d
sub edx, eax
cmp edx, 13
jb G_M39088_IG20
mov rdi, 0xD1FFAB1E
mov qword ptr [rcx], rdi
mov dword ptr [rcx+0x08], 0xD1FFAB1E
mov byte ptr [rcx+0x0C], 112
lea edi, [r12-0x01]
cmp edi, r12d
jae G_M39088_IG23
mov byte ptr [rdi+r13], 0
xor rdi, rdi
test r12d, r12d
mov bword ptr [rbp-0xA0], r13
cmovne rdi, r13
mov bword ptr [rbp-0x98], rdi
mov bword ptr [rbp-0x30], rdi
xor edi, edi
mov rax, 0xD1FFAB1E ; function address
;; size=128 bbWeight=1 PerfScore 17.50
G_M39088_IG09:
call rax ; Interop+Sys:SetErrNo(int)
mov r15, bword ptr [rbp-0x98]
mov rdi, r15
mov esi, 4
mov rax, 0xD1FFAB1E ; function address
mov qword ptr [rbp-0x70], rax
lea rax, G_M39088_IG12
mov qword ptr [rbp-0x60], rax
lea rax, [rbp-0x80]
mov qword ptr [rbx+0x08], rax
mov byte ptr [rbx+0x04], 0
;; size=54 bbWeight=1 PerfScore 10.25
G_M39088_IG10:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=1 PerfScore 0.25
G_M39088_IG11:
call rax ; Interop+Sys:<MksTemps>g____PInvoke|80_0(ulong,int):long
;; size=2 bbWeight=1 PerfScore 3.00
G_M39088_IG12:
mov byte ptr [rbx+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M39088_IG13
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=31 bbWeight=1 PerfScore 8.50
G_M39088_IG13:
mov rcx, qword ptr [rbp-0x78]
mov qword ptr [rbx+0x08], rcx
mov rbx, rax
mov rax, 0xD1FFAB1E ; function address
;; size=21 bbWeight=1 PerfScore 2.50
G_M39088_IG14:
call rax ; Interop+Sys:GetErrNo():int
mov edi, eax
call System.Runtime.InteropServices.Marshal:SetLastPInvokeError(int)
test rbx, rbx
jl G_M39088_IG21
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Interop+Sys:Close(long):int
call [rax]Interop+Sys:Close(long):int
xor edi, edi
mov bword ptr [rbp-0x30], rdi
mov r14, gword ptr [rbp-0xA8]
lea ebx, [r12-0x01]
cmp ebx, r12d
ja G_M39088_IG22
mov edi, 1
test ebx, ebx
mov r15, rdi
cmovne r15, bword ptr [rbp-0xA0]
mov bword ptr [rbp-0x40], r15
mov rdi, r14
mov rsi, r15
mov edx, ebx
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this
call [rax]System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this
mov r13d, eax
test r13d, r13d
je SHORT G_M39088_IG16
;; size=110 bbWeight=1 PerfScore 22.25
G_M39088_IG15:
mov edi, r13d
call System.String:FastAllocateString(int):System.String
mov r12, rax
cmp byte ptr [r12], r12b
lea rcx, bword ptr [r12+0x0C]
mov bword ptr [rbp-0x48], rcx
mov rcx, bword ptr [rbp-0x48]
mov rsi, r15
mov edx, ebx
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this
call [rax]System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this
xor eax, eax
mov bword ptr [rbp-0x48], rax
mov rax, r12
jmp SHORT G_M39088_IG17
;; size=62 bbWeight=0.50 PerfScore 7.38
G_M39088_IG16:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M39088_IG17:
cmp qword ptr [rbp-0xB0], 0xD1FFAB1E
je SHORT G_M39088_IG18
call CORINFO_HELP_FAIL_FAST
;; size=18 bbWeight=1 PerfScore 4.00
G_M39088_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M39088_IG19:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
G_M39088_IG20:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M39088_IG21:
mov rax, 0xD1FFAB1E ; code for Interop+Sys:GetLastErrorInfo():Interop+ErrorInfo
call [rax]Interop+Sys:GetLastErrorInfo():Interop+ErrorInfo
mov qword ptr [rbp-0x38], rax
mov rdi, qword ptr [rbp-0x38]
mov rsi, gword ptr [rbp-0x90]
mov edx, 1
mov rax, 0xD1FFAB1E ; code for Interop:ThrowExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte)
call [rax]Interop:ThrowExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte)
int3
;; size=45 bbWeight=0 PerfScore 0.00
G_M39088_IG22:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M39088_IG23:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 779, prolog size 59, PerfScore 121.21, instruction count 182, allocated bytes for code 779 (MethodHash=b4e3674f) for method System.IO.Path:GetTempFileName():System.String (FullOpts)
+; Total bytes of code 772, prolog size 59, PerfScore 120.71, instruction count 181, allocated bytes for code 772 (MethodHash=b4e3674f) for method System.IO.Path:GetTempFileName():System.String (FullOpts)
; ============================================================
-7 (-0.87 % of base) - System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String]
; Assembly listing for method System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 14 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V01 loc1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[ubyte]>
; V02 loc2 [V02,T03] ( 5, 4 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def <System.String>
; V03 loc3 [V03,T04] ( 4, 4 ) int -> rax
; V04 loc4 [V04,T10] ( 3, 3 ) int -> rsi ld-addr-op
;* V05 loc5 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc6 [V06,T21] ( 2, 2 ) struct (16) [rbp-0x38] do-not-enreg[SR] multireg-ret ld-addr-op <System.Guid>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V11 tmp4 [V11,T06] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Text.ASCIIEncoding+ASCIIEncodingSealed>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
; V18 tmp11 [V18,T08] ( 2, 4 ) long -> r15 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V21 tmp14 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp16 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V24 tmp17 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V25 tmp18 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp21 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V33 tmp26 [V33,T16] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V34 tmp27 [V34,T22] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V36 tmp29 [V36,T05] ( 3, 4 ) byref -> rcx single-def "Inlining Arg"
; V37 tmp30 [V37,T09] ( 2, 4 ) int -> rdx "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp33 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V46 tmp39 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V49 tmp42 [V49,T11] ( 3, 3 ) long -> r13 "dup spill"
; V50 tmp43 [V50,T14] ( 3, 2 ) int -> r15 "Inline stloc first use temp"
;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref
; V52 tmp45 [V52,T35] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V55 tmp48 [V55 ] ( 2, 1.50) byref -> [rbp-0x40] must-init pinned "Inline stloc first use temp"
;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V57 tmp50 [V57 ] ( 2, 1.50) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp"
;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V59 tmp52 [V59 ] ( 2, 1 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp"
;* V60 tmp53 [V60 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V61 tmp54 [V61,T24] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V62 tmp55 [V62 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V63 tmp56 [V63,T25] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V65 tmp58 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V66 tmp59 [V66 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V67 tmp60 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V68 tmp61 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V69 tmp62 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V71 tmp64 [V71,T07] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V72 tmp65 [V72,T02] ( 3, 6 ) struct (16) [rbp-0x60] do-not-enreg[SR] multireg-ret must-init "Single return block return value" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
; V73 FramesRoot [V73,T01] ( 10, 6 ) long -> rbx "Pinvoke FrameListRoot"
; V74 PInvokeFrame [V74 ] ( 12, 8 ) struct (64) [rbp-0xA0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V75 tmp68 [V75,T28] ( 0, 0 ) byref -> zero-ref single-def "field V00._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp69 [V76,T30] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V77 tmp70 [V77,T00] ( 9, 7.50) byref -> [rbp-0xB0] spill-single-def "field V01._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp71 [V78,T31] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
; V79 tmp72 [V79,T17] ( 2, 2 ) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp73 [V80,T32] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V81 tmp74 [V81 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp75 [V82 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V83 tmp76 [V83 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp77 [V84 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V85 tmp78 [V85 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp79 [V86 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V87 tmp80 [V87 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp81 [V88 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V89 tmp82 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp83 [V90 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V91 tmp84 [V91 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp85 [V92 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V93 tmp86 [V93 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp87 [V94 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V95 tmp88 [V95,T18] ( 2, 2 ) ref -> r14 single-def "field V17.key (fldOffset=0x0)" P-INDEP
; V96 tmp89 [V96,T19] ( 2, 2 ) ref -> rax single-def "field V17.value (fldOffset=0x8)" P-INDEP
;* V97 tmp90 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp91 [V98 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V99 tmp92 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp93 [V100 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V101 tmp94 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp95 [V102 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V103 tmp96 [V103 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V104 tmp97 [V104 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V105 tmp98 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V106 tmp99 [V106 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V107 tmp100 [V107,T29] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp101 [V108,T33] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
; V109 tmp102 [V109,T13] ( 3, 2 ) byref -> rsi "field V30._reference (fldOffset=0x0)" P-INDEP
; V110 tmp103 [V110,T15] ( 3, 2 ) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
-; V111 tmp104 [V111,T26] ( 2, 1 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp105 [V112,T27] ( 2, 1 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
-;* V113 tmp106 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp107 [V114 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
+;* V111 tmp104 [V111 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V112 tmp105 [V112 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
+; V113 tmp106 [V113,T26] ( 2, 1 ) byref -> rsi single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp107 [V114,T27] ( 2, 1 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP
;* V115 tmp108 [V115 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp109 [V116 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V117 tmp110 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp111 [V118 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V119 tmp112 [V119 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V120 tmp113 [V120 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V121 tmp114 [V121 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V122 tmp115 [V122 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V123 tmp116 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp117 [V124 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V125 tmp118 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp119 [V126 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V127 tmp120 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp121 [V128 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V129 tmp122 [V129 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp123 [V130 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V131 tmp124 [V131 ] ( 0, 0 ) byref -> zero-ref single-def "field V67._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp125 [V132 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
; V133 tmp126 [V133,T20] ( 2, 2 ) byref -> rdi single-def "field V68._reference (fldOffset=0x0)" P-INDEP
; V134 tmp127 [V134,T23] ( 2, 2 ) int -> rsi "field V68._length (fldOffset=0x8)" P-INDEP
;* V135 tmp128 [V135,T34] ( 0, 0 ) long -> zero-ref "Cast away GC"
; V136 tmp129 [V136,T12] ( 3, 3 ) long -> rcx "Cast away GC"
; V137 GsCookie [V137 ] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
; Lcl frame size = 152
G_M31018_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0xB8], 0xD1FFAB1E
;; size=52 bbWeight=1 PerfScore 11.33
G_M31018_IG02:
lea rdi, [rbp-0x98]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov rbx, rax
mov rax, rsp
mov qword ptr [rbp-0x80], rax
mov rax, rbp
mov qword ptr [rbp-0x70], rax
test dword ptr [rsp], esp
sub rsp, 64
lea r15, [rsp]
mov bword ptr [rbp-0xB0], r15
mov rax, 0xD1FFAB1E ; code for System.Guid:NewGuid():System.Guid
call [rax]System.Guid:NewGuid():System.Guid
mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x30], rdx
vmovups xmm0, xmmword ptr [rbp-0x38]
vmovups xmmword ptr [r15], xmm0
mov rdi, r15
mov esi, 16
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Convert:ToBase64String(System.ReadOnlySpan`1[ubyte],int):System.String
call [rax]System.Convert:ToBase64String(System.ReadOnlySpan`1[ubyte],int):System.String
mov r14, rax
mov gword ptr [rbp-0xA8], r14
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M31018_IG21
;; size=128 bbWeight=1 PerfScore 28.75
G_M31018_IG03:
mov rcx, 0xD1FFAB1E ; data for System.Text.ASCIIEncoding:s_default
mov rdi, gword ptr [rcx]
test r14, r14
- jne SHORT G_M31018_IG05
+ je SHORT G_M31018_IG05
;; size=18 bbWeight=1 PerfScore 3.50
G_M31018_IG04:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M31018_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M31018_IG05:
lea rsi, bword ptr [r14+0x0C]
mov edx, dword ptr [r14+0x08]
- mov r14, gword ptr [rbp-0xA8]
- ;; size=15 bbWeight=0.50 PerfScore 1.75
+ jmp SHORT G_M31018_IG06
+ ;; size=10 bbWeight=0.50 PerfScore 2.25
+G_M31018_IG05:
+ xor rsi, rsi
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M31018_IG06:
mov rcx, r15
mov r8d, 60
mov rax, 0xD1FFAB1E ; code for System.Text.ASCIIEncoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp dword ptr [rdi], edi
call [rax]System.Text.ASCIIEncoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, 60
ja G_M31018_IG25
mov ecx, eax
add rcx, r15
mov edx, 60
sub edx, eax
cmp edx, 36
jb G_M31018_IG22
;; size=53 bbWeight=1 PerfScore 10.25
G_M31018_IG07:
vmovups ymm0, ymmword ptr [reloc @RWD00]
vmovups ymmword ptr [rcx], ymm0
mov dword ptr [rcx+0x20], 0xD1FFAB1E
mov rdi, 0xD1FFAB1E ; 'SHA1'
mov rax, 0xD1FFAB1E ; code for Interop+Crypto:HashAlgorithmToEvp(System.String):long
call [rax]Interop+Crypto:HashAlgorithmToEvp(System.String):long
mov r13, rax
mov rdi, r13
mov rax, 0xD1FFAB1E ; function address
mov qword ptr [rbp-0x88], rax
lea rax, G_M31018_IG10
mov qword ptr [rbp-0x78], rax
lea rax, [rbp-0x98]
mov qword ptr [rbx+0x08], rax
mov byte ptr [rbx+0x04], 0
;; size=90 bbWeight=0.50 PerfScore 8.38
G_M31018_IG08:
mov rax, 0xD1FFAB1E ; code for Interop+Crypto:EvpMdSize(long):int
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M31018_IG09:
vzeroupper
call [rax]Interop+Crypto:EvpMdSize(long):int
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M31018_IG10:
mov byte ptr [rbx+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M31018_IG11
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=31 bbWeight=0.50 PerfScore 4.25
G_M31018_IG11:
mov r8, qword ptr [rbp-0x90]
mov qword ptr [rbx+0x08], r8
mov r15d, eax
mov r8d, r15d
sub r8d, 1
cmp r8d, 59
ja G_M31018_IG24
mov rdi, bword ptr [rbp-0xB0]
mov bword ptr [rbp-0x40], rdi
mov bword ptr [rbp-0x48], rdi
mov rcx, rdi
mov dword ptr [rbp-0x50], 60
lea r8, [rbp-0x50]
mov rdi, r13
mov rsi, rcx
mov edx, 60
mov rax, 0xD1FFAB1E ; function address
mov qword ptr [rbp-0x88], rax
lea rax, G_M31018_IG14
mov qword ptr [rbp-0x78], rax
lea rax, [rbp-0x98]
mov qword ptr [rbx+0x08], rax
mov byte ptr [rbx+0x04], 0
;; size=114 bbWeight=0.50 PerfScore 7.62
G_M31018_IG12:
mov rax, 0xD1FFAB1E ; code for Interop+Crypto:EvpDigestOneShot(long,ulong,int,ulong,ulong):int
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M31018_IG13:
vzeroupper
call [rax]Interop+Crypto:EvpDigestOneShot(long,ulong,int,ulong,ulong):int
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M31018_IG14:
mov byte ptr [rbx+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M31018_IG15
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=31 bbWeight=0.50 PerfScore 4.25
G_M31018_IG15:
mov rdi, qword ptr [rbp-0x90]
mov qword ptr [rbx+0x08], rdi
cmp eax, 1
jne G_M31018_IG23
;; size=20 bbWeight=0.50 PerfScore 1.62
G_M31018_IG16:
xor edi, edi
mov bword ptr [rbp-0x48], rdi
;; size=6 bbWeight=1 PerfScore 1.25
G_M31018_IG17:
mov bword ptr [rbp-0x40], rdi
mov esi, r15d
cmp esi, 60
ja G_M31018_IG25
mov r15, bword ptr [rbp-0xB0]
mov rdi, r15
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Convert:ToBase64String(System.ReadOnlySpan`1[ubyte],int):System.String
call [rax]System.Convert:ToBase64String(System.ReadOnlySpan`1[ubyte],int):System.String
mov r14, gword ptr [rbp-0xA8]
mov gword ptr [rbp-0x60], r14
mov gword ptr [rbp-0x58], rax
mov rax, gword ptr [rbp-0x60]
mov rdx, gword ptr [rbp-0x58]
;; size=63 bbWeight=1 PerfScore 12.25
G_M31018_IG18:
cmp qword ptr [rbp-0xB8], 0xD1FFAB1E
je SHORT G_M31018_IG19
call CORINFO_HELP_FAIL_FAST
;; size=18 bbWeight=1 PerfScore 4.00
G_M31018_IG19:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M31018_IG20:
vzeroupper
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.50
G_M31018_IG21:
mov rdi, 0xD1FFAB1E ; System.Text.ASCIIEncoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M31018_IG03
;; size=20 bbWeight=0 PerfScore 0.00
G_M31018_IG22:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M31018_IG23:
mov rax, 0xD1FFAB1E ; code for Interop+Crypto:CreateOpenSslCryptographicException():System.Exception
call [rax]Interop+Crypto:CreateOpenSslCryptographicException():System.Exception
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=21 bbWeight=0 PerfScore 0.00
G_M31018_IG24:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor():this
call [rax]System.Security.Cryptography.CryptographicException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M31018_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
RWD00 dq 3541464145383532h, 37342D343139452Dh, 2D414335392D4144h, 3843443042413543h
-; Total bytes of code 803, prolog size 52, PerfScore 110.46, instruction count 175, allocated bytes for code 803 (MethodHash=f22d86d5) for method System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String] (FullOpts)
+; Total bytes of code 796, prolog size 52, PerfScore 109.96, instruction count 174, allocated bytes for code 796 (MethodHash=f22d86d5) for method System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String] (FullOpts)
; ============================================================
-6 (-4.48 % of base) - System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref)
; Assembly listing for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rbx class-hnd single-def <System.String>
; V02 arg2 [V02,T05] ( 3, 2.50) int -> r13 single-def
; V03 arg3 [V03,T03] ( 3, 2.50) byref -> r15 single-def
; V04 arg4 [V04,T04] ( 3, 2.50) byref -> r14 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T09] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
-; V11 tmp6 [V11,T10] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp5 [V10,T09] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V11 tmp6 [V11,T10] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V13 tmp8 [V13,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V19 tmp14 [V19,T08] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
; V22 tmp17 [V22,T02] ( 4, 2.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V23 tmp18 [V23,T06] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V26 tmp21 [V26,T07] ( 5, 2.50) byref -> rdx "field V07._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T01] ( 8, 4.50) int -> rax "field V07._length (fldOffset=0x8)" P-INDEP
-; V28 tmp23 [V28,T11] ( 2, 1 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T13] ( 2, 1 ) int -> rax "field V08._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V26 tmp21 [V26,T07] ( 5, 2.50) byref -> rax "field V07._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp22 [V27,T01] ( 8, 4.50) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
+;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V30 tmp25 [V30,T11] ( 2, 1 ) byref -> rax single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T13] ( 2, 1 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M48478_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdx
mov r13d, ecx
mov r15, r8
mov r14, r9
;; size=25 bbWeight=1 PerfScore 6.50
G_M48478_IG02:
test rbx, rbx
- je SHORT G_M48478_IG04
+ jne SHORT G_M48478_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M48478_IG03:
- lea rdx, bword ptr [rbx+0x0C]
- mov eax, dword ptr [rbx+0x08]
+ xor rax, rax
+ xor edx, edx
jmp SHORT G_M48478_IG05
- ;; size=9 bbWeight=0.50 PerfScore 2.25
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
G_M48478_IG04:
- xor rdx, rdx
- xor eax, eax
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ lea rax, bword ptr [rbx+0x0C]
+ mov edx, dword ptr [rbx+0x08]
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M48478_IG05:
- cmp eax, esi
+ cmp edx, esi
jg SHORT G_M48478_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M48478_IG06:
- cmp eax, 8
+ cmp edx, 8
jl SHORT G_M48478_IG08
- cmp eax, 16
+ cmp edx, 16
jge SHORT G_M48478_IG07
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
jmp SHORT G_M48478_IG09
- ;; size=29 bbWeight=0.50 PerfScore 4.12
+ ;; size=27 bbWeight=0.50 PerfScore 4.00
G_M48478_IG07:
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
jmp SHORT G_M48478_IG09
- ;; size=19 bbWeight=0.50 PerfScore 2.88
+ ;; size=17 bbWeight=0.50 PerfScore 2.75
G_M48478_IG08:
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
- ;; size=17 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
G_M48478_IG09:
test eax, eax
je SHORT G_M48478_IG10
mov dword ptr [r15], r13d
mov eax, dword ptr [rbx+0x08]
mov dword ptr [r14], eax
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M48478_IG10:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 134, prolog size 13, PerfScore 26.50, instruction count 48, allocated bytes for code 134 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
+; Total bytes of code 128, prolog size 13, PerfScore 26.12, instruction count 45, allocated bytes for code 128 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
; ============================================================
-6 (-1.81 % of base) - System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 5 ) ref -> r15 class-hnd single-def <System.String>
; V01 arg1 [V01,T00] ( 9, 5.50) ref -> rbx class-hnd single-def <System.Text.Encoding>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T03] ( 4, 3 ) byref -> r13 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc1 [V05 ] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 5, 2.50) int -> [rbp-0x34]
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V09 tmp3 [V09,T05] ( 4, 4 ) int -> rax "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V11 tmp5 [V11,T08] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V12 tmp6 [V12,T10] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp10 [V16,T09] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V17 tmp11 [V17,T11] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V16 tmp10 [V16,T09] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V17 tmp11 [V17,T11] ( 2, 2 ) int -> rax "Inlining Arg"
; V18 tmp12 [V18,T04] ( 4, 2.50) byref -> r12 "field V02._reference (fldOffset=0x0)" P-INDEP
; V19 tmp13 [V19,T02] ( 5, 3.50) int -> r14 "field V02._length (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V22 tmp16 [V22,T12] ( 3, 1.50) byref -> rsi single-def "field V10._reference (fldOffset=0x0)" P-INDEP
; V23 tmp17 [V23,T07] ( 4, 2 ) int -> rdx "field V10._length (fldOffset=0x8)" P-INDEP
; V24 tmp18 [V24,T13] ( 3, 1.50) byref -> rdi "field V13._reference (fldOffset=0x0)" P-INDEP
; V25 tmp19 [V25,T14] ( 3, 1.50) int -> rax "field V13._length (fldOffset=0x8)" P-INDEP
-; V26 tmp20 [V26,T15] ( 2, 1 ) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp21 [V27,T16] ( 2, 1 ) int -> r8 "field V14._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
+; V28 tmp22 [V28,T15] ( 2, 1 ) byref -> rdi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp23 [V29,T16] ( 2, 1 ) int -> rax "field V15._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M32038_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov r15, rdi
mov rbx, rsi
mov r12, rdx
mov r14d, ecx
mov r13, r8
;; size=34 bbWeight=1 PerfScore 8.00
G_M32038_IG02:
test r14d, r14d
je G_M32038_IG07
;; size=9 bbWeight=1 PerfScore 1.25
G_M32038_IG03:
mov byte ptr [r12], 0
test rbx, rbx
je SHORT G_M32038_IG05
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M32038_IG15
;; size=29 bbWeight=0.50 PerfScore 3.25
G_M32038_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
cmp rbx, gword ptr [rdi]
je SHORT G_M32038_IG05
mov rdi, rbx
mov rsi, r15
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x50]
call [rax+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
jmp SHORT G_M32038_IG06
;; size=33 bbWeight=0.50 PerfScore 6.88
G_M32038_IG05:
mov eax, dword ptr [r15+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M32038_IG06:
mov rdx, r12
mov ecx, r14d
lea r8, [rbp-0x30]
mov dword ptr [rbp-0x34], eax
mov edi, eax
mov esi, 7
mov r9, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je SHORT G_M32038_IG07
mov eax, dword ptr [rbp-0x30]
cmp eax, r14d
ja G_M32038_IG16
mov esi, eax
add rsi, r12
sub r14d, eax
mov edx, r14d
mov r14d, dword ptr [rbp-0x34]
cmp r14d, edx
jle SHORT G_M32038_IG09
;; size=69 bbWeight=0.50 PerfScore 6.25
G_M32038_IG07:
xor eax, eax
mov dword ptr [r13], eax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M32038_IG08:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M32038_IG09:
test rbx, rbx
je SHORT G_M32038_IG12
test r15, r15
- je SHORT G_M32038_IG10
- lea rcx, bword ptr [r15+0x0C]
- mov r8d, dword ptr [r15+0x08]
- mov rdi, rcx
- mov eax, r8d
- jmp SHORT G_M32038_IG11
- ;; size=26 bbWeight=0.50 PerfScore 3.75
-G_M32038_IG10:
+ jne SHORT G_M32038_IG10
xor rdi, rdi
xor eax, eax
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ jmp SHORT G_M32038_IG11
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M32038_IG10:
+ lea rdi, bword ptr [r15+0x0C]
+ mov eax, dword ptr [r15+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M32038_IG11:
mov rcx, rsi
mov r8d, edx
mov rsi, rdi
mov edx, eax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x58]
call [rax+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
jmp SHORT G_M32038_IG13
;; size=26 bbWeight=0.50 PerfScore 5.12
G_M32038_IG12:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [rax]System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M32038_IG13:
add r14d, dword ptr [rbp-0x30]
mov dword ptr [r13], r14d
mov eax, 1
;; size=13 bbWeight=0.50 PerfScore 1.62
G_M32038_IG14:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M32038_IG15:
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M32038_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M32038_IG16:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 331, prolog size 19, PerfScore 44.00, instruction count 101, allocated bytes for code 331 (MethodHash=eedd82d9) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 325, prolog size 19, PerfScore 43.75, instruction count 99, allocated bytes for code 325 (MethodHash=eedd82d9) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; ============================================================
-6 (-1.81 % of base) - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 5 ) ref -> r15 class-hnd single-def <System.String>
; V01 arg1 [V01,T00] ( 9, 5.50) ref -> rbx class-hnd single-def <System.Text.Encoding>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T03] ( 4, 3 ) byref -> r13 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc1 [V05 ] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 5, 2.50) int -> [rbp-0x34]
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V09 tmp3 [V09,T05] ( 4, 4 ) int -> rax "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V11 tmp5 [V11,T08] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V12 tmp6 [V12,T10] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp10 [V16,T09] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V17 tmp11 [V17,T11] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V16 tmp10 [V16,T09] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V17 tmp11 [V17,T11] ( 2, 2 ) int -> rax "Inlining Arg"
; V18 tmp12 [V18,T04] ( 4, 2.50) byref -> r12 "field V02._reference (fldOffset=0x0)" P-INDEP
; V19 tmp13 [V19,T02] ( 5, 3.50) int -> r14 "field V02._length (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V22 tmp16 [V22,T12] ( 3, 1.50) byref -> rsi single-def "field V10._reference (fldOffset=0x0)" P-INDEP
; V23 tmp17 [V23,T07] ( 4, 2 ) int -> rdx "field V10._length (fldOffset=0x8)" P-INDEP
; V24 tmp18 [V24,T13] ( 3, 1.50) byref -> rdi "field V13._reference (fldOffset=0x0)" P-INDEP
; V25 tmp19 [V25,T14] ( 3, 1.50) int -> rax "field V13._length (fldOffset=0x8)" P-INDEP
-; V26 tmp20 [V26,T15] ( 2, 1 ) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp21 [V27,T16] ( 2, 1 ) int -> r8 "field V14._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
+; V28 tmp22 [V28,T15] ( 2, 1 ) byref -> rdi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp23 [V29,T16] ( 2, 1 ) int -> rax "field V15._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M2598_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov r15, rdi
mov rbx, rsi
mov r12, rdx
mov r14d, ecx
mov r13, r8
;; size=34 bbWeight=1 PerfScore 8.00
G_M2598_IG02:
test r14d, r14d
je G_M2598_IG07
;; size=9 bbWeight=1 PerfScore 1.25
G_M2598_IG03:
mov byte ptr [r12], 0
test rbx, rbx
je SHORT G_M2598_IG05
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M2598_IG15
;; size=29 bbWeight=0.50 PerfScore 3.25
G_M2598_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
cmp rbx, gword ptr [rdi]
je SHORT G_M2598_IG05
mov rdi, rbx
mov rsi, r15
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x50]
call [rax+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
jmp SHORT G_M2598_IG06
;; size=33 bbWeight=0.50 PerfScore 6.88
G_M2598_IG05:
mov eax, dword ptr [r15+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M2598_IG06:
mov rdx, r12
mov ecx, r14d
lea r8, [rbp-0x30]
mov dword ptr [rbp-0x34], eax
mov edi, eax
mov esi, 7
mov r9, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je SHORT G_M2598_IG07
mov eax, dword ptr [rbp-0x30]
cmp eax, r14d
ja G_M2598_IG16
mov esi, eax
add rsi, r12
sub r14d, eax
mov edx, r14d
mov r14d, dword ptr [rbp-0x34]
cmp edx, r14d
jge SHORT G_M2598_IG09
;; size=69 bbWeight=0.50 PerfScore 6.25
G_M2598_IG07:
xor eax, eax
mov dword ptr [r13], eax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M2598_IG08:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M2598_IG09:
test rbx, rbx
je SHORT G_M2598_IG12
test r15, r15
- je SHORT G_M2598_IG10
- lea rcx, bword ptr [r15+0x0C]
- mov r8d, dword ptr [r15+0x08]
- mov rdi, rcx
- mov eax, r8d
- jmp SHORT G_M2598_IG11
- ;; size=26 bbWeight=0.50 PerfScore 3.75
-G_M2598_IG10:
+ jne SHORT G_M2598_IG10
xor rdi, rdi
xor eax, eax
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ jmp SHORT G_M2598_IG11
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M2598_IG10:
+ lea rdi, bword ptr [r15+0x0C]
+ mov eax, dword ptr [r15+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M2598_IG11:
mov rcx, rsi
mov r8d, edx
mov rsi, rdi
mov edx, eax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x58]
call [rax+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
jmp SHORT G_M2598_IG13
;; size=26 bbWeight=0.50 PerfScore 5.12
G_M2598_IG12:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M2598_IG13:
add r14d, dword ptr [rbp-0x30]
mov dword ptr [r13], r14d
mov eax, 1
;; size=13 bbWeight=0.50 PerfScore 1.62
G_M2598_IG14:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M2598_IG15:
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M2598_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M2598_IG16:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 331, prolog size 19, PerfScore 44.00, instruction count 101, allocated bytes for code 331 (MethodHash=b662f5d9) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 325, prolog size 19, PerfScore 43.75, instruction count 99, allocated bytes for code 325 (MethodHash=b662f5d9) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; ============================================================
-5 (-0.81 % of base) - System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int
; Assembly listing for method System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T04] ( 5, 7 ) ref -> r15 class-hnd single-def <System.String[]>
; V02 arg2 [V02,T15] ( 3, 2.50) ref -> rcx class-hnd single-def <System.IFormatProvider>
; V03 arg3 [V03,T10] ( 4, 5 ) int -> r13 single-def
; V04 arg4 [V04,T11] ( 6, 4 ) byref -> r12 single-def
; V05 loc0 [V05,T16] ( 2, 4.50) ref -> [rbp-0x98] class-hnd exact spill-single-def <System.Globalization.DateTimeFormatInfo>
;* V06 loc1 [V06,T20] ( 0, 0 ) int -> zero-ref
; V07 loc2 [V07,T06] ( 3, 8 ) ref -> r9 class-hnd <System.Globalization.DateTimeFormatInfo>
; V08 loc3 [V08,T00] ( 9, 24 ) ref -> [rbp-0xA0] class-hnd <System.String>
; V09 loc4 [V09 ] ( 14, 70.50) struct (88) [rbp-0x80] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.DateTimeResult>
; V10 loc5 [V10,T13] ( 3, 6 ) int -> rdi
; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateOnly>
;* V14 tmp3 [V14,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp6 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp7 [V18,T08] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V19 tmp8 [V19,T09] ( 2, 8 ) int -> rsi "Inlining Arg"
+;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V17 tmp6 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V18 tmp7 [V18,T08] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V19 tmp8 [V19,T09] ( 2, 8 ) int -> r10 "Inlining Arg"
; V20 tmp9 [V20,T18] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V21 tmp10 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp14 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V26 tmp15 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V27 tmp16 [V27,T05] ( 3, 7 ) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V28 tmp17 [V28,T03] ( 4, 11 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V29 tmp18 [V29 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp19 [V30 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V31 tmp20 [V31,T22] ( 2, 1 ) int -> rdx "field V13._dayNumber (fldOffset=0x0)" P-INDEP
; V32 tmp21 [V32,T12] ( 3, 6 ) byref -> r8 "field V15._reference (fldOffset=0x0)" P-INDEP
; V33 tmp22 [V33,T01] ( 4, 22 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
-; V34 tmp23 [V34,T17] ( 2, 4 ) byref -> rdi "field V16._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 4 ) int -> rsi "field V16._length (fldOffset=0x8)" P-INDEP
-;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V37 tmp26 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+;* V34 tmp23 [V34 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
+;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
+; V36 tmp25 [V36,T17] ( 2, 4 ) byref -> r8 "field V17._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp26 [V37,T19] ( 2, 4 ) int -> r10 "field V17._length (fldOffset=0x8)" P-INDEP
;* V38 tmp27 [V38 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V40 tmp29 [V40 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp30 [V41 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V42 tmp31 [V42 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V44 tmp33 [V44 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
; V46 tmp35 [V46,T23] ( 2, 1 ) long -> rdx "field V25._dateData (fldOffset=0x0)" P-INDEP
; V47 cse0 [V47,T07] ( 3, 8 ) int -> rdi "CSE #01: moderate"
; V48 cse1 [V48,T14] ( 3, 5 ) int -> [rbp-0x84] spill-single-def "CSE #02: moderate"
; V49 rat0 [V49,T02] ( 5, 16.50) long -> [rbp-0x90] "Widened IV V06"
;
; Lcl frame size = 136
G_M40341_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
lea rbp, [rsp+0xB0]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov r14, rdi
mov ebx, esi
mov r15, rdx
mov r13d, r8d
mov r12, r9
;; size=65 bbWeight=1 PerfScore 15.58
G_M40341_IG02:
test r13d, -8
jne G_M40341_IG25
;; size=13 bbWeight=1 PerfScore 1.25
G_M40341_IG03:
test r15, r15
je G_M40341_IG25
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo
call [rax]System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo
mov gword ptr [rbp-0x98], rax
xor ecx, ecx
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x84], edx
test edx, edx
jle G_M40341_IG20
;; size=51 bbWeight=0.50 PerfScore 5.12
G_M40341_IG04:
mov r9, rax
mov qword ptr [rbp-0x90], rcx
mov rsi, gword ptr [r15+8*rcx+0x10]
test rsi, rsi
je G_M40341_IG23
;; size=24 bbWeight=4 PerfScore 18.00
G_M40341_IG05:
mov edi, dword ptr [rsi+0x08]
test edi, edi
je G_M40341_IG23
;; size=11 bbWeight=2 PerfScore 6.50
G_M40341_IG06:
cmp edi, 1
jne SHORT G_M40341_IG10
;; size=5 bbWeight=4 PerfScore 5.00
G_M40341_IG07:
movzx rdi, word ptr [rsi+0x0C]
or edi, 32
cmp edi, 111
jne SHORT G_M40341_IG08
mov rsi, 0xD1FFAB1E ; 'yyyy'-'MM'-'dd'
mov gword ptr [rbp-0xA0], rsi
jmp SHORT G_M40341_IG09
;; size=31 bbWeight=2 PerfScore 13.50
G_M40341_IG08:
cmp edi, 114
jne SHORT G_M40341_IG10
mov rsi, 0xD1FFAB1E ; 'ddd, dd MMM yyyy'
mov gword ptr [rbp-0xA0], rsi
;; size=22 bbWeight=2 PerfScore 5.00
G_M40341_IG09:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov r8, 0xD1FFAB1E ; code for System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
call [r8]System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
mov r9, rax
mov rsi, gword ptr [rbp-0xA0]
;; size=36 bbWeight=2 PerfScore 13.50
G_M40341_IG10:
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x80], ymm0
vmovdqu ymmword ptr [rbp-0x60], ymm0
vmovdqu ymmword ptr [rbp-0x48], ymm0
mov bword ptr [rbp-0x38], r14
mov dword ptr [rbp-0x30], ebx
mov dword ptr [rbp-0x70], -1
mov dword ptr [rbp-0x6C], -1
mov dword ptr [rbp-0x68], -1
mov rdi, 0xD1FFAB1E
mov qword ptr [rbp-0x78], rdi
mov dword ptr [rbp-0x58], -1
test rsi, rsi
- je SHORT G_M40341_IG12
+ jne SHORT G_M40341_IG12
;; size=73 bbWeight=4 PerfScore 47.33
G_M40341_IG11:
- lea rdi, bword ptr [rsi+0x0C]
- mov esi, dword ptr [rsi+0x08]
- mov r8, rdi
- mov r10d, esi
- jmp SHORT G_M40341_IG13
- ;; size=15 bbWeight=2 PerfScore 10.00
-G_M40341_IG12:
xor r8, r8
xor r10d, r10d
- ;; size=6 bbWeight=2 PerfScore 1.00
+ jmp SHORT G_M40341_IG13
+ ;; size=8 bbWeight=2 PerfScore 5.00
+G_M40341_IG12:
+ lea r8, bword ptr [rsi+0x0C]
+ mov r10d, dword ptr [rsi+0x08]
+ ;; size=8 bbWeight=2 PerfScore 5.00
G_M40341_IG13:
test ebx, ebx
je G_M40341_IG22
;; size=8 bbWeight=4 PerfScore 5.00
G_M40341_IG14:
test r10d, r10d
je SHORT G_M40341_IG18
;; size=5 bbWeight=16 PerfScore 20.00
G_M40341_IG15:
lea rdi, [rbp-0x80]
mov qword ptr [rsp], rdi
mov rdi, r14
mov esi, ebx
mov rdx, r8
mov ecx, r10d
mov r8d, r13d
mov r10, 0xD1FFAB1E ; code for System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
call [r10]System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
test eax, eax
je SHORT G_M40341_IG19
test dword ptr [rbp-0x54], 0x4B78
jne SHORT G_M40341_IG19
;; size=48 bbWeight=2 PerfScore 20.50
G_M40341_IG16:
mov rdx, qword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E
and rdx, rax
mov rcx, 0xD1FFAB1E
mov rax, rdx
mul rdx:rax, rcx
shr rdx, 37
mov dword ptr [r12], edx
xor eax, eax
;; size=43 bbWeight=0.50 PerfScore 3.38
G_M40341_IG17:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M40341_IG18:
mov dword ptr [rbp-0x50], 6
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=16 bbWeight=16 PerfScore 37.33
G_M40341_IG19:
mov rcx, qword ptr [rbp-0x90]
inc ecx
mov edx, dword ptr [rbp-0x84]
cmp edx, ecx
mov rax, gword ptr [rbp-0x98]
jg G_M40341_IG04
;; size=30 bbWeight=4 PerfScore 18.00
G_M40341_IG20:
xor eax, eax
mov dword ptr [r12], eax
mov eax, 17
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M40341_IG21:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M40341_IG22:
mov dword ptr [rbp-0x50], 3
jmp SHORT G_M40341_IG19
;; size=9 bbWeight=2 PerfScore 6.00
G_M40341_IG23:
xor eax, eax
mov dword ptr [r12], eax
mov eax, 16
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M40341_IG24:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M40341_IG25:
xor eax, eax
mov dword ptr [r12], eax
mov eax, 15
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M40341_IG26:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 616, prolog size 65, PerfScore 262.75, instruction count 158, allocated bytes for code 616 (MethodHash=1b4f626a) for method System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
+; Total bytes of code 611, prolog size 65, PerfScore 261.75, instruction count 156, allocated bytes for code 611 (MethodHash=1b4f626a) for method System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
; ============================================================
-5 (-5.88 % of base) - System.Guid:TryParseExact(System.String,System.String,byref):ubyte
; Assembly listing for method System.Guid:TryParseExact(System.String,System.String,byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T02] ( 4, 3 ) byref -> r8 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V08 tmp5 [V08,T03] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
; V09 tmp6 [V09,T05] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V13 tmp10 [V13,T04] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-; V14 tmp11 [V14,T06] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V13 tmp10 [V13,T04] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V14 tmp11 [V14,T06] ( 2, 2 ) int -> r9 "Inlining Arg"
; V15 tmp12 [V15,T09] ( 2, 1 ) byref -> rdx single-def "field V04._reference (fldOffset=0x0)" P-INDEP
; V16 tmp13 [V16,T12] ( 2, 1 ) int -> rcx "field V04._length (fldOffset=0x8)" P-INDEP
;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T10] ( 2, 1 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp17 [V20,T13] ( 2, 1 ) int -> rdi "field V06._length (fldOffset=0x8)" P-INDEP
-;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V21 tmp18 [V21,T10] ( 2, 1 ) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp19 [V22,T13] ( 2, 1 ) int -> rdi "field V07._length (fldOffset=0x8)" P-INDEP
; V23 tmp20 [V23,T07] ( 3, 1.50) byref -> rax "field V10._reference (fldOffset=0x0)" P-INDEP
; V24 tmp21 [V24,T08] ( 3, 1.50) int -> r9 "field V10._length (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T11] ( 2, 1 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp23 [V26,T14] ( 2, 1 ) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
-;* V27 tmp24 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp25 [V28 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+;* V25 tmp22 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V27 tmp24 [V27,T11] ( 2, 1 ) byref -> rax single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp25 [V28,T14] ( 2, 1 ) int -> r9 "field V12._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M21179_IG01:
push rbp
mov rbp, rsp
mov r8, rdx
;; size=7 bbWeight=1 PerfScore 1.50
G_M21179_IG02:
test rdi, rdi
je SHORT G_M21179_IG07
;; size=5 bbWeight=1 PerfScore 1.25
G_M21179_IG03:
lea rdx, bword ptr [rdi+0x0C]
mov edi, dword ptr [rdi+0x08]
mov ecx, edi
test rsi, rsi
- je SHORT G_M21179_IG04
- lea rdi, bword ptr [rsi+0x0C]
- mov esi, dword ptr [rsi+0x08]
- mov rax, rdi
- mov r9d, esi
- jmp SHORT G_M21179_IG05
- ;; size=29 bbWeight=0.50 PerfScore 4.50
-G_M21179_IG04:
+ jne SHORT G_M21179_IG04
xor rax, rax
xor r9d, r9d
- ;; size=5 bbWeight=0.50 PerfScore 0.25
+ jmp SHORT G_M21179_IG05
+ ;; size=21 bbWeight=0.50 PerfScore 3.25
+G_M21179_IG04:
+ lea rax, bword ptr [rsi+0x0C]
+ mov r9d, dword ptr [rsi+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M21179_IG05:
mov rdi, rdx
mov esi, ecx
mov rdx, rax
mov ecx, r9d
mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):ubyte
nop
;; size=24 bbWeight=0.50 PerfScore 2.25
G_M21179_IG06:
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
G_M21179_IG07:
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [r8], xmm0
xor eax, eax
;; size=11 bbWeight=0.50 PerfScore 1.29
G_M21179_IG08:
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 85, prolog size 4, PerfScore 12.54, instruction count 31, allocated bytes for code 85 (MethodHash=7331ad44) for method System.Guid:TryParseExact(System.String,System.String,byref):ubyte (FullOpts)
+; Total bytes of code 80, prolog size 4, PerfScore 12.29, instruction count 29, allocated bytes for code 80 (MethodHash=7331ad44) for method System.Guid:TryParseExact(System.String,System.String,byref):ubyte (FullOpts)
; ============================================================
-5 (-6.58 % of base) - System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <System.String>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T01] ( 3, 3 ) byref -> r9 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rax class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp6 [V09,T07] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V10 tmp7 [V10,T08] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V09 tmp6 [V09,T07] ( 2, 2 ) byref -> r10 single-def "Inlining Arg"
+; V10 tmp7 [V10,T08] ( 2, 2 ) int -> r11 "Inlining Arg"
; V11 tmp8 [V11,T03] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V12 tmp9 [V12,T04] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V13 tmp10 [V13 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V15 tmp12 [V15,T05] ( 3, 2 ) byref -> rdi "field V06._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T06] ( 3, 2 ) int -> r10 "field V06._length (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T09] ( 2, 1 ) byref -> rcx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp15 [V18,T10] ( 2, 1 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
-;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T05] ( 3, 2 ) byref -> r10 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T06] ( 3, 2 ) int -> r11 "field V06._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T09] ( 2, 1 ) byref -> r10 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp17 [V20,T10] ( 2, 1 ) int -> r11 "field V08._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M5775_IG01:
push rbp
mov rbp, rsp
mov r9, rcx
;; size=7 bbWeight=1 PerfScore 1.50
G_M5775_IG02:
mov rcx, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rcx]
test rdi, rdi
- je SHORT G_M5775_IG04
+ jne SHORT G_M5775_IG04
;; size=18 bbWeight=1 PerfScore 3.50
G_M5775_IG03:
- lea rcx, bword ptr [rdi+0x0C]
- mov r8d, dword ptr [rdi+0x08]
- mov rdi, rcx
- mov r10d, r8d
+ xor r10, r10
+ xor r11d, r11d
jmp SHORT G_M5775_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M5775_IG04:
- xor rdi, rdi
- xor r10d, r10d
- ;; size=5 bbWeight=0.50 PerfScore 0.25
+ lea r10, bword ptr [rdi+0x0C]
+ mov r11d, dword ptr [rdi+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
G_M5775_IG05:
mov rcx, rsi
mov r8d, edx
- mov rsi, rdi
- mov edx, r10d
+ mov rsi, r10
+ mov edx, r11d
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
call [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
nop
;; size=28 bbWeight=1 PerfScore 4.75
G_M5775_IG06:
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 76, prolog size 4, PerfScore 14.00, instruction count 24, allocated bytes for code 76 (MethodHash=ea65e970) for method System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 71, prolog size 4, PerfScore 13.75, instruction count 22, allocated bytes for code 71 (MethodHash=ea65e970) for method System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
; ============================================================
-5 (-0.73 % of base) - System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int
; Assembly listing for method System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T04] ( 5, 7 ) ref -> r15 class-hnd single-def <System.String[]>
; V02 arg2 [V02,T15] ( 3, 2.50) ref -> rcx class-hnd single-def <System.IFormatProvider>
; V03 arg3 [V03,T10] ( 4, 5 ) int -> r13 single-def
; V04 arg4 [V04,T11] ( 6, 4 ) byref -> r12 single-def
; V05 loc0 [V05,T16] ( 2, 4.50) ref -> [rbp-0xA0] class-hnd exact spill-single-def <System.Globalization.DateTimeFormatInfo>
;* V06 loc1 [V06,T21] ( 0, 0 ) int -> zero-ref
; V07 loc2 [V07,T06] ( 3, 8 ) ref -> r9 class-hnd <System.Globalization.DateTimeFormatInfo>
; V08 loc3 [V08,T00] ( 9, 24 ) ref -> [rbp-0xA8] class-hnd <System.String>
; V09 loc4 [V09 ] ( 14, 70.50) struct (88) [rbp-0x80] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.DateTimeResult>
; V10 loc5 [V10,T13] ( 3, 6 ) int -> rdi
;* V11 loc6 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.TimeSpan>
; V12 OutArgs [V12 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V14 tmp2 [V14 ] ( 3, 3 ) struct ( 8) [rbp-0x88] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.TimeOnly>
;* V15 tmp3 [V15,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T08] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V20 tmp8 [V20,T09] ( 2, 8 ) int -> rsi "Inlining Arg"
+;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V19 tmp7 [V19,T08] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V20 tmp8 [V20,T09] ( 2, 8 ) int -> r10 "Inlining Arg"
; V21 tmp9 [V21,T18] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp12 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V28 tmp16 [V28,T05] ( 3, 7 ) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V29 tmp17 [V29,T03] ( 4, 11 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "field V11._ticks (fldOffset=0x0)" P-INDEP
;* V31 tmp19 [V31 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp20 [V32 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
; V33 tmp21 [V33 ] ( 3, 2.50) long -> [rbp-0x88] do-not-enreg[X] addr-exposed "field V14._ticks (fldOffset=0x0)" P-DEP
; V34 tmp22 [V34,T12] ( 3, 6 ) byref -> r8 "field V16._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T01] ( 4, 22 ) int -> r10 "field V16._length (fldOffset=0x8)" P-INDEP
-; V36 tmp24 [V36,T17] ( 2, 4 ) byref -> rdi "field V17._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp25 [V37,T19] ( 2, 4 ) int -> rsi "field V17._length (fldOffset=0x8)" P-INDEP
-;* V38 tmp26 [V38 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V39 tmp27 [V39 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+; V38 tmp26 [V38,T17] ( 2, 4 ) byref -> r8 "field V18._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp27 [V39,T19] ( 2, 4 ) int -> r10 "field V18._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V42 tmp30 [V42 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V48 tmp36 [V48,T23] ( 2, 1 ) long -> rsi "field V26._ticks (fldOffset=0x0)" P-INDEP
; V49 cse0 [V49,T07] ( 3, 8 ) int -> rdi "CSE #01: moderate"
; V50 cse1 [V50,T14] ( 3, 5 ) int -> [rbp-0x8C] spill-single-def "CSE #02: moderate"
; V51 rat0 [V51,T02] ( 5, 16.50) long -> [rbp-0x98] "Widened IV V06"
; V52 rat1 [V52,T20] ( 3, 3 ) long -> rsi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 136
G_M13236_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
lea rbp, [rsp+0xB0]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov r14, rdi
mov ebx, esi
mov r15, rdx
mov r13d, r8d
mov r12, r9
;; size=65 bbWeight=1 PerfScore 15.58
G_M13236_IG02:
test r13d, -8
jne G_M13236_IG25
;; size=13 bbWeight=1 PerfScore 1.25
G_M13236_IG03:
test r15, r15
je G_M13236_IG25
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo
call [rax]System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo
mov gword ptr [rbp-0xA0], rax
xor ecx, ecx
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x8C], edx
test edx, edx
jle G_M13236_IG20
;; size=51 bbWeight=0.50 PerfScore 5.12
G_M13236_IG04:
mov r9, rax
mov qword ptr [rbp-0x98], rcx
mov rsi, gword ptr [r15+8*rcx+0x10]
test rsi, rsi
je G_M13236_IG23
;; size=24 bbWeight=4 PerfScore 18.00
G_M13236_IG05:
mov edi, dword ptr [rsi+0x08]
test edi, edi
je G_M13236_IG23
;; size=11 bbWeight=2 PerfScore 6.50
G_M13236_IG06:
cmp edi, 1
jne SHORT G_M13236_IG10
;; size=5 bbWeight=4 PerfScore 5.00
G_M13236_IG07:
movzx rdi, word ptr [rsi+0x0C]
or edi, 32
cmp edi, 111
jne SHORT G_M13236_IG08
mov rsi, 0xD1FFAB1E ; 'HH':'mm':'ss'.'fffffff'
mov gword ptr [rbp-0xA8], rsi
jmp SHORT G_M13236_IG09
;; size=31 bbWeight=2 PerfScore 13.50
G_M13236_IG08:
cmp edi, 114
jne SHORT G_M13236_IG10
mov rsi, 0xD1FFAB1E ; 'HH':'mm':'ss'
mov gword ptr [rbp-0xA8], rsi
;; size=22 bbWeight=2 PerfScore 5.00
G_M13236_IG09:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov r8, 0xD1FFAB1E ; code for System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
call [r8]System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
mov r9, rax
mov rsi, gword ptr [rbp-0xA8]
;; size=36 bbWeight=2 PerfScore 13.50
G_M13236_IG10:
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x80], ymm0
vmovdqu ymmword ptr [rbp-0x60], ymm0
vmovdqu ymmword ptr [rbp-0x48], ymm0
mov bword ptr [rbp-0x38], r14
mov dword ptr [rbp-0x30], ebx
mov dword ptr [rbp-0x70], -1
mov dword ptr [rbp-0x6C], -1
mov dword ptr [rbp-0x68], -1
mov rdi, 0xD1FFAB1E
mov qword ptr [rbp-0x78], rdi
mov dword ptr [rbp-0x58], -1
test rsi, rsi
- je SHORT G_M13236_IG12
+ jne SHORT G_M13236_IG12
;; size=73 bbWeight=4 PerfScore 47.33
G_M13236_IG11:
- lea rdi, bword ptr [rsi+0x0C]
- mov esi, dword ptr [rsi+0x08]
- mov r8, rdi
- mov r10d, esi
- jmp SHORT G_M13236_IG13
- ;; size=15 bbWeight=2 PerfScore 10.00
-G_M13236_IG12:
xor r8, r8
xor r10d, r10d
- ;; size=6 bbWeight=2 PerfScore 1.00
+ jmp SHORT G_M13236_IG13
+ ;; size=8 bbWeight=2 PerfScore 5.00
+G_M13236_IG12:
+ lea r8, bword ptr [rsi+0x0C]
+ mov r10d, dword ptr [rsi+0x08]
+ ;; size=8 bbWeight=2 PerfScore 5.00
G_M13236_IG13:
test ebx, ebx
je G_M13236_IG22
;; size=8 bbWeight=4 PerfScore 5.00
G_M13236_IG14:
test r10d, r10d
je G_M13236_IG18
;; size=9 bbWeight=16 PerfScore 20.00
G_M13236_IG15:
lea rdi, [rbp-0x80]
mov qword ptr [rsp], rdi
mov rdi, r14
mov esi, ebx
mov rdx, r8
mov ecx, r10d
mov r8d, r13d
mov r10, 0xD1FFAB1E ; code for System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
call [r10]System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
test eax, eax
je G_M13236_IG19
test dword ptr [rbp-0x54], 0x4F87
jne G_M13236_IG19
;; size=56 bbWeight=2 PerfScore 20.50
G_M13236_IG16:
mov rsi, 0xD1FFAB1E
and rsi, qword ptr [rbp-0x40]
mov rdx, 0xD1FFAB1E
mov rax, rsi
mul rdx:rax, rdx
shr rdx, 37
mov rdi, 0xD1FFAB1E
imul rdi, rdx
sub rsi, rdi
xor edi, edi
mov qword ptr [rbp-0x88], rdi
lea rdi, [rbp-0x88]
mov rax, 0xD1FFAB1E ; code for System.TimeOnly:.ctor(long):this
call [rax]System.TimeOnly:.ctor(long):this
mov rax, qword ptr [rbp-0x88]
mov qword ptr [r12], rax
xor eax, eax
;; size=92 bbWeight=0.50 PerfScore 8.00
G_M13236_IG17:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M13236_IG18:
mov dword ptr [rbp-0x50], 6
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=16 bbWeight=16 PerfScore 37.33
G_M13236_IG19:
mov rcx, qword ptr [rbp-0x98]
inc ecx
mov rdi, rcx
mov edx, dword ptr [rbp-0x8C]
cmp edx, edi
mov rcx, rdi
mov rax, gword ptr [rbp-0xA0]
jg G_M13236_IG04
;; size=36 bbWeight=4 PerfScore 20.00
G_M13236_IG20:
xor eax, eax
mov qword ptr [r12], rax
mov eax, 18
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M13236_IG21:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M13236_IG22:
mov dword ptr [rbp-0x50], 3
jmp SHORT G_M13236_IG19
;; size=9 bbWeight=2 PerfScore 6.00
G_M13236_IG23:
xor eax, eax
mov qword ptr [r12], rax
mov eax, 16
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M13236_IG24:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M13236_IG25:
xor eax, eax
mov qword ptr [r12], rax
mov eax, 15
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M13236_IG26:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 683, prolog size 65, PerfScore 269.38, instruction count 168, allocated bytes for code 683 (MethodHash=d9bacc4b) for method System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
+; Total bytes of code 678, prolog size 65, PerfScore 268.38, instruction count 166, allocated bytes for code 678 (MethodHash=d9bacc4b) for method System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
; ============================================================
-4 (-0.68 % of base) - System.Environment:GetEnvironmentVariables():System.Collections.IDictionary
; Assembly listing for method System.Environment:GetEnvironmentVariables():System.Collections.IDictionary (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 loc0 [V00,T19] ( 5, 4 ) long -> [rbp-0x30] do-not-enreg[Z] EH-live
; V01 loc1 [V01,T18] ( 3, 5 ) ref -> [rbp-0x88] class-hnd exact EH-live spill-single-def <System.Collections.Hashtable>
; V02 loc2 [V02,T00] ( 6, 33 ) long -> [rbp-0x38] do-not-enreg[Z] EH-live
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V04 loc4 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc5 [V05,T10] ( 2, 8 ) ref -> r14 class-hnd exact <System.String>
; V06 loc6 [V06,T11] ( 2, 8 ) ref -> rdx class-hnd exact <System.String>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Hashtable>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T17] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Collections.Hashtable>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.ArgumentException>
; V13 tmp5 [V13,T24] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.OutOfMemoryException>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V17 tmp9 [V17,T06] ( 3, 24 ) int -> rax "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V19 tmp11 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp13 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V23 tmp15 [V23,T01] ( 5, 28 ) int -> r15 "Inline return value spill temp"
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp18 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V27 tmp19 [V27,T03] ( 4, 32 ) int -> r15 "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V29 tmp21 [V29,T08] ( 2, 16 ) byref -> rdi "Inlining Arg"
; V30 tmp22 [V30,T09] ( 2, 16 ) int -> rsi "Inlining Arg"
; V31 tmp23 [V31,T20] ( 2, 4 ) ref -> rax single-def "Single return block return value"
; V32 FramesRoot [V32,T16] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
; V33 PInvokeFrame [V33 ] ( 8, 8 ) struct (64) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V34 tmp26 [V34,T04] ( 4, 24 ) byref -> rbx "field V03._reference (fldOffset=0x0)" P-INDEP
; V35 tmp27 [V35,T05] ( 5, 28 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live "field V03._length (fldOffset=0x8)" P-INDEP
;* V36 tmp28 [V36 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V40 tmp32 [V40,T07] ( 3, 16 ) byref -> rbx "field V14._reference (fldOffset=0x0)" P-INDEP
; V41 tmp33 [V41,T02] ( 5, 32 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
-; V42 tmp34 [V42,T12] ( 2, 8 ) byref -> rbx "field V15._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp35 [V43,T14] ( 2, 8 ) int -> rdx "field V15._length (fldOffset=0x8)" P-INDEP
-;* V44 tmp36 [V44 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V45 tmp37 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
+;* V42 tmp34 [V42 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V43 tmp35 [V43 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V44 tmp36 [V44,T12] ( 2, 8 ) byref -> rbx "field V16._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp37 [V45,T14] ( 2, 8 ) int -> rdx "field V16._length (fldOffset=0x8)" P-INDEP
;* V46 tmp38 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V50 tmp42 [V50 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V52 tmp44 [V52,T21] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp45 [V53,T22] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V54 tmp46 [V54,T13] ( 2, 8 ) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
; V55 tmp47 [V55,T15] ( 2, 8 ) int -> rsi "field V28._length (fldOffset=0x8)" P-INDEP
; V56 PSPSym [V56,T23] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 104
G_M17506_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
vzeroupper
lea rbp, [rsp+0x90]
mov qword ptr [rbp-0x90], rsp
;; size=32 bbWeight=1 PerfScore 8.75
G_M17506_IG02:
lea rdi, [rbp-0x70]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov rbx, rax
mov rax, rsp
mov qword ptr [rbp-0x58], rax
mov rax, rbp
mov qword ptr [rbp-0x48], rax
mov rax, 0xD1FFAB1E ; function address
mov qword ptr [rbp-0x60], rax
lea rax, G_M17506_IG05
mov qword ptr [rbp-0x50], rax
lea rax, [rbp-0x70]
mov qword ptr [rbx+0x08], rax
mov byte ptr [rbx+0x04], 0
;; size=63 bbWeight=1 PerfScore 10.00
G_M17506_IG03:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=1 PerfScore 0.25
G_M17506_IG04:
call rax ; Interop+Kernel32:GetEnvironmentStringsW():ulong
;; size=2 bbWeight=1 PerfScore 3.00
G_M17506_IG05:
mov byte ptr [rbx+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M17506_IG06
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=31 bbWeight=1 PerfScore 8.50
G_M17506_IG06:
mov rdi, qword ptr [rbp-0x68]
mov qword ptr [rbx+0x08], rdi
mov qword ptr [rbp-0x30], rax
cmp qword ptr [rbp-0x30], 0
je G_M17506_IG18
;; size=23 bbWeight=1 PerfScore 6.00
G_M17506_IG07:
mov rdi, 0xD1FFAB1E ; System.Collections.Hashtable
call CORINFO_HELP_NEWSFAST
mov rbx, rax
vmovss xmm0, dword ptr [reloc @RWD00]
mov rdi, rbx
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Collections.Hashtable:.ctor(int,float):this
call [rax]System.Collections.Hashtable:.ctor(int,float):this
mov gword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbp-0x30]
mov qword ptr [rbp-0x38], rdi
jmp SHORT G_M17506_IG09
;; size=60 bbWeight=1 PerfScore 13.25
G_M17506_IG08:
mov rdi, qword ptr [rbp-0x38]
mov eax, dword ptr [rbp-0x7C]
inc eax
cdqe
lea rdi, [rdi+2*rax]
mov qword ptr [rbp-0x38], rdi
;; size=19 bbWeight=8 PerfScore 32.00
G_M17506_IG09:
cmp qword ptr [rbp-0x38], 0
- je SHORT G_M17506_IG11
+ jne SHORT G_M17506_IG11
;; size=7 bbWeight=8 PerfScore 24.00
G_M17506_IG10:
+ xor rbx, rbx
+ xor edx, edx
+ jmp SHORT G_M17506_IG12
+ ;; size=6 bbWeight=4 PerfScore 10.00
+G_M17506_IG11:
mov rdi, qword ptr [rbp-0x38]
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:IndexOfNullCharacter(ulong):int
call [rcx]System.SpanHelpers:IndexOfNullCharacter(ulong):int
test eax, eax
- jl G_M17506_IG15
+ jl SHORT G_M17506_IG15
mov rbx, qword ptr [rbp-0x38]
mov edx, eax
- jmp SHORT G_M17506_IG12
- ;; size=32 bbWeight=4 PerfScore 35.00
-G_M17506_IG11:
- xor rbx, rbx
- xor edx, edx
- ;; size=4 bbWeight=4 PerfScore 2.00
+ ;; size=26 bbWeight=4 PerfScore 27.00
G_M17506_IG12:
mov dword ptr [rbp-0x7C], edx
test edx, edx
je SHORT G_M17506_IG16
mov rdi, rbx
mov esi, 61
mov rcx, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rcx]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
mov r15d, eax
test r15d, r15d
jle SHORT G_M17506_IG08
;; size=35 bbWeight=8 PerfScore 60.00
G_M17506_IG13:
cmp r15d, dword ptr [rbp-0x7C]
ja SHORT G_M17506_IG15
mov rdi, rbx
mov esi, r15d
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov r14, rax
inc r15d
cmp r15d, dword ptr [rbp-0x7C]
ja SHORT G_M17506_IG15
mov edi, r15d
lea rdi, bword ptr [rbx+2*rdi]
mov esi, dword ptr [rbp-0x7C]
sub esi, r15d
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov rdx, rax
;; size=50 bbWeight=4 PerfScore 45.00
G_M17506_IG14:
mov rdi, gword ptr [rbp-0x88]
mov rsi, r14
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this
call [rax]System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this
jmp G_M17506_IG08
;; size=32 bbWeight=4 PerfScore 27.00
G_M17506_IG15:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M17506_IG16:
mov rdi, qword ptr [rbp-0x30]
call Interop+Kernel32:FreeEnvironmentStringsW(ulong):int
mov rax, gword ptr [rbp-0x88]
;; size=16 bbWeight=1 PerfScore 3.00
G_M17506_IG17:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M17506_IG18:
mov rdi, 0xD1FFAB1E ; System.OutOfMemoryException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.OutOfMemoryException:.ctor():this
call [rax]System.OutOfMemoryException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M17506_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x90]
;; size=28 bbWeight=0 PerfScore 0.00
G_M17506_IG20:
lea rax, G_M17506_IG08
;; size=7 bbWeight=0 PerfScore 0.00
G_M17506_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M17506_IG22:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x90]
;; size=28 bbWeight=0 PerfScore 0.00
G_M17506_IG23:
mov rdi, qword ptr [rbp-0x30]
call Interop+Kernel32:FreeEnvironmentStringsW(ulong):int
nop
;; size=10 bbWeight=0 PerfScore 0.00
G_M17506_IG24:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
RWD00 dd 3F800000h ; 1
-; Total bytes of code 589, prolog size 32, PerfScore 282.00, instruction count 163, allocated bytes for code 589 (MethodHash=c4d6bb9d) for method System.Environment:GetEnvironmentVariables():System.Collections.IDictionary (FullOpts)
+; Total bytes of code 585, prolog size 32, PerfScore 282.00, instruction count 163, allocated bytes for code 585 (MethodHash=c4d6bb9d) for method System.Environment:GetEnvironmentVariables():System.Collections.IDictionary (FullOpts)
; ============================================================
-4 (-0.22 % of base) - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String
; Assembly listing for method System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 63 single block inlinees; 39 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T21] ( 7, 7 ) ref -> [rbp-0x58] class-hnd EH-live single-def <System.String>
; V01 arg1 [V01,T13] ( 7, 28 ) ref -> rbx class-hnd single-def <System.String>
; V02 arg2 [V02,T32] ( 3, 3 ) ref -> [rbp-0x60] class-hnd EH-live single-def <System.String>
; V03 loc0 [V03,T33] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
; V05 loc2 [V05,T18] ( 6, 12 ) ref -> [rbp-0x68] class-hnd exact EH-live spill-single-def <System.IO.StreamReader>
; V06 loc3 [V06,T05] ( 14,226 ) ref -> r15 class-hnd exact <System.String>
; V07 loc4 [V07,T00] ( 39,697 ) int -> r14 ld-addr-op
; V08 loc5 [V08,T17] ( 3, 13 ) ubyte -> r12
;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref
; V10 loc7 [V10,T51] ( 2, 2 ) ref -> [rbp-0x70] do-not-enreg[Z] must-init class-hnd EH-live <System.String>
; V11 OutArgs [V11 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T24] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamReader>
; V13 tmp2 [V13,T10] ( 2, 32 ) ref -> r15 class-hnd exact "dup spill" <System.String>
;* V14 tmp3 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp4 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V16 tmp5 [V16,T44] ( 3, 3 ) ref -> rax
;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Exception>
;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V19 tmp8 [V19,T19] ( 5, 10 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V20 tmp9 [V20,T23] ( 8, 7 ) ref -> r15 class-hnd "Inline return value spill temp" <System.String>
;* V21 tmp10 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp13 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp14 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp17 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp18 [V29,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V30 tmp19 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp20 [V31 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
;* V32 tmp21 [V32 ] ( 0, 0 ) byref -> zero-ref
;* V33 tmp22 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp23 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V35 tmp24 [V35,T39] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
; V36 tmp25 [V36,T42] ( 2, 4 ) int -> rsi "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp27 [V38 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp28 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V40 tmp29 [V40,T45] ( 3, 3 ) ref -> r15 class-hnd "Inline return value spill temp" <System.String>
;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V42 tmp31 [V42,T26] ( 3, 6 ) int -> rdx "Span.get_Item index"
;* V43 tmp32 [V43,T60] ( 0, 0 ) int -> zero-ref
;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V46 tmp35 [V46 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V47 tmp36 [V47 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V48 tmp37 [V48 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V49 tmp38 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp39 [V50 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V51 tmp40 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V52 tmp41 [V52,T40] ( 2, 4 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
; V53 tmp42 [V53,T20] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.IO.FileStream>
;* V54 tmp43 [V54,T76] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V55 tmp44 [V55 ] ( 0, 0 ) ref -> zero-ref single-def
;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref single-def
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp49 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp50 [V61,T65] ( 0, 0 ) ref -> zero-ref single-def
;* V62 tmp51 [V62 ] ( 0, 0 ) ref -> zero-ref single-def
;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp53 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp54 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp55 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp56 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp57 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
; V69 tmp58 [V69,T52] ( 2, 2 ) ref -> rax class-hnd single-def "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
;* V70 tmp59 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
;* V71 tmp60 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.IO.Strategies.FileStreamStrategy>
; V72 tmp61 [V72,T25] ( 3, 6 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.Strategies.UnixFileStreamStrategy>
; V73 tmp62 [V73,T53] ( 2, 2 ) ref -> rsi class-hnd single-def "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
; V74 tmp63 [V74,T22] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.IO.Strategies.BufferedFileStreamStrategy>
; V75 tmp64 [V75,T07] ( 2, 64 ) ubyte -> rax "Inline return value spill temp"
; V76 tmp65 [V76,T02] ( 4,256 ) ushort -> rax "Inlining Arg"
;* V77 tmp66 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V78 tmp67 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V79 tmp68 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V80 tmp69 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V81 tmp70 [V81,T08] ( 2, 64 ) ubyte -> rax "Inline return value spill temp"
; V82 tmp71 [V82,T03] ( 4,256 ) ushort -> rax "Inlining Arg"
;* V83 tmp72 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V84 tmp73 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V85 tmp74 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V86 tmp75 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V87 tmp76 [V87,T09] ( 2, 64 ) ubyte -> rax "Inline return value spill temp"
; V88 tmp77 [V88,T04] ( 4,256 ) ushort -> rax "Inlining Arg"
;* V89 tmp78 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V90 tmp79 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V91 tmp80 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V92 tmp81 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V93 tmp82 [V93,T06] ( 4, 64 ) int -> rdi "Inlining Arg"
; V94 tmp83 [V94,T15] ( 5, 18 ) int -> rax "Inline return value spill temp"
; V95 tmp84 [V95,T12] ( 2, 32 ) int -> rdx "Inlining Arg"
;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V97 tmp86 [V97,T11] ( 2, 32 ) byref -> rdi "Inlining Arg"
; V98 tmp87 [V98,T14] ( 4, 24 ) int -> rax "Inline return value spill temp"
-;* V99 tmp88 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V100 tmp89 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V99 tmp88 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V100 tmp89 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V101 tmp90 [V101,T41] ( 2, 4 ) byref -> rsi "Inlining Arg"
; V102 tmp91 [V102,T43] ( 2, 4 ) int -> rdx "Inlining Arg"
;* V103 tmp92 [V103 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V105 tmp94 [V105,T27] ( 3, 6 ) int -> rax "Inlining Arg"
;* V106 tmp95 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V107 tmp96 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V108 tmp97 [V108 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V109 tmp98 [V109,T34] ( 4, 4 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V110 tmp99 [V110 ] ( 6, 12 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V111 tmp100 [V111 ] ( 6, 12 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V112 tmp101 [V112,T46] ( 3, 3 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
;* V113 tmp102 [V113 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V114 tmp103 [V114,T28] ( 3, 6 ) int -> rdx "Span.get_Item index"
;* V115 tmp104 [V115,T68] ( 0, 0 ) int -> zero-ref
;* V116 tmp105 [V116 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V117 tmp106 [V117 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V118 tmp107 [V118 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V119 tmp108 [V119 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V120 tmp109 [V120 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V121 tmp110 [V121 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V122 tmp111 [V122 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V123 tmp112 [V123 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V124 tmp113 [V124,T47] ( 3, 3 ) byref -> rsi "field V14._reference (fldOffset=0x0)" P-INDEP
; V125 tmp114 [V125,T50] ( 3, 3 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
;* V126 tmp115 [V126 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V127 tmp116 [V127 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V128 tmp117 [V128 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp118 [V129 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
; V130 tmp119 [V130,T35] ( 4, 4 ) byref -> rdi "field V22._reference (fldOffset=0x0)" P-INDEP
; V131 tmp120 [V131,T30] ( 5, 5 ) int -> rsi "field V22._length (fldOffset=0x8)" P-INDEP
;* V132 tmp121 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V133 tmp122 [V133 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V134 tmp123 [V134 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp124 [V135 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V136 tmp125 [V136,T66] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V137 tmp126 [V137 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V138 tmp127 [V138 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp128 [V139 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V140 tmp129 [V140,T54] ( 2, 2 ) byref -> rdi single-def "field V33._reference (fldOffset=0x0)" P-INDEP
; V141 tmp130 [V141,T61] ( 2, 2 ) int -> rsi "field V33._length (fldOffset=0x8)" P-INDEP
;* V142 tmp131 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V143 tmp132 [V143 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V144 tmp133 [V144 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp134 [V145 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
; V146 tmp135 [V146,T48] ( 3, 3 ) byref -> r8 single-def "field V38._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp136 [V147,T69] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V148 tmp137 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp138 [V149 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V150 tmp139 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp140 [V151 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V152 tmp141 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp142 [V153 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V154 tmp143 [V154 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp144 [V155 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;* V156 tmp145 [V156 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V157 tmp146 [V157 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V158 tmp147 [V158,T55] ( 2, 2 ) byref -> rdx single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V159 tmp148 [V159,T70] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
;* V160 tmp149 [V160 ] ( 0, 0 ) ubyte -> zero-ref "field V68.hasValue (fldOffset=0x0)" P-INDEP
;* V161 tmp150 [V161 ] ( 0, 0 ) int -> zero-ref "field V68.value (fldOffset=0x4)" P-INDEP
;* V162 tmp151 [V162,T71] ( 0, 0 ) ubyte -> zero-ref "field V70.hasValue (fldOffset=0x0)" P-INDEP
;* V163 tmp152 [V163,T72] ( 0, 0 ) int -> zero-ref "field V70.value (fldOffset=0x4)" P-INDEP
;* V164 tmp153 [V164 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp154 [V165 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V166 tmp155 [V166 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V167 tmp156 [V167 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V168 tmp157 [V168 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp158 [V169 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
;* V170 tmp159 [V170 ] ( 0, 0 ) byref -> zero-ref "field V80._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp160 [V171 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
;* V172 tmp161 [V172 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp162 [V173 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
;* V174 tmp163 [V174 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp164 [V175 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
;* V176 tmp165 [V176 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V177 tmp166 [V177 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V178 tmp167 [V178 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
;* V179 tmp168 [V179 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
;* V180 tmp169 [V180 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V181 tmp170 [V181 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
;* V182 tmp171 [V182 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
;* V183 tmp172 [V183 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-INDEP
;* V184 tmp173 [V184 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp174 [V185 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V186 tmp175 [V186 ] ( 0, 0 ) byref -> zero-ref "field V92._reference (fldOffset=0x0)" P-INDEP
;* V187 tmp176 [V187 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0x8)" P-INDEP
-; V188 tmp177 [V188,T56] ( 2, 2 ) byref -> rsi "field V99._reference (fldOffset=0x0)" P-INDEP
-; V189 tmp178 [V189,T62] ( 2, 2 ) int -> rdx "field V99._length (fldOffset=0x8)" P-INDEP
-;* V190 tmp179 [V190 ] ( 0, 0 ) byref -> zero-ref "field V100._reference (fldOffset=0x0)" P-INDEP
-;* V191 tmp180 [V191 ] ( 0, 0 ) int -> zero-ref "field V100._length (fldOffset=0x8)" P-INDEP
+;* V188 tmp177 [V188 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
+;* V189 tmp178 [V189 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
+; V190 tmp179 [V190,T56] ( 2, 2 ) byref -> rsi "field V100._reference (fldOffset=0x0)" P-INDEP
+; V191 tmp180 [V191,T62] ( 2, 2 ) int -> rdx "field V100._length (fldOffset=0x8)" P-INDEP
; V192 tmp181 [V192,T57] ( 2, 2 ) byref -> rcx "field V103._reference (fldOffset=0x0)" P-INDEP
; V193 tmp182 [V193,T63] ( 2, 2 ) int -> rax "field V103._length (fldOffset=0x8)" P-INDEP
; V194 tmp183 [V194,T58] ( 2, 2 ) byref -> rcx "field V106._reference (fldOffset=0x0)" P-INDEP
; V195 tmp184 [V195,T64] ( 2, 2 ) int -> rax "field V106._length (fldOffset=0x8)" P-INDEP
;* V196 tmp185 [V196 ] ( 0, 0 ) byref -> zero-ref "field V107._reference (fldOffset=0x0)" P-INDEP
;* V197 tmp186 [V197 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x8)" P-INDEP
; V198 tmp187 [V198 ] ( 3, 4 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V110._reference (fldOffset=0x0)" P-DEP
; V199 tmp188 [V199 ] ( 4, 5 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V110._length (fldOffset=0x8)" P-DEP
; V200 tmp189 [V200 ] ( 3, 4 ) byref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V111._reference (fldOffset=0x0)" P-DEP
; V201 tmp190 [V201 ] ( 4, 5 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V111._length (fldOffset=0x8)" P-DEP
; V202 tmp191 [V202,T36] ( 4, 4 ) byref -> rax "field V113._reference (fldOffset=0x0)" P-INDEP
; V203 tmp192 [V203,T31] ( 5, 5 ) int -> rsi "field V113._length (fldOffset=0x8)" P-INDEP
; V204 tmp193 [V204,T37] ( 4, 4 ) byref -> r9 "field V116._reference (fldOffset=0x0)" P-INDEP
; V205 tmp194 [V205,T38] ( 4, 4 ) int -> r10 "field V116._length (fldOffset=0x8)" P-INDEP
;* V206 tmp195 [V206 ] ( 0, 0 ) byref -> zero-ref "field V117._reference (fldOffset=0x0)" P-INDEP
;* V207 tmp196 [V207 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x8)" P-INDEP
;* V208 tmp197 [V208 ] ( 0, 0 ) byref -> zero-ref "field V118._reference (fldOffset=0x0)" P-INDEP
;* V209 tmp198 [V209 ] ( 0, 0 ) int -> zero-ref "field V118._length (fldOffset=0x8)" P-INDEP
;* V210 tmp199 [V210 ] ( 0, 0 ) byref -> zero-ref "field V121._reference (fldOffset=0x0)" P-INDEP
;* V211 tmp200 [V211 ] ( 0, 0 ) int -> zero-ref "field V121._length (fldOffset=0x8)" P-INDEP
; V212 tmp201 [V212,T59] ( 2, 2 ) byref -> rdx "field V122._reference (fldOffset=0x0)" P-INDEP
;* V213 tmp202 [V213,T73] ( 0, 0 ) int -> zero-ref "field V122._length (fldOffset=0x8)" P-INDEP
; V214 tmp203 [V214,T75] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V215 tmp204 [V215,T29] ( 3, 6 ) struct ( 8) [rbp-0x50] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V216 PSPSym [V216,T74] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
; V217 cse0 [V217,T16] ( 2, 16 ) int -> rdx "CSE #09: conservative"
; V218 cse1 [V218,T49] ( 2, 2 ) byref -> r8 "CSE #03: conservative"
; V219 cse2 [V219,T01] ( 14,377 ) int -> r13 "CSE #04: aggressive"
;
; Lcl frame size = 104
G_M35333_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x70], ymm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x80], rsp
mov gword ptr [rbp-0x58], rdi
mov gword ptr [rbp-0x60], rdx
mov rbx, rsi
;; size=58 bbWeight=1 PerfScore 15.58
G_M35333_IG02:
test rbx, rbx
je G_M35333_IG54
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Environment:GetEnvironmentVariableCore(System.String):System.String
call [rax]System.Environment:GetEnvironmentVariableCore(System.String):System.String
test rax, rax
je SHORT G_M35333_IG03
cmp word ptr [rax+0x0C], 47
je G_M35333_IG50
;; size=40 bbWeight=1 PerfScore 10.00
G_M35333_IG03:
mov rdi, gword ptr [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Environment:GetXdgConfig(System.String):System.String
call [rax]System.Environment:GetXdgConfig(System.String):System.String
test rax, rax
je G_M35333_IG53
cmp dword ptr [rax+0x08], 0
je SHORT G_M35333_IG06
mov r8, 0xD1FFAB1E
lea rdi, bword ptr [rax+0x0C]
mov esi, dword ptr [rax+0x08]
lea edx, [rsi-0x01]
cmp edx, esi
jae G_M35333_IG55
cmp word ptr [rdi+2*rdx], 47
jne SHORT G_M35333_IG04
mov rdx, r8
mov ecx, 14
mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
call [rax]System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
mov r15, rax
jmp SHORT G_M35333_IG05
;; size=91 bbWeight=1 PerfScore 24.00
G_M35333_IG04:
mov rdx, 0xD1FFAB1E
mov ecx, 1
mov r9d, 14
mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
call [rax]System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
mov r15, rax
;; size=36 bbWeight=1 PerfScore 4.25
G_M35333_IG05:
jmp SHORT G_M35333_IG07
;; size=2 bbWeight=1 PerfScore 2.00
G_M35333_IG06:
mov r15, 0xD1FFAB1E ; 'user-dirs.dirs'
;; size=10 bbWeight=1 PerfScore 0.25
G_M35333_IG07:
mov rdi, r15
mov esi, 4
mov rax, 0xD1FFAB1E ; code for Interop+Sys:Access(System.String,int):int
call [rax]Interop+Sys:Access(System.String,int):int
test eax, eax
jne G_M35333_IG48
;; size=28 bbWeight=1 PerfScore 5.00
G_M35333_IG08:
mov rdi, 0xD1FFAB1E ; System.IO.StreamReader
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
test r15, r15
je G_M35333_IG47
cmp dword ptr [r15+0x08], 0
je G_M35333_IG47
mov rdi, 0xD1FFAB1E ; System.IO.FileStream
call CORINFO_HELP_NEWFAST
mov r12, rax
xor edi, edi
mov qword ptr [rsp], rdi
mov rdi, r15
mov esi, 3
mov edx, 1
mov ecx, 1
mov r8d, 0x1000
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long)
call [rax]System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long)
mov rdi, 0xD1FFAB1E ; System.IO.Strategies.UnixFileStreamStrategy
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x78], rax
xor esi, esi
mov qword ptr [rsp], rsi
mov byte ptr [rbp-0x50], 0
;; size=143 bbWeight=1 PerfScore 21.00
G_M35333_IG09:
mov dword ptr [rbp-0x4C], esi
mov rsi, qword ptr [rbp-0x50]
mov qword ptr [rsp+0x08], rsi
mov rsi, r15
mov rdi, rax
mov edx, 3
mov ecx, 1
mov r8d, 1
xor r9d, r9d
mov r10, 0xD1FFAB1E ; code for System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this
call [r10]System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this
mov rdi, 0xD1FFAB1E ; System.IO.Strategies.BufferedFileStreamStrategy
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x18]
mov rsi, gword ptr [rbp-0x78]
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r15+0x28], 0x1000
mov rsi, r15
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.IO.Strategies.FileStreamHelpers:WrapIfDerivedType(System.IO.FileStream,System.IO.Strategies.FileStreamStrategy):System.IO.Strategies.FileStreamStrategy
call [rax]System.IO.Strategies.FileStreamHelpers:WrapIfDerivedType(System.IO.FileStream,System.IO.Strategies.FileStreamStrategy):System.IO.Strategies.FileStreamStrategy
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, r14
mov rsi, r12
mov rdx, r13
mov ecx, 1
mov r8d, 0x400
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte,int,ubyte):this
call [rax]System.IO.StreamReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte,int,ubyte):this
mov rdi, r14
mov gword ptr [rbp-0x68], rdi
;; size=162 bbWeight=1 PerfScore 24.25
G_M35333_IG10:
mov rdi, gword ptr [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:ReadLine():System.String:this
call [rax]System.IO.StreamReader:ReadLine():System.String:this
mov r15, rax
test r15, r15
je G_M35333_IG44
xor r14d, r14d
jmp SHORT G_M35333_IG12
;; size=33 bbWeight=8 PerfScore 64.00
G_M35333_IG11:
mov rdi, gword ptr [rbp-0x68]
inc r14d
;; size=7 bbWeight=16 PerfScore 20.00
G_M35333_IG12:
mov r13d, dword ptr [r15+0x08]
cmp r13d, r14d
mov rdi, gword ptr [rbp-0x68]
jle SHORT G_M35333_IG10
;; size=13 bbWeight=64 PerfScore 272.00
G_M35333_IG13:
mov eax, r14d
movzx rax, word ptr [r15+2*rax+0x0C]
cmp eax, 256
jl G_M35333_IG21
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne SHORT G_M35333_IG11
;; size=38 bbWeight=32 PerfScore 264.00
G_M35333_IG14:
mov r8d, dword ptr [rbx+0x08]
mov rdi, r15
mov esi, r14d
mov rdx, rbx
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.String:CompareOrdinal(System.String,int,System.String,int,int):int
call [rax]System.String:CompareOrdinal(System.String,int,System.String,int,int):int
test eax, eax
mov rdi, gword ptr [rbp-0x68]
jne SHORT G_M35333_IG10
add r14d, dword ptr [rbx+0x08]
jmp SHORT G_M35333_IG16
;; size=41 bbWeight=8 PerfScore 108.00
G_M35333_IG15:
inc r14d
;; size=3 bbWeight=16 PerfScore 4.00
G_M35333_IG16:
cmp r13d, r14d
jle SHORT G_M35333_IG18
;; size=5 bbWeight=64 PerfScore 80.00
G_M35333_IG17:
cmp r14d, r13d
jae G_M35333_IG43
mov eax, r14d
movzx rax, word ptr [r15+2*rax+0x0C]
cmp eax, 256
jge G_M35333_IG22
mov rcx, 0xD1FFAB1E ; static handle
test byte ptr [rax+rcx], 128
jne SHORT G_M35333_IG15
;; size=45 bbWeight=32 PerfScore 288.00
G_M35333_IG18:
lea eax, [r13-0x04]
cmp eax, r14d
jle G_M35333_IG10
cmp r14d, r13d
jae G_M35333_IG43
mov eax, r14d
cmp word ptr [r15+2*rax+0x0C], 61
jne G_M35333_IG10
;; size=38 bbWeight=8 PerfScore 58.00
G_M35333_IG19:
inc r14d
cmp r13d, r14d
jle G_M35333_IG24
;; size=12 bbWeight=64 PerfScore 96.00
G_M35333_IG20:
cmp r14d, r13d
jae G_M35333_IG43
mov eax, r14d
movzx rax, word ptr [r15+2*rax+0x0C]
cmp eax, 256
jge SHORT G_M35333_IG23
mov esi, eax
mov rdx, 0xD1FFAB1E ; static handle
test byte ptr [rsi+rdx], 128
jne SHORT G_M35333_IG19
jmp SHORT G_M35333_IG24
;; size=45 bbWeight=32 PerfScore 360.00
G_M35333_IG21:
mov r8d, eax
mov rsi, 0xD1FFAB1E ; static handle
test byte ptr [r8+rsi], 128
jne G_M35333_IG11
jmp G_M35333_IG14
;; size=29 bbWeight=32 PerfScore 208.00
G_M35333_IG22:
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
mov rdi, gword ptr [rbp-0x68]
jne G_M35333_IG15
jmp G_M35333_IG18
;; size=31 bbWeight=32 PerfScore 248.00
G_M35333_IG23:
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
mov rdi, gword ptr [rbp-0x68]
jne G_M35333_IG19
;; size=26 bbWeight=32 PerfScore 184.00
G_M35333_IG24:
lea esi, [r13-0x03]
cmp esi, r14d
jle G_M35333_IG10
cmp r14d, r13d
jae G_M35333_IG43
mov esi, r14d
cmp word ptr [r15+2*rsi+0x0C], 34
jne G_M35333_IG10
inc r14d
xor r12d, r12d
mov rdi, r15
mov esi, r14d
mov rdx, 0xD1FFAB1E ; '$HOME/'
xor ecx, ecx
mov r8d, 6
mov rax, 0xD1FFAB1E ; code for System.String:CompareOrdinal(System.String,int,System.String,int,int):int
call [rax]System.String:CompareOrdinal(System.String,int,System.String,int,int):int
test eax, eax
je SHORT G_M35333_IG25
cmp r14d, r13d
jae G_M35333_IG43
mov edi, r14d
cmp word ptr [r15+2*rdi+0x0C], 47
jne G_M35333_IG10
jmp SHORT G_M35333_IG26
;; size=111 bbWeight=8 PerfScore 168.00
G_M35333_IG25:
mov r12d, 1
add r14d, 6
;; size=10 bbWeight=4 PerfScore 2.00
G_M35333_IG26:
mov edi, r14d
mov edx, r13d
sub edx, edi
cmp r13d, edi
jb G_M35333_IG42
movsxd rdi, edi
lea rdi, bword ptr [r15+2*rdi+0x0C]
mov esi, 34
mov rax, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rax]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
jge SHORT G_M35333_IG28
;; size=46 bbWeight=8 PerfScore 64.00
G_M35333_IG27:
jmp SHORT G_M35333_IG29
;; size=2 bbWeight=4 PerfScore 8.00
G_M35333_IG28:
add eax, r14d
;; size=3 bbWeight=4 PerfScore 1.00
G_M35333_IG29:
cmp eax, r14d
jle G_M35333_IG10
;; size=9 bbWeight=8 PerfScore 10.00
G_M35333_IG30:
mov rdi, gword ptr [rbp-0x68]
test r12d, r12d
je G_M35333_IG39
mov r8, gword ptr [rbp-0x58]
test r8, r8
- je SHORT G_M35333_IG31
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- mov r8, gword ptr [rbp-0x58]
- jmp SHORT G_M35333_IG32
- ;; size=36 bbWeight=1 PerfScore 10.00
-G_M35333_IG31:
+ jne SHORT G_M35333_IG31
xor rsi, rsi
xor edx, edx
- ;; size=4 bbWeight=1 PerfScore 0.50
+ jmp SHORT G_M35333_IG32
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M35333_IG31:
+ lea rsi, bword ptr [r8+0x0C]
+ mov edx, dword ptr [r8+0x08]
+ ;; size=8 bbWeight=1 PerfScore 2.50
G_M35333_IG32:
sub eax, r14d
mov ecx, r14d
mov r9d, eax
add rcx, r9
mov r9d, r13d
cmp rcx, r9
ja G_M35333_IG41
mov ecx, r14d
lea rcx, bword ptr [r15+2*rcx+0x0C]
mov bword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], edx
mov bword ptr [rbp-0x48], rcx
mov dword ptr [rbp-0x40], eax
cmp dword ptr [rbp-0x30], 0
je G_M35333_IG37
cmp dword ptr [rbp-0x40], 0
je SHORT G_M35333_IG36
mov rax, bword ptr [rbp-0x38]
mov esi, dword ptr [rbp-0x30]
mov r9, bword ptr [rbp-0x48]
mov r10d, dword ptr [rbp-0x40]
lea edx, [rsi-0x01]
cmp edx, esi
jae G_M35333_IG43
cmp word ptr [rax+2*rdx], 47
je SHORT G_M35333_IG33
test r10d, r10d
je G_M35333_IG43
cmp word ptr [r9], 47
jne SHORT G_M35333_IG34
;; size=111 bbWeight=1 PerfScore 28.75
G_M35333_IG33:
mov rdi, rax
mov rdx, r9
mov ecx, r10d
mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
call [rax]System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
jmp SHORT G_M35333_IG35
;; size=23 bbWeight=1 PerfScore 6.00
G_M35333_IG34:
mov rdx, 0xD1FFAB1E
mov rdi, rax
mov ecx, 1
mov r8, r9
mov r9d, r10d
mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
call [rax]System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
;; size=36 bbWeight=1 PerfScore 4.50
G_M35333_IG35:
jmp SHORT G_M35333_IG38
;; size=2 bbWeight=1 PerfScore 2.00
G_M35333_IG36:
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[ushort]:ToString():System.String:this
call [rax]System.ReadOnlySpan`1[ushort]:ToString():System.String:this
jmp SHORT G_M35333_IG38
;; size=18 bbWeight=1 PerfScore 5.75
G_M35333_IG37:
lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[ushort]:ToString():System.String:this
call [rax]System.ReadOnlySpan`1[ushort]:ToString():System.String:this
;; size=16 bbWeight=1 PerfScore 3.75
G_M35333_IG38:
jmp SHORT G_M35333_IG40
;; size=2 bbWeight=1 PerfScore 2.00
G_M35333_IG39:
mov edx, eax
sub edx, r14d
mov rdi, r15
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.String:Substring(int,int):System.String:this
call [rax]System.String:Substring(int,int):System.String:this
;; size=23 bbWeight=1 PerfScore 4.25
G_M35333_IG40:
mov gword ptr [rbp-0x70], rax
jmp SHORT G_M35333_IG45
;; size=6 bbWeight=1 PerfScore 3.00
G_M35333_IG41:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M35333_IG42:
mov edi, 8
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)
int3
;; size=20 bbWeight=0 PerfScore 0.00
G_M35333_IG43:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M35333_IG44:
mov rdi, gword ptr [rbp-0x68]
mov esi, 1
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:Dispose(ubyte):this
call [rax]System.IO.StreamReader:Dispose(ubyte):this
mov rdi, gword ptr [rbp-0x68]
call System.GC:_SuppressFinalize(System.Object)
jmp SHORT G_M35333_IG48
;; size=32 bbWeight=1 PerfScore 8.50
G_M35333_IG45:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M35333_IG46:
call G_M35333_IG56
jmp SHORT G_M35333_IG51
;; size=7 bbWeight=1 PerfScore 3.00
G_M35333_IG47:
mov edi, 0x19BB5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
call [rax]System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M35333_IG48:
mov rdi, gword ptr [rbp-0x58]
mov rsi, gword ptr [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.IO.Path:Combine(System.String,System.String):System.String
call [rax]System.IO.Path:Combine(System.String,System.String):System.String
nop
;; size=21 bbWeight=1 PerfScore 5.50
G_M35333_IG49:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M35333_IG50:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M35333_IG51:
mov rax, gword ptr [rbp-0x70]
;; size=4 bbWeight=1 PerfScore 1.00
G_M35333_IG52:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M35333_IG53:
mov edi, 0x1B3F7
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_M35333_IG54:
mov edi, 0x52D
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_M35333_IG55:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M35333_IG56:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
mov rbp, qword ptr [rdi+0x10]
mov qword ptr [rsp+0x10], rbp
lea rbp, [rbp+0x90]
;; size=30 bbWeight=1 PerfScore 9.75
G_M35333_IG57:
mov rdi, gword ptr [rbp-0x68]
mov esi, 1
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:Dispose(ubyte):this
call [rax]System.IO.StreamReader:Dispose(ubyte):this
mov rdi, gword ptr [rbp-0x68]
call System.GC:_SuppressFinalize(System.Object)
nop
;; size=31 bbWeight=1 PerfScore 6.75
G_M35333_IG58:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M35333_IG59:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
mov rbp, qword ptr [rdi+0x10]
mov qword ptr [rsp+0x10], rbp
lea rbp, [rbp+0x90]
;; size=30 bbWeight=0 PerfScore 0.00
G_M35333_IG60:
lea rax, G_M35333_IG48
;; size=7 bbWeight=0 PerfScore 0.00
G_M35333_IG61:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1795, prolog size 58, PerfScore 2735.58, instruction count 445, allocated bytes for code 1795 (MethodHash=a8cb75fa) for method System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 1791, prolog size 58, PerfScore 2734.58, instruction count 444, allocated bytes for code 1791 (MethodHash=a8cb75fa) for method System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
-4 (-0.46 % of base) - System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String)
; Assembly listing for method System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 39 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 8, 26 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.Net.IPAddress]>
; V01 arg1 [V01,T56] ( 4, 4 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T15] ( 5, 14 ) ref -> r15 class-hnd single-def <System.String>
; V03 loc0 [V03,T03] ( 8, 37 ) ref -> r14 class-hnd exact single-def <System.String>
; V04 loc1 [V04,T01] ( 10, 49 ) int -> r13
; V05 loc2 [V05,T17] ( 4, 16 ) int -> [rbp-0x2C]
; V06 loc3 [V06,T37] ( 3, 12 ) int -> [rbp-0x30]
; V07 loc4 [V07,T11] ( 5, 20 ) int -> [rbp-0x34] spill-single-def
;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc6 [V09,T38] ( 3, 12 ) int -> rax
; V10 loc7 [V10,T12] ( 5, 20 ) int -> [rbp-0x38] spill-single-def
;* V11 loc8 [V11 ] ( 0, 0 ) int -> zero-ref
; V12 loc9 [V12,T39] ( 3, 12 ) int -> rax
; V13 loc10 [V13,T16] ( 4, 16 ) ref -> rax ld-addr-op class-hnd <System.Net.IPAddress>
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V15 tmp1 [V15,T04] ( 2, 32 ) int -> r13 "dup spill"
;* V16 tmp2 [V16 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp4 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp5 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
; V20 tmp6 [V20,T40] ( 3, 12 ) int -> rcx "Inline return value spill temp"
; V21 tmp7 [V21,T29] ( 2, 16 ) int -> rsi "Inlining Arg"
;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V23 tmp9 [V23,T24] ( 2, 16 ) byref -> rcx "Inlining Arg"
; V24 tmp10 [V24,T18] ( 4, 16 ) int -> rax "Inline return value spill temp"
; V25 tmp11 [V25,T41] ( 3, 12 ) int -> rax "Inline return value spill temp"
; V26 tmp12 [V26,T30] ( 2, 16 ) int -> rdx "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp14 [V28,T25] ( 2, 16 ) byref -> rdi "Inlining Arg"
; V29 tmp15 [V29,T19] ( 4, 16 ) int -> rax "Inline return value spill temp"
; V30 tmp16 [V30,T13] ( 5, 20 ) int -> [rbp-0x3C] "Inline return value spill temp"
; V31 tmp17 [V31,T31] ( 2, 16 ) int -> rdx "Inlining Arg"
;* V32 tmp18 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V33 tmp19 [V33,T26] ( 2, 16 ) byref -> rdi "Inlining Arg"
; V34 tmp20 [V34,T20] ( 4, 16 ) int -> rax "Inline return value spill temp"
; V35 tmp21 [V35,T07] ( 3, 24 ) int -> rdx "Inlining Arg"
; V36 tmp22 [V36,T08] ( 3, 24 ) int -> rdi "Inlining Arg"
;* V37 tmp23 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp24 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp25 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V41 tmp27 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V42 tmp28 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp29 [V43,T27] ( 2, 16 ) byref -> rdx "Inlining Arg"
-; V44 tmp30 [V44,T32] ( 2, 16 ) int -> rcx "Inlining Arg"
+;* V41 tmp27 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp28 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V43 tmp29 [V43,T27] ( 2, 16 ) byref -> rcx "Inlining Arg"
+; V44 tmp30 [V44,T32] ( 2, 16 ) int -> rdx "Inlining Arg"
; V45 tmp31 [V45,T48] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
;* V46 tmp32 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V47 tmp33 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V48 tmp34 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V49 tmp35 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V50 tmp36 [V50 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V51 tmp37 [V51 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V52 tmp38 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp39 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp40 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp41 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V56 tmp42 [V56,T14] ( 5, 20 ) int -> [rbp-0x40] "Inline return value spill temp"
; V57 tmp43 [V57,T33] ( 2, 16 ) int -> rdx "Inlining Arg"
;* V58 tmp44 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V59 tmp45 [V59,T28] ( 2, 16 ) byref -> rdi "Inlining Arg"
; V60 tmp46 [V60,T21] ( 4, 16 ) int -> rax "Inline return value spill temp"
;* V61 tmp47 [V61 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V62 tmp48 [V62,T09] ( 3, 24 ) int -> rdi "Inlining Arg"
; V63 tmp49 [V63,T10] ( 3, 24 ) int -> rsi "Inlining Arg"
;* V64 tmp50 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V65 tmp51 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V66 tmp52 [V66 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V67 tmp53 [V67,T34] ( 3, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Net.IPAddress[]>
; V68 tmp54 [V68,T22] ( 4, 16 ) int -> r12 "Inline stloc first use temp"
;* V69 tmp55 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.IPAddress>
; V70 tmp56 [V70,T02] ( 3, 48 ) int -> rdx "Inlining Arg"
; V71 tmp57 [V71,T43] ( 2, 8 ) byref -> rsi "field V16._reference (fldOffset=0x0)" P-INDEP
; V72 tmp58 [V72,T49] ( 2, 8 ) int -> rdi "field V16._length (fldOffset=0x8)" P-INDEP
;* V73 tmp59 [V73 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp60 [V74 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V75 tmp61 [V75 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp62 [V76 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
; V77 tmp63 [V77,T44] ( 2, 8 ) byref -> rdx "field V37._reference (fldOffset=0x0)" P-INDEP
; V78 tmp64 [V78,T50] ( 2, 8 ) int -> rdi "field V37._length (fldOffset=0x8)" P-INDEP
;* V79 tmp65 [V79 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp66 [V80 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-; V81 tmp67 [V81,T35] ( 3, 12 ) byref -> r8 "field V40._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp68 [V82,T23] ( 4, 16 ) int -> rcx "field V40._length (fldOffset=0x8)" P-INDEP
-; V83 tmp69 [V83,T45] ( 2, 8 ) byref -> rdx "field V41._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp70 [V84,T51] ( 2, 8 ) int -> rcx "field V41._length (fldOffset=0x8)" P-INDEP
-;* V85 tmp71 [V85 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V86 tmp72 [V86 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V81 tmp67 [V81,T35] ( 3, 12 ) byref -> rcx "field V40._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp68 [V82,T23] ( 4, 16 ) int -> rdx "field V40._length (fldOffset=0x8)" P-INDEP
+;* V83 tmp69 [V83 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V84 tmp70 [V84 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+; V85 tmp71 [V85,T45] ( 2, 8 ) byref -> rcx "field V42._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp72 [V86,T51] ( 2, 8 ) int -> rdx "field V42._length (fldOffset=0x8)" P-INDEP
;* V87 tmp73 [V87 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp74 [V88 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;* V89 tmp75 [V89 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp76 [V90 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V91 tmp77 [V91 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp78 [V92 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
;* V93 tmp79 [V93 ] ( 0, 0 ) byref -> zero-ref "field V53._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp80 [V94 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V95 tmp81 [V95 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp82 [V96 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V97 tmp83 [V97 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp84 [V98 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
; V99 tmp85 [V99,T46] ( 2, 8 ) byref -> rdi "field V61._reference (fldOffset=0x0)" P-INDEP
; V100 tmp86 [V100,T52] ( 2, 8 ) int -> rsi "field V61._length (fldOffset=0x8)" P-INDEP
; V101 tmp87 [V101,T47] ( 2, 8 ) byref -> rdi "field V64._reference (fldOffset=0x0)" P-INDEP
; V102 tmp88 [V102,T53] ( 2, 8 ) int -> rsi "field V64._length (fldOffset=0x8)" P-INDEP
;* V103 tmp89 [V103 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V104 tmp90 [V104 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
; V105 PSPSym [V105,T57] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V106 cse0 [V106,T36] ( 3, 12 ) byref -> [rbp-0x50] spill-single-def "CSE #06: conservative"
; V107 cse1 [V107,T42] ( 3, 12 ) int -> [rbp-0x44] spill-single-def "CSE #02: moderate"
; V108 cse2 [V108,T54] ( 2, 8 ) int -> rdx "CSE #07: conservative"
; V109 cse3 [V109,T55] ( 2, 8 ) int -> rdx "CSE #09: conservative"
; V110 cse4 [V110,T00] ( 11, 52 ) int -> r12 "CSE #01: aggressive"
; V111 cse5 [V111,T06] ( 6, 24 ) byref -> [rbp-0x58] "CSE #03: moderate"
;
; Lcl frame size = 56
G_M59322_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
lea rbp, [rsp+0x60]
mov qword ptr [rbp-0x60], rsp
mov rbx, rdi
mov r14, rsi
mov r15, rdx
;; size=32 bbWeight=1 PerfScore 8.50
G_M59322_IG02:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.IO.File:Exists(System.String):ubyte
call [rax]System.IO.File:Exists(System.String):ubyte
test eax, eax
je G_M59322_IG18
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
mov r14, rax
mov r13d, -1
jmp SHORT G_M59322_IG04
;; size=49 bbWeight=1 PerfScore 10.75
G_M59322_IG03:
mov rdi, rbx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
;; size=18 bbWeight=4 PerfScore 15.00
G_M59322_IG04:
lea edx, [r13+0x01]
mov r12d, dword ptr [r14+0x08]
mov ecx, r12d
sub ecx, edx
mov rdi, r14
mov rsi, 0xD1FFAB1E ; 'lease'
mov r8d, 4
mov rax, 0xD1FFAB1E ; code for System.String:IndexOf(System.String,int,int,int):int:this
call [rax]System.String:IndexOf(System.String,int,int,int):int:this
mov r13d, eax
cmp r13d, -1
je G_M59322_IG18
;; size=57 bbWeight=8 PerfScore 68.00
G_M59322_IG05:
mov eax, r12d
sub eax, r13d
mov edx, eax
mov dword ptr [rbp-0x44], edx
mov esi, edx
cmp r12d, r13d
jb G_M59322_IG17
lea rax, bword ptr [r14+0x0C]
movsxd rdi, r13d
mov bword ptr [rbp-0x58], rax
lea rcx, bword ptr [rax+2*rdi]
mov rdi, rcx
mov bword ptr [rbp-0x50], rdi
mov rcx, rdi
mov rdi, rcx
mov edx, esi
mov esi, 123
mov rcx, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rcx]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
jge SHORT G_M59322_IG06
mov ecx, eax
jmp SHORT G_M59322_IG07
;; size=77 bbWeight=4 PerfScore 58.00
G_M59322_IG06:
lea ecx, [rax+r13]
;; size=4 bbWeight=4 PerfScore 2.00
G_M59322_IG07:
mov dword ptr [rbp-0x2C], ecx
mov edx, dword ptr [rbp-0x44]
cmp r12d, r13d
jb G_M59322_IG17
mov rdi, bword ptr [rbp-0x50]
mov esi, 125
mov rcx, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rcx]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
jge SHORT G_M59322_IG08
jmp SHORT G_M59322_IG09
;; size=42 bbWeight=4 PerfScore 44.00
G_M59322_IG08:
add eax, r13d
;; size=3 bbWeight=4 PerfScore 1.00
G_M59322_IG09:
mov r9d, dword ptr [rbp-0x2C]
sub eax, r9d
mov rdi, r14
mov dword ptr [rbp-0x30], eax
mov ecx, eax
mov dword ptr [rbp-0x2C], r9d
mov edx, r9d
mov rsi, 0xD1FFAB1E ; 'interface'
mov r8d, 4
mov r10, 0xD1FFAB1E ; code for System.String:IndexOf(System.String,int,int,int):int:this
call [r10]System.String:IndexOf(System.String,int,int,int):int:this
mov dword ptr [rbp-0x34], eax
mov edx, r12d
sub edx, eax
cmp r12d, eax
jb G_M59322_IG17
movsxd rdi, eax
mov rcx, bword ptr [rbp-0x58]
lea rdi, bword ptr [rcx+2*rdi]
mov esi, 59
mov r8, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [r8]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
jge SHORT G_M59322_IG10
mov r8d, eax
mov eax, r8d
jmp SHORT G_M59322_IG11
;; size=109 bbWeight=4 PerfScore 78.00
G_M59322_IG10:
mov r8d, dword ptr [rbp-0x34]
add r8d, eax
mov eax, r8d
;; size=10 bbWeight=4 PerfScore 6.00
G_M59322_IG11:
lea ecx, [rax+0x01]
mov rdi, r14
mov dword ptr [rbp-0x3C], eax
mov edx, eax
mov esi, 32
mov r8, 0xD1FFAB1E ; code for System.String:LastIndexOf(ushort,int,int):int:this
call [r8]System.String:LastIndexOf(ushort,int,int):int:this
lea edx, [rax+0x02]
mov edi, dword ptr [rbp-0x3C]
sub edi, eax
add edi, -3
mov esi, edx
mov eax, edi
add rsi, rax
mov eax, r12d
cmp rsi, rax
ja G_M59322_IG16
mov rax, bword ptr [rbp-0x58]
lea rdx, bword ptr [rax+2*rdx]
mov rsi, rdx
test r15, r15
- je SHORT G_M59322_IG12
- lea rdx, bword ptr [r15+0x0C]
- mov ecx, dword ptr [r15+0x08]
- mov r8, rdx
+ jne SHORT G_M59322_IG12
+ xor rcx, rcx
+ xor edx, edx
jmp SHORT G_M59322_IG13
- ;; size=88 bbWeight=4 PerfScore 70.00
+ ;; size=81 bbWeight=4 PerfScore 61.00
G_M59322_IG12:
- xor r8, r8
- xor ecx, ecx
- ;; size=5 bbWeight=4 PerfScore 2.00
+ lea rcx, bword ptr [r15+0x0C]
+ mov edx, dword ptr [r15+0x08]
+ ;; size=8 bbWeight=4 PerfScore 10.00
G_M59322_IG13:
- cmp edi, ecx
+ cmp edi, edx
mov bword ptr [rbp-0x58], rax
jne G_M59322_IG04
- mov edx, ecx
+ mov edx, edx
add rdx, rdx
mov rdi, rsi
- mov rsi, r8
+ mov rsi, rcx
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rcx]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je G_M59322_IG04
mov ecx, dword ptr [rbp-0x30]
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov rsi, 0xD1FFAB1E ; 'dhcp-server-identifier'
mov r8d, 4
mov r9, 0xD1FFAB1E ; code for System.String:IndexOf(System.String,int,int,int):int:this
call [r9]System.String:IndexOf(System.String,int,int,int):int:this
mov dword ptr [rbp-0x38], eax
mov edx, r12d
sub edx, eax
cmp r12d, eax
jb G_M59322_IG17
movsxd rdi, eax
mov rcx, bword ptr [rbp-0x58]
lea rdi, bword ptr [rcx+2*rdi]
mov esi, 59
mov r8, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [r8]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
jge SHORT G_M59322_IG14
mov esi, eax
jmp SHORT G_M59322_IG15
;; size=135 bbWeight=4 PerfScore 101.00
G_M59322_IG14:
mov esi, dword ptr [rbp-0x38]
add esi, eax
;; size=5 bbWeight=4 PerfScore 5.00
G_M59322_IG15:
lea ecx, [rsi+0x01]
mov rdi, r14
mov dword ptr [rbp-0x40], esi
mov edx, esi
mov esi, 32
mov rax, 0xD1FFAB1E ; code for System.String:LastIndexOf(ushort,int,int):int:this
call [rax]System.String:LastIndexOf(ushort,int,int):int:this
lea edi, [rax+0x01]
mov esi, dword ptr [rbp-0x40]
sub esi, eax
dec esi
mov edx, edi
mov eax, esi
add rdx, rax
mov eax, r12d
cmp rdx, rax
ja SHORT G_M59322_IG16
mov r12, bword ptr [rbp-0x58]
lea rdi, bword ptr [r12+2*rdi]
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddressParser:Parse[ushort](System.ReadOnlySpan`1[ushort],ubyte):System.Net.IPAddress
call [rax]System.Net.IPAddressParser:Parse[ushort](System.ReadOnlySpan`1[ushort],ubyte):System.Net.IPAddress
test rax, rax
je G_M59322_IG04
inc dword ptr [rbx+0x14]
mov rdi, gword ptr [rbx+0x08]
mov r12d, dword ptr [rbx+0x10]
cmp dword ptr [rdi+0x08], r12d
jbe G_M59322_IG03
lea esi, [r12+0x01]
mov dword ptr [rbx+0x10], esi
movsxd rsi, r12d
mov rdx, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp G_M59322_IG04
;; size=139 bbWeight=4 PerfScore 137.00
G_M59322_IG16:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M59322_IG17:
mov edi, 8
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)
int3
;; size=20 bbWeight=0 PerfScore 0.00
G_M59322_IG18:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M59322_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
;; size=22 bbWeight=0 PerfScore 0.00
G_M59322_IG20:
lea rax, G_M59322_IG18
;; size=7 bbWeight=0 PerfScore 0.00
G_M59322_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 870, prolog size 32, PerfScore 610.50, instruction count 240, allocated bytes for code 870 (MethodHash=b9fe1845) for method System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String) (FullOpts)
+; Total bytes of code 866, prolog size 32, PerfScore 609.50, instruction count 239, allocated bytes for code 866 (MethodHash=b9fe1845) for method System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String) (FullOpts)
; ============================================================
-4 (-0.85 % of base) - System.Runtime.CompilerServices.TaskAwaiter+<>c:b__12_0(System.Action,System.Threading.Tasks.Task):this
; Assembly listing for method System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.CompilerServices.TaskAwaiter+<>c>
; V01 arg1 [V01,T01] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Action>
; V02 arg2 [V02,T00] ( 8, 5 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task>
; V03 loc0 [V03,T03] ( 6, 4 ) ref -> r14 class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
; V04 loc1 [V04 ] ( 4, 2.50) struct (16) [rbp-0x38] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Guid>
; V05 loc2 [V05,T07] ( 4, 2 ) ref -> r12 class-hnd single-def <System.Threading.Tasks.Task>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T02] ( 3, 6 ) int -> r13 "dup spill"
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
; V13 tmp7 [V13,T11] ( 3, 1.50) int -> [rbp-0x3C]
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp14 [V20,T12] ( 3, 1.50) int -> [rbp-0x40]
+; V20 tmp14 [V20,T12] ( 3, 1.50) int -> registers
; V21 tmp15 [V21,T05] ( 3, 3 ) struct (16) [rbp-0x50] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Guid>
;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V24 tmp18 [V24,T09] ( 2, 2 ) int -> rcx "argument with side effect"
; V25 tmp19 [V25,T10] ( 2, 2 ) int -> rsi "argument with side effect"
; V26 rat0 [V26,T08] ( 3, 2 ) byref -> rax "TLS field access"
; V27 rat1 [V27,T06] ( 3, 3 ) long -> rax "TLS access"
; V28 rat2 [V28,T04] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
;
; Lcl frame size = 40
G_M15443_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov r15, rsi
mov rbx, rdx
;; size=25 bbWeight=1 PerfScore 7.25
G_M15443_IG02:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
cmp byte ptr [rdi], 0
je SHORT G_M15443_IG04
;; size=15 bbWeight=1 PerfScore 4.25
G_M15443_IG03:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:RemoveFromActiveTasks(System.Threading.Tasks.Task)
call [rax]System.Threading.Tasks.Task:RemoveFromActiveTasks(System.Threading.Tasks.Task)
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M15443_IG04:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x38], xmm0
movzx r13, byte ptr [r14+0x9D]
test r13d, r13d
je G_M15443_IG09
;; size=39 bbWeight=1 PerfScore 6.83
G_M15443_IG05:
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 30
jle G_M15443_IG13
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0xF0]
test rax, rax
je G_M15443_IG13
;; size=51 bbWeight=0.50 PerfScore 6.38
G_M15443_IG06:
mov r12, gword ptr [rax+0x10]
test r12, r12
- jne SHORT G_M15443_IG07
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
- call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
- mov r12d, eax
- xor edi, edi
- mov dword ptr [rbp-0x40], edi
- jmp SHORT G_M15443_IG08
- ;; size=44 bbWeight=0.50 PerfScore 6.12
-G_M15443_IG07:
+ je SHORT G_M15443_IG07
mov rdi, gword ptr [r12+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov dword ptr [rbp-0x3C], eax
mov rdi, r12
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rcx]System.Threading.Tasks.Task:get_Id():int:this
mov r12d, eax
- mov dword ptr [rbp-0x40], r12d
- mov r12d, dword ptr [rbp-0x3C]
- ;; size=48 bbWeight=0.50 PerfScore 7.50
+ jmp SHORT G_M15443_IG08
+ ;; size=51 bbWeight=0.50 PerfScore 9.12
+G_M15443_IG07:
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rdi, gword ptr [rdi]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
+ mov r12d, eax
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], r12d
+ mov r12d, eax
+ ;; size=37 bbWeight=0.50 PerfScore 3.62
G_M15443_IG08:
mov rdi, rbx
- mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
cmp dword ptr [rdi], edi
- call [rcx]System.Threading.Tasks.Task:get_Id():int:this
+ call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov ecx, eax
- mov esi, r12d
- mov edx, dword ptr [rbp-0x40]
+ mov esi, dword ptr [rbp-0x3C]
+ mov edx, r12d
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitEnd(int,int,int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitEnd(int,int,int):this
cmp byte ptr [r14+0xB0], 0
je SHORT G_M15443_IG09
test word ptr [rbx+0x34], 0x400
je SHORT G_M15443_IG09
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:CreateGuidForTaskID(int):System.Guid
call [rax]System.Threading.Tasks.TplEventSource:CreateGuidForTaskID(int):System.Guid
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x48], rdx
mov rdi, qword ptr [rbp-0x50]
mov rsi, qword ptr [rbp-0x48]
lea rdx, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid,byref)
call [rax]System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid,byref)
;; size=119 bbWeight=0.50 PerfScore 17.12
G_M15443_IG09:
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Action:Invoke():this
test r13d, r13d
je SHORT G_M15443_IG11
;; size=13 bbWeight=1 PerfScore 6.25
G_M15443_IG10:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov esi, eax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TaskWaitContinuationComplete(int):this
call [rax]System.Threading.Tasks.TplEventSource:TaskWaitContinuationComplete(int):this
cmp byte ptr [r14+0xB0], 0
je SHORT G_M15443_IG11
test word ptr [rbx+0x34], 0x400
je SHORT G_M15443_IG11
mov rdi, qword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
call [rax]System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
;; size=72 bbWeight=0.50 PerfScore 11.75
G_M15443_IG11:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M15443_IG12:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M15443_IG13:
mov edi, 30
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M15443_IG06
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 19, PerfScore 79.71, instruction count 113, allocated bytes for code 472 (MethodHash=34b5c3ac) for method System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this (FullOpts)
+; Total bytes of code 468, prolog size 19, PerfScore 78.83, instruction count 112, allocated bytes for code 468 (MethodHash=34b5c3ac) for method System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this (FullOpts)
; ============================================================
-4 (-0.69 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T26] ( 3, 10 ) double -> [rbp-0x30] single-def
; V01 arg1 [V01,T07] ( 5, 5 ) ref -> r15 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V04 arg4 [V04,T08] ( 4, 4 ) byref -> r14 single-def
; V05 loc0 [V05,T01] ( 6, 41 ) int -> [rbp-0x34]
; V06 loc1 [V06,T00] ( 7, 42 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V07 loc2 [V07 ] ( 5, 26 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc4 [V09 ] ( 2, 16 ) ref -> [rbp-0x48] must-init pinned class-hnd <ubyte[]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V11 loc6 [V11,T21] ( 2, 2 ) ubyte -> [rbp-0x4C] do-not-enreg[Z] EH-live
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp5 [V17,T09] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp8 [V20,T13] ( 2, 4 ) byref -> rcx "Inlining Arg"
-; V21 tmp9 [V21,T15] ( 2, 4 ) int -> r15 "Inlining Arg"
+; V21 tmp9 [V21,T15] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp14 [V26,T16] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp16 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V31 tmp19 [V31,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V32 tmp20 [V32,T14] ( 2, 2 ) byref -> r12 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V33 tmp21 [V33,T11] ( 3, 3 ) int -> r13 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V34 tmp22 [V34,T18] ( 2, 2 ) byref -> rax "field V10._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T22] ( 2, 2 ) int -> rbx "field V10._length (fldOffset=0x8)" P-INDEP
;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T12] ( 4, 4 ) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp26 [V38,T12] ( 4, 4 ) byref -> r15 "field V14._reference (fldOffset=0x0)" P-INDEP
; V39 tmp27 [V39,T10] ( 5, 5 ) int -> [rbp-0x50] "field V14._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V42 tmp30 [V42,T05] ( 2, 16 ) byref -> rsi "field V16._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43,T06] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V44 tmp32 [V44,T19] ( 2, 2 ) byref -> rcx "field V18._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T23] ( 2, 2 ) int -> r15 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp34 [V46,T19] ( 2, 2 ) byref -> r15 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T23] ( 2, 2 ) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V50 tmp38 [V50,T20] ( 2, 2 ) byref -> [rbp-0x68] spill-single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V51 tmp39 [V51,T17] ( 3, 3 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V58 tmp46 [V58,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V59 tmp47 [V59,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V60 tmp48 [V60,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V61 PSPSym [V61,T25] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
;* V62 cse0 [V62,T24] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V63 cse1 [V63,T02] ( 3, 17 ) int -> [rbp-0x54] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 72
G_M24162_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x70], rsp
vmovsd qword ptr [rbp-0x30], xmm0
mov r15, rdi
mov rbx, rsi
mov r12, rdx
mov r13d, ecx
mov r14, r8
;; size=49 bbWeight=1 PerfScore 11.25
G_M24162_IG02:
mov dword ptr [rbp-0x34], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M24162_IG17
mov eax, dword ptr [rbp-0x34]
jmp SHORT G_M24162_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M24162_IG03:
mov rdi, gword ptr [rbp-0x60]
mov esi, dword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r8d, dword ptr [rbp-0x34], 2
jo G_M24162_IG18
mov edi, r8d
xor rsi, rsi
mov gword ptr [rbp-0x48], rsi
mov eax, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M24162_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x60], rax
xor esi, esi
mov dword ptr [rbp-0x40], esi
mov rsi, gword ptr [rbp-0x60]
mov eax, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x54], eax
mov r8d, eax
mov rsi, gword ptr [rbp-0x60]
mov gword ptr [rbp-0x48], rsi
;; size=59 bbWeight=8 PerfScore 138.00
G_M24162_IG05:
mov rsi, gword ptr [rbp-0x60]
add rsi, 16
mov dword ptr [rbp-0x34], r8d
mov edx, r8d
lea rcx, [rbp-0x40]
vmovsd xmm0, qword ptr [rbp-0x30]
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double]:Invoke(double,System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M24162_IG03
;; size=39 bbWeight=8 PerfScore 98.00
G_M24162_IG06:
mov ebx, dword ptr [rbp-0x40]
cmp dword ptr [rbp-0x54], ebx
jb G_M24162_IG12
mov rax, gword ptr [rbp-0x60]
add rax, 16
test r15, r15
- je SHORT G_M24162_IG07
- lea rcx, bword ptr [r15+0x0C]
- mov r15d, dword ptr [r15+0x08]
- mov rdx, rcx
- mov ecx, r15d
- mov r15, rdx
- jmp SHORT G_M24162_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M24162_IG07:
- xor rcx, rcx
+ jne SHORT G_M24162_IG07
xor r15, r15
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor ecx, ecx
+ jmp SHORT G_M24162_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M24162_IG07:
+ lea rcx, bword ptr [r15+0x0C]
+ mov edi, dword ptr [r15+0x08]
+ mov r15, rcx
+ mov ecx, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M24162_IG08:
mov bword ptr [rbp-0x68], rax
mov rdi, r15
mov dword ptr [rbp-0x50], ecx
mov esi, ecx
mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rdx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M24162_IG11
mov edi, dword ptr [rbp-0x50]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r13d
jg SHORT G_M24162_IG09
mov rdi, r15
mov esi, dword ptr [rbp-0x50]
mov rdx, bword ptr [rbp-0x68]
mov ecx, ebx
mov r8, r12
mov r9d, r13d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov dword ptr [r14], eax
mov edi, 1
jmp SHORT G_M24162_IG10
;; size=90 bbWeight=1 PerfScore 22.25
G_M24162_IG09:
xor edi, edi
mov dword ptr [r14], edi
;; size=5 bbWeight=1 PerfScore 1.25
G_M24162_IG10:
mov dword ptr [rbp-0x4C], edi
jmp SHORT G_M24162_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M24162_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M24162_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M24162_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M24162_IG14:
call G_M24162_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M24162_IG15:
mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=1 PerfScore 1.00
G_M24162_IG16:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M24162_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov eax, dword ptr [rbp-0x34]
jmp G_M24162_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M24162_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M24162_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x70]
;; size=22 bbWeight=1 PerfScore 10.50
G_M24162_IG20:
mov rdi, gword ptr [rbp-0x60]
mov esi, dword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M24162_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 577, prolog size 49, PerfScore 417.25, instruction count 163, allocated bytes for code 577 (MethodHash=8a8da19d) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 573, prolog size 49, PerfScore 417.00, instruction count 162, allocated bytes for code 573 (MethodHash=8a8da19d) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
-4 (-0.70 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 3, 10 ) int -> r15 single-def
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V04 arg4 [V04,T09] ( 4, 4 ) byref -> r13 single-def
; V05 loc0 [V05,T01] ( 6, 41 ) int -> [rbp-0x2C]
; V06 loc1 [V06,T00] ( 7, 42 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V07 loc2 [V07 ] ( 5, 26 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc4 [V09 ] ( 2, 16 ) ref -> [rbp-0x40] must-init pinned class-hnd <ubyte[]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V11 loc6 [V11,T22] ( 2, 2 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp5 [V17,T10] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp8 [V20,T14] ( 2, 4 ) byref -> rax "Inlining Arg"
-; V21 tmp9 [V21,T16] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V21 tmp9 [V21,T16] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp14 [V26,T17] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp16 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V31 tmp19 [V31,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V32 tmp20 [V32,T15] ( 2, 2 ) byref -> [rbp-0x60] single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V33 tmp21 [V33,T12] ( 3, 3 ) int -> r12 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V34 tmp22 [V34,T19] ( 2, 2 ) byref -> r15 "field V10._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T23] ( 2, 2 ) int -> rbx "field V10._length (fldOffset=0x8)" P-INDEP
;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> r14 "field V14._reference (fldOffset=0x0)" P-INDEP
; V39 tmp27 [V39,T11] ( 5, 5 ) int -> [rbp-0x48] "field V14._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V42 tmp30 [V42,T05] ( 2, 16 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43,T07] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V44 tmp32 [V44,T20] ( 2, 2 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T24] ( 2, 2 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp34 [V46,T20] ( 2, 2 ) byref -> r14 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T24] ( 2, 2 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V50 tmp38 [V50,T21] ( 2, 2 ) byref -> r15 "field V23._reference (fldOffset=0x0)" P-INDEP
; V51 tmp39 [V51,T18] ( 3, 3 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V58 tmp46 [V58,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V59 tmp47 [V59,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V60 tmp48 [V60,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V61 PSPSym [V61,T26] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
;* V62 cse0 [V62,T25] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V63 cse1 [V63,T02] ( 3, 17 ) int -> [rbp-0x4C] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 72
G_M46436_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x70], rsp
mov bword ptr [rbp-0x60], rcx
mov r15d, edi
mov r14, rsi
mov rbx, rdx
mov r12d, r8d
mov r13, r9
;; size=48 bbWeight=1 PerfScore 11.25
G_M46436_IG02:
mov dword ptr [rbp-0x2C], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M46436_IG17
mov ecx, dword ptr [rbp-0x2C]
jmp SHORT G_M46436_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M46436_IG03:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r9d, dword ptr [rbp-0x2C], 2
jo G_M46436_IG18
mov edi, r9d
xor rsi, rsi
mov gword ptr [rbp-0x40], rsi
mov ecx, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M46436_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, ecx
mov rcx, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rcx]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x58], rax
xor edx, edx
mov dword ptr [rbp-0x38], edx
mov rdx, gword ptr [rbp-0x58]
mov eax, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x4C], eax
mov r9d, eax
mov rdx, gword ptr [rbp-0x58]
mov gword ptr [rbp-0x40], rdx
;; size=59 bbWeight=8 PerfScore 138.00
G_M46436_IG05:
mov rdx, gword ptr [rbp-0x58]
add rdx, 16
mov dword ptr [rbp-0x2C], r9d
mov ecx, r9d
lea r8, [rbp-0x38]
mov esi, r15d
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int]:Invoke(int,System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M46436_IG03
;; size=37 bbWeight=8 PerfScore 76.00
G_M46436_IG06:
mov ebx, dword ptr [rbp-0x38]
cmp dword ptr [rbp-0x4C], ebx
jb G_M46436_IG12
mov r15, gword ptr [rbp-0x58]
add r15, 16
test r14, r14
- je SHORT G_M46436_IG07
- lea rax, bword ptr [r14+0x0C]
- mov r14d, dword ptr [r14+0x08]
- mov rcx, rax
- mov eax, r14d
- mov r14, rcx
- jmp SHORT G_M46436_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M46436_IG07:
- xor rax, rax
+ jne SHORT G_M46436_IG07
xor r14, r14
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor eax, eax
+ jmp SHORT G_M46436_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M46436_IG07:
+ lea rax, bword ptr [r14+0x0C]
+ mov edi, dword ptr [r14+0x08]
+ mov r14, rax
+ mov eax, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M46436_IG08:
mov rdi, r14
mov dword ptr [rbp-0x48], eax
mov esi, eax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rcx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M46436_IG11
mov edi, dword ptr [rbp-0x48]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r12d
jg SHORT G_M46436_IG09
mov rdi, r14
mov esi, dword ptr [rbp-0x48]
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp-0x60]
mov r9d, r12d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov dword ptr [r13], eax
mov edi, 1
jmp SHORT G_M46436_IG10
;; size=87 bbWeight=1 PerfScore 21.25
G_M46436_IG09:
xor edi, edi
mov dword ptr [r13], edi
;; size=6 bbWeight=1 PerfScore 1.25
G_M46436_IG10:
mov dword ptr [rbp-0x44], edi
jmp SHORT G_M46436_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M46436_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M46436_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M46436_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M46436_IG14:
call G_M46436_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M46436_IG15:
mov eax, dword ptr [rbp-0x44]
;; size=3 bbWeight=1 PerfScore 1.00
G_M46436_IG16:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M46436_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov ecx, dword ptr [rbp-0x2C]
jmp G_M46436_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M46436_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M46436_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x70]
;; size=22 bbWeight=1 PerfScore 10.50
G_M46436_IG20:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M46436_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 572, prolog size 48, PerfScore 394.25, instruction count 162, allocated bytes for code 572 (MethodHash=4e494a9b) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 568, prolog size 48, PerfScore 394.00, instruction count 161, allocated bytes for code 568 (MethodHash=4e494a9b) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
-4 (-0.70 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 3, 10 ) long -> r15 single-def
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V04 arg4 [V04,T09] ( 4, 4 ) byref -> r13 single-def
; V05 loc0 [V05,T01] ( 6, 41 ) int -> [rbp-0x2C]
; V06 loc1 [V06,T00] ( 7, 42 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V07 loc2 [V07 ] ( 5, 26 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc4 [V09 ] ( 2, 16 ) ref -> [rbp-0x40] must-init pinned class-hnd <ubyte[]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V11 loc6 [V11,T22] ( 2, 2 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp5 [V17,T10] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp8 [V20,T14] ( 2, 4 ) byref -> rax "Inlining Arg"
-; V21 tmp9 [V21,T16] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V21 tmp9 [V21,T16] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp14 [V26,T17] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp16 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V31 tmp19 [V31,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V32 tmp20 [V32,T15] ( 2, 2 ) byref -> [rbp-0x60] single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V33 tmp21 [V33,T12] ( 3, 3 ) int -> r12 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V34 tmp22 [V34,T19] ( 2, 2 ) byref -> r15 "field V10._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T23] ( 2, 2 ) int -> rbx "field V10._length (fldOffset=0x8)" P-INDEP
;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> r14 "field V14._reference (fldOffset=0x0)" P-INDEP
; V39 tmp27 [V39,T11] ( 5, 5 ) int -> [rbp-0x48] "field V14._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V42 tmp30 [V42,T05] ( 2, 16 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43,T07] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V44 tmp32 [V44,T20] ( 2, 2 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T24] ( 2, 2 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp34 [V46,T20] ( 2, 2 ) byref -> r14 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T24] ( 2, 2 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V50 tmp38 [V50,T21] ( 2, 2 ) byref -> r15 "field V23._reference (fldOffset=0x0)" P-INDEP
; V51 tmp39 [V51,T18] ( 3, 3 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V58 tmp46 [V58,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V59 tmp47 [V59,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V60 tmp48 [V60,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V61 PSPSym [V61,T26] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
;* V62 cse0 [V62,T25] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V63 cse1 [V63,T02] ( 3, 17 ) int -> [rbp-0x4C] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 72
G_M55325_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x70], rsp
mov bword ptr [rbp-0x60], rcx
mov r15, rdi
mov r14, rsi
mov rbx, rdx
mov r12d, r8d
mov r13, r9
;; size=48 bbWeight=1 PerfScore 11.25
G_M55325_IG02:
mov dword ptr [rbp-0x2C], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M55325_IG17
mov ecx, dword ptr [rbp-0x2C]
jmp SHORT G_M55325_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M55325_IG03:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r9d, dword ptr [rbp-0x2C], 2
jo G_M55325_IG18
mov edi, r9d
xor rsi, rsi
mov gword ptr [rbp-0x40], rsi
mov ecx, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M55325_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, ecx
mov rcx, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rcx]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x58], rax
xor edx, edx
mov dword ptr [rbp-0x38], edx
mov rdx, gword ptr [rbp-0x58]
mov eax, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x4C], eax
mov r9d, eax
mov rdx, gword ptr [rbp-0x58]
mov gword ptr [rbp-0x40], rdx
;; size=59 bbWeight=8 PerfScore 138.00
G_M55325_IG05:
mov rdx, gword ptr [rbp-0x58]
add rdx, 16
mov dword ptr [rbp-0x2C], r9d
mov ecx, r9d
lea r8, [rbp-0x38]
mov rsi, r15
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long]:Invoke(long,System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M55325_IG03
;; size=37 bbWeight=8 PerfScore 76.00
G_M55325_IG06:
mov ebx, dword ptr [rbp-0x38]
cmp dword ptr [rbp-0x4C], ebx
jb G_M55325_IG12
mov r15, gword ptr [rbp-0x58]
add r15, 16
test r14, r14
- je SHORT G_M55325_IG07
- lea rax, bword ptr [r14+0x0C]
- mov r14d, dword ptr [r14+0x08]
- mov rcx, rax
- mov eax, r14d
- mov r14, rcx
- jmp SHORT G_M55325_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M55325_IG07:
- xor rax, rax
+ jne SHORT G_M55325_IG07
xor r14, r14
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor eax, eax
+ jmp SHORT G_M55325_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M55325_IG07:
+ lea rax, bword ptr [r14+0x0C]
+ mov edi, dword ptr [r14+0x08]
+ mov r14, rax
+ mov eax, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M55325_IG08:
mov rdi, r14
mov dword ptr [rbp-0x48], eax
mov esi, eax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rcx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M55325_IG11
mov edi, dword ptr [rbp-0x48]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r12d
jg SHORT G_M55325_IG09
mov rdi, r14
mov esi, dword ptr [rbp-0x48]
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp-0x60]
mov r9d, r12d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov dword ptr [r13], eax
mov edi, 1
jmp SHORT G_M55325_IG10
;; size=87 bbWeight=1 PerfScore 21.25
G_M55325_IG09:
xor edi, edi
mov dword ptr [r13], edi
;; size=6 bbWeight=1 PerfScore 1.25
G_M55325_IG10:
mov dword ptr [rbp-0x44], edi
jmp SHORT G_M55325_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M55325_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M55325_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M55325_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M55325_IG14:
call G_M55325_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M55325_IG15:
mov eax, dword ptr [rbp-0x44]
;; size=3 bbWeight=1 PerfScore 1.00
G_M55325_IG16:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M55325_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov ecx, dword ptr [rbp-0x2C]
jmp G_M55325_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M55325_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M55325_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x70]
;; size=22 bbWeight=1 PerfScore 10.50
G_M55325_IG20:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M55325_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 572, prolog size 48, PerfScore 394.25, instruction count 162, allocated bytes for code 572 (MethodHash=59b127e2) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 568, prolog size 48, PerfScore 394.00, instruction count 161, allocated bytes for code 568 (MethodHash=59b127e2) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
-4 (-0.70 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 3, 10 ) short -> r15 single-def
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V04 arg4 [V04,T09] ( 4, 4 ) byref -> r13 single-def
; V05 loc0 [V05,T01] ( 6, 41 ) int -> [rbp-0x2C]
; V06 loc1 [V06,T00] ( 7, 42 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V07 loc2 [V07 ] ( 5, 26 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc4 [V09 ] ( 2, 16 ) ref -> [rbp-0x40] must-init pinned class-hnd <ubyte[]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V11 loc6 [V11,T22] ( 2, 2 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp5 [V17,T10] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp8 [V20,T14] ( 2, 4 ) byref -> rax "Inlining Arg"
-; V21 tmp9 [V21,T16] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V21 tmp9 [V21,T16] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp14 [V26,T17] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp16 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V31 tmp19 [V31,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V32 tmp20 [V32,T15] ( 2, 2 ) byref -> [rbp-0x60] single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V33 tmp21 [V33,T12] ( 3, 3 ) int -> r12 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V34 tmp22 [V34,T19] ( 2, 2 ) byref -> r15 "field V10._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T23] ( 2, 2 ) int -> rbx "field V10._length (fldOffset=0x8)" P-INDEP
;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> r14 "field V14._reference (fldOffset=0x0)" P-INDEP
; V39 tmp27 [V39,T11] ( 5, 5 ) int -> [rbp-0x48] "field V14._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V42 tmp30 [V42,T05] ( 2, 16 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43,T07] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V44 tmp32 [V44,T20] ( 2, 2 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T24] ( 2, 2 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp34 [V46,T20] ( 2, 2 ) byref -> r14 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T24] ( 2, 2 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V50 tmp38 [V50,T21] ( 2, 2 ) byref -> r15 "field V23._reference (fldOffset=0x0)" P-INDEP
; V51 tmp39 [V51,T18] ( 3, 3 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V58 tmp46 [V58,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V59 tmp47 [V59,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V60 tmp48 [V60,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V61 PSPSym [V61,T26] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
;* V62 cse0 [V62,T25] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V63 cse1 [V63,T02] ( 3, 17 ) int -> [rbp-0x4C] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 72
G_M59973_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x70], rsp
mov bword ptr [rbp-0x60], rcx
mov r15d, edi
mov r14, rsi
mov rbx, rdx
mov r12d, r8d
mov r13, r9
;; size=48 bbWeight=1 PerfScore 11.25
G_M59973_IG02:
mov dword ptr [rbp-0x2C], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M59973_IG17
mov ecx, dword ptr [rbp-0x2C]
jmp SHORT G_M59973_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M59973_IG03:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r9d, dword ptr [rbp-0x2C], 2
jo G_M59973_IG18
mov edi, r9d
xor rsi, rsi
mov gword ptr [rbp-0x40], rsi
mov ecx, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M59973_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, ecx
mov rcx, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rcx]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x58], rax
xor edx, edx
mov dword ptr [rbp-0x38], edx
mov rdx, gword ptr [rbp-0x58]
mov eax, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x4C], eax
mov r9d, eax
mov rdx, gword ptr [rbp-0x58]
mov gword ptr [rbp-0x40], rdx
;; size=59 bbWeight=8 PerfScore 138.00
G_M59973_IG05:
mov rdx, gword ptr [rbp-0x58]
add rdx, 16
mov dword ptr [rbp-0x2C], r9d
mov ecx, r9d
movsx rsi, r15w
lea r8, [rbp-0x38]
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short]:Invoke(short,System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M59973_IG03
;; size=38 bbWeight=8 PerfScore 76.00
G_M59973_IG06:
mov ebx, dword ptr [rbp-0x38]
cmp dword ptr [rbp-0x4C], ebx
jb G_M59973_IG12
mov r15, gword ptr [rbp-0x58]
add r15, 16
test r14, r14
- je SHORT G_M59973_IG07
- lea rax, bword ptr [r14+0x0C]
- mov r14d, dword ptr [r14+0x08]
- mov rcx, rax
- mov eax, r14d
- mov r14, rcx
- jmp SHORT G_M59973_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M59973_IG07:
- xor rax, rax
+ jne SHORT G_M59973_IG07
xor r14, r14
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor eax, eax
+ jmp SHORT G_M59973_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M59973_IG07:
+ lea rax, bword ptr [r14+0x0C]
+ mov edi, dword ptr [r14+0x08]
+ mov r14, rax
+ mov eax, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M59973_IG08:
mov rdi, r14
mov dword ptr [rbp-0x48], eax
mov esi, eax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rcx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M59973_IG11
mov edi, dword ptr [rbp-0x48]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r12d
jg SHORT G_M59973_IG09
mov rdi, r14
mov esi, dword ptr [rbp-0x48]
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp-0x60]
mov r9d, r12d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov dword ptr [r13], eax
mov edi, 1
jmp SHORT G_M59973_IG10
;; size=87 bbWeight=1 PerfScore 21.25
G_M59973_IG09:
xor edi, edi
mov dword ptr [r13], edi
;; size=6 bbWeight=1 PerfScore 1.25
G_M59973_IG10:
mov dword ptr [rbp-0x44], edi
jmp SHORT G_M59973_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M59973_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M59973_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M59973_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M59973_IG14:
call G_M59973_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M59973_IG15:
mov eax, dword ptr [rbp-0x44]
;; size=3 bbWeight=1 PerfScore 1.00
G_M59973_IG16:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M59973_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov ecx, dword ptr [rbp-0x2C]
jmp G_M59973_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M59973_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M59973_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x70]
;; size=22 bbWeight=1 PerfScore 10.50
G_M59973_IG20:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M59973_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 573, prolog size 48, PerfScore 394.25, instruction count 162, allocated bytes for code 573 (MethodHash=ad8a15ba) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 569, prolog size 48, PerfScore 394.00, instruction count 161, allocated bytes for code 569 (MethodHash=ad8a15ba) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
-4 (-0.70 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
; V01 arg0 [V01,T06] ( 3, 10 ) ref -> r15 class-hnd single-def <System.__Canon>
; V02 arg1 [V02,T08] ( 5, 5 ) ref -> r14 class-hnd single-def <System.String>
; V03 arg2 [V03,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon]>
;* V04 arg3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V05 arg4 [V05,T18] ( 2, 2 ) byref -> [rbp+0x10] single-def
; V06 loc0 [V06,T01] ( 6, 41 ) int -> [rbp-0x2C]
; V07 loc1 [V07,T00] ( 7, 42 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V08 loc2 [V08 ] ( 5, 26 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc3 [V09 ] ( 0, 0 ) long -> zero-ref
; V10 loc4 [V10 ] ( 2, 16 ) ref -> [rbp-0x40] must-init pinned class-hnd <ubyte[]>
;* V11 loc5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V12 loc6 [V12,T22] ( 2, 2 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp3 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp4 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V18 tmp5 [V18,T09] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V19 tmp6 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V20 tmp7 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp6 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V20 tmp7 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V21 tmp8 [V21,T13] ( 2, 4 ) byref -> rax "Inlining Arg"
-; V22 tmp9 [V22,T15] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V22 tmp9 [V22,T15] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V24 tmp11 [V24 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V25 tmp12 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V27 tmp14 [V27,T16] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp16 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V30 tmp17 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V31 tmp18 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V32 tmp19 [V32,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V33 tmp20 [V33,T14] ( 2, 2 ) byref -> r12 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
; V34 tmp21 [V34,T11] ( 3, 3 ) int -> r13 single-def "field V04._length (fldOffset=0x8)" P-INDEP
; V35 tmp22 [V35,T19] ( 2, 2 ) byref -> r15 "field V11._reference (fldOffset=0x0)" P-INDEP
; V36 tmp23 [V36,T23] ( 2, 2 ) int -> rbx "field V11._length (fldOffset=0x8)" P-INDEP
;* V37 tmp24 [V37 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V39 tmp26 [V39,T12] ( 4, 4 ) byref -> registers "field V15._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp26 [V39,T12] ( 4, 4 ) byref -> r14 "field V15._reference (fldOffset=0x0)" P-INDEP
; V40 tmp27 [V40,T10] ( 5, 5 ) int -> [rbp-0x48] "field V15._length (fldOffset=0x8)" P-INDEP
;* V41 tmp28 [V41 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp29 [V42 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V43 tmp30 [V43,T05] ( 2, 16 ) byref -> rdx "field V17._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp31 [V44,T07] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V45 tmp32 [V45,T20] ( 2, 2 ) byref -> rax "field V19._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp33 [V46,T24] ( 2, 2 ) int -> r14 "field V19._length (fldOffset=0x8)" P-INDEP
-;* V47 tmp34 [V47 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V48 tmp35 [V48 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
+;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V46 tmp33 [V46 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V47 tmp34 [V47,T20] ( 2, 2 ) byref -> r14 "field V20._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp35 [V48,T24] ( 2, 2 ) int -> rax "field V20._length (fldOffset=0x8)" P-INDEP
;* V49 tmp36 [V49 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V51 tmp38 [V51,T21] ( 2, 2 ) byref -> r15 "field V24._reference (fldOffset=0x0)" P-INDEP
; V52 tmp39 [V52,T17] ( 3, 3 ) int -> rbx "field V24._length (fldOffset=0x8)" P-INDEP
;* V53 tmp40 [V53 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V55 tmp42 [V55 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp43 [V56 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V57 tmp44 [V57 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp45 [V58 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
; V59 tmp46 [V59,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V60 tmp47 [V60,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V61 tmp48 [V61,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V62 PSPSym [V62,T26] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
;* V63 cse0 [V63,T25] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V64 cse1 [V64,T02] ( 3, 17 ) int -> [rbp-0x4C] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 56
G_M12305_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x60], rsp
mov r15, rsi
mov r14, rdx
mov rbx, rcx
mov r12, r8
mov r13d, r9d
;; size=44 bbWeight=1 PerfScore 10.25
G_M12305_IG02:
mov dword ptr [rbp-0x2C], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M12305_IG17
mov ecx, dword ptr [rbp-0x2C]
jmp SHORT G_M12305_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M12305_IG03:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r9d, dword ptr [rbp-0x2C], 2
jo G_M12305_IG18
mov edi, r9d
xor rsi, rsi
mov gword ptr [rbp-0x40], rsi
mov ecx, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M12305_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, ecx
mov rcx, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rcx]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x58], rax
xor edx, edx
mov dword ptr [rbp-0x38], edx
mov rdx, gword ptr [rbp-0x58]
mov eax, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x4C], eax
mov r9d, eax
mov rdx, gword ptr [rbp-0x58]
mov gword ptr [rbp-0x40], rdx
;; size=59 bbWeight=8 PerfScore 138.00
G_M12305_IG05:
mov rdx, gword ptr [rbp-0x58]
add rdx, 16
mov dword ptr [rbp-0x2C], r9d
mov ecx, r9d
lea r8, [rbp-0x38]
mov rsi, r15
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon]:Invoke(System.__Canon,System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M12305_IG03
;; size=37 bbWeight=8 PerfScore 76.00
G_M12305_IG06:
mov ebx, dword ptr [rbp-0x38]
cmp dword ptr [rbp-0x4C], ebx
jb G_M12305_IG12
mov r15, gword ptr [rbp-0x58]
add r15, 16
test r14, r14
- je SHORT G_M12305_IG07
- lea rax, bword ptr [r14+0x0C]
- mov r14d, dword ptr [r14+0x08]
- mov rcx, rax
- mov eax, r14d
- mov r14, rcx
- jmp SHORT G_M12305_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M12305_IG07:
- xor rax, rax
+ jne SHORT G_M12305_IG07
xor r14, r14
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor eax, eax
+ jmp SHORT G_M12305_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M12305_IG07:
+ lea rax, bword ptr [r14+0x0C]
+ mov edi, dword ptr [r14+0x08]
+ mov r14, rax
+ mov eax, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M12305_IG08:
mov rdi, r14
mov dword ptr [rbp-0x48], eax
mov esi, eax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rcx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M12305_IG11
mov edi, dword ptr [rbp-0x48]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r13d
jg SHORT G_M12305_IG09
mov rdi, r14
mov esi, dword ptr [rbp-0x48]
mov rdx, r15
mov ecx, ebx
mov r8, r12
mov r9d, r13d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], eax
mov edi, 1
jmp SHORT G_M12305_IG10
;; size=88 bbWeight=1 PerfScore 21.50
G_M12305_IG09:
xor edi, edi
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], edi
;; size=8 bbWeight=1 PerfScore 2.25
G_M12305_IG10:
mov dword ptr [rbp-0x44], edi
jmp SHORT G_M12305_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M12305_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M12305_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M12305_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M12305_IG14:
call G_M12305_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M12305_IG15:
mov eax, dword ptr [rbp-0x44]
;; size=3 bbWeight=1 PerfScore 1.00
G_M12305_IG16:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M12305_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov ecx, dword ptr [rbp-0x2C]
jmp G_M12305_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M12305_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M12305_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
;; size=22 bbWeight=1 PerfScore 10.50
G_M12305_IG20:
mov rdi, gword ptr [rbp-0x58]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M12305_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 571, prolog size 44, PerfScore 394.50, instruction count 163, allocated bytes for code 571 (MethodHash=eed5cfee) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 567, prolog size 44, PerfScore 394.25, instruction count 162, allocated bytes for code 567 (MethodHash=eed5cfee) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
-4 (-0.70 % of base) - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte
; Assembly listing for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T06] ( 3, 10 ) struct ( 8) [rbp-0x30] do-not-enreg[S] single-def <System.Nullable`1[int]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> r15 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 4, 18 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V04 arg4 [V04,T09] ( 4, 4 ) byref -> r14 single-def
; V05 loc0 [V05,T01] ( 6, 41 ) int -> [rbp-0x34]
; V06 loc1 [V06,T00] ( 7, 42 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live <ubyte[]>
; V07 loc2 [V07 ] ( 5, 26 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc4 [V09 ] ( 2, 16 ) ref -> [rbp-0x48] must-init pinned class-hnd <ubyte[]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V11 loc6 [V11,T22] ( 2, 2 ) ubyte -> [rbp-0x4C] do-not-enreg[Z] EH-live
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V17 tmp5 [V17,T10] ( 3, 6 ) int -> rbx "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp8 [V20,T14] ( 2, 4 ) byref -> rcx "Inlining Arg"
-; V21 tmp9 [V21,T16] ( 2, 4 ) int -> r15 "Inlining Arg"
+; V21 tmp9 [V21,T16] ( 2, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp14 [V26,T17] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp16 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp17 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V31 tmp19 [V31,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V32 tmp20 [V32,T15] ( 2, 2 ) byref -> r12 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V33 tmp21 [V33,T12] ( 3, 3 ) int -> r13 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V34 tmp22 [V34,T19] ( 2, 2 ) byref -> rax "field V10._reference (fldOffset=0x0)" P-INDEP
; V35 tmp23 [V35,T23] ( 2, 2 ) int -> rbx "field V10._length (fldOffset=0x8)" P-INDEP
;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp26 [V38,T13] ( 4, 4 ) byref -> r15 "field V14._reference (fldOffset=0x0)" P-INDEP
; V39 tmp27 [V39,T11] ( 5, 5 ) int -> [rbp-0x50] "field V14._length (fldOffset=0x8)" P-INDEP
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V42 tmp30 [V42,T05] ( 2, 16 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp31 [V43,T07] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V44 tmp32 [V44,T20] ( 2, 2 ) byref -> rcx "field V18._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T24] ( 2, 2 ) int -> r15 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp34 [V46,T20] ( 2, 2 ) byref -> r15 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T24] ( 2, 2 ) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V50 tmp38 [V50,T21] ( 2, 2 ) byref -> [rbp-0x68] spill-single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V51 tmp39 [V51,T18] ( 3, 3 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V58 tmp46 [V58,T03] ( 2, 32 ) ref -> rdi "argument with side effect"
; V59 tmp47 [V59,T28] ( 2, 0 ) ref -> r15 "argument with side effect"
; V60 tmp48 [V60,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
; V61 PSPSym [V61,T26] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
;* V62 cse0 [V62,T25] ( 0, 0 ) byref -> zero-ref hoist "CSE #02: aggressive"
; V63 cse1 [V63,T02] ( 3, 17 ) int -> [rbp-0x54] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 72
G_M22953_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x70], rsp
mov qword ptr [rbp-0x30], rdi
mov r15, rsi
mov rbx, rdx
mov r12, rcx
mov r13d, r8d
mov r14, r9
;; size=48 bbWeight=1 PerfScore 11.25
G_M22953_IG02:
mov dword ptr [rbp-0x34], 0x1000
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M22953_IG17
mov eax, dword ptr [rbp-0x34]
jmp SHORT G_M22953_IG04
;; size=31 bbWeight=1 PerfScore 8.25
G_M22953_IG03:
mov rdi, gword ptr [rbp-0x60]
mov esi, dword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
imul r9d, dword ptr [rbp-0x34], 2
jo G_M22953_IG18
mov edi, r9d
xor rsi, rsi
mov gword ptr [rbp-0x48], rsi
mov eax, edi
;; size=41 bbWeight=8 PerfScore 96.00
G_M22953_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov gword ptr [rbp-0x60], rax
xor edx, edx
mov dword ptr [rbp-0x40], edx
mov rdx, gword ptr [rbp-0x60]
mov eax, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x54], eax
mov r9d, eax
mov rdx, gword ptr [rbp-0x60]
mov gword ptr [rbp-0x48], rdx
;; size=59 bbWeight=8 PerfScore 138.00
G_M22953_IG05:
mov rdx, gword ptr [rbp-0x60]
add rdx, 16
mov dword ptr [rbp-0x34], r9d
mov ecx, r9d
lea r8, [rbp-0x40]
mov rsi, qword ptr [rbp-0x30]
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]]:Invoke(System.Nullable`1[int],System.Span`1[ubyte],byref):ubyte:this
test eax, eax
je G_M22953_IG03
;; size=38 bbWeight=8 PerfScore 82.00
G_M22953_IG06:
mov ebx, dword ptr [rbp-0x40]
cmp dword ptr [rbp-0x54], ebx
jb G_M22953_IG12
mov rax, gword ptr [rbp-0x60]
add rax, 16
test r15, r15
- je SHORT G_M22953_IG07
- lea rcx, bword ptr [r15+0x0C]
- mov r15d, dword ptr [r15+0x08]
- mov rdx, rcx
- mov ecx, r15d
- mov r15, rdx
- jmp SHORT G_M22953_IG08
- ;; size=44 bbWeight=1 PerfScore 11.75
-G_M22953_IG07:
- xor rcx, rcx
+ jne SHORT G_M22953_IG07
xor r15, r15
- ;; size=5 bbWeight=1 PerfScore 0.50
+ xor ecx, ecx
+ jmp SHORT G_M22953_IG08
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M22953_IG07:
+ lea rcx, bword ptr [r15+0x0C]
+ mov edi, dword ptr [r15+0x08]
+ mov r15, rcx
+ mov ecx, edi
+ ;; size=13 bbWeight=1 PerfScore 3.00
G_M22953_IG08:
mov bword ptr [rbp-0x68], rax
mov rdi, r15
mov dword ptr [rbp-0x50], ecx
mov esi, ecx
mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
call [rdx]System.Security.Cryptography.PemEncoding:IsValidLabel(System.ReadOnlySpan`1[ushort]):ubyte
test eax, eax
je SHORT G_M22953_IG11
mov edi, dword ptr [rbp-0x50]
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
call [rax]System.Security.Cryptography.PemEncoding:GetEncodedSize(int,int):int
cmp eax, r13d
jg SHORT G_M22953_IG09
mov rdi, r15
mov esi, dword ptr [rbp-0x50]
mov rdx, bword ptr [rbp-0x68]
mov ecx, ebx
mov r8, r12
mov r9d, r13d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
call [rax]System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int
mov dword ptr [r14], eax
mov edi, 1
jmp SHORT G_M22953_IG10
;; size=90 bbWeight=1 PerfScore 22.25
G_M22953_IG09:
xor edi, edi
mov dword ptr [r14], edi
;; size=5 bbWeight=1 PerfScore 1.25
G_M22953_IG10:
mov dword ptr [rbp-0x4C], edi
jmp SHORT G_M22953_IG13
;; size=5 bbWeight=1 PerfScore 3.00
G_M22953_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
call [rax]System.SR:get_Argument_PemEncoding_InvalidLabel():System.String
mov r15, rax
mov edi, 0x42E7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
G_M22953_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M22953_IG13:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M22953_IG14:
call G_M22953_IG19
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M22953_IG15:
mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=1 PerfScore 1.00
G_M22953_IG16:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M22953_IG17:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
mov eax, dword ptr [rbp-0x34]
jmp G_M22953_IG04
;; size=23 bbWeight=0 PerfScore 0.00
G_M22953_IG18:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M22953_IG19:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x70]
;; size=22 bbWeight=1 PerfScore 10.50
G_M22953_IG20:
mov rdi, gword ptr [rbp-0x60]
mov esi, dword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
call [rax]System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
nop
;; size=20 bbWeight=1 PerfScore 5.50
G_M22953_IG21:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 575, prolog size 48, PerfScore 401.25, instruction count 163, allocated bytes for code 575 (MethodHash=175ca656) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 571, prolog size 48, PerfScore 401.00, instruction count 162, allocated bytes for code 571 (MethodHash=175ca656) for method System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================