2384 (147.71 % of base) - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (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; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 28 single block inlinees; 23 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 27, 23 ) long -> [rbp-0x38] EH-live single-def
-; V01 arg0 [V01,T17] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T09] ( 5, 8 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
-; V03 loc0 [V03,T18] ( 4, 6 ) ref -> rbx class-hnd exact single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
-; V04 loc1 [V04,T04] ( 8, 14 ) int -> r14
-; V05 loc2 [V05,T07] ( 6, 10 ) ref -> r13 class-hnd <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
-; V06 loc3 [V06 ] ( 5, 12 ) struct (128) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V07 loc4 [V07 ] ( 2, 2 ) struct ( 8) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]>
-; V08 loc5 [V08,T20] ( 3, 6 ) ref -> [rbp-0x270] class-hnd <System.__Canon>
-; V09 loc6 [V09,T22] ( 3, 6 ) struct (16) [rbp-0xD0] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
-; V10 loc7 [V10 ] ( 5, 12 ) struct (128) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V11 loc8 [V11,T21] ( 3, 6 ) ref -> rbx class-hnd <System.__Canon>
-; V12 loc9 [V12,T23] ( 3, 6 ) struct (16) [rbp-0x160] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
-; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 TypeCtx [V00,T04] ( 20, 15 ) long -> [rbp-0x38] EH-live single-def
+; V01 arg0 [V01,T57] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 arg1 [V02,T39] ( 5, 8 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+; V03 loc0 [V03,T05] ( 8, 13 ) ref -> rbx class-hnd exact single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V04 loc1 [V04,T03] ( 10, 18 ) int -> r14
+; V05 loc2 [V05,T06] ( 9, 15 ) ref -> r13 class-hnd <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V06 loc3 [V06 ] ( 19, 40 ) struct (128) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]>
+;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V09 loc6 [V09,T60] ( 3, 6 ) struct (16) [rbp-0xC8] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+; V10 loc7 [V10 ] ( 10, 22 ) struct (128) [rbp-0x148] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+; V11 loc8 [V11,T58] ( 3, 6 ) ref -> rbx class-hnd <System.__Canon>
+; V12 loc9 [V12,T61] ( 3, 6 ) struct (16) [rbp-0x158] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+; V13 OutArgs [V13 ] ( 1, 1 ) struct (80) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V19 tmp6 [V19 ] ( 2, 4 ) struct ( 8) [rbp-0x168] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]>
+;* V19 tmp6 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]>
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V27 tmp14 [V27 ] ( 3, 12 ) struct (32) [rbp-0x188] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V27 tmp14 [V27 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V29 tmp16 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp17 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp18 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V32 tmp19 [V32 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V33 tmp20 [V33 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V34 tmp21 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V35 tmp22 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V36 tmp23 [V36 ] ( 3, 12 ) struct (32) [rbp-0x1A8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V36 tmp23 [V36 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V38 tmp25 [V38 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V39 tmp26 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V40 tmp27 [V40 ] ( 3, 6 ) struct (16) [rbp-0x1B8] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+; V40 tmp27 [V40,T41] ( 4, 8 ) struct (16) [rbp-0x168] do-not-enreg[SFR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
;* V41 tmp28 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V42 tmp29 [V42 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V43 tmp30 [V43,T30] ( 4, 4 ) long -> rbx "Indirect call through function pointer"
+; V43 tmp30 [V43,T77] ( 4, 4 ) long -> rbx "Indirect call through function pointer"
;* V44 tmp31 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V45 tmp32 [V45,T31] ( 4, 4 ) long -> rcx "Indirect call through function pointer"
-;* V46 tmp33 [V46 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
-; V47 tmp34 [V47 ] ( 3, 12 ) struct (32) [rbp-0x1D8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+; V45 tmp32 [V45,T78] ( 4, 4 ) long -> rcx "Indirect call through function pointer"
+; V46 tmp33 [V46,T56] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V47 tmp34 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V48 tmp35 [V48 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V49 tmp36 [V49 ] ( 2, 4 ) struct (128) [rbp-0x258] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-;* V50 tmp37 [V50 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V51 tmp38 [V51 ] ( 2, 2 ) ref -> [rbp-0xC0] do-not-enreg[X] addr-exposed "field V07._root (fldOffset=0x0)" P-DEP
-; V52 tmp39 [V52 ] ( 2, 3 ) ref -> [rbp-0x168] do-not-enreg[X] addr-exposed "field V19._root (fldOffset=0x0)" P-DEP
-; V53 tmp40 [V53,T19] ( 4, 6 ) ref -> r15 single-def "V02.[008..016)"
-; V54 tmp41 [V54,T38] ( 2, 4 ) long -> rdi "argument with side effect"
-; V55 tmp42 [V55,T39] ( 2, 4 ) long -> rsi "argument with side effect"
-; V56 tmp43 [V56,T40] ( 2, 4 ) long -> rdx "argument with side effect"
-; V57 tmp44 [V57,T00] ( 2, 32 ) long -> rsi "argument with side effect"
-; V58 tmp45 [V58,T12] ( 2, 8 ) long -> rsi "argument with side effect"
-; V59 tmp46 [V59,T13] ( 2, 8 ) long -> rdi "argument with side effect"
-; V60 tmp47 [V60,T14] ( 2, 8 ) long -> rsi "argument with side effect"
-; V61 tmp48 [V61,T41] ( 2, 4 ) long -> rsi "argument with side effect"
-; V62 tmp49 [V62,T01] ( 2, 32 ) long -> rsi "argument with side effect"
-; V63 tmp50 [V63,T15] ( 2, 8 ) long -> rsi "argument with side effect"
-; V64 tmp51 [V64,T16] ( 2, 8 ) long -> rsi "argument with side effect"
-; V65 tmp52 [V65,T42] ( 2, 4 ) long -> rsi "argument with side effect"
-; V66 PSPSym [V66,T45] ( 1, 1 ) long -> [rbp-0x280] do-not-enreg[V] "PSPSym"
-; V67 cse0 [V67,T03] ( 6, 22 ) long -> r12 hoist "CSE #02: aggressive"
-; V68 cse1 [V68,T08] ( 5, 10 ) long -> [rbp-0x260] multi-def "CSE #03: aggressive"
-; V69 cse2 [V69,T44] ( 3, 3 ) long -> r12 "CSE #01: moderate"
-; V70 cse3 [V70,T43] ( 7, 3 ) long -> [rbp-0x268] multi-def "CSE #05: moderate"
-; V71 rat0 [V71,T32] ( 3, 4 ) long -> rdi "runtime lookup"
-; V72 rat1 [V72,T24] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V73 rat2 [V73,T33] ( 3, 4 ) long -> rdi "runtime lookup"
-; V74 rat3 [V74,T25] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V75 rat4 [V75,T34] ( 3, 4 ) long -> r12 "runtime lookup"
-; V76 rat5 [V76,T26] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V77 rat6 [V77,T35] ( 3, 4 ) long -> r12 "runtime lookup"
-; V78 rat7 [V78,T27] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V79 rat8 [V79,T10] ( 3, 8 ) long -> registers "runtime lookup"
-; V80 rat9 [V80,T05] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
-; V81 rat10 [V81,T36] ( 3, 4 ) long -> rax "runtime lookup"
-; V82 rat11 [V82,T28] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V83 rat12 [V83,T11] ( 3, 8 ) long -> rsi "runtime lookup"
-; V84 rat13 [V84,T06] ( 3, 11.20) long -> rsi "fgMakeTemp is creating a new local variable"
-; V85 rat14 [V85,T37] ( 3, 4 ) long -> rsi "runtime lookup"
-; V86 rat15 [V86,T29] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V87 rat16 [V87,T46] ( 3, 0 ) long -> rbx "runtime lookup"
-; V88 rat17 [V88,T47] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
-; V89 rat18 [V89,T48] ( 3, 0 ) long -> rbx "runtime lookup"
-; V90 rat19 [V90,T49] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
+; V49 tmp36 [V49 ] ( 5, 10 ) struct (128) [rbp-0x1E8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+;* V50 tmp37 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V51 tmp38 [V51,T73] ( 4, 4.40) long -> rsi "spilling helperCall"
+;* V52 tmp39 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V53 tmp40 [V53 ] ( 14, 20 ) struct (32) [rbp-0x208] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V54 tmp41 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp42 [V55 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V56 tmp43 [V56 ] ( 0, 0 ) byref -> zero-ref
+;* V57 tmp44 [V57 ] ( 0, 0 ) byref -> zero-ref
+;* V58 tmp45 [V58 ] ( 0, 0 ) int -> zero-ref
+; V59 tmp46 [V59,T72] ( 7, 5.40) long -> [rbp-0x210] "Inlining Arg"
+;* V60 tmp47 [V60 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V61 tmp48 [V61 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V62 tmp49 [V62,T112] ( 2, 2 ) struct (32) [rbp-0x230] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V63 tmp50 [V63,T102] ( 3, 3 ) ref -> [rbp-0x360] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V65 tmp52 [V65 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V66 tmp53 [V66,T85] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V67 tmp54 [V67,T122] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V68 tmp55 [V68 ] ( 3, 3 ) struct (32) [rbp-0x250] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V69 tmp56 [V69,T100] ( 5, 3.40) long -> [rbp-0x258] spill-single-def "Inlining Arg"
+;* V70 tmp57 [V70 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V71 tmp58 [V71,T113] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V72 tmp59 [V72 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V73 tmp60 [V73 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V74 tmp61 [V74,T114] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V75 tmp62 [V75,T111] ( 2, 2 ) ref -> [rbp-0x368] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V76 tmp63 [V76,T115] ( 2, 2 ) int -> rax "Inlining Arg"
+; V77 tmp64 [V77,T12] ( 5, 13.60) long -> [rbp-0x260] spill-single-def "Inlining Arg"
+;* V78 tmp65 [V78 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V79 tmp66 [V79 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V80 tmp67 [V80,T08] ( 6, 13.60) long -> [rbp-0x268] "Inlining Arg"
+;* V81 tmp68 [V81 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V82 tmp69 [V82,T35] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V83 tmp70 [V83 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V84 tmp71 [V84 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V85 tmp72 [V85,T42] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V86 tmp73 [V86,T14] ( 3, 12 ) ref -> [rbp-0x370] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V87 tmp74 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon>
+; V88 tmp75 [V88,T09] ( 6, 13.60) long -> [rbp-0x270] "Inlining Arg"
+; V89 tmp76 [V89,T62] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
+; V90 tmp77 [V90,T40] ( 4, 8 ) ref -> [rbp-0x378] class-hnd "Inline stloc first use temp" <System.__Canon>
+;* V91 tmp78 [V91 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V92 tmp79 [V92,T124] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V93 tmp80 [V93 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V94 tmp81 [V94 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V95 tmp82 [V95 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V96 tmp83 [V96,T125] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V97 tmp84 [V97,T10] ( 6, 13.60) long -> [rbp-0x278] "Inlining Arg"
+;* V98 tmp85 [V98 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V99 tmp86 [V99,T36] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V100 tmp87 [V100 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V102 tmp89 [V102,T43] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V103 tmp90 [V103,T15] ( 3, 12 ) ref -> [rbp-0x380] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V104 tmp91 [V104,T50] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+;* V105 tmp92 [V105 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V106 tmp93 [V106 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V107 tmp94 [V107 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V108 tmp95 [V108 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V109 tmp96 [V109 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V110 tmp97 [V110 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V111 tmp98 [V111 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V112 tmp99 [V112 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V113 tmp100 [V113,T16] ( 3, 12 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V114 tmp101 [V114 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V115 tmp102 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V116 tmp103 [V116 ] ( 5, 10 ) struct (128) [rbp-0x2F8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+; V117 tmp104 [V117,T74] ( 4, 4.40) long -> rsi "spilling helperCall"
+; V118 tmp105 [V118,T86] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V119 tmp106 [V119 ] ( 2, 4 ) struct (32) [rbp-0x318] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V120 tmp107 [V120 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V121 tmp108 [V121 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V122 tmp109 [V122 ] ( 0, 0 ) byref -> zero-ref
+;* V123 tmp110 [V123 ] ( 0, 0 ) byref -> zero-ref
+;* V124 tmp111 [V124 ] ( 0, 0 ) int -> zero-ref
+; V125 tmp112 [V125,T13] ( 5, 13.60) long -> rbx "Inlining Arg"
+;* V126 tmp113 [V126 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V127 tmp114 [V127 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V128 tmp115 [V128,T11] ( 6, 13.60) long -> [rbp-0x320] "Inlining Arg"
+;* V129 tmp116 [V129 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V130 tmp117 [V130,T37] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V131 tmp118 [V131 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V132 tmp119 [V132 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V133 tmp120 [V133,T44] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V134 tmp121 [V134,T17] ( 3, 12 ) ref -> [rbp-0x388] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V135 tmp122 [V135 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V136 tmp123 [V136 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V137 tmp124 [V137 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V138 tmp125 [V138,T18] ( 3, 12 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V139 tmp126 [V139 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V140 tmp127 [V140 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V141 tmp128 [V141 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V142 tmp129 [V142 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V143 tmp130 [V143 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._root (fldOffset=0x0)" P-INDEP
+;* V144 tmp131 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._root (fldOffset=0x0)" P-INDEP
+; V145 tmp132 [V145,T87] ( 2, 4 ) ref -> r13 "field V27._root (fldOffset=0x0)" P-INDEP
+;* V146 tmp133 [V146,T118] ( 0, 0 ) ref -> zero-ref "field V27._equalityComparer (fldOffset=0x8)" P-INDEP
+; V147 tmp134 [V147,T88] ( 2, 4 ) ref -> rdi "field V27._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V148 tmp135 [V148,T94] ( 2, 4 ) int -> rax "field V27._count (fldOffset=0x18)" P-INDEP
+; V149 tmp136 [V149,T89] ( 2, 4 ) ref -> rsi "field V36._root (fldOffset=0x0)" P-INDEP
+;* V150 tmp137 [V150,T119] ( 0, 0 ) ref -> zero-ref "field V36._equalityComparer (fldOffset=0x8)" P-INDEP
+; V151 tmp138 [V151,T90] ( 2, 4 ) ref -> rdi "field V36._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V152 tmp139 [V152,T95] ( 2, 4 ) int -> rax "field V36._count (fldOffset=0x18)" P-INDEP
+; V153 tmp140 [V153 ] ( 7, 7.50) ref -> [rbp-0x208] do-not-enreg[X] addr-exposed "field V53._root (fldOffset=0x0)" P-DEP
+; V154 tmp141 [V154 ] ( 9, 8 ) ref -> [rbp-0x200] do-not-enreg[X] addr-exposed "field V53._stack (fldOffset=0x8)" P-DEP
+; V155 tmp142 [V155 ] ( 5, 6 ) ref -> [rbp-0x1F8] do-not-enreg[X] addr-exposed "field V53._current (fldOffset=0x10)" P-DEP
+; V156 tmp143 [V156 ] ( 5, 6 ) int -> [rbp-0x1F0] do-not-enreg[X] addr-exposed "field V53._poolUserId (fldOffset=0x18)" P-DEP
+; V157 tmp144 [V157,T91] ( 2, 4 ) ref -> rdi "field V106._root (fldOffset=0x0)" P-INDEP
+; V158 tmp145 [V158,T92] ( 2, 4 ) ref -> rsi "field V106._equalityComparer (fldOffset=0x8)" P-INDEP
+; V159 tmp146 [V159,T93] ( 2, 4 ) ref -> rdx "field V106._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V160 tmp147 [V160,T96] ( 2, 4 ) int -> rcx "field V106._count (fldOffset=0x18)" P-INDEP
+; V161 tmp148 [V161,T07] ( 6, 10 ) ref -> r15 single-def "V02.[008..016)"
+;* V162 tmp149 [V162 ] ( 0, 0 ) ref -> zero-ref single-def "V40.[000..008)"
+;* V163 tmp150 [V163 ] ( 0, 0 ) int -> zero-ref "V40.[008..012)"
+;* V164 tmp151 [V164 ] ( 0, 0 ) int -> zero-ref "V40.[012..016)"
+; V165 tmp152 [V165,T97] ( 2, 4 ) long -> rdi "argument with side effect"
+; V166 tmp153 [V166,T75] ( 3, 4.40) long -> rdi "argument with side effect"
+; V167 tmp154 [V167,T116] ( 2, 2 ) long -> rdi "argument with side effect"
+; V168 tmp155 [V168,T117] ( 2, 2 ) long -> r12 "argument with side effect"
+; V169 tmp156 [V169,T00] ( 2, 32 ) long -> rsi "argument with side effect"
+; V170 tmp157 [V170,T51] ( 2, 8 ) long -> [rbp-0x328] spill-single-def "argument with side effect"
+; V171 tmp158 [V171,T52] ( 2, 8 ) long -> [rbp-0x330] spill-single-def "argument with side effect"
+; V172 tmp159 [V172,T53] ( 2, 8 ) long -> [rbp-0x338] spill-single-def "argument with side effect"
+; V173 tmp160 [V173,T130] ( 2, 0 ) ref -> rdi "argument with side effect"
+; V174 tmp161 [V174,T98] ( 2, 4 ) long -> rsi "argument with side effect"
+; V175 tmp162 [V175,T01] ( 2, 32 ) long -> rsi "argument with side effect"
+; V176 tmp163 [V176,T54] ( 2, 8 ) long -> [rbp-0x340] spill-single-def "argument with side effect"
+; V177 tmp164 [V177,T55] ( 2, 8 ) long -> rsi "argument with side effect"
+; V178 tmp165 [V178,T131] ( 2, 0 ) ref -> rdi "argument with side effect"
+; V179 PSPSym [V179,T123] ( 1, 1 ) long -> [rbp-0x390] do-not-enreg[V] "PSPSym"
+; V180 cse0 [V180,T02] ( 5, 21 ) long -> r12 hoist "CSE #03: aggressive"
+; V181 cse1 [V181,T101] ( 7, 3 ) long -> [rbp-0x348] multi-def "CSE #16: conservative"
+; V182 cse2 [V182,T120] ( 3, 1.50) long -> [rbp-0x350] spill-single-def "CSE #01: conservative"
+; V183 cse3 [V183,T121] ( 3, 1.50) long -> [rbp-0x358] spill-single-def "CSE #02: conservative"
+; V184 cse4 [V184,T59] ( 3, 6 ) ref -> rdi "CSE #06: moderate"
+; V185 rat0 [V185,T79] ( 3, 4 ) long -> rdi "runtime lookup"
+; V186 rat1 [V186,T63] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V187 rat2 [V187,T80] ( 3, 4 ) long -> rdi "runtime lookup"
+; V188 rat3 [V188,T64] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V189 rat4 [V189,T81] ( 3, 4 ) long -> rdi "runtime lookup"
+; V190 rat5 [V190,T65] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V191 rat6 [V191,T66] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V192 rat7 [V192,T67] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V193 rat8 [V193,T107] ( 3, 2 ) long -> registers "runtime lookup"
+; V194 rat9 [V194,T103] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V195 rat10 [V195,T108] ( 3, 2 ) long -> registers "runtime lookup"
+; V196 rat11 [V196,T104] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V197 rat12 [V197,T109] ( 3, 2 ) long -> rdi "runtime lookup"
+; V198 rat13 [V198,T105] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V199 rat14 [V199,T110] ( 3, 2 ) long -> rdi "runtime lookup"
+; V200 rat15 [V200,T106] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V201 rat16 [V201,T82] ( 3, 4 ) long -> r12 "runtime lookup"
+; V202 rat17 [V202,T68] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V203 rat18 [V203,T19] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V204 rat19 [V204,T20] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V205 rat20 [V205,T21] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V206 rat21 [V206,T45] ( 3, 8 ) long -> rdi "runtime lookup"
+; V207 rat22 [V207,T22] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V208 rat23 [V208,T23] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V209 rat24 [V209,T46] ( 3, 8 ) long -> rdi "runtime lookup"
+; V210 rat25 [V210,T24] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V211 rat26 [V211,T25] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V212 rat27 [V212,T26] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V213 rat28 [V213,T27] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V214 rat29 [V214,T47] ( 3, 8 ) long -> rdi "runtime lookup"
+; V215 rat30 [V215,T28] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V216 rat31 [V216,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V217 rat32 [V217,T99] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V218 rat33 [V218,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V219 rat34 [V219,T83] ( 3, 4 ) long -> rax "runtime lookup"
+; V220 rat35 [V220,T69] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V221 rat36 [V221,T76] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V222 rat37 [V222,T70] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V223 rat38 [V223,T84] ( 3, 4 ) long -> rsi "runtime lookup"
+; V224 rat39 [V224,T71] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V225 rat40 [V225,T30] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V226 rat41 [V226,T31] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V227 rat42 [V227,T32] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V228 rat43 [V228,T48] ( 3, 8 ) long -> rdi "runtime lookup"
+; V229 rat44 [V229,T33] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V230 rat45 [V230,T49] ( 3, 8 ) long -> rsi "runtime lookup"
+; V231 rat46 [V231,T34] ( 3, 11.20) long -> rsi "fgMakeTemp is creating a new local variable"
+; V232 rat47 [V232,T126] ( 3, 0 ) long -> rbx "runtime lookup"
+; V233 rat48 [V233,T127] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
+; V234 rat49 [V234,T128] ( 3, 0 ) long -> rbx "runtime lookup"
+; V235 rat50 [V235,T129] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 632
+; Lcl frame size = 952
G_M45682_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 632
- lea rbp, [rsp+0x2A0]
+ sub rsp, 952
+ lea rbp, [rsp+0x3E0]
xor eax, eax
- mov qword ptr [rbp-0x258], rax
+ mov qword ptr [rbp-0x318], rax
vxorps xmm8, xmm8, xmm8
- mov rax, -528
+ mov rax, -720
vmovdqa xmmword ptr [rbp+rax-0x40], xmm8
vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
add rax, 48
jne SHORT -5 instr
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x280], rsp
+ mov qword ptr [rbp-0x390], rsp
mov qword ptr [rbp-0x30], rdi
mov qword ptr [rbp-0x38], rdi
mov rdx, rdi
mov rbx, rsi
;; size=98 bbWeight=1 PerfScore 20.33
G_M45682_IG02:
mov r15, gword ptr [rbp+0x18]
test rbx, rbx
- je G_M45682_IG37
+ je G_M45682_IG125
mov rdi, qword ptr [rdx+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0xE0]
test rdi, rdi
je SHORT G_M45682_IG04
;; size=32 bbWeight=1 PerfScore 9.50
G_M45682_IG03:
jmp SHORT G_M45682_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M45682_IG04:
mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M45682_IG05:
mov rsi, r15
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet:CreateRange[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]
call [rax]System.Collections.Immutable.ImmutableHashSet:CreateRange[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]
mov rbx, rax
xor r14d, r14d
mov rdx, qword ptr [rbp-0x38]
mov rdi, qword ptr [rdx+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
je SHORT G_M45682_IG07
;; size=44 bbWeight=1 PerfScore 12.50
G_M45682_IG06:
jmp SHORT G_M45682_IG08
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M45682_IG07:
mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M45682_IG08:
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov r13, gword ptr [rax]
+ mov r12, gword ptr [rbp+0x10]
+ test r12, r12
+ je G_M45682_IG126
mov rdx, qword ptr [rbp-0x38]
mov rdi, qword ptr [rdx+0x30]
mov rdi, qword ptr [rdi]
- mov r12, qword ptr [rdi+0xE8]
- test r12, r12
+ mov rdi, qword ptr [rdi+0xE8]
+ test rdi, rdi
je SHORT G_M45682_IG10
- ;; size=31 bbWeight=1 PerfScore 11.25
+ ;; size=44 bbWeight=1 PerfScore 13.50
G_M45682_IG09:
jmp SHORT G_M45682_IG11
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M45682_IG10:
mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r12, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
+ mov rdi, rax
+ mov rdx, qword ptr [rbp-0x38]
+ ;; size=25 bbWeight=0.20 PerfScore 0.55
G_M45682_IG11:
- mov rsi, r12
- lea rdi, [rbp-0x168]
- mov rdx, gword ptr [rbp+0x10]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
- mov rdx, gword ptr [rbp-0x168]
- mov gword ptr [rbp-0xC0], rdx
- mov rdx, r12
- lea rsi, [rbp-0xB8]
- lea rdi, [rbp-0xC0]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:this
- nop
- ;; size=70 bbWeight=1 PerfScore 11.75
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rsi, qword ptr [rsi+0x18]
+ test rsi, rsi
+ je SHORT G_M45682_IG13
+ ;; size=16 bbWeight=1 PerfScore 7.25
G_M45682_IG12:
+ jmp SHORT G_M45682_IG14
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M45682_IG13:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ mov rdx, qword ptr [rbp-0x38]
+ ;; size=22 bbWeight=0.20 PerfScore 0.50
+G_M45682_IG14:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x1E8], rdi
+ mov rdi, qword ptr [rsi+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x10]
+ test rax, rax
+ je SHORT G_M45682_IG16
+ ;; size=25 bbWeight=1 PerfScore 8.50
+G_M45682_IG15:
+ mov qword ptr [rbp-0x210], rax
+ jmp SHORT G_M45682_IG17
+ ;; size=9 bbWeight=0.80 PerfScore 2.40
+G_M45682_IG16:
+ mov rdi, rsi
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov qword ptr [rbp-0x210], rax
+ ;; size=25 bbWeight=0.20 PerfScore 0.50
+G_M45682_IG17:
+ mov gword ptr [rbp-0x208], r12
+ xor rcx, rcx
+ mov gword ptr [rbp-0x1F8], rcx
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rcx]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x1F0], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x200], rdi
+ mov rdi, gword ptr [rbp-0x208]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M45682_IG37
+ ;; size=61 bbWeight=1 PerfScore 12.75
+G_M45682_IG18:
+ mov rax, qword ptr [rbp-0x210]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M45682_IG20
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M45682_IG19:
+ jmp SHORT G_M45682_IG21
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M45682_IG20:
+ mov qword ptr [rbp-0x210], rax
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x210]
+ ;; size=35 bbWeight=0.10 PerfScore 0.38
+G_M45682_IG21:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x358], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x258], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M45682_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x208]
+ vmovdqu ymmword ptr [rbp-0x250], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M45682_IG23:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M45682_IG25
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M45682_IG24:
+ mov qword ptr [rbp-0x210], rax
+ jmp SHORT G_M45682_IG26
+ ;; size=9 bbWeight=0.40 PerfScore 1.20
+G_M45682_IG25:
+ mov qword ptr [rbp-0x210], rax
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M45682_IG26:
+ mov qword ptr [rbp-0x350], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x250]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M45682_IG30
+ mov rdi, qword ptr [rbp-0x258]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M45682_IG28
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M45682_IG27:
+ mov rdi, rax
+ jmp SHORT G_M45682_IG29
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M45682_IG28:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M45682_IG29:
+ lea rsi, [rbp-0x200]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M45682_IG30
+ mov r12, qword ptr [rbp-0x350]
+ mov rax, gword ptr [rbp-0x200]
+ mov gword ptr [rbp-0x368], rax
+ lea rdi, [rbp-0x250]
+ call r12
+ mov r12, gword ptr [rbp-0x368]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M45682_IG36
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M45682_IG30:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x200], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M45682_IG31:
+ vmovdqu ymm0, ymmword ptr [rbp-0x208]
+ vmovdqu ymmword ptr [rbp-0x230], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M45682_IG32:
+ mov rax, qword ptr [rbp-0x210]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M45682_IG34
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M45682_IG33:
+ mov qword ptr [rbp-0x210], rax
+ jmp SHORT G_M45682_IG35
+ ;; size=9 bbWeight=0.40 PerfScore 1.20
+G_M45682_IG34:
+ mov qword ptr [rbp-0x210], rax
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M45682_IG35:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x360], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x358]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x230]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x360]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x200], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M45682_IG36:
+ lea rdi, [rbp-0x208]
+ mov rsi, qword ptr [rbp-0x210]
+ mov rdx, gword ptr [rbp-0x208]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M45682_IG37:
+ vmovdqu ymm0, ymmword ptr [rbp-0x208]
+ vmovdqu ymmword ptr [rbp-0x1D8], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M45682_IG38:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x1B8], ymm0
+ vmovdqu ymmword ptr [rbp-0x198], ymm0
+ vmovdqu xmmword ptr [rbp-0x178], xmm0
+ mov dword ptr [rbp-0x1E0], -1
+ lea rdi, bword ptr [rbp-0xB8]
+ lea rsi, bword ptr [rbp-0x1E8]
+ mov ecx, 16
+ rep movsq
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M45682_IG39:
mov rdx, qword ptr [rbp-0x38]
mov rdi, qword ptr [rdx+0x30]
mov rdi, qword ptr [rdi]
mov r12, qword ptr [rdi+0x90]
test r12, r12
- je SHORT G_M45682_IG14
+ je SHORT G_M45682_IG41
;; size=23 bbWeight=1 PerfScore 8.25
-G_M45682_IG13:
- jmp SHORT G_M45682_IG15
+G_M45682_IG40:
+ jmp SHORT G_M45682_IG42
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M45682_IG14:
+G_M45682_IG41:
mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r12, rax
mov rdx, qword ptr [rbp-0x38]
;; size=25 bbWeight=0.20 PerfScore 0.55
-G_M45682_IG15:
- jmp G_M45682_IG21
+G_M45682_IG42:
+ jmp G_M45682_IG73
;; size=5 bbWeight=1 PerfScore 2.00
-G_M45682_IG16:
- mov rsi, r12
- lea rdi, [rbp-0xB8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- mov gword ptr [rbp-0x270], rax
- cmp byte ptr [rbx], bl
- vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x1D8], ymm0
- mov rdx, qword ptr [rbp-0x38]
- mov rdi, qword ptr [rdx+0x30]
+G_M45682_IG43:
+ mov rax, r12
+ mov qword ptr [rbp-0x260], rax
+ mov rdi, qword ptr [rax+0x30]
mov rdi, qword ptr [rdi]
- mov rcx, qword ptr [rdi+0x58]
+ mov rcx, qword ptr [rdi+0x10]
test rcx, rcx
- je SHORT G_M45682_IG18
- ;; size=63 bbWeight=2 PerfScore 35.17
-G_M45682_IG17:
- jmp SHORT G_M45682_IG19
+ je SHORT G_M45682_IG45
+ ;; size=26 bbWeight=2 PerfScore 17.00
+G_M45682_IG44:
+ jmp SHORT G_M45682_IG46
;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M45682_IG18:
- mov rdi, rdx
+G_M45682_IG45:
+ mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rcx, rax
+ mov rax, qword ptr [rbp-0x260]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M45682_IG46:
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M45682_IG53
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M45682_IG57
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M45682_IG48
+ ;; size=44 bbWeight=2 PerfScore 26.50
+G_M45682_IG47:
+ jmp SHORT G_M45682_IG49
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG48:
+ mov qword ptr [rbp-0x268], rcx
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x260]
+ mov rcx, qword ptr [rbp-0x268]
+ ;; size=42 bbWeight=0.40 PerfScore 1.90
+G_M45682_IG49:
+ mov rdx, gword ptr [rbp-0xA0]
+ mov gword ptr [rbp-0x370], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M45682_IG51
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M45682_IG50:
+ mov qword ptr [rbp-0x268], rcx
+ jmp SHORT G_M45682_IG52
+ ;; size=9 bbWeight=1.60 PerfScore 4.80
+G_M45682_IG51:
+ mov qword ptr [rbp-0x268], rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=25 bbWeight=0.40 PerfScore 1.00
+G_M45682_IG52:
+ lea rdi, [rbp-0xA8]
+ call r8
+ mov rdi, gword ptr [rbp-0x370]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x260]
+ mov rcx, qword ptr [rbp-0x268]
+ je G_M45682_IG57
+ ;; size=40 bbWeight=2 PerfScore 21.00
+G_M45682_IG53:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M45682_IG55
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M45682_IG54:
+ jmp SHORT G_M45682_IG56
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG55:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
;; size=21 bbWeight=0.40 PerfScore 0.70
-G_M45682_IG19:
- mov rsi, rcx
- mov qword ptr [rbp-0x260], rsi
- mov rdi, rsi
- lea rdi, [rbp-0x1D8]
- mov rdx, rbx
- mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]):this
- call [rcx]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]):this
+G_M45682_IG56:
+ mov qword ptr [rbp-0x328], rdi
lea rdi, [rsp]
- lea rsi, [rbp-0x1D8]
+ lea rsi, [rbp-0xA8]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x08], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
add rsi, 8
add rdi, 8
movsq
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, gword ptr [rbp-0x270]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
- call [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
- test eax, eax
- jne G_M45682_IG21
- mov rsi, qword ptr [rbp-0x260]
- vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x188], ymm0
- lea rdi, [rbp-0x188]
- mov rdx, r13
- mov rcx, r15
- mov r8, gword ptr [rbp+0x20]
- mov r9d, r14d
- mov r10, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):this
- call [r10]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):this
+ mov rdi, qword ptr [rbp-0x328]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ mov rax, qword ptr [rbp-0x260]
+ ;; size=93 bbWeight=2 PerfScore 37.50
+G_M45682_IG57:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M45682_IG59
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M45682_IG58:
+ jmp SHORT G_M45682_IG60
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG59:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M45682_IG60:
+ cmp byte ptr [rbp-0x84], 0
+ je G_M45682_IG64
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M45682_IG62
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M45682_IG61:
+ mov qword ptr [rbp-0x270], rcx
+ jmp SHORT G_M45682_IG63
+ ;; size=9 bbWeight=1.60 PerfScore 4.80
+G_M45682_IG62:
+ mov qword ptr [rbp-0x270], rcx
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M45682_IG63:
+ mov qword ptr [rbp-0x330], rdi
lea rdi, [rsp]
- lea rsi, [rbp-0x188]
+ lea rsi, [rbp-0x88]
+ movsq
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x20], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x28], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x30], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x330]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ mov rcx, qword ptr [rbp-0x270]
+ ;; size=148 bbWeight=2 PerfScore 64.50
+G_M45682_IG64:
+ mov edi, dword ptr [rbp-0x88]
+ cmp edi, 1
+ je G_M45682_IG81
+ cmp edi, 2
+ jne G_M45682_IG76
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x10]
+ test rax, rax
+ je G_M45682_IG82
+ ;; size=44 bbWeight=2 PerfScore 21.50
+G_M45682_IG65:
+ cmp gword ptr [rbp-0x68], 0
+ je SHORT G_M45682_IG69
+ cmp gword ptr [rbp-0x60], 0
+ je G_M45682_IG71
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M45682_IG83
+ ;; size=38 bbWeight=2 PerfScore 26.50
+G_M45682_IG66:
+ mov rcx, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0x380], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M45682_IG84
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M45682_IG67:
+ mov qword ptr [rbp-0x278], rax
+ ;; size=7 bbWeight=1.60 PerfScore 1.60
+G_M45682_IG68:
+ lea rdi, [rbp-0x70]
+ call rdx
+ mov rdi, gword ptr [rbp-0x380]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x278]
+ je SHORT G_M45682_IG71
+ ;; size=25 bbWeight=2 PerfScore 19.00
+G_M45682_IG69:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M45682_IG85
+ ;; size=20 bbWeight=2 PerfScore 14.50
+G_M45682_IG70:
+ mov qword ptr [rbp-0x338], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x70]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x08], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
add rsi, 8
add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
movsq
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, gword ptr [rbp-0x270]
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x338]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M45682_IG71:
+ mov rdi, gword ptr [rbp-0x58]
+ test rdi, rdi
+ je G_M45682_IG75
+ mov rax, gword ptr [rdi+0x08]
+ ;; size=17 bbWeight=2 PerfScore 8.50
+G_M45682_IG72:
+ mov rdi, gword ptr [rbx+0x10]
+ mov rsi, gword ptr [rbx+0x08]
+ mov ecx, dword ptr [rbx+0x20]
+ mov rdx, gword ptr [rbx+0x18]
+ mov gword ptr [rsp], rdi
+ mov gword ptr [rsp+0x08], rsi
+ mov gword ptr [rsp+0x10], rdx
+ mov dword ptr [rsp+0x18], ecx
+ mov rdi, qword ptr [rbx]
+ mov gword ptr [rbp-0x378], rax
+ mov rsi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
+ call [rcx]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
+ test eax, eax
+ jne SHORT G_M45682_IG73
+ mov rdx, qword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x378]
+ mov rdi, gword ptr [rbp+0x20]
+ test r13, r13
+ je G_M45682_IG77
+ test r15, r15
+ je G_M45682_IG78
+ test r14d, r14d
+ jl G_M45682_IG79
+ test rdi, rdi
+ je G_M45682_IG80
+ mov eax, r14d
+ mov gword ptr [rsp], r13
+ mov gword ptr [rsp+0x08], r15
+ mov gword ptr [rsp+0x10], rdi
+ mov dword ptr [rsp+0x18], eax
+ mov rdi, rdx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Add(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Add(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
- ;; size=261 bbWeight=2 PerfScore 100.17
-G_M45682_IG20:
- mov gword ptr [rbp-0xD0], rax
- mov qword ptr [rbp-0xC8], rdx
- mov r13, gword ptr [rbp-0xD0]
- add r14d, dword ptr [rbp-0xC8]
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M45682_IG21:
+ mov gword ptr [rbp-0xC8], rax
+ mov qword ptr [rbp-0xC0], rdx
+ mov r13, gword ptr [rbp-0xC8]
+ add r14d, dword ptr [rbp-0xC0]
+ ;; size=177 bbWeight=2 PerfScore 81.00
+G_M45682_IG73:
mov rsi, r12
lea rdi, [rbp-0xB8]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
test eax, eax
- jne G_M45682_IG16
+ jne G_M45682_IG43
;; size=30 bbWeight=8 PerfScore 42.00
-G_M45682_IG22:
+G_M45682_IG74:
+ jmp G_M45682_IG86
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M45682_IG75:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M45682_IG76:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M45682_IG77:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG78:
+ mov edi, 0x469
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG79:
+ mov edi, 0x4B9
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ xor rsi, rsi
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
+ call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
+ int3
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M45682_IG80:
+ mov edi, 0x4F5
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG81:
+ mov rax, gword ptr [rbp-0x80]
+ jmp G_M45682_IG72
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M45682_IG82:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ jmp G_M45682_IG65
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M45682_IG83:
+ mov qword ptr [rbp-0x278], rax
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x278]
+ jmp G_M45682_IG66
+ ;; size=40 bbWeight=0.40 PerfScore 2.30
+G_M45682_IG84:
+ mov qword ptr [rbp-0x278], rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M45682_IG68
+ ;; size=30 bbWeight=0.40 PerfScore 1.80
+G_M45682_IG85:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M45682_IG70
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M45682_IG86:
mov rdi, qword ptr [rbp-0x38]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x98]
test rax, rax
- je SHORT G_M45682_IG24
+ je SHORT G_M45682_IG88
;; size=23 bbWeight=1 PerfScore 8.25
-G_M45682_IG23:
- jmp SHORT G_M45682_IG25
+G_M45682_IG87:
+ jmp SHORT G_M45682_IG89
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M45682_IG24:
+G_M45682_IG88:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0.20 PerfScore 0.25
-G_M45682_IG25:
- mov qword ptr [rbp-0x268], rax
+G_M45682_IG89:
+ mov qword ptr [rbp-0x348], rax
mov rcx, rax
lea rdi, [rbp-0xB8]
call rcx
- mov rsi, r12
- mov rdx, gword ptr [rbx+0x10]
- lea rdi, [rbp-0x258]
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- lea rdi, bword ptr [rbp-0x150]
- lea rsi, bword ptr [rbp-0x258]
+ mov rdi, qword ptr [rbx]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rsi, qword ptr [rsi+0x90]
+ test rsi, rsi
+ je SHORT G_M45682_IG91
+ ;; size=41 bbWeight=1 PerfScore 14.00
+G_M45682_IG90:
+ jmp SHORT G_M45682_IG92
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M45682_IG91:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M45682_IG92:
+ mov rbx, gword ptr [rbx+0x10]
+ xor rdi, rdi
+ mov gword ptr [rbp-0x2F8], rdi
+ mov rdi, qword ptr [rsi+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x10]
+ test rax, rax
+ je SHORT G_M45682_IG94
+ ;; size=29 bbWeight=1 PerfScore 10.50
+G_M45682_IG93:
+ mov rsi, rax
+ jmp SHORT G_M45682_IG95
+ ;; size=5 bbWeight=0.80 PerfScore 1.80
+G_M45682_IG94:
+ mov rdi, rsi
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M45682_IG95:
+ lea rdi, [rbp-0x318]
+ mov rdx, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ ;; size=22 bbWeight=1 PerfScore 4.00
+G_M45682_IG96:
+ vmovdqu ymm0, ymmword ptr [rbp-0x318]
+ vmovdqu ymmword ptr [rbp-0x2E8], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M45682_IG97:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x2C8], ymm0
+ vmovdqu ymmword ptr [rbp-0x2A8], ymm0
+ vmovdqu xmmword ptr [rbp-0x288], xmm0
+ mov dword ptr [rbp-0x2F0], -1
+ lea rdi, bword ptr [rbp-0x148]
+ lea rsi, bword ptr [rbp-0x2F8]
mov ecx, 16
rep movsq
- ;; size=69 bbWeight=1 PerfScore 37.25
-G_M45682_IG26:
- jmp G_M45682_IG31
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M45682_IG98:
+ jmp G_M45682_IG117
;; size=5 bbWeight=1 PerfScore 2.00
-G_M45682_IG27:
- mov rsi, r12
- lea rdi, [rbp-0x150]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- mov rbx, rax
+G_M45682_IG99:
+ mov rbx, r12
+ mov rdi, qword ptr [rbx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x10]
+ test rax, rax
+ je SHORT G_M45682_IG101
+ ;; size=19 bbWeight=2 PerfScore 15.00
+G_M45682_IG100:
+ jmp SHORT G_M45682_IG102
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG101:
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M45682_IG102:
+ cmp gword ptr [rbp-0x138], 0
+ je G_M45682_IG109
+ cmp gword ptr [rbp-0x130], 0
+ je G_M45682_IG113
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M45682_IG104
+ ;; size=44 bbWeight=2 PerfScore 26.50
+G_M45682_IG103:
+ jmp SHORT G_M45682_IG105
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG104:
+ mov qword ptr [rbp-0x320], rax
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x320]
+ ;; size=35 bbWeight=0.40 PerfScore 1.50
+G_M45682_IG105:
+ mov rcx, gword ptr [rbp-0x130]
+ mov gword ptr [rbp-0x388], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je SHORT G_M45682_IG107
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M45682_IG106:
+ mov qword ptr [rbp-0x320], rax
+ jmp SHORT G_M45682_IG108
+ ;; size=9 bbWeight=1.60 PerfScore 4.80
+G_M45682_IG107:
+ mov qword ptr [rbp-0x320], rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ ;; size=25 bbWeight=0.40 PerfScore 1.00
+G_M45682_IG108:
+ lea rdi, [rbp-0x138]
+ call rdx
+ mov rdi, gword ptr [rbp-0x388]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x320]
+ je G_M45682_IG113
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M45682_IG109:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M45682_IG111
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M45682_IG110:
+ jmp SHORT G_M45682_IG112
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M45682_IG111:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M45682_IG112:
+ mov qword ptr [rbp-0x340], rdi
lea rdi, [rsp]
- lea rsi, [rbp+0x10]
+ lea rsi, [rbp-0x138]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x08], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
add rsi, 8
add rdi, 8
movsq
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
- call [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
- test eax, eax
- jne G_M45682_IG31
- vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x1A8], ymm0
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0x58]
+ mov rdi, qword ptr [rbp-0x340]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M45682_IG113:
+ mov rdi, qword ptr [rbx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rsi, qword ptr [rdi+0x18]
test rsi, rsi
- je SHORT G_M45682_IG29
- ;; size=141 bbWeight=2 PerfScore 64.17
-G_M45682_IG28:
- jmp SHORT G_M45682_IG30
+ je SHORT G_M45682_IG115
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M45682_IG114:
+ jmp SHORT G_M45682_IG116
;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M45682_IG29:
+G_M45682_IG115:
+ mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
- ;; size=18 bbWeight=0.40 PerfScore 0.60
-G_M45682_IG30:
- lea rdi, [rbp-0x1A8]
- mov rdx, r13
- mov rcx, r15
- mov r8, gword ptr [rbp+0x20]
- mov r9d, r14d
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):this
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M45682_IG116:
+ lea rdi, [rbp-0x118]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]:get_Current():System.__Canon:this
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]:get_Current():System.__Canon:this
+ mov rbx, rax
lea rdi, [rsp]
- lea rsi, [rbp-0x1A8]
+ lea rsi, [rbp+0x10]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x08], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
add rsi, 8
add rdi, 8
movsq
mov rdi, qword ptr [rbp-0x38]
mov rsi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Contains(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte
+ test eax, eax
+ jne SHORT G_M45682_IG117
+ mov rdi, gword ptr [rbp+0x20]
+ test r13, r13
+ je G_M45682_IG119
+ test r15, r15
+ je G_M45682_IG120
+ test r14d, r14d
+ jl G_M45682_IG121
+ test rdi, rdi
+ je G_M45682_IG122
+ mov rsi, r13
+ mov eax, r14d
+ mov gword ptr [rsp], rsi
+ mov gword ptr [rsp+0x08], r15
+ mov gword ptr [rsp+0x10], rdi
+ mov dword ptr [rsp+0x18], eax
+ mov rdi, qword ptr [rbp-0x38]
+ mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Add(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Add(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
- mov gword ptr [rbp-0x160], rax
- mov qword ptr [rbp-0x158], rdx
- mov r13, gword ptr [rbp-0x160]
- add r14d, dword ptr [rbp-0x158]
- ;; size=139 bbWeight=2 PerfScore 55.00
-G_M45682_IG31:
+ mov gword ptr [rbp-0x158], rax
+ mov qword ptr [rbp-0x150], rdx
+ mov r13, gword ptr [rbp-0x158]
+ add r14d, dword ptr [rbp-0x150]
+ ;; size=213 bbWeight=2 PerfScore 84.50
+G_M45682_IG117:
mov rsi, r12
- lea rdi, [rbp-0x150]
+ lea rdi, [rbp-0x148]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
test eax, eax
- jne G_M45682_IG27
+ jne G_M45682_IG99
;; size=30 bbWeight=8 PerfScore 42.00
-G_M45682_IG32:
- mov rbx, qword ptr [rbp-0x268]
- lea rdi, [rbp-0x150]
+G_M45682_IG118:
+ jmp G_M45682_IG123
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M45682_IG119:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG120:
+ mov edi, 0x469
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG121:
+ mov edi, 0x4B9
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ xor rsi, rsi
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
+ call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
+ int3
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M45682_IG122:
+ mov edi, 0x4F5
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG123:
+ mov rbx, qword ptr [rbp-0x348]
+ lea rdi, [rbp-0x148]
call rbx
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x1B8], xmm0
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0x68]
- test rsi, rsi
- je SHORT G_M45682_IG34
- ;; size=48 bbWeight=1 PerfScore 14.08
-G_M45682_IG33:
- jmp SHORT G_M45682_IG35
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M45682_IG34:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M45682_IG35:
- lea rdi, [rbp-0x1B8]
- mov rdx, r13
- mov ecx, r14d
- mov r8d, 1
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int,int):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int,int):this
- mov rax, gword ptr [rbp-0x1B8]
- mov rdx, qword ptr [rbp-0x1B0]
- ;; size=45 bbWeight=1 PerfScore 6.50
-G_M45682_IG36:
- add rsp, 632
+ test r13, r13
+ je SHORT G_M45682_IG126
+ mov gword ptr [rbp-0x168], r13
+ mov dword ptr [rbp-0x160], r14d
+ mov dword ptr [rbp-0x15C], 1
+ mov rax, gword ptr [rbp-0x168]
+ mov rdx, qword ptr [rbp-0x160]
+ ;; size=59 bbWeight=1 PerfScore 10.75
+G_M45682_IG124:
+ vzeroupper
+ add rsp, 952
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M45682_IG37:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M45682_IG125:
mov edi, 0x48B
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M45682_IG38:
+G_M45682_IG126:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M45682_IG127:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- mov rbp, qword ptr [rdi+0x20]
- mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x2A0]
+ sub rsp, 88
+ mov rbp, qword ptr [rdi+0x50]
+ mov qword ptr [rsp+0x50], rbp
+ lea rbp, [rbp+0x3E0]
;; size=30 bbWeight=0 PerfScore 0.00
-G_M45682_IG39:
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rbx, qword ptr [rsi+0x98]
+G_M45682_IG128:
+ mov rdx, qword ptr [rbp-0x38]
+ mov rdi, qword ptr [rdx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rbx, qword ptr [rdi+0x98]
test rbx, rbx
- je SHORT G_M45682_IG40
- jmp SHORT G_M45682_IG41
+ je SHORT G_M45682_IG129
+ jmp SHORT G_M45682_IG130
;; size=25 bbWeight=0 PerfScore 0.00
-G_M45682_IG40:
+G_M45682_IG129:
+ mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rbx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M45682_IG41:
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M45682_IG130:
mov rcx, rbx
lea rdi, [rbp-0xB8]
call rcx
nop
;; size=13 bbWeight=0 PerfScore 0.00
-G_M45682_IG42:
- add rsp, 40
+G_M45682_IG131:
+ vzeroupper
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M45682_IG43:
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M45682_IG132:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- mov rbp, qword ptr [rdi+0x20]
- mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x2A0]
+ sub rsp, 88
+ mov rbp, qword ptr [rdi+0x50]
+ mov qword ptr [rsp+0x50], rbp
+ lea rbp, [rbp+0x3E0]
;; size=30 bbWeight=0 PerfScore 0.00
-G_M45682_IG44:
- mov rdi, qword ptr [rbp-0x38]
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rbx, qword ptr [rsi+0x98]
+G_M45682_IG133:
+ mov rdx, qword ptr [rbp-0x38]
+ mov rdi, qword ptr [rdx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rbx, qword ptr [rdi+0x98]
test rbx, rbx
- je SHORT G_M45682_IG45
- jmp SHORT G_M45682_IG46
+ je SHORT G_M45682_IG134
+ jmp SHORT G_M45682_IG135
;; size=25 bbWeight=0 PerfScore 0.00
-G_M45682_IG45:
+G_M45682_IG134:
+ mov rdi, rdx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rbx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M45682_IG46:
- lea rdi, [rbp-0x150]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M45682_IG135:
+ lea rdi, [rbp-0x148]
call rbx
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M45682_IG47:
- add rsp, 40
+G_M45682_IG136:
+ vzeroupper
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1614, prolog size 98, PerfScore 515.87, instruction count 377, allocated bytes for code 1614 (MethodHash=52e24d8d) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
+; Total bytes of code 3998, prolog size 98, PerfScore 1152.63, instruction count 878, allocated bytes for code 3998 (MethodHash=52e24d8d) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
1715 (289.21 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.ICollection.CopyTo(System.__Canon[],int):this
; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):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; 2 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 10 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 7, 6 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]>
-; V01 arg1 [V01,T07] ( 5, 6 ) ref -> r15 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T05] ( 6, 8 ) int -> registers
-; V03 loc0 [V03 ] ( 5, 12 ) struct (128) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T17] ( 2, 4 ) ref -> rdx class-hnd <System.__Canon>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T20] ( 8, 7 ) ref -> [rbp-0x1E0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]>
+; V01 arg1 [V01,T24] ( 5, 6 ) ref -> r15 class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T19] ( 6, 8 ) int -> registers
+; V03 loc0 [V03 ] ( 19, 40 ) struct (128) [rbp-0xB0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (80) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp5 [V10,T04] ( 3, 12 ) int -> rbx "impSpillLclRefs"
+; V10 tmp5 [V10,T09] ( 3, 12 ) int -> rbx "impSpillLclRefs"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T14] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V12 tmp7 [V12,T46] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15 ] ( 2, 4 ) struct (128) [rbp-0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T24] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V18 tmp13 [V18,T18] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T02] ( 2, 32 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T08] ( 2, 8 ) long -> rsi "argument with side effect"
-; V21 PSPSym [V21,T21] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T15] ( 3, 4 ) long -> r13 "CSE #02: moderate"
-; V23 cse1 [V23,T03] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
-;* V24 rat0 [V24,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V25 rat1 [V25,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V26 rat2 [V26,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V27 rat3 [V27,T16] ( 3, 4 ) long -> r13 "runtime lookup"
-; V28 rat4 [V28,T10] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V29 rat5 [V29,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V30 rat6 [V30,T11] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V31 rat7 [V31,T01] ( 3, 32 ) long -> rsi "runtime lookup"
-; V32 rat8 [V32,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V33 rat9 [V33,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V34 rat10 [V34,T22] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V35 rat11 [V35,T23] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V15 tmp10 [V15 ] ( 5, 10 ) struct (128) [rbp-0x130] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+; V16 tmp11 [V16,T44] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V17 tmp12 [V17,T34] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V18 tmp13 [V18 ] ( 14, 20 ) struct (32) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref
+; V22 tmp17 [V22,T62] ( 2, 2 ) byref -> rcx single-def
+; V23 tmp18 [V23,T64] ( 2, 2 ) int -> rdi
+; V24 tmp19 [V24,T43] ( 6, 5.40) long -> [rbp-0x158] spill-single-def "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V27 tmp22 [V27,T65] ( 2, 2 ) struct (32) [rbp-0x178] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V28 tmp23 [V28,T53] ( 3, 3 ) ref -> [rbp-0x1E8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V31 tmp26 [V31,T51] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V32 tmp27 [V32,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp28 [V33 ] ( 3, 3 ) struct (32) [rbp-0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V34 tmp29 [V34,T52] ( 5, 3.40) long -> [rbp-0x1A0] spill-single-def "Inlining Arg"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T66] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V39 tmp34 [V39,T67] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V40 tmp35 [V40,T63] ( 2, 2 ) ref -> [rbp-0x1F0] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V41 tmp36 [V41,T68] ( 2, 2 ) int -> rax "Inlining Arg"
+; V42 tmp37 [V42,T23] ( 3, 8.80) long -> r12 "Inlining Arg"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V45 tmp40 [V45,T06] ( 5, 13.60) long -> [rbp-0x1A8] spill-single-def "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp42 [V47,T21] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V49 tmp44 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V50 tmp45 [V50,T25] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V51 tmp46 [V51,T07] ( 3, 12 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V52 tmp47 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon>
+; V53 tmp48 [V53,T04] ( 6, 13.60) long -> r12 "Inlining Arg"
+; V54 tmp49 [V54,T37] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
+; V55 tmp50 [V55,T35] ( 3, 6 ) ref -> rdx class-hnd "Inline stloc first use temp" <System.__Canon>
+;* V56 tmp51 [V56 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V57 tmp52 [V57,T77] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V61 tmp56 [V61,T78] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V62 tmp57 [V62,T05] ( 6, 13.60) long -> r12 "Inlining Arg"
+;* V63 tmp58 [V63 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V64 tmp59 [V64,T22] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V66 tmp61 [V66 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V67 tmp62 [V67,T26] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V68 tmp63 [V68,T08] ( 3, 12 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V69 tmp64 [V69,T30] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V70 tmp65 [V70 ] ( 7, 7.50) ref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V18._root (fldOffset=0x0)" P-DEP
+; V71 tmp66 [V71 ] ( 9, 8 ) ref -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V18._stack (fldOffset=0x8)" P-DEP
+; V72 tmp67 [V72 ] ( 5, 6 ) ref -> [rbp-0x140] do-not-enreg[X] addr-exposed "field V18._current (fldOffset=0x10)" P-DEP
+; V73 tmp68 [V73 ] ( 5, 6 ) int -> [rbp-0x138] do-not-enreg[X] addr-exposed "field V18._poolUserId (fldOffset=0x18)" P-DEP
+; V74 tmp69 [V74,T81] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V75 tmp70 [V75,T69] ( 2, 2 ) long -> rdi "argument with side effect"
+; V76 tmp71 [V76,T70] ( 2, 2 ) long -> r12 "argument with side effect"
+; V77 tmp72 [V77,T02] ( 2, 32 ) long -> rsi "argument with side effect"
+; V78 tmp73 [V78,T31] ( 2, 8 ) long -> [rbp-0x1B0] spill-single-def "argument with side effect"
+; V79 tmp74 [V79,T32] ( 2, 8 ) long -> [rbp-0x1B8] spill-single-def "argument with side effect"
+; V80 tmp75 [V80,T33] ( 2, 8 ) long -> [rbp-0x1C0] spill-single-def "argument with side effect"
+; V81 PSPSym [V81,T76] ( 1, 1 ) long -> [rbp-0x210] do-not-enreg[V] "PSPSym"
+; V82 cse0 [V82,T47] ( 3, 4 ) long -> r13 "CSE #04: moderate"
+; V83 cse1 [V83,T48] ( 3, 4 ) long -> [rbp-0x1C8] spill-single-def "CSE #05: moderate"
+; V84 cse2 [V84,T73] ( 3, 1.50) long -> [rbp-0x1D0] spill-single-def "CSE #02: conservative"
+; V85 cse3 [V85,T74] ( 3, 1.50) long -> [rbp-0x1D8] spill-single-def "CSE #03: conservative"
+; V86 cse4 [V86,T03] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
+; V87 cse5 [V87,T36] ( 3, 6 ) ref -> rsi "CSE #08: moderate"
+;* V88 rat0 [V88,T45] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V89 rat1 [V89,T71] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V90 rat2 [V90,T38] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V91 rat3 [V91,T49] ( 3, 4 ) long -> r13 "runtime lookup"
+; V92 rat4 [V92,T39] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V93 rat5 [V93,T50] ( 3, 4 ) long -> rax "runtime lookup"
+; V94 rat6 [V94,T40] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V95 rat7 [V95,T58] ( 3, 2 ) long -> registers "runtime lookup"
+; V96 rat8 [V96,T54] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V97 rat9 [V97,T59] ( 3, 2 ) long -> registers "runtime lookup"
+; V98 rat10 [V98,T55] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V99 rat11 [V99,T60] ( 3, 2 ) long -> rdi "runtime lookup"
+; V100 rat12 [V100,T56] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V101 rat13 [V101,T61] ( 3, 2 ) long -> rdi "runtime lookup"
+; V102 rat14 [V102,T57] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V103 rat15 [V103,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V104 rat16 [V104,T41] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V105 rat17 [V105,T10] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V106 rat18 [V106,T11] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V107 rat19 [V107,T27] ( 3, 8 ) long -> rdi "runtime lookup"
+; V108 rat20 [V108,T12] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V109 rat21 [V109,T13] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V110 rat22 [V110,T28] ( 3, 8 ) long -> rdi "runtime lookup"
+; V111 rat23 [V111,T14] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V112 rat24 [V112,T15] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V113 rat25 [V113,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V114 rat26 [V114,T17] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V115 rat27 [V115,T29] ( 3, 8 ) long -> rdi "runtime lookup"
+; V116 rat28 [V116,T18] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V117 rat29 [V117,T01] ( 3, 32 ) long -> rsi "runtime lookup"
+; V118 rat30 [V118,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V119 rat31 [V119,T42] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V120 rat32 [V120,T79] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V121 rat33 [V121,T80] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 280
+; Lcl frame size = 568
G_M10945_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 280
- lea rbp, [rsp+0x140]
+ sub rsp, 568
+ lea rbp, [rsp+0x260]
+ xor eax, eax
+ mov qword ptr [rbp-0x198], rax
vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x130], xmm8
- mov rax, -240
+ vmovdqa xmmword ptr [rbp-0x190], xmm8
+ mov rax, -336
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-0x140], rsp
+ mov qword ptr [rbp-0x210], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x138], rdi
+ mov gword ptr [rbp-0x1E0], rdi
mov r15, rsi
mov ebx, edx
mov rdx, rdi
- ;; size=98 bbWeight=1 PerfScore 20.33
+ ;; size=107 bbWeight=1 PerfScore 21.58
G_M10945_IG02:
mov r14, qword ptr [rdx]
test r15, r15
- je G_M10945_IG17
+ je G_M10945_IG74
test ebx, ebx
- jl G_M10945_IG18
+ jl G_M10945_IG75
mov edi, ebx
add edi, dword ptr [rdx+0x28]
cmp dword ptr [r15+0x08], edi
- jl G_M10945_IG18
+ jl G_M10945_IG75
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov r13, qword ptr [rdi+0x38]
test r13, r13
je SHORT G_M10945_IG04
;; size=51 bbWeight=1 PerfScore 19.00
G_M10945_IG03:
jmp SHORT G_M10945_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M10945_IG04:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M10945_IG05:
- mov rsi, r13
- mov rdx, gword ptr [rbp-0x138]
- mov rdx, gword ptr [rdx+0x08]
- lea rdi, [rbp-0x130]
- mov rcx, gword ptr [rbp-0x138]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
+ mov rdi, r13
+ mov rdx, gword ptr [rbp-0x1E0]
+ mov r12, gword ptr [rdx+0x08]
+ mov gword ptr [rbp-0x130], rdx
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M10945_IG07
+ ;; size=37 bbWeight=1 PerfScore 11.50
+G_M10945_IG06:
+ jmp SHORT G_M10945_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M10945_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M10945_IG08:
+ mov qword ptr [rbp-0x1C8], rax
+ mov qword ptr [rbp-0x158], rax
+ test r12, r12
+ je G_M10945_IG76
+ mov gword ptr [rbp-0x150], r12
+ xor rdi, rdi
+ mov gword ptr [rbp-0x140], rdi
+ mov rdi, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rdi]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x138], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ mov rdi, gword ptr [rbp-0x150]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M10945_IG28
+ ;; size=84 bbWeight=1 PerfScore 16.00
+G_M10945_IG09:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M10945_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M10945_IG10:
+ jmp SHORT G_M10945_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M10945_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x158]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M10945_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1D8], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1A0], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M10945_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x198], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M10945_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M10945_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M10945_IG15:
+ jmp SHORT G_M10945_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M10945_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M10945_IG17:
+ mov qword ptr [rbp-0x1D0], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x198]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M10945_IG21
+ mov rdi, qword ptr [rbp-0x1A0]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M10945_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M10945_IG18:
+ mov rdi, rax
+ jmp SHORT G_M10945_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M10945_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M10945_IG20:
+ lea rsi, [rbp-0x148]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M10945_IG21
+ mov r12, qword ptr [rbp-0x1D0]
+ mov rax, gword ptr [rbp-0x148]
+ mov gword ptr [rbp-0x1F0], rax
+ lea rdi, [rbp-0x198]
+ call r12
+ mov r12, gword ptr [rbp-0x1F0]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M10945_IG27
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M10945_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M10945_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x178], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M10945_IG23:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M10945_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M10945_IG24:
+ jmp SHORT G_M10945_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M10945_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M10945_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x1E8], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x1D8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x178]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x1E8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x148], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M10945_IG27:
+ lea rdi, [rbp-0x150]
+ mov rsi, qword ptr [rbp-0x158]
+ mov rdx, gword ptr [rbp-0x150]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M10945_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x120], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M10945_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x100], ymm0
+ vmovdqu ymmword ptr [rbp-0xE0], ymm0
+ vmovdqu xmmword ptr [rbp-0xC0], xmm0
+ lea rcx, bword ptr [rbp-0x130]
+ mov rdx, gword ptr [rbp-0x1E0]
+ mov edi, dword ptr [rdx+0x2C]
+ mov dword ptr [rcx+0x08], edi
lea rdi, bword ptr [rbp-0xB0]
lea rsi, bword ptr [rbp-0x130]
mov ecx, 16
rep movsq
- ;; size=62 bbWeight=1 PerfScore 34.25
-G_M10945_IG06:
+ ;; size=70 bbWeight=1 PerfScore 34.08
+G_M10945_IG30:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x38]
test rdi, rdi
- jne SHORT G_M10945_IG08
- jmp SHORT G_M10945_IG08
- ;; size=18 bbWeight=1 PerfScore 9.25
-G_M10945_IG07:
- mov rsi, r13
- lea rdi, [rbp-0xB0]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- mov rdx, rax
+ jne G_M10945_IG58
+ jmp G_M10945_IG58
+ ;; size=25 bbWeight=1 PerfScore 9.25
+G_M10945_IG31:
+ mov r12, r13
+ mov rax, qword ptr [rbp-0x1C8]
+ mov rcx, rax
+ mov qword ptr [rbp-0x1A8], rcx
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M10945_IG38
+ cmp gword ptr [rbp-0x98], 0
+ je G_M10945_IG42
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M10945_IG33
+ ;; size=64 bbWeight=2 PerfScore 31.50
+G_M10945_IG32:
+ jmp SHORT G_M10945_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M10945_IG33:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rcx, qword ptr [rbp-0x1A8]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M10945_IG34:
+ mov rdx, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x1F8], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M10945_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M10945_IG35:
+ jmp SHORT G_M10945_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M10945_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M10945_IG37:
+ lea rdi, [rbp-0xA0]
+ call r8
+ mov rdi, gword ptr [rbp-0x1F8]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rcx, qword ptr [rbp-0x1A8]
+ je G_M10945_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M10945_IG38:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M10945_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M10945_IG39:
+ jmp SHORT G_M10945_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M10945_IG40:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M10945_IG41:
+ mov qword ptr [rbp-0x1B0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA0]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1B0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M10945_IG42:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M10945_IG44
+ ;; size=17 bbWeight=2 PerfScore 14.50
+G_M10945_IG43:
+ mov r12, rcx
+ jmp SHORT G_M10945_IG45
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M10945_IG44:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M10945_IG45:
+ cmp byte ptr [rbp-0x7C], 0
+ je G_M10945_IG49
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M10945_IG47
+ ;; size=27 bbWeight=2 PerfScore 20.50
+G_M10945_IG46:
+ jmp SHORT G_M10945_IG48
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M10945_IG47:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M10945_IG48:
+ mov qword ptr [rbp-0x1B8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x80]
+ movsq
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x20], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x28], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x30], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ ;; size=138 bbWeight=2 PerfScore 62.50
+G_M10945_IG49:
+ mov edi, dword ptr [rbp-0x80]
+ cmp edi, 1
+ je G_M10945_IG63
+ cmp edi, 2
+ jne G_M10945_IG62
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x10]
+ test rcx, rcx
+ je G_M10945_IG64
+ ;; size=42 bbWeight=2 PerfScore 21.50
+G_M10945_IG50:
+ mov r12, rcx
+ ;; size=3 bbWeight=1.60 PerfScore 0.40
+G_M10945_IG51:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M10945_IG54
+ cmp gword ptr [rbp-0x58], 0
+ je G_M10945_IG56
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M10945_IG65
+ ;; size=39 bbWeight=2 PerfScore 26.50
+G_M10945_IG52:
+ mov rcx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x200], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M10945_IG66
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M10945_IG53:
+ lea rdi, [rbp-0x68]
+ call rdx
+ mov rdi, gword ptr [rbp-0x200]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M10945_IG56
+ ;; size=22 bbWeight=2 PerfScore 17.00
+G_M10945_IG54:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M10945_IG67
+ ;; size=21 bbWeight=2 PerfScore 14.50
+G_M10945_IG55:
+ mov qword ptr [rbp-0x1C0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1C0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M10945_IG56:
+ mov rsi, gword ptr [rbp-0x50]
+ test rsi, rsi
+ je SHORT G_M10945_IG61
+ mov rdx, gword ptr [rsi+0x08]
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M10945_IG57:
lea esi, [rbx+0x01]
mov r12d, esi
movsxd rsi, ebx
mov rdi, r15
call CORINFO_HELP_ARRADDR_ST
mov ebx, r12d
- ;; size=45 bbWeight=2 PerfScore 13.50
-G_M10945_IG08:
+ ;; size=20 bbWeight=2 PerfScore 5.00
+G_M10945_IG58:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x38]
test rsi, rsi
- je SHORT G_M10945_IG10
- ;; size=16 bbWeight=8 PerfScore 58.00
-G_M10945_IG09:
- jmp SHORT G_M10945_IG11
- ;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M10945_IG10:
- mov rdi, r14
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=21 bbWeight=1.60 PerfScore 2.80
-G_M10945_IG11:
+ je G_M10945_IG68
+ ;; size=20 bbWeight=8 PerfScore 58.00
+G_M10945_IG59:
lea rdi, [rbp-0xB0]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M10945_IG07
- ;; size=23 bbWeight=8 PerfScore 40.00
-G_M10945_IG12:
+ jne G_M10945_IG31
+ ;; size=27 bbWeight=8 PerfScore 40.00
+G_M10945_IG60:
+ jmp G_M10945_IG69
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M10945_IG61:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M10945_IG62:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M10945_IG63:
+ mov rdx, gword ptr [rbp-0x78]
+ jmp G_M10945_IG57
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M10945_IG64:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M10945_IG51
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M10945_IG65:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M10945_IG52
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M10945_IG66:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M10945_IG53
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M10945_IG67:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M10945_IG55
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M10945_IG68:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ jmp G_M10945_IG59
+ ;; size=26 bbWeight=1.60 PerfScore 6.00
+G_M10945_IG69:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x58]
test rax, rax
- je SHORT G_M10945_IG14
+ je SHORT G_M10945_IG71
;; size=16 bbWeight=1 PerfScore 7.25
-G_M10945_IG13:
- jmp SHORT G_M10945_IG15
+G_M10945_IG70:
+ jmp SHORT G_M10945_IG72
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M10945_IG14:
+G_M10945_IG71:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M10945_IG15:
+G_M10945_IG72:
lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M10945_IG16:
- add rsp, 280
+G_M10945_IG73:
+ vzeroupper
+ add rsp, 568
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M10945_IG17:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M10945_IG74:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M10945_IG18:
+G_M10945_IG75:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M10945_IG19:
+G_M10945_IG76:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M10945_IG77:
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+0x140]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M10945_IG20:
- mov rdx, gword ptr [rbp-0x138]
+ sub rsp, 88
+ mov rbp, qword ptr [rdi+0x50]
+ mov qword ptr [rsp+0x50], rbp
+ lea rbp, [rbp+0x260]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M10945_IG78:
+ mov rdx, gword ptr [rbp-0x1E0]
mov r14, qword ptr [rdx]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x58]
test rax, rax
- je SHORT G_M10945_IG21
- jmp SHORT G_M10945_IG22
+ je SHORT G_M10945_IG79
+ jmp SHORT G_M10945_IG80
;; size=31 bbWeight=0 PerfScore 0.00
-G_M10945_IG21:
+G_M10945_IG79:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M10945_IG22:
+G_M10945_IG80:
lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M10945_IG23:
- add rsp, 8
+G_M10945_IG81:
+ vzeroupper
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 593, prolog size 98, PerfScore 229.03, instruction count 151, allocated bytes for code 593 (MethodHash=c93ad53e) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):this (FullOpts)
+; Total bytes of code 2308, prolog size 107, PerfScore 709.19, instruction count 518, allocated bytes for code 2308 (MethodHash=c93ad53e) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):this (FullOpts)
1712 (283.91 % of base) - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.Generic.ICollection.CopyTo(System.__Canon[],int):this
; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):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; 2 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 6, 5 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 5, 6 ) ref -> r15 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T05] ( 6, 8 ) int -> registers
-; V03 loc0 [V03 ] ( 5, 12 ) struct (128) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T17] ( 2, 4 ) ref -> rdx class-hnd <System.__Canon>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T33] ( 6, 5 ) ref -> [rbp-0x1E0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V01 arg1 [V01,T23] ( 5, 6 ) ref -> r15 class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T19] ( 6, 8 ) int -> registers
+; V03 loc0 [V03 ] ( 19, 40 ) struct (128) [rbp-0xB0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (80) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp5 [V10,T04] ( 3, 12 ) int -> rbx "impSpillLclRefs"
+; V10 tmp5 [V10,T09] ( 3, 12 ) int -> rbx "impSpillLclRefs"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T14] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V12 tmp7 [V12,T46] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15 ] ( 2, 4 ) struct (128) [rbp-0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T24] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V18 tmp13 [V18,T18] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T02] ( 2, 32 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T07] ( 2, 8 ) long -> rsi "argument with side effect"
-; V21 PSPSym [V21,T21] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T15] ( 3, 4 ) long -> r13 "CSE #02: moderate"
-; V23 cse1 [V23,T03] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
-;* V24 rat0 [V24,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V25 rat1 [V25,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V26 rat2 [V26,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V27 rat3 [V27,T16] ( 3, 4 ) long -> r13 "runtime lookup"
-; V28 rat4 [V28,T10] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V29 rat5 [V29,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V30 rat6 [V30,T11] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V31 rat7 [V31,T01] ( 3, 32 ) long -> rsi "runtime lookup"
-; V32 rat8 [V32,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V33 rat9 [V33,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V34 rat10 [V34,T22] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V35 rat11 [V35,T23] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V15 tmp10 [V15 ] ( 5, 10 ) struct (128) [rbp-0x130] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+; V16 tmp11 [V16,T44] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V17 tmp12 [V17,T34] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V18 tmp13 [V18 ] ( 14, 20 ) struct (32) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref
+;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref
+;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref
+; V24 tmp19 [V24,T43] ( 6, 5.40) long -> [rbp-0x158] spill-single-def "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V27 tmp22 [V27,T63] ( 2, 2 ) struct (32) [rbp-0x178] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V28 tmp23 [V28,T53] ( 3, 3 ) ref -> [rbp-0x1E8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V31 tmp26 [V31,T51] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V32 tmp27 [V32,T73] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp28 [V33 ] ( 3, 3 ) struct (32) [rbp-0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V34 tmp29 [V34,T52] ( 5, 3.40) long -> [rbp-0x1A0] spill-single-def "Inlining Arg"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T64] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V39 tmp34 [V39,T65] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V40 tmp35 [V40,T62] ( 2, 2 ) ref -> [rbp-0x1F0] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V41 tmp36 [V41,T66] ( 2, 2 ) int -> rax "Inlining Arg"
+; V42 tmp37 [V42,T22] ( 3, 8.80) long -> r12 "Inlining Arg"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V45 tmp40 [V45,T06] ( 5, 13.60) long -> [rbp-0x1A8] spill-single-def "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp42 [V47,T20] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V49 tmp44 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V50 tmp45 [V50,T24] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V51 tmp46 [V51,T07] ( 3, 12 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V52 tmp47 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon>
+; V53 tmp48 [V53,T04] ( 6, 13.60) long -> r12 "Inlining Arg"
+; V54 tmp49 [V54,T37] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
+; V55 tmp50 [V55,T35] ( 3, 6 ) ref -> rdx class-hnd "Inline stloc first use temp" <System.__Canon>
+;* V56 tmp51 [V56 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V57 tmp52 [V57,T75] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V61 tmp56 [V61,T76] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V62 tmp57 [V62,T05] ( 6, 13.60) long -> r12 "Inlining Arg"
+;* V63 tmp58 [V63 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V64 tmp59 [V64,T21] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V66 tmp61 [V66 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V67 tmp62 [V67,T25] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V68 tmp63 [V68,T08] ( 3, 12 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V69 tmp64 [V69,T29] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V70 tmp65 [V70 ] ( 7, 7.50) ref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V18._root (fldOffset=0x0)" P-DEP
+; V71 tmp66 [V71 ] ( 9, 8 ) ref -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V18._stack (fldOffset=0x8)" P-DEP
+; V72 tmp67 [V72 ] ( 5, 6 ) ref -> [rbp-0x140] do-not-enreg[X] addr-exposed "field V18._current (fldOffset=0x10)" P-DEP
+; V73 tmp68 [V73 ] ( 5, 6 ) int -> [rbp-0x138] do-not-enreg[X] addr-exposed "field V18._poolUserId (fldOffset=0x18)" P-DEP
+; V74 tmp69 [V74,T79] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V75 tmp70 [V75,T67] ( 2, 2 ) long -> rdi "argument with side effect"
+; V76 tmp71 [V76,T68] ( 2, 2 ) long -> r12 "argument with side effect"
+; V77 tmp72 [V77,T02] ( 2, 32 ) long -> rsi "argument with side effect"
+; V78 tmp73 [V78,T30] ( 2, 8 ) long -> [rbp-0x1B0] spill-single-def "argument with side effect"
+; V79 tmp74 [V79,T31] ( 2, 8 ) long -> [rbp-0x1B8] spill-single-def "argument with side effect"
+; V80 tmp75 [V80,T32] ( 2, 8 ) long -> [rbp-0x1C0] spill-single-def "argument with side effect"
+; V81 PSPSym [V81,T74] ( 1, 1 ) long -> [rbp-0x210] do-not-enreg[V] "PSPSym"
+; V82 cse0 [V82,T47] ( 3, 4 ) long -> r13 "CSE #04: moderate"
+; V83 cse1 [V83,T48] ( 3, 4 ) long -> [rbp-0x1C8] spill-single-def "CSE #05: moderate"
+; V84 cse2 [V84,T71] ( 3, 1.50) long -> [rbp-0x1D0] spill-single-def "CSE #02: conservative"
+; V85 cse3 [V85,T72] ( 3, 1.50) long -> [rbp-0x1D8] spill-single-def "CSE #03: conservative"
+; V86 cse4 [V86,T03] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
+; V87 cse5 [V87,T36] ( 3, 6 ) ref -> rsi "CSE #08: moderate"
+;* V88 rat0 [V88,T45] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V89 rat1 [V89,T69] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V90 rat2 [V90,T38] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V91 rat3 [V91,T49] ( 3, 4 ) long -> r13 "runtime lookup"
+; V92 rat4 [V92,T39] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V93 rat5 [V93,T50] ( 3, 4 ) long -> rax "runtime lookup"
+; V94 rat6 [V94,T40] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V95 rat7 [V95,T58] ( 3, 2 ) long -> registers "runtime lookup"
+; V96 rat8 [V96,T54] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V97 rat9 [V97,T59] ( 3, 2 ) long -> registers "runtime lookup"
+; V98 rat10 [V98,T55] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V99 rat11 [V99,T60] ( 3, 2 ) long -> rdi "runtime lookup"
+; V100 rat12 [V100,T56] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V101 rat13 [V101,T61] ( 3, 2 ) long -> rdi "runtime lookup"
+; V102 rat14 [V102,T57] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V103 rat15 [V103,T70] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V104 rat16 [V104,T41] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V105 rat17 [V105,T10] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V106 rat18 [V106,T11] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V107 rat19 [V107,T26] ( 3, 8 ) long -> rdi "runtime lookup"
+; V108 rat20 [V108,T12] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V109 rat21 [V109,T13] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V110 rat22 [V110,T27] ( 3, 8 ) long -> rdi "runtime lookup"
+; V111 rat23 [V111,T14] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V112 rat24 [V112,T15] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V113 rat25 [V113,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V114 rat26 [V114,T17] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V115 rat27 [V115,T28] ( 3, 8 ) long -> rdi "runtime lookup"
+; V116 rat28 [V116,T18] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V117 rat29 [V117,T01] ( 3, 32 ) long -> rsi "runtime lookup"
+; V118 rat30 [V118,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V119 rat31 [V119,T42] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V120 rat32 [V120,T77] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V121 rat33 [V121,T78] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 280
+; Lcl frame size = 568
G_M35275_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 280
- lea rbp, [rsp+0x140]
+ sub rsp, 568
+ lea rbp, [rsp+0x260]
+ xor eax, eax
+ mov qword ptr [rbp-0x198], rax
vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x130], xmm8
- mov rax, -240
+ vmovdqa xmmword ptr [rbp-0x190], xmm8
+ mov rax, -336
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-0x140], rsp
+ mov qword ptr [rbp-0x210], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x138], rdi
+ mov gword ptr [rbp-0x1E0], rdi
mov r15, rsi
mov ebx, edx
mov rdx, rdi
- ;; size=98 bbWeight=1 PerfScore 20.33
+ ;; size=107 bbWeight=1 PerfScore 21.58
G_M35275_IG02:
mov r14, qword ptr [rdx]
test r15, r15
- je G_M35275_IG17
+ je G_M35275_IG74
test ebx, ebx
- jl G_M35275_IG18
+ jl G_M35275_IG75
mov edi, ebx
add edi, dword ptr [rdx+0x20]
cmp dword ptr [r15+0x08], edi
- jl G_M35275_IG18
+ jl G_M35275_IG75
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov r13, qword ptr [rdi+0x90]
test r13, r13
je SHORT G_M35275_IG04
;; size=54 bbWeight=1 PerfScore 19.00
G_M35275_IG03:
jmp SHORT G_M35275_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M35275_IG04:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M35275_IG05:
- mov rsi, r13
- mov rdx, gword ptr [rbp-0x138]
- mov rdx, gword ptr [rdx+0x10]
- lea rdi, [rbp-0x130]
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
+ mov rdi, r13
+ mov rdx, gword ptr [rbp-0x1E0]
+ mov r12, gword ptr [rdx+0x10]
+ xor rsi, rsi
+ mov gword ptr [rbp-0x130], rsi
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M35275_IG07
+ ;; size=39 bbWeight=1 PerfScore 11.75
+G_M35275_IG06:
+ jmp SHORT G_M35275_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M35275_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M35275_IG08:
+ mov qword ptr [rbp-0x1C8], rax
+ mov qword ptr [rbp-0x158], rax
+ test r12, r12
+ je G_M35275_IG76
+ mov gword ptr [rbp-0x150], r12
+ xor rdi, rdi
+ mov gword ptr [rbp-0x140], rdi
+ mov rdi, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rdi]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x138], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ mov rdi, gword ptr [rbp-0x150]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M35275_IG28
+ ;; size=84 bbWeight=1 PerfScore 16.00
+G_M35275_IG09:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M35275_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M35275_IG10:
+ jmp SHORT G_M35275_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M35275_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x158]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M35275_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1D8], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1A0], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M35275_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x198], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M35275_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M35275_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M35275_IG15:
+ jmp SHORT G_M35275_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M35275_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M35275_IG17:
+ mov qword ptr [rbp-0x1D0], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x198]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M35275_IG21
+ mov rdi, qword ptr [rbp-0x1A0]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M35275_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M35275_IG18:
+ mov rdi, rax
+ jmp SHORT G_M35275_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M35275_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M35275_IG20:
+ lea rsi, [rbp-0x148]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M35275_IG21
+ mov r12, qword ptr [rbp-0x1D0]
+ mov rax, gword ptr [rbp-0x148]
+ mov gword ptr [rbp-0x1F0], rax
+ lea rdi, [rbp-0x198]
+ call r12
+ mov r12, gword ptr [rbp-0x1F0]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M35275_IG27
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M35275_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M35275_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x178], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M35275_IG23:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M35275_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M35275_IG24:
+ jmp SHORT G_M35275_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M35275_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M35275_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x1E8], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x1D8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x178]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x1E8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x148], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M35275_IG27:
+ lea rdi, [rbp-0x150]
+ mov rsi, qword ptr [rbp-0x158]
+ mov rdx, gword ptr [rbp-0x150]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M35275_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x120], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M35275_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x100], ymm0
+ vmovdqu ymmword ptr [rbp-0xE0], ymm0
+ vmovdqu xmmword ptr [rbp-0xC0], xmm0
+ mov dword ptr [rbp-0x128], -1
lea rdi, bword ptr [rbp-0xB0]
lea rsi, bword ptr [rbp-0x130]
mov ecx, 16
rep movsq
- ;; size=57 bbWeight=1 PerfScore 33.50
-G_M35275_IG06:
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M35275_IG30:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x90]
test rdi, rdi
- jne SHORT G_M35275_IG08
- jmp SHORT G_M35275_IG08
- ;; size=21 bbWeight=1 PerfScore 9.25
-G_M35275_IG07:
- mov rsi, r13
- lea rdi, [rbp-0xB0]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- mov rdx, rax
+ jne G_M35275_IG58
+ jmp G_M35275_IG58
+ ;; size=28 bbWeight=1 PerfScore 9.25
+G_M35275_IG31:
+ mov r12, r13
+ mov rax, qword ptr [rbp-0x1C8]
+ mov rcx, rax
+ mov qword ptr [rbp-0x1A8], rcx
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M35275_IG38
+ cmp gword ptr [rbp-0x98], 0
+ je G_M35275_IG42
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M35275_IG33
+ ;; size=64 bbWeight=2 PerfScore 31.50
+G_M35275_IG32:
+ jmp SHORT G_M35275_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M35275_IG33:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rcx, qword ptr [rbp-0x1A8]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M35275_IG34:
+ mov rdx, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x1F8], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M35275_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M35275_IG35:
+ jmp SHORT G_M35275_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M35275_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M35275_IG37:
+ lea rdi, [rbp-0xA0]
+ call r8
+ mov rdi, gword ptr [rbp-0x1F8]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rcx, qword ptr [rbp-0x1A8]
+ je G_M35275_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M35275_IG38:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M35275_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M35275_IG39:
+ jmp SHORT G_M35275_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M35275_IG40:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M35275_IG41:
+ mov qword ptr [rbp-0x1B0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA0]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1B0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M35275_IG42:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M35275_IG44
+ ;; size=17 bbWeight=2 PerfScore 14.50
+G_M35275_IG43:
+ mov r12, rcx
+ jmp SHORT G_M35275_IG45
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M35275_IG44:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M35275_IG45:
+ cmp byte ptr [rbp-0x7C], 0
+ je G_M35275_IG49
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M35275_IG47
+ ;; size=27 bbWeight=2 PerfScore 20.50
+G_M35275_IG46:
+ jmp SHORT G_M35275_IG48
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M35275_IG47:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M35275_IG48:
+ mov qword ptr [rbp-0x1B8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x80]
+ movsq
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x20], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x28], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x30], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ ;; size=138 bbWeight=2 PerfScore 62.50
+G_M35275_IG49:
+ mov edi, dword ptr [rbp-0x80]
+ cmp edi, 1
+ je G_M35275_IG63
+ cmp edi, 2
+ jne G_M35275_IG62
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x10]
+ test rcx, rcx
+ je G_M35275_IG64
+ ;; size=42 bbWeight=2 PerfScore 21.50
+G_M35275_IG50:
+ mov r12, rcx
+ ;; size=3 bbWeight=1.60 PerfScore 0.40
+G_M35275_IG51:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M35275_IG54
+ cmp gword ptr [rbp-0x58], 0
+ je G_M35275_IG56
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M35275_IG65
+ ;; size=39 bbWeight=2 PerfScore 26.50
+G_M35275_IG52:
+ mov rcx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x200], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M35275_IG66
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M35275_IG53:
+ lea rdi, [rbp-0x68]
+ call rdx
+ mov rdi, gword ptr [rbp-0x200]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M35275_IG56
+ ;; size=22 bbWeight=2 PerfScore 17.00
+G_M35275_IG54:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M35275_IG67
+ ;; size=21 bbWeight=2 PerfScore 14.50
+G_M35275_IG55:
+ mov qword ptr [rbp-0x1C0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1C0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M35275_IG56:
+ mov rsi, gword ptr [rbp-0x50]
+ test rsi, rsi
+ je SHORT G_M35275_IG61
+ mov rdx, gword ptr [rsi+0x08]
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M35275_IG57:
lea esi, [rbx+0x01]
mov r12d, esi
movsxd rsi, ebx
mov rdi, r15
call CORINFO_HELP_ARRADDR_ST
mov ebx, r12d
- ;; size=45 bbWeight=2 PerfScore 13.50
-G_M35275_IG08:
+ ;; size=20 bbWeight=2 PerfScore 5.00
+G_M35275_IG58:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x90]
test rsi, rsi
- je SHORT G_M35275_IG10
- ;; size=19 bbWeight=8 PerfScore 58.00
-G_M35275_IG09:
- jmp SHORT G_M35275_IG11
- ;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M35275_IG10:
- mov rdi, r14
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=21 bbWeight=1.60 PerfScore 2.80
-G_M35275_IG11:
+ je G_M35275_IG68
+ ;; size=23 bbWeight=8 PerfScore 58.00
+G_M35275_IG59:
lea rdi, [rbp-0xB0]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M35275_IG07
- ;; size=23 bbWeight=8 PerfScore 40.00
-G_M35275_IG12:
+ jne G_M35275_IG31
+ ;; size=27 bbWeight=8 PerfScore 40.00
+G_M35275_IG60:
+ jmp G_M35275_IG69
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M35275_IG61:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M35275_IG62:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M35275_IG63:
+ mov rdx, gword ptr [rbp-0x78]
+ jmp G_M35275_IG57
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M35275_IG64:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M35275_IG51
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M35275_IG65:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M35275_IG52
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M35275_IG66:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M35275_IG53
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M35275_IG67:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M35275_IG55
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M35275_IG68:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ jmp G_M35275_IG59
+ ;; size=26 bbWeight=1.60 PerfScore 6.00
+G_M35275_IG69:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x98]
test rax, rax
- je SHORT G_M35275_IG14
+ je SHORT G_M35275_IG71
;; size=19 bbWeight=1 PerfScore 7.25
-G_M35275_IG13:
- jmp SHORT G_M35275_IG15
+G_M35275_IG70:
+ jmp SHORT G_M35275_IG72
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M35275_IG14:
+G_M35275_IG71:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M35275_IG15:
+G_M35275_IG72:
lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M35275_IG16:
- add rsp, 280
+G_M35275_IG73:
+ vzeroupper
+ add rsp, 568
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M35275_IG17:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M35275_IG74:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35275_IG18:
+G_M35275_IG75:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M35275_IG19:
+G_M35275_IG76:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M35275_IG77:
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+0x140]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M35275_IG20:
- mov rdx, gword ptr [rbp-0x138]
+ sub rsp, 88
+ mov rbp, qword ptr [rdi+0x50]
+ mov qword ptr [rsp+0x50], rbp
+ lea rbp, [rbp+0x260]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M35275_IG78:
+ mov rdx, gword ptr [rbp-0x1E0]
mov r14, qword ptr [rdx]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x98]
test rax, rax
- je SHORT G_M35275_IG21
- jmp SHORT G_M35275_IG22
+ je SHORT G_M35275_IG79
+ jmp SHORT G_M35275_IG80
;; size=34 bbWeight=0 PerfScore 0.00
-G_M35275_IG21:
+G_M35275_IG79:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M35275_IG22:
+G_M35275_IG80:
lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M35275_IG23:
- add rsp, 8
+G_M35275_IG81:
+ vzeroupper
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 603, prolog size 98, PerfScore 228.28, instruction count 151, allocated bytes for code 603 (MethodHash=0dfe7634) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):this (FullOpts)
+; Total bytes of code 2315, prolog size 107, PerfScore 705.94, instruction count 516, allocated bytes for code 2315 (MethodHash=0dfe7634) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.Generic.ICollection<T>.CopyTo(System.__Canon[],int):this (FullOpts)
1708 (271.97 % of base) - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this
; Assembly listing for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]: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; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T12] ( 5, 4 ) ref -> [rbp-0xA8] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
-; V01 arg1 [V01,T06] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Predicate`1[System.__Canon]>
-; V02 loc0 [V02,T05] ( 6, 9 ) ref -> r14 class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
-; V03 loc1 [V03 ] ( 7, 16 ) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V04 loc2 [V04,T07] ( 5, 9 ) int -> r12
-; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T37] ( 8, 15 ) ref -> [rbp-0x130] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V01 arg1 [V01,T59] ( 5, 11 ) ref -> rbx class-hnd single-def <System.Predicate`1[System.__Canon]>
+; V02 loc0 [V02,T58] ( 5, 14 ) ref -> [rbp-0x138] do-not-enreg[Z] must-init class-hnd EH-live <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V03 loc1 [V03 ] ( 44,197 ) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
+; V04 loc2 [V04,T38] ( 5, 17 ) int -> r14
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11 ] ( 3, 12 ) struct (56) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
+; V11 tmp6 [V11 ] ( 3, 24 ) struct (56) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp9 [V14,T18] ( 2, 4 ) long -> rsi "argument with side effect"
-; V15 tmp10 [V15,T02] ( 2, 32 ) long -> rsi "argument with side effect"
-; V16 tmp11 [V16,T09] ( 2, 8 ) long -> rsi "argument with side effect"
-; V17 tmp12 [V17,T08] ( 2, 8 ) ref -> rsi "argument with side effect"
-; V18 tmp13 [V18,T10] ( 2, 8 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T11] ( 2, 8 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T26] ( 2, 0 ) long -> rsi "argument with side effect"
-; V21 tmp16 [V21,T19] ( 2, 4 ) long -> rsi "argument with side effect"
-; V22 PSPSym [V22,T22] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T04] ( 8, 9 ) long -> r13 multi-def "CSE #02: aggressive"
-; V24 cse1 [V24,T03] ( 8, 12.80) long -> r15 multi-def "CSE #01: aggressive"
-;* V25 rat0 [V25,T16] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat1 [V26,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat2 [V27,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V28 rat3 [V28,T17] ( 3, 4 ) long -> r13 "runtime lookup"
-; V29 rat4 [V29,T14] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V30 rat5 [V30,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat6 [V31,T15] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V32 rat7 [V32,T01] ( 3, 32 ) long -> rsi "runtime lookup"
-; V33 rat8 [V33,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V34 rat9 [V34,T23] ( 3, 0 ) long -> r15 "Spilling to split statement for tree"
-; V35 rat10 [V35,T24] ( 3, 0 ) long -> r13 "runtime lookup"
-; V36 rat11 [V36,T25] ( 3, 0 ) long -> r13 "fgMakeTemp is creating a new local variable"
+;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V15 tmp10 [V15,T91] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V16 tmp11 [V16,T14] ( 5, 27.20) long -> r13 "Inlining Arg"
+;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V18 tmp13 [V18,T33] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V21 tmp16 [V21,T42] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+; V22 tmp17 [V22,T17] ( 3, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V23 tmp18 [V23,T51] ( 2, 16 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V24 tmp19 [V24,T40] ( 3, 12 ) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+; V25 tmp20 [V25,T15] ( 5, 27.20) long -> r13 "Inlining Arg"
+; V26 tmp21 [V26,T34] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V28 tmp23 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V29 tmp24 [V29,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V30 tmp25 [V30,T09] ( 4, 32 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V32 tmp27 [V32 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V35 tmp30 [V35,T43] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+; V37 tmp32 [V37 ] ( 2, 16 ) struct (56) [rbp-0xD8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
+; V38 tmp33 [V38,T13] ( 6, 27.20) long -> r12 "Inlining Arg"
+;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V40 tmp35 [V40,T44] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+; V41 tmp36 [V41,T10] ( 4, 32 ) ref -> r13 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V44 tmp39 [V44,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V45 tmp40 [V45,T00] ( 9, 70.40) long -> r13 "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp42 [V47,T18] ( 3, 24 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V48 tmp43 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <System.Collections.Immutable.RefAsValueType`1[System.__Canon]>
+;* V49 tmp44 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+;* V50 tmp45 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V52 tmp47 [V52,T35] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V55 tmp50 [V55,T45] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+; V56 tmp51 [V56,T19] ( 3, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V57 tmp52 [V57,T92] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V58 tmp53 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]>
+; V59 tmp54 [V59,T01] ( 4, 64 ) ref -> [rbp-0x140] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V60 tmp55 [V60,T02] ( 6, 44.80) long -> r12 "Inlining Arg"
+;* V61 tmp56 [V61 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V63 tmp58 [V63 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V64 tmp59 [V64 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V65 tmp60 [V65,T11] ( 3, 32 ) long -> rcx "Indirect call through function pointer"
+; V66 tmp61 [V66,T41] ( 3, 16 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V67 tmp62 [V67,T79] ( 3, 3 ) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+; V68 tmp63 [V68,T64] ( 5, 6.80) long -> r15 "Inlining Arg"
+; V69 tmp64 [V69,T74] ( 4, 4.40) long -> rdi "spilling helperCall"
+;* V70 tmp65 [V70 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V71 tmp66 [V71 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V72 tmp67 [V72,T88] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V73 tmp68 [V73,T60] ( 4, 8 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V74 tmp69 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V75 tmp70 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V76 tmp71 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V77 tmp72 [V77 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V78 tmp73 [V78,T80] ( 3, 4 ) long -> rax "Indirect call through function pointer"
+;* V79 tmp74 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+; V80 tmp75 [V80 ] ( 2, 4 ) struct (56) [rbp-0x110] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
+; V81 tmp76 [V81,T63] ( 6, 6.80) long -> rbx "Inlining Arg"
+;* V82 tmp77 [V82 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V83 tmp78 [V83,T81] ( 3, 4 ) long -> rax "Indirect call through function pointer"
+; V84 tmp79 [V84,T61] ( 4, 8 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V86 tmp81 [V86 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V87 tmp82 [V87,T16] ( 4, 24 ) ref -> rax "field V48.Value (fldOffset=0x0)" P-INDEP
+; V88 tmp83 [V88,T86] ( 2, 4 ) long -> rsi "argument with side effect"
+; V89 tmp84 [V89,T53] ( 2, 16 ) long -> [rbp-0x118] spill-single-def "argument with side effect"
+; V90 tmp85 [V90,T07] ( 3, 35.20) long -> rdi "argument with side effect"
+; V91 tmp86 [V91,T54] ( 2, 16 ) long -> [rbp-0x120] spill-single-def "argument with side effect"
+; V92 tmp87 [V92,T55] ( 2, 16 ) long -> [rbp-0x128] spill-single-def "argument with side effect"
+; V93 tmp88 [V93,T36] ( 3, 17.60) long -> rdi "argument with side effect"
+; V94 tmp89 [V94,T56] ( 2, 16 ) long -> rdi "argument with side effect"
+; V95 tmp90 [V95,T57] ( 2, 16 ) long -> rsi "argument with side effect"
+; V96 tmp91 [V96,T93] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V97 tmp92 [V97,T75] ( 3, 4.40) long -> rdi "argument with side effect"
+; V98 tmp93 [V98,T87] ( 2, 4 ) long -> rdi "argument with side effect"
+; V99 PSPSym [V99,T90] ( 1, 1 ) long -> [rbp-0x148] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T39] ( 7, 16 ) long -> r15 multi-def "CSE #02: conservative"
+;* V101 rat0 [V101,T76] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V102 rat1 [V102,T89] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V103 rat2 [V103,T65] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V104 rat3 [V104,T77] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V105 rat4 [V105,T82] ( 3, 4 ) long -> r15 "runtime lookup"
+; V106 rat5 [V106,T66] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
+; V107 rat6 [V107,T20] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V108 rat7 [V108,T21] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V109 rat8 [V109,T46] ( 3, 16 ) long -> rdi "runtime lookup"
+; V110 rat9 [V110,T22] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V111 rat10 [V111,T23] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V112 rat11 [V112,T47] ( 3, 16 ) long -> rdi "runtime lookup"
+; V113 rat12 [V113,T24] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V114 rat13 [V114,T25] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V115 rat14 [V115,T26] ( 3, 22.40) long -> r12 "fgMakeTemp is creating a new local variable"
+; V116 rat15 [V116,T27] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V117 rat16 [V117,T48] ( 3, 16 ) long -> rdi "runtime lookup"
+; V118 rat17 [V118,T28] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V119 rat18 [V119,T08] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V120 rat19 [V120,T03] ( 3, 44.80) long -> r13 "fgMakeTemp is creating a new local variable"
+; V121 rat20 [V121,T29] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V122 rat21 [V122,T30] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V123 rat22 [V123,T49] ( 3, 16 ) long -> rdi "runtime lookup"
+; V124 rat23 [V124,T31] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V125 rat24 [V125,T04] ( 3, 44.80) long -> r12 "fgMakeTemp is creating a new local variable"
+; V126 rat25 [V126,T12] ( 3, 32 ) long -> rdi "runtime lookup"
+; V127 rat26 [V127,T05] ( 3, 44.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V128 rat27 [V128,T06] ( 3, 44.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V129 rat28 [V129,T50] ( 3, 16 ) long -> rdi "runtime lookup"
+; V130 rat29 [V130,T32] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V131 rat30 [V131,T78] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V132 rat31 [V132,T83] ( 3, 4 ) long -> r15 "runtime lookup"
+; V133 rat32 [V133,T67] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
+; V134 rat33 [V134,T68] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V135 rat34 [V135,T84] ( 3, 4 ) long -> rdi "runtime lookup"
+; V136 rat35 [V136,T69] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V137 rat36 [V137,T70] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V138 rat37 [V138,T71] ( 3, 5.60) long -> rbx "fgMakeTemp is creating a new local variable"
+; V139 rat38 [V139,T72] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V140 rat39 [V140,T85] ( 3, 4 ) long -> rdi "runtime lookup"
+; V141 rat40 [V141,T73] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 152
+; Lcl frame size = 344
G_M59587_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 152
- lea rbp, [rsp+0xC0]
+ sub rsp, 344
+ lea rbp, [rsp+0x180]
+ xor eax, eax
+ mov qword ptr [rbp-0x138], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0xA0], ymm8
- vmovdqu ymmword ptr [rbp-0x80], ymm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqa xmmword ptr [rbp-0x40], xmm8
- mov qword ptr [rbp-0xB8], rsp
+ vmovdqa xmmword ptr [rbp-0x130], xmm8
+ mov rax, -240
+ 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-0x148], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0xA8], rdi
+ mov gword ptr [rbp-0x130], rdi
mov rbx, rsi
- ;; size=74 bbWeight=1 PerfScore 18.33
+ ;; size=102 bbWeight=1 PerfScore 21.08
G_M59587_IG02:
- mov r15, qword ptr [rdi]
+ cmp dword ptr [rdi], edi
test rbx, rbx
- je G_M59587_IG17
- mov r14, rdi
- mov rsi, qword ptr [r15+0x30]
- mov rsi, qword ptr [rsi]
- mov r13, qword ptr [rsi+0x10]
- test r13, r13
+ je G_M59587_IG86
+ mov gword ptr [rbp-0x138], rdi
+ mov rsi, qword ptr [rdi]
+ mov rax, qword ptr [rsi+0x30]
+ mov rax, qword ptr [rax]
+ mov r15, qword ptr [rax+0x28]
+ test r15, r15
je SHORT G_M59587_IG04
- ;; size=31 bbWeight=1 PerfScore 10.75
+ ;; size=37 bbWeight=1 PerfScore 14.50
G_M59587_IG03:
jmp SHORT G_M59587_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M59587_IG04:
- mov rdi, r15
+ mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r13, rax
+ mov r15, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M59587_IG05:
- mov rsi, r13
+ mov rsi, r15
xor edx, edx
mov dword ptr [rsp], edx
lea rdi, [rbp-0x68]
- mov rdx, r14
+ mov rdx, gword ptr [rbp-0x130]
xor rcx, rcx
mov r8d, -1
mov r9d, -1
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this
call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this
nop
- ;; size=42 bbWeight=1 PerfScore 6.50
+ ;; size=46 bbWeight=1 PerfScore 7.25
G_M59587_IG06:
- xor r12d, r12d
- mov rdi, qword ptr [r15+0x30]
+ xor r14d, r14d
+ jmp G_M59587_IG44
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M59587_IG07:
+ mov r13, r15
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M59587_IG14
+ cmp gword ptr [rbp-0x58], 0
+ je G_M59587_IG18
+ mov rdi, qword ptr [r13+0x30]
mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x10]
+ mov rdi, qword ptr [rdi+0x18]
test rdi, rdi
- jne G_M59587_IG11
- jmp G_M59587_IG11
- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M59587_IG07:
- mov rsi, r13
+ je SHORT G_M59587_IG09
+ ;; size=37 bbWeight=4 PerfScore 54.00
+G_M59587_IG08:
+ jmp SHORT G_M59587_IG10
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG09:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG10:
+ mov r12, gword ptr [rbp-0x58]
+ cmp byte ptr [r12], r12b
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG12
+ ;; size=21 bbWeight=4 PerfScore 37.00
+G_M59587_IG11:
+ jmp SHORT G_M59587_IG13
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG12:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ ;; size=15 bbWeight=0.80 PerfScore 1.00
+G_M59587_IG13:
lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- mov rsi, rax
+ call rax
+ cmp eax, dword ptr [r12+0x10]
+ je G_M59587_IG18
+ ;; size=17 bbWeight=4 PerfScore 30.00
+G_M59587_IG14:
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je SHORT G_M59587_IG16
+ ;; size=16 bbWeight=4 PerfScore 29.00
+G_M59587_IG15:
+ jmp SHORT G_M59587_IG17
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG16:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG17:
+ mov qword ptr [rbp-0x128], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x128]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=4 PerfScore 93.00
+G_M59587_IG18:
+ cmp gword ptr [rbp-0x50], 0
+ je G_M59587_IG80
+ mov rsi, gword ptr [rbp-0x50]
+ mov rsi, gword ptr [rsi+0x08]
mov rdi, gword ptr [rbx+0x08]
call [rbx+0x18]System.Predicate`1[System.__Canon]:Invoke(System.__Canon):ubyte:this
test eax, eax
- je G_M59587_IG10
- mov rdi, r14
- mov esi, r12d
+ je G_M59587_IG43
+ mov rdi, gword ptr [rbp-0x138]
+ mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAt(int):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAt(int):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this
- mov r14, rax
- mov rsi, r13
+ mov gword ptr [rbp-0x138], rax
+ mov r13, r15
+ xor rdi, rdi
+ mov gword ptr [rbp-0x60], rdi
+ ;; size=74 bbWeight=4 PerfScore 89.00
+G_M59587_IG19:
+ mov gword ptr [rbp-0x50], rdi
+ cmp gword ptr [rbp-0x58], 0
+ je G_M59587_IG40
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M59587_IG21
+ ;; size=31 bbWeight=4 PerfScore 45.00
+G_M59587_IG20:
+ jmp SHORT G_M59587_IG22
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG21:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG22:
+ mov r12, gword ptr [rbp-0x58]
+ cmp byte ptr [r12], r12b
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG24
+ ;; size=21 bbWeight=4 PerfScore 37.00
+G_M59587_IG23:
+ mov rdi, rax
+ jmp SHORT G_M59587_IG25
+ ;; size=5 bbWeight=3.20 PerfScore 7.20
+G_M59587_IG24:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M59587_IG25:
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG27
+ ;; size=13 bbWeight=4 PerfScore 21.00
+G_M59587_IG26:
+ jmp SHORT G_M59587_IG28
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG27:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ ;; size=15 bbWeight=0.80 PerfScore 1.00
+G_M59587_IG28:
lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
- call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
+ call rax
+ cmp eax, dword ptr [r12+0x10]
+ jne G_M59587_IG40
+ mov rdi, gword ptr [r12+0x08]
+ cmp dword ptr [rdi+0x10], 0
+ jle SHORT G_M59587_IG29
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Clear():this
+ call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Clear():this
+ ;; size=40 bbWeight=4 PerfScore 67.00
+G_M59587_IG29:
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov r12, qword ptr [rdi+0x38]
+ test r12, r12
+ je SHORT G_M59587_IG31
+ ;; size=16 bbWeight=4 PerfScore 29.00
+G_M59587_IG30:
+ jmp SHORT G_M59587_IG32
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG31:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG32:
+ vmovdqu ymm0, ymmword ptr [rbp-0x68]
+ vmovdqu ymmword ptr [rbp-0xD8], ymm0
+ vmovdqu ymm0, ymmword ptr [rbp-0x50]
+ vmovdqu ymmword ptr [rbp-0xC0], ymm0
+ ;; size=26 bbWeight=4 PerfScore 40.00
+G_M59587_IG33:
+ mov r13, gword ptr [rbp-0x58]
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M59587_IG35
+ ;; size=21 bbWeight=4 PerfScore 33.00
+G_M59587_IG34:
+ jmp SHORT G_M59587_IG36
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG35:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M59587_IG36:
+ lea rdi, [rbp-0xD8]
+ call rax
+ cmp eax, dword ptr [r13+0x10]
+ jne SHORT G_M59587_IG40
+ mov dword ptr [r13+0x10], -1
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M59587_IG38
+ ;; size=40 bbWeight=4 PerfScore 63.00
+G_M59587_IG37:
+ jmp SHORT G_M59587_IG39
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG38:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG39:
+ mov rsi, r13
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryAdd(System.__Canon)
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryAdd(System.__Canon)
+ ;; size=15 bbWeight=4 PerfScore 14.00
+G_M59587_IG40:
+ xor rsi, rsi
+ mov gword ptr [rbp-0x58], rsi
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0xA0], ymm0
vmovdqu ymmword ptr [rbp-0x88], ymm0
- mov rsi, r13
+ mov rsi, r15
xor edi, edi
mov dword ptr [rsp], edi
lea rdi, [rbp-0xA0]
- mov rdx, r14
- mov r8d, r12d
+ mov rdx, gword ptr [rbp-0x138]
+ mov r8d, r14d
xor rcx, rcx
mov r9d, -1
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this
call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this
- ;; size=140 bbWeight=2 PerfScore 60.17
-G_M59587_IG08:
+ ;; size=71 bbWeight=4 PerfScore 42.33
+G_M59587_IG41:
vmovdqu ymm0, ymmword ptr [rbp-0xA0]
vmovdqu ymmword ptr [rbp-0x68], ymm0
vmovdqu ymm0, ymmword ptr [rbp-0x88]
vmovdqu ymmword ptr [rbp-0x50], ymm0
- ;; size=26 bbWeight=2 PerfScore 20.00
-G_M59587_IG09:
- jmp SHORT G_M59587_IG11
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M59587_IG10:
- inc r12d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M59587_IG11:
- mov rdi, qword ptr [r15+0x30]
+ ;; size=26 bbWeight=4 PerfScore 40.00
+G_M59587_IG42:
+ jmp SHORT G_M59587_IG44
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M59587_IG43:
+ inc r14d
+ ;; size=3 bbWeight=4 PerfScore 1.00
+G_M59587_IG44:
+ mov rdx, gword ptr [rbp-0x130]
+ mov rdi, qword ptr [rdx]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r13, qword ptr [rsi+0x28]
+ test r13, r13
+ je SHORT G_M59587_IG46
+ ;; size=26 bbWeight=8 PerfScore 82.00
+G_M59587_IG45:
+ jmp SHORT G_M59587_IG47
+ ;; size=2 bbWeight=6.40 PerfScore 12.80
+G_M59587_IG46:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ ;; size=18 bbWeight=1.60 PerfScore 2.40
+G_M59587_IG47:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M59587_IG55
+ ;; size=7 bbWeight=8 PerfScore 24.00
+G_M59587_IG48:
+ cmp gword ptr [rbp-0x58], 0
+ je G_M59587_IG59
+ mov rdi, qword ptr [r13+0x30]
mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M59587_IG50
+ ;; size=27 bbWeight=4 PerfScore 41.00
+G_M59587_IG49:
+ jmp SHORT G_M59587_IG51
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG50:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG51:
+ mov r12, gword ptr [rbp-0x58]
+ cmp byte ptr [r12], r12b
mov rsi, qword ptr [rdi+0x10]
- test rsi, rsi
- je SHORT G_M59587_IG13
- ;; size=16 bbWeight=8 PerfScore 58.00
-G_M59587_IG12:
- jmp SHORT G_M59587_IG14
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG53
+ ;; size=21 bbWeight=4 PerfScore 37.00
+G_M59587_IG52:
+ jmp SHORT G_M59587_IG54
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG53:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ ;; size=15 bbWeight=0.80 PerfScore 1.00
+G_M59587_IG54:
+ lea rdi, [rbp-0x68]
+ call rax
+ cmp eax, dword ptr [r12+0x10]
+ je G_M59587_IG59
+ ;; size=17 bbWeight=4 PerfScore 30.00
+G_M59587_IG55:
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je SHORT G_M59587_IG57
+ ;; size=16 bbWeight=4 PerfScore 29.00
+G_M59587_IG56:
+ jmp SHORT G_M59587_IG58
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG57:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG58:
+ mov qword ptr [rbp-0x118], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x118]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=4 PerfScore 93.00
+G_M59587_IG59:
+ cmp gword ptr [rbp-0x68], 0
+ je SHORT G_M59587_IG61
+ ;; size=7 bbWeight=8 PerfScore 24.00
+G_M59587_IG60:
+ mov rdi, gword ptr [rbp-0x68]
+ mov edi, dword ptr [rdi+0x20]
+ cmp edi, dword ptr [rbp-0x38]
+ jne G_M59587_IG81
+ ;; size=16 bbWeight=4 PerfScore 24.00
+G_M59587_IG61:
+ cmp gword ptr [rbp-0x58], 0
+ je G_M59587_IG79
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov r12, qword ptr [rdi+0x20]
+ test r12, r12
+ je SHORT G_M59587_IG63
+ ;; size=27 bbWeight=8 PerfScore 82.00
+G_M59587_IG62:
+ jmp SHORT G_M59587_IG64
;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M59587_IG13:
- mov rdi, r15
+G_M59587_IG63:
+ mov rdi, r13
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
+ mov r12, rax
;; size=21 bbWeight=1.60 PerfScore 2.80
-G_M59587_IG14:
+G_M59587_IG64:
+ mov rax, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x140], rax
+ cmp byte ptr [rax], al
+ mov rdi, qword ptr [r12+0x10]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je SHORT G_M59587_IG66
+ ;; size=27 bbWeight=8 PerfScore 82.00
+G_M59587_IG65:
+ jmp SHORT G_M59587_IG67
+ ;; size=2 bbWeight=6.40 PerfScore 12.80
+G_M59587_IG66:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ ;; size=21 bbWeight=1.60 PerfScore 2.80
+G_M59587_IG67:
+ mov rsi, qword ptr [rdi+0x10]
+ mov rcx, qword ptr [rsi+0x10]
+ test rcx, rcx
+ je SHORT G_M59587_IG69
+ ;; size=13 bbWeight=8 PerfScore 42.00
+G_M59587_IG68:
+ jmp SHORT G_M59587_IG70
+ ;; size=2 bbWeight=6.40 PerfScore 12.80
+G_M59587_IG69:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rcx, rax
+ ;; size=18 bbWeight=1.60 PerfScore 2.40
+G_M59587_IG70:
lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
- call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
- test eax, eax
- jne G_M59587_IG07
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M59587_IG15:
- mov rsi, r13
+ call rcx
+ mov rcx, gword ptr [rbp-0x140]
+ cmp eax, dword ptr [rcx+0x10]
+ je G_M59587_IG75
+ ;; size=22 bbWeight=8 PerfScore 68.00
+G_M59587_IG71:
+ mov rdi, qword ptr [r12+0x10]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M59587_IG73
+ ;; size=14 bbWeight=4 PerfScore 21.00
+G_M59587_IG72:
+ jmp SHORT G_M59587_IG74
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M59587_IG73:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M59587_IG74:
+ mov qword ptr [rbp-0x120], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x120]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=4 PerfScore 93.00
+G_M59587_IG75:
+ mov rcx, gword ptr [rbp-0x140]
+ mov rdi, gword ptr [rcx+0x08]
+ cmp dword ptr [rbp-0x3C], 0
+ jle SHORT G_M59587_IG79
+ cmp dword ptr [rdi+0x10], 0
+ jle SHORT G_M59587_IG79
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this
+ call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this
+ mov gword ptr [rbp-0x50], rax
+ cmp byte ptr [rbp-0x34], 0
+ jne SHORT G_M59587_IG77
+ ;; size=45 bbWeight=8 PerfScore 138.00
+G_M59587_IG76:
+ mov rdx, gword ptr [rax+0x18]
+ jmp SHORT G_M59587_IG78
+ ;; size=6 bbWeight=4 PerfScore 16.00
+G_M59587_IG77:
+ mov rdx, gword ptr [rax+0x10]
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M59587_IG78:
lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
- call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
- mov rax, r14
- ;; size=22 bbWeight=1 PerfScore 4.25
-G_M59587_IG16:
+ mov rsi, r13
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:PushNext(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]):this
+ call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:PushNext(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]):this
+ mov edi, dword ptr [rbp-0x3C]
+ dec edi
+ mov dword ptr [rbp-0x3C], edi
+ jmp G_M59587_IG07
+ ;; size=32 bbWeight=8 PerfScore 66.00
+G_M59587_IG79:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x50], rdi
+ jmp SHORT G_M59587_IG82
+ ;; size=8 bbWeight=8 PerfScore 26.00
+G_M59587_IG80:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M59587_IG81:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rax, 0xD1FFAB1E ; code for System.SR:get_CollectionModifiedDuringEnumeration():System.String
+ call [rax]System.SR:get_CollectionModifiedDuringEnumeration():System.String
+ mov rsi, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
+ call [rax]System.InvalidOperationException:.ctor(System.String):this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ int3
+ ;; size=57 bbWeight=0 PerfScore 0.00
+G_M59587_IG82:
+ mov rdi, rsp
+ call G_M59587_IG87
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M59587_IG83:
+ nop
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M59587_IG84:
+ mov rax, gword ptr [rbp-0x138]
+ ;; size=7 bbWeight=1 PerfScore 1.00
+G_M59587_IG85:
vzeroupper
- add rsp, 152
+ add rsp, 344
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=1 PerfScore 5.25
-G_M59587_IG17:
+G_M59587_IG86:
mov edi, 0x59D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M59587_IG18:
+G_M59587_IG87:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0xC0]
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M59587_IG19:
- mov rdi, gword ptr [rbp-0xA8]
- mov r15, qword ptr [rdi]
- mov rsi, qword ptr [r15+0x30]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x180]
+ ;; size=30 bbWeight=1 PerfScore 9.75
+G_M59587_IG88:
+ mov rdx, gword ptr [rbp-0x130]
+ mov rdi, qword ptr [rdx]
+ mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
- mov r13, qword ptr [rsi+0x10]
- test r13, r13
- je SHORT G_M59587_IG20
- jmp SHORT G_M59587_IG21
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M59587_IG20:
+ mov r15, qword ptr [rsi+0x28]
+ test r15, r15
+ je SHORT G_M59587_IG90
+ ;; size=26 bbWeight=1 PerfScore 10.25
+G_M59587_IG89:
+ jmp SHORT G_M59587_IG91
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG90:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r15, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M59587_IG91:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x60], rdi
+ ;; size=6 bbWeight=1 PerfScore 1.25
+G_M59587_IG92:
+ mov gword ptr [rbp-0x50], rdi
+ cmp gword ptr [rbp-0x58], 0
+ je G_M59587_IG113
+ mov rdi, qword ptr [r15+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M59587_IG94
+ ;; size=31 bbWeight=1 PerfScore 11.25
+G_M59587_IG93:
+ jmp SHORT G_M59587_IG95
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG94:
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r13, rax
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M59587_IG21:
- mov rsi, r13
+ mov rdi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M59587_IG95:
+ mov rbx, gword ptr [rbp-0x58]
+ cmp byte ptr [rbx], bl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG97
+ ;; size=19 bbWeight=1 PerfScore 9.25
+G_M59587_IG96:
+ mov rdi, rax
+ jmp SHORT G_M59587_IG98
+ ;; size=5 bbWeight=0.80 PerfScore 1.80
+G_M59587_IG97:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M59587_IG98:
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M59587_IG100
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M59587_IG99:
+ jmp SHORT G_M59587_IG101
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG100:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M59587_IG101:
lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
- call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:Dispose():this
- nop
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M59587_IG22:
+ call rax
+ cmp eax, dword ptr [rbx+0x10]
+ jne G_M59587_IG113
+ mov rdi, gword ptr [rbx+0x08]
+ cmp dword ptr [rdi+0x10], 0
+ jle SHORT G_M59587_IG102
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Clear():this
+ call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Clear():this
+ ;; size=37 bbWeight=1 PerfScore 16.75
+G_M59587_IG102:
+ mov rdi, qword ptr [r15+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rbx, qword ptr [rdi+0x38]
+ test rbx, rbx
+ je SHORT G_M59587_IG104
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M59587_IG103:
+ jmp SHORT G_M59587_IG105
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG104:
+ mov rdi, r15
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rbx, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M59587_IG105:
+ vmovdqu ymm0, ymmword ptr [rbp-0x68]
+ vmovdqu ymmword ptr [rbp-0x110], ymm0
+ vmovdqu ymm0, ymmword ptr [rbp-0x50]
+ vmovdqu ymmword ptr [rbp-0xF8], ymm0
+ ;; size=26 bbWeight=1 PerfScore 10.00
+G_M59587_IG106:
+ mov r15, gword ptr [rbp-0x58]
+ mov rdi, qword ptr [rbx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M59587_IG108
+ ;; size=20 bbWeight=1 PerfScore 8.25
+G_M59587_IG107:
+ jmp SHORT G_M59587_IG109
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG108:
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M59587_IG109:
+ lea rdi, [rbp-0x110]
+ call rax
+ cmp eax, dword ptr [r15+0x10]
+ jne SHORT G_M59587_IG113
+ mov dword ptr [r15+0x10], -1
+ mov rdi, qword ptr [rbx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M59587_IG111
+ ;; size=39 bbWeight=1 PerfScore 15.75
+G_M59587_IG110:
+ jmp SHORT G_M59587_IG112
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M59587_IG111:
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M59587_IG112:
+ mov rsi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryAdd(System.__Canon)
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryAdd(System.__Canon)
+ ;; size=15 bbWeight=1 PerfScore 3.50
+G_M59587_IG113:
+ xor rax, rax
+ mov gword ptr [rbp-0x58], rax
+ ;; size=6 bbWeight=1 PerfScore 1.25
+G_M59587_IG114:
vzeroupper
- add rsp, 24
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=1 PerfScore 5.25
-; Total bytes of code 628, prolog size 74, PerfScore 254.80, instruction count 159, allocated bytes for code 628 (MethodHash=27ed173c) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this (FullOpts)
+; Total bytes of code 2336, prolog size 102, PerfScore 2143.92, instruction count 564, allocated bytes for code 2336 (MethodHash=27ed173c) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this (FullOpts)
1692 (252.91 % of base) - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this
; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):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; 6 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 13 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x130] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x1D8] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 arg2 [V02,T07] ( 6, 8 ) int -> r15
-; V03 loc0 [V03 ] ( 5, 12 ) struct (128) [rbp-0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T20] ( 2, 4 ) ref -> r13 class-hnd <System.__Canon>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 arg2 [V02,T21] ( 6, 8 ) int -> r15
+; V03 loc0 [V03 ] ( 19, 40 ) struct (128) [rbp-0xB0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (80) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp4 [V09,T06] ( 3, 12 ) int -> rsi "impSpillLclRefs"
+; V09 tmp4 [V09,T11] ( 3, 12 ) int -> rsi "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T17] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V11 tmp6 [V11,T49] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp9 [V14 ] ( 2, 4 ) struct (128) [rbp-0x128] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-;* V15 tmp10 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp11 [V16,T11] ( 2, 4 ) int -> rdi "Inline return value spill temp"
-;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V18 tmp13 [V18,T12] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
-; V19 tmp14 [V19,T08] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V20 tmp15 [V20,T25] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V21 tmp16 [V21,T21] ( 2, 4 ) long -> rsi "argument with side effect"
-; V22 tmp17 [V22,T03] ( 2, 32 ) long -> rsi "argument with side effect"
-; V23 tmp18 [V23,T09] ( 2, 8 ) long -> rsi "argument with side effect"
-; V24 tmp19 [V24,T10] ( 2, 8 ) long -> rdx "argument with side effect"
-; V25 PSPSym [V25,T22] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T18] ( 3, 4 ) long -> r14 "CSE #02: moderate"
-; V27 rat0 [V27,T15] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V28 rat1 [V28,T19] ( 3, 4 ) long -> r14 "runtime lookup"
-; V29 rat2 [V29,T13] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
-; V30 rat3 [V30,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V31 rat4 [V31,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V32 rat5 [V32,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V33 rat6 [V33,T16] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V34 rat7 [V34,T14] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V35 rat8 [V35,T23] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V36 rat9 [V36,T24] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V14 tmp9 [V14 ] ( 5, 10 ) struct (128) [rbp-0x130] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
+; V15 tmp10 [V15,T46] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V16 tmp11 [V16,T36] ( 4, 7 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V17 tmp12 [V17 ] ( 14, 20 ) struct (32) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V18 tmp13 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref
+;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
+; V23 tmp18 [V23,T45] ( 6, 5.40) long -> [rbp-0x158] spill-single-def "Inlining Arg"
+;* V24 tmp19 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V26 tmp21 [V26,T66] ( 2, 2 ) struct (32) [rbp-0x178] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V27 tmp22 [V27,T56] ( 3, 3 ) ref -> [rbp-0x1E0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V28 tmp23 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V30 tmp25 [V30,T54] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V31 tmp26 [V31,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V32 tmp27 [V32 ] ( 3, 3 ) struct (32) [rbp-0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V33 tmp28 [V33,T55] ( 5, 3.40) long -> [rbp-0x1A0] spill-single-def "Inlining Arg"
+;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V35 tmp30 [V35,T67] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V36 tmp31 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V38 tmp33 [V38,T68] ( 2, 2 ) long -> r13 "Indirect call through function pointer"
+; V39 tmp34 [V39,T65] ( 2, 2 ) ref -> [rbp-0x1E8] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V40 tmp35 [V40,T69] ( 2, 2 ) int -> rax "Inlining Arg"
+; V41 tmp36 [V41,T24] ( 3, 8.80) long -> r13 "Inlining Arg"
+;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V44 tmp39 [V44,T08] ( 5, 13.60) long -> [rbp-0x1A8] spill-single-def "Inlining Arg"
+;* V45 tmp40 [V45 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V46 tmp41 [V46,T22] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V49 tmp44 [V49,T25] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V50 tmp45 [V50,T09] ( 3, 12 ) ref -> [rbp-0x1F0] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+;* V51 tmp46 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon>
+; V52 tmp47 [V52,T06] ( 6, 13.60) long -> r13 "Inlining Arg"
+; V53 tmp48 [V53,T39] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
+; V54 tmp49 [V54,T37] ( 3, 6 ) ref -> r13 class-hnd "Inline stloc first use temp" <System.__Canon>
+;* V55 tmp50 [V55 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V56 tmp51 [V56,T76] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V57 tmp52 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V60 tmp55 [V60,T77] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V61 tmp56 [V61,T07] ( 6, 13.60) long -> r13 "Inlining Arg"
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V63 tmp58 [V63,T23] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V64 tmp59 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V66 tmp61 [V66,T26] ( 3, 8 ) long -> rcx "Indirect call through function pointer"
+; V67 tmp62 [V67,T10] ( 3, 12 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V68 tmp63 [V68,T30] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V69 tmp64 [V69,T40] ( 2, 4 ) int -> rax "Inline return value spill temp"
+;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V71 tmp66 [V71,T41] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V72 tmp67 [V72,T31] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V73 tmp68 [V73 ] ( 7, 7.50) ref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V17._root (fldOffset=0x0)" P-DEP
+; V74 tmp69 [V74 ] ( 9, 8 ) ref -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V17._stack (fldOffset=0x8)" P-DEP
+; V75 tmp70 [V75 ] ( 5, 6 ) ref -> [rbp-0x140] do-not-enreg[X] addr-exposed "field V17._current (fldOffset=0x10)" P-DEP
+; V76 tmp71 [V76 ] ( 5, 6 ) int -> [rbp-0x138] do-not-enreg[X] addr-exposed "field V17._poolUserId (fldOffset=0x18)" P-DEP
+; V77 tmp72 [V77,T80] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V78 tmp73 [V78,T70] ( 2, 2 ) long -> rdi "argument with side effect"
+; V79 tmp74 [V79,T71] ( 2, 2 ) long -> r13 "argument with side effect"
+; V80 tmp75 [V80,T03] ( 2, 32 ) long -> rsi "argument with side effect"
+; V81 tmp76 [V81,T32] ( 2, 8 ) long -> [rbp-0x1B0] spill-single-def "argument with side effect"
+; V82 tmp77 [V82,T33] ( 2, 8 ) long -> [rbp-0x1B8] spill-single-def "argument with side effect"
+; V83 tmp78 [V83,T34] ( 2, 8 ) long -> [rbp-0x1C0] spill-single-def "argument with side effect"
+; V84 tmp79 [V84,T35] ( 2, 8 ) long -> rdx "argument with side effect"
+; V85 PSPSym [V85,T75] ( 1, 1 ) long -> [rbp-0x200] do-not-enreg[V] "PSPSym"
+; V86 cse0 [V86,T50] ( 3, 4 ) long -> r14 "CSE #04: moderate"
+; V87 cse1 [V87,T51] ( 3, 4 ) long -> r12 "CSE #05: moderate"
+; V88 cse2 [V88,T72] ( 3, 1.50) long -> [rbp-0x1C8] spill-single-def "CSE #01: conservative"
+; V89 cse3 [V89,T73] ( 3, 1.50) long -> [rbp-0x1D0] spill-single-def "CSE #02: conservative"
+; V90 cse4 [V90,T38] ( 3, 6 ) ref -> rdi "CSE #08: moderate"
+; V91 rat0 [V91,T47] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V92 rat1 [V92,T52] ( 3, 4 ) long -> r14 "runtime lookup"
+; V93 rat2 [V93,T42] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
+; V94 rat3 [V94,T53] ( 3, 4 ) long -> r12 "runtime lookup"
+; V95 rat4 [V95,T43] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V96 rat5 [V96,T61] ( 3, 2 ) long -> registers "runtime lookup"
+; V97 rat6 [V97,T57] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V98 rat7 [V98,T62] ( 3, 2 ) long -> registers "runtime lookup"
+; V99 rat8 [V99,T58] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V100 rat9 [V100,T63] ( 3, 2 ) long -> rdi "runtime lookup"
+; V101 rat10 [V101,T59] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V102 rat11 [V102,T64] ( 3, 2 ) long -> rdi "runtime lookup"
+; V103 rat12 [V103,T60] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V104 rat13 [V104,T12] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V105 rat14 [V105,T13] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V106 rat15 [V106,T27] ( 3, 8 ) long -> rdi "runtime lookup"
+; V107 rat16 [V107,T14] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V108 rat17 [V108,T15] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V109 rat18 [V109,T28] ( 3, 8 ) long -> rdi "runtime lookup"
+; V110 rat19 [V110,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V111 rat20 [V111,T17] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V112 rat21 [V112,T18] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V113 rat22 [V113,T19] ( 3, 11.20) long -> rcx "fgMakeTemp is creating a new local variable"
+; V114 rat23 [V114,T29] ( 3, 8 ) long -> rdi "runtime lookup"
+; V115 rat24 [V115,T20] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V116 rat25 [V116,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V117 rat26 [V117,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V118 rat27 [V118,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V119 rat28 [V119,T48] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V120 rat29 [V120,T44] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V121 rat30 [V121,T78] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V122 rat31 [V122,T79] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 288
+; Lcl frame size = 552
G_M30256_IG01:
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 288
- lea rbp, [rsp+0x140]
+ sub rsp, 552
+ lea rbp, [rsp+0x250]
xor eax, eax
- mov qword ptr [rbp-0x128], rax
+ mov qword ptr [rbp-0x198], rax
vxorps xmm8, xmm8, xmm8
- mov rax, -240
+ vmovdqa xmmword ptr [rbp-0x190], xmm8
+ mov rax, -336
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-0x140], rsp
- mov qword ptr [rbp-0x28], rdi
- mov gword ptr [rbp-0x130], rdi
+ mov qword ptr [rbp-0x200], rsp
+ mov qword ptr [rbp-0x30], rdi
+ mov gword ptr [rbp-0x1D8], rdi
mov r8, rdi
mov rbx, rsi
mov r15d, edx
- ;; size=102 bbWeight=1 PerfScore 19.58
+ ;; size=108 bbWeight=1 PerfScore 21.58
G_M30256_IG02:
test rbx, rbx
- je G_M30256_IG21
+ je G_M30256_IG78
test r15d, r15d
- jl G_M30256_IG22
+ jl G_M30256_IG79
mov edi, dword ptr [rbx+0x08]
test edi, edi
- jl G_M30256_IG20
+ jl G_M30256_IG77
mov esi, r15d
add esi, dword ptr [r8+0x20]
cmp edi, esi
- jl G_M30256_IG22
+ jl G_M30256_IG79
mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov r14, qword ptr [rsi+0x90]
test r14, r14
je SHORT G_M30256_IG04
;; size=66 bbWeight=1 PerfScore 19.50
G_M30256_IG03:
jmp SHORT G_M30256_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M30256_IG04:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r14, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M30256_IG05:
- mov rsi, r14
- mov r8, gword ptr [rbp-0x130]
- mov rdx, gword ptr [r8+0x10]
- lea rdi, [rbp-0x128]
+ mov rdi, r14
+ mov r8, gword ptr [rbp-0x1D8]
+ mov r13, gword ptr [r8+0x10]
+ xor rsi, rsi
+ mov gword ptr [rbp-0x130], rsi
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r12, qword ptr [rsi+0x10]
+ test r12, r12
+ je SHORT G_M30256_IG07
+ ;; size=39 bbWeight=1 PerfScore 11.75
+G_M30256_IG06:
+ jmp SHORT G_M30256_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M30256_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M30256_IG08:
+ mov qword ptr [rbp-0x158], r12
+ test r13, r13
+ je G_M30256_IG80
+ mov gword ptr [rbp-0x150], r13
xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]):this
- lea rdi, bword ptr [rbp-0xA8]
- lea rsi, bword ptr [rbp-0x128]
+ mov gword ptr [rbp-0x140], rcx
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rcx]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x138], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ mov rdi, gword ptr [rbp-0x150]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M30256_IG28
+ ;; size=77 bbWeight=1 PerfScore 15.00
+G_M30256_IG09:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M30256_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M30256_IG10:
+ jmp SHORT G_M30256_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M30256_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x158]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M30256_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1D0], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1A0], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M30256_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x198], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M30256_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M30256_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M30256_IG15:
+ jmp SHORT G_M30256_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M30256_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M30256_IG17:
+ mov qword ptr [rbp-0x1C8], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x198]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M30256_IG21
+ mov rdi, qword ptr [rbp-0x1A0]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M30256_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M30256_IG18:
+ mov rdi, rax
+ jmp SHORT G_M30256_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M30256_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M30256_IG20:
+ lea rsi, [rbp-0x148]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M30256_IG21
+ mov r13, qword ptr [rbp-0x1C8]
+ mov rax, gword ptr [rbp-0x148]
+ mov gword ptr [rbp-0x1E8], rax
+ lea rdi, [rbp-0x198]
+ call r13
+ mov r13, gword ptr [rbp-0x1E8]
+ mov dword ptr [r13+0x10], eax
+ jmp G_M30256_IG27
+ ;; size=70 bbWeight=0.50 PerfScore 7.75
+G_M30256_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x148], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M30256_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x178], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M30256_IG23:
+ mov rax, qword ptr [rbp-0x158]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M30256_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M30256_IG24:
+ jmp SHORT G_M30256_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M30256_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M30256_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x1E0], rax
+ movzx rsi, byte ptr [r13+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r13, qword ptr [rbp-0x1D0]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x178]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r13
+ mov rsi, gword ptr [rbp-0x1E0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x148], rax
+ ;; size=128 bbWeight=0.50 PerfScore 13.25
+G_M30256_IG27:
+ lea rdi, [rbp-0x150]
+ mov rsi, qword ptr [rbp-0x158]
+ mov rdx, gword ptr [rbp-0x150]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M30256_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x150]
+ vmovdqu ymmword ptr [rbp-0x120], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M30256_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x100], ymm0
+ vmovdqu ymmword ptr [rbp-0xE0], ymm0
+ vmovdqu xmmword ptr [rbp-0xC0], xmm0
+ mov dword ptr [rbp-0x128], -1
+ lea rdi, bword ptr [rbp-0xB0]
+ lea rsi, bword ptr [rbp-0x130]
mov ecx, 16
rep movsq
- ;; size=57 bbWeight=1 PerfScore 33.50
-G_M30256_IG06:
- jmp SHORT G_M30256_IG09
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M30256_IG07:
- mov rsi, r14
- lea rdi, [rbp-0xA8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M30256_IG30:
+ jmp G_M30256_IG59
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M30256_IG31:
+ mov r13, r14
+ mov rax, r12
+ mov qword ptr [rbp-0x1A8], rax
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M30256_IG38
+ cmp gword ptr [rbp-0x98], 0
+ je G_M30256_IG42
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M30256_IG33
+ ;; size=57 bbWeight=2 PerfScore 29.50
+G_M30256_IG32:
+ jmp SHORT G_M30256_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M30256_IG33:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x1A8]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M30256_IG34:
+ mov rcx, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x1F0], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je SHORT G_M30256_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M30256_IG35:
+ jmp SHORT G_M30256_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M30256_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M30256_IG37:
+ lea rdi, [rbp-0xA0]
+ call rdx
+ mov rdi, gword ptr [rbp-0x1F0]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x1A8]
+ je G_M30256_IG42
+ ;; size=32 bbWeight=2 PerfScore 19.00
+G_M30256_IG38:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M30256_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M30256_IG39:
+ jmp SHORT G_M30256_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M30256_IG40:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M30256_IG41:
+ mov qword ptr [rbp-0x1B0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA0]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1B0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M30256_IG42:
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M30256_IG44
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M30256_IG43:
+ mov r13, rax
+ jmp SHORT G_M30256_IG45
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M30256_IG44:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M30256_IG45:
+ cmp byte ptr [rbp-0x7C], 0
+ je G_M30256_IG49
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M30256_IG47
+ ;; size=26 bbWeight=2 PerfScore 20.50
+G_M30256_IG46:
+ jmp SHORT G_M30256_IG48
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M30256_IG47:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M30256_IG48:
+ mov qword ptr [rbp-0x1B8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x80]
+ movsq
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x20], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x28], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x30], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon])
+ ;; size=138 bbWeight=2 PerfScore 62.50
+G_M30256_IG49:
+ mov edi, dword ptr [rbp-0x80]
+ cmp edi, 1
+ je G_M30256_IG65
+ cmp edi, 2
+ jne G_M30256_IG63
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x10]
+ test rax, rax
+ je G_M30256_IG66
+ ;; size=41 bbWeight=2 PerfScore 21.50
+G_M30256_IG50:
mov r13, rax
+ ;; size=3 bbWeight=1.60 PerfScore 0.40
+G_M30256_IG51:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M30256_IG54
+ cmp gword ptr [rbp-0x58], 0
+ je G_M30256_IG56
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M30256_IG67
+ ;; size=38 bbWeight=2 PerfScore 26.50
+G_M30256_IG52:
+ mov rax, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x1F8], rax
+ cmp byte ptr [rax], al
+ mov rsi, qword ptr [rdi+0x10]
+ mov rcx, qword ptr [rsi+0x10]
+ test rcx, rcx
+ je G_M30256_IG68
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M30256_IG53:
+ lea rdi, [rbp-0x68]
+ call rcx
+ mov rdi, gword ptr [rbp-0x1F8]
+ cmp eax, dword ptr [rdi+0x10]
+ je SHORT G_M30256_IG56
+ ;; size=18 bbWeight=2 PerfScore 17.00
+G_M30256_IG54:
+ mov rdi, qword ptr [r13+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M30256_IG69
+ ;; size=20 bbWeight=2 PerfScore 14.50
+G_M30256_IG55:
+ mov qword ptr [rbp-0x1C0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1C0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M30256_IG56:
+ mov rdi, gword ptr [rbp-0x50]
+ test rdi, rdi
+ je SHORT G_M30256_IG62
+ mov r13, gword ptr [rdi+0x08]
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M30256_IG57:
mov esi, r15d
lea r15d, [rsi+0x01]
mov rdi, qword ptr [rbx]
- mov edi, dword ptr [rdi+0x04]
- add edi, -24
- shr edi, 3
- je SHORT G_M30256_IG08
- cmp edi, 1
- jne SHORT G_M30256_IG14
- ;; size=51 bbWeight=2 PerfScore 24.00
-G_M30256_IG08:
+ mov eax, dword ptr [rdi+0x04]
+ add eax, -24
+ shr eax, 3
+ jne G_M30256_IG70
+ ;; size=25 bbWeight=2 PerfScore 13.00
+G_M30256_IG58:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Array:GetFlattenedIndex(int):long:this
call [rax]System.Array:GetFlattenedIndex(int):long:this
mov rdx, rax
mov rsi, r13
mov rdi, rbx
call System.Array:InternalSetValue(System.Object,long):this
;; size=29 bbWeight=2 PerfScore 10.50
-G_M30256_IG09:
- mov r8, gword ptr [rbp-0x130]
+G_M30256_IG59:
+ mov r8, gword ptr [rbp-0x1D8]
mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x90]
test rsi, rsi
- je SHORT G_M30256_IG11
- ;; size=29 bbWeight=8 PerfScore 82.00
-G_M30256_IG10:
- jmp SHORT G_M30256_IG12
- ;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M30256_IG11:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=18 bbWeight=1.60 PerfScore 2.40
-G_M30256_IG12:
- lea rdi, [rbp-0xA8]
+ je G_M30256_IG71
+ ;; size=33 bbWeight=8 PerfScore 82.00
+G_M30256_IG60:
+ lea rdi, [rbp-0xB0]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
test eax, eax
- jne G_M30256_IG07
+ jne G_M30256_IG31
;; size=27 bbWeight=8 PerfScore 40.00
-G_M30256_IG13:
- jmp SHORT G_M30256_IG15
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M30256_IG14:
+G_M30256_IG61:
+ jmp G_M30256_IG72
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M30256_IG62:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M30256_IG63:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M30256_IG64:
mov edi, 58
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int)
call [rax]System.ThrowHelper:ThrowArgumentException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M30256_IG15:
- mov r8, gword ptr [rbp-0x130]
+G_M30256_IG65:
+ mov r13, gword ptr [rbp-0x78]
+ jmp G_M30256_IG57
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M30256_IG66:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ jmp G_M30256_IG51
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M30256_IG67:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M30256_IG52
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M30256_IG68:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rcx, rax
+ jmp G_M30256_IG53
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M30256_IG69:
+ mov rdi, r13
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M30256_IG55
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M30256_IG70:
+ cmp eax, 1
+ jne G_M30256_IG64
+ jmp G_M30256_IG58
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M30256_IG71:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ jmp G_M30256_IG60
+ ;; size=23 bbWeight=1.60 PerfScore 5.60
+G_M30256_IG72:
+ mov r8, gword ptr [rbp-0x1D8]
mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x98]
test rax, rax
- je SHORT G_M30256_IG17
+ je SHORT G_M30256_IG74
;; size=29 bbWeight=1 PerfScore 10.25
-G_M30256_IG16:
- jmp SHORT G_M30256_IG18
+G_M30256_IG73:
+ jmp SHORT G_M30256_IG75
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M30256_IG17:
+G_M30256_IG74:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0.20 PerfScore 0.25
-G_M30256_IG18:
- lea rdi, [rbp-0xA8]
+G_M30256_IG75:
+ lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M30256_IG19:
- add rsp, 288
+G_M30256_IG76:
+ vzeroupper
+ add rsp, 552
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M30256_IG20:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M30256_IG77:
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M30256_IG21:
+G_M30256_IG78:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M30256_IG22:
+G_M30256_IG79:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M30256_IG23:
+G_M30256_IG80:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M30256_IG81:
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x140]
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M30256_IG24:
- mov r8, gword ptr [rbp-0x130]
+ sub rsp, 88
+ mov rbp, qword ptr [rdi+0x50]
+ mov qword ptr [rsp+0x50], rbp
+ lea rbp, [rbp+0x250]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M30256_IG82:
+ mov r8, gword ptr [rbp-0x1D8]
mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x98]
test rax, rax
- je SHORT G_M30256_IG25
- jmp SHORT G_M30256_IG26
+ je SHORT G_M30256_IG83
+ jmp SHORT G_M30256_IG84
;; size=31 bbWeight=0 PerfScore 0.00
-G_M30256_IG25:
+G_M30256_IG83:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30256_IG26:
- lea rdi, [rbp-0xA8]
+G_M30256_IG84:
+ lea rdi, [rbp-0xB0]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M30256_IG27:
- add rsp, 16
+G_M30256_IG85:
+ vzeroupper
+ add rsp, 88
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 669, prolog size 102, PerfScore 269.78, instruction count 163, allocated bytes for code 669 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 2361, prolog size 108, PerfScore 747.74, instruction count 529, allocated bytes for code 2361 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
1602 (253.08 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):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; 2 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 6, 5 ) ref -> [rbp-0x158] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T06] ( 5, 6 ) ref -> r15 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][]>
-; V02 arg2 [V02,T05] ( 6, 8 ) int -> registers
-; V03 loc0 [V03 ] ( 5, 12 ) struct (136) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V04 loc1 [V04,T18] ( 2, 4 ) struct (16) [rbp-0xC8] do-not-enreg[SR] multireg-ret must-init <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T30] ( 6, 5 ) ref -> [rbp-0x210] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T22] ( 5, 6 ) ref -> r15 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][]>
+; V02 arg2 [V02,T17] ( 6, 8 ) int -> registers
+; V03 loc0 [V03 ] ( 17, 36 ) struct (136) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V10 tmp5 [V10,T03] ( 4, 16 ) int -> rbx "impSpillLclRefs"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T14] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V12 tmp7 [V12,T43] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15 ] ( 2, 4 ) struct (136) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T25] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V18 tmp13 [V18,T19] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T02] ( 2, 32 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T07] ( 2, 8 ) long -> rsi "argument with side effect"
-; V21 PSPSym [V21,T22] ( 1, 1 ) long -> [rbp-0x160] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T15] ( 3, 4 ) long -> r12 "CSE #02: moderate"
-; V23 cse1 [V23,T04] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
-; V24 cse2 [V24,T16] ( 3, 4 ) int -> r13 "CSE #03: moderate"
-;* V25 rat0 [V25,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat1 [V26,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat2 [V27,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V28 rat3 [V28,T17] ( 3, 4 ) long -> r12 "runtime lookup"
-; V29 rat4 [V29,T10] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-;* V30 rat5 [V30,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat6 [V31,T11] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V32 rat7 [V32,T01] ( 3, 32 ) long -> rsi "runtime lookup"
-; V33 rat8 [V33,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V34 rat9 [V34,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V35 rat10 [V35,T23] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V36 rat11 [V36,T24] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V15 tmp10 [V15 ] ( 5, 10 ) struct (136) [rbp-0x140] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V16 tmp11 [V16,T41] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V17 tmp12 [V17,T31] ( 4, 7 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V18 tmp13 [V18 ] ( 14, 20 ) struct (32) [rbp-0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref
+;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref
+;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref
+; V24 tmp19 [V24,T40] ( 6, 5.40) long -> [rbp-0x168] spill-single-def "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V27 tmp22 [V27,T61] ( 2, 2 ) struct (32) [rbp-0x188] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V28 tmp23 [V28,T51] ( 3, 3 ) ref -> [rbp-0x220] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V31 tmp26 [V31,T49] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V32 tmp27 [V32,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp28 [V33 ] ( 3, 3 ) struct (32) [rbp-0x1A8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V34 tmp29 [V34,T50] ( 5, 3.40) long -> [rbp-0x1B0] spill-single-def "Inlining Arg"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T62] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V39 tmp34 [V39,T63] ( 2, 2 ) long -> rdx "Indirect call through function pointer"
+; V40 tmp35 [V40,T60] ( 2, 2 ) ref -> [rbp-0x228] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V41 tmp36 [V41,T64] ( 2, 2 ) int -> rax "Inlining Arg"
+; V42 tmp37 [V42,T21] ( 3, 8.80) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V44 tmp39 [V44,T18] ( 4, 8.80) long -> rdi "spilling helperCall"
+; V45 tmp40 [V45,T06] ( 5, 13.60) long -> [rbp-0x1C0] spill-single-def "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp42 [V47,T19] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V49 tmp44 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V50 tmp45 [V50,T23] ( 3, 8 ) long -> r9 "Indirect call through function pointer"
+; V51 tmp46 [V51,T07] ( 3, 12 ) ref -> [rbp-0x230] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V52 tmp47 [V52,T33] ( 3, 6 ) int -> rsi "Inline stloc first use temp"
+; V53 tmp48 [V53,T34] ( 3, 6 ) struct (16) [rbp-0x1D0] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp50 [V55 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V56 tmp51 [V56,T73] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V57 tmp52 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V58 tmp53 [V58,T74] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V59 tmp54 [V59,T05] ( 6, 13.60) long -> [rbp-0x1D8] "Inlining Arg"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V61 tmp56 [V61,T20] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V63 tmp58 [V63 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V64 tmp59 [V64,T24] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V65 tmp60 [V65,T08] ( 3, 12 ) ref -> [rbp-0x238] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V66 tmp61 [V66,T27] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V67 tmp62 [V67 ] ( 7, 7.50) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V18._root (fldOffset=0x0)" P-DEP
+; V68 tmp63 [V68 ] ( 9, 8 ) ref -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V18._stack (fldOffset=0x8)" P-DEP
+; V69 tmp64 [V69 ] ( 5, 6 ) ref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V18._current (fldOffset=0x10)" P-DEP
+; V70 tmp65 [V70 ] ( 5, 6 ) int -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V18._poolUserId (fldOffset=0x18)" P-DEP
+; V71 tmp66 [V71,T77] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V72 tmp67 [V72,T65] ( 2, 2 ) long -> rdi "argument with side effect"
+; V73 tmp68 [V73,T66] ( 2, 2 ) long -> [rbp-0x1E0] spill-single-def "argument with side effect"
+; V74 tmp69 [V74,T02] ( 2, 32 ) long -> rsi "argument with side effect"
+; V75 tmp70 [V75,T28] ( 2, 8 ) long -> [rbp-0x1E8] spill-single-def "argument with side effect"
+; V76 tmp71 [V76,T29] ( 2, 8 ) long -> [rbp-0x1F0] spill-single-def "argument with side effect"
+; V77 PSPSym [V77,T72] ( 1, 1 ) long -> [rbp-0x248] do-not-enreg[V] "PSPSym"
+; V78 cse0 [V78,T44] ( 3, 4 ) long -> r12 "CSE #04: moderate"
+; V79 cse1 [V79,T45] ( 3, 4 ) long -> [rbp-0x1F8] spill-single-def "CSE #05: moderate"
+; V80 cse2 [V80,T69] ( 3, 1.50) long -> [rbp-0x200] spill-single-def "CSE #02: conservative"
+; V81 cse3 [V81,T70] ( 3, 1.50) long -> [rbp-0x208] spill-single-def "CSE #03: conservative"
+; V82 cse4 [V82,T04] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
+; V83 cse5 [V83,T46] ( 3, 4 ) int -> r13 "CSE #09: moderate"
+; V84 cse6 [V84,T32] ( 3, 6 ) ref -> rdi "CSE #08: moderate"
+;* V85 rat0 [V85,T42] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V86 rat1 [V86,T67] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V87 rat2 [V87,T35] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V88 rat3 [V88,T47] ( 3, 4 ) long -> r12 "runtime lookup"
+; V89 rat4 [V89,T36] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V90 rat5 [V90,T48] ( 3, 4 ) long -> registers "runtime lookup"
+; V91 rat6 [V91,T37] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+; V92 rat7 [V92,T56] ( 3, 2 ) long -> registers "runtime lookup"
+; V93 rat8 [V93,T52] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V94 rat9 [V94,T57] ( 3, 2 ) long -> registers "runtime lookup"
+; V95 rat10 [V95,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V96 rat11 [V96,T58] ( 3, 2 ) long -> rdi "runtime lookup"
+; V97 rat12 [V97,T54] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V98 rat13 [V98,T59] ( 3, 2 ) long -> rdi "runtime lookup"
+; V99 rat14 [V99,T55] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V100 rat15 [V100,T68] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V101 rat16 [V101,T38] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V102 rat17 [V102,T09] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V103 rat18 [V103,T10] ( 3, 11.20) long -> r9 "fgMakeTemp is creating a new local variable"
+; V104 rat19 [V104,T25] ( 3, 8 ) long -> rdi "runtime lookup"
+; V105 rat20 [V105,T11] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V106 rat21 [V106,T12] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V107 rat22 [V107,T13] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V108 rat23 [V108,T14] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V109 rat24 [V109,T15] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V110 rat25 [V110,T26] ( 3, 8 ) long -> rdi "runtime lookup"
+; V111 rat26 [V111,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V112 rat27 [V112,T01] ( 3, 32 ) long -> rsi "runtime lookup"
+; V113 rat28 [V113,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V114 rat29 [V114,T39] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V115 rat30 [V115,T75] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V116 rat31 [V116,T76] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 312
+; Lcl frame size = 600
G_M38674_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 312
- lea rbp, [rsp+0x160]
+ sub rsp, 600
+ lea rbp, [rsp+0x280]
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ vmovdqa xmmword ptr [rbp-0x1D0], xmm8
+ vmovdqa xmmword ptr [rbp-0x1C0], xmm8
+ mov rax, -384
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-0x160], rsp
+ mov qword ptr [rbp-0x248], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x158], rdi
+ mov gword ptr [rbp-0x210], rdi
mov r15, rsi
mov ebx, edx
mov rdx, rdi
- ;; size=90 bbWeight=1 PerfScore 18.33
+ ;; size=106 bbWeight=1 PerfScore 22.33
G_M38674_IG02:
mov r14, qword ptr [rdx]
test r15, r15
- je G_M38674_IG18
+ je G_M38674_IG73
test ebx, ebx
- jl G_M38674_IG19
+ jl G_M38674_IG74
mov r13d, dword ptr [r15+0x08]
mov edi, ebx
add edi, dword ptr [rdx+0x18]
cmp r13d, edi
- jl G_M38674_IG19
+ jl G_M38674_IG74
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov r12, qword ptr [rdi+0xB8]
test r12, r12
je SHORT G_M38674_IG04
;; size=57 bbWeight=1 PerfScore 18.25
G_M38674_IG03:
jmp SHORT G_M38674_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M38674_IG04:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r12, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M38674_IG05:
- mov rsi, r12
- mov rdx, gword ptr [rbp-0x158]
- mov rdx, gword ptr [rdx+0x08]
- lea rdi, [rbp-0x150]
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ mov rdi, r12
+ mov rdx, gword ptr [rbp-0x210]
+ mov rax, gword ptr [rdx+0x08]
+ mov gword ptr [rbp-0x218], rax
+ xor rsi, rsi
+ mov gword ptr [rbp-0x140], rsi
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rcx, qword ptr [rsi+0x18]
+ test rcx, rcx
+ je SHORT G_M38674_IG07
+ ;; size=46 bbWeight=1 PerfScore 12.75
+G_M38674_IG06:
+ jmp SHORT G_M38674_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M38674_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M38674_IG08:
+ mov qword ptr [rbp-0x1F8], rcx
+ mov qword ptr [rbp-0x168], rcx
+ mov rax, gword ptr [rbp-0x218]
+ test rax, rax
+ je G_M38674_IG75
+ mov gword ptr [rbp-0x160], rax
+ xor rsi, rsi
+ mov gword ptr [rbp-0x150], rsi
+ mov rsi, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rsi]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x148], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x158], rdi
+ mov rdi, gword ptr [rbp-0x160]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M38674_IG28
+ ;; size=91 bbWeight=1 PerfScore 17.00
+G_M38674_IG09:
+ mov rax, qword ptr [rbp-0x168]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M38674_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M38674_IG10:
+ jmp SHORT G_M38674_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38674_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x168]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M38674_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x208], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1B0], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M38674_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x1A8], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M38674_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M38674_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M38674_IG15:
+ jmp SHORT G_M38674_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38674_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M38674_IG17:
+ mov qword ptr [rbp-0x200], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x1A8]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M38674_IG21
+ mov rdi, qword ptr [rbp-0x1B0]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M38674_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M38674_IG18:
+ mov rdi, rax
+ jmp SHORT G_M38674_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M38674_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M38674_IG20:
+ lea rsi, [rbp-0x158]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M38674_IG21
+ mov rdx, qword ptr [rbp-0x200]
+ mov rax, gword ptr [rbp-0x158]
+ mov gword ptr [rbp-0x228], rax
+ lea rdi, [rbp-0x1A8]
+ call rdx
+ mov rdi, gword ptr [rbp-0x228]
+ mov dword ptr [rdi+0x10], eax
+ jmp G_M38674_IG27
+ ;; size=68 bbWeight=0.50 PerfScore 7.75
+G_M38674_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x158], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M38674_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x188], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M38674_IG23:
+ mov rax, qword ptr [rbp-0x168]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M38674_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M38674_IG24:
+ jmp SHORT G_M38674_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38674_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M38674_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x220], rax
+ mov rsi, gword ptr [rbp-0x218]
+ movzx rsi, byte ptr [rsi+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov rdi, qword ptr [rbp-0x208]
+ mov qword ptr [rbp-0x1E0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x188]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1E0]
+ mov rsi, gword ptr [rbp-0x220]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x158], rax
+ ;; size=146 bbWeight=0.50 PerfScore 14.62
+G_M38674_IG27:
+ lea rdi, [rbp-0x160]
+ mov rsi, qword ptr [rbp-0x168]
+ mov rdx, gword ptr [rbp-0x160]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M38674_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x130], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M38674_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x110], ymm0
+ vmovdqu ymmword ptr [rbp-0xF0], ymm0
+ vmovdqu ymmword ptr [rbp-0xD8], ymm0
+ mov dword ptr [rbp-0x138], -1
lea rdi, bword ptr [rbp-0xB8]
- lea rsi, bword ptr [rbp-0x150]
+ lea rsi, bword ptr [rbp-0x140]
mov ecx, 17
rep movsq
- ;; size=57 bbWeight=1 PerfScore 33.50
-G_M38674_IG06:
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M38674_IG30:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0xB8]
test rdi, rdi
- jne SHORT G_M38674_IG08
- jmp SHORT G_M38674_IG08
- ;; size=21 bbWeight=1 PerfScore 9.25
-G_M38674_IG07:
- mov rsi, r12
- lea rdi, [rbp-0xB8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xC8], rax
- mov qword ptr [rbp-0xC0], rdx
+ jne G_M38674_IG55
+ jmp G_M38674_IG55
+ ;; size=28 bbWeight=1 PerfScore 9.25
+G_M38674_IG31:
+ mov qword ptr [rbp-0x1B8], r12
+ mov rcx, qword ptr [rbp-0x1F8]
+ mov rdx, rcx
+ mov qword ptr [rbp-0x1C0], rdx
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M38674_IG38
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M38674_IG42
+ mov rdi, qword ptr [rdx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M38674_IG33
+ ;; size=68 bbWeight=2 PerfScore 33.00
+G_M38674_IG32:
+ jmp SHORT G_M38674_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38674_IG33:
+ mov rdi, rdx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rdx, qword ptr [rbp-0x1C0]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M38674_IG34:
+ mov r8, gword ptr [rbp-0xA0]
+ mov gword ptr [rbp-0x230], r8
+ cmp byte ptr [r8], r8b
+ mov rsi, qword ptr [rdi+0x10]
+ mov r9, qword ptr [rsi+0x10]
+ test r9, r9
+ je SHORT G_M38674_IG36
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M38674_IG35:
+ jmp SHORT G_M38674_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38674_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r9, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M38674_IG37:
+ lea rdi, [rbp-0xA8]
+ call r9
+ mov rdi, gword ptr [rbp-0x230]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rdx, qword ptr [rbp-0x1C0]
+ je G_M38674_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M38674_IG38:
+ mov rdi, qword ptr [rdx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M38674_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M38674_IG39:
+ jmp SHORT G_M38674_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38674_IG40:
+ mov rdi, rdx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M38674_IG41:
+ mov qword ptr [rbp-0x1E8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA8]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1E8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M38674_IG42:
+ mov rax, qword ptr [rbp-0x1B8]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M38674_IG44
+ ;; size=23 bbWeight=2 PerfScore 16.50
+G_M38674_IG43:
+ jmp SHORT G_M38674_IG45
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38674_IG44:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M38674_IG45:
+ mov esi, dword ptr [rbp-0x88]
+ cmp esi, 1
+ je G_M38674_IG60
+ cmp esi, 2
+ jne G_M38674_IG59
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x18]
+ test rax, rax
+ je G_M38674_IG62
+ ;; size=44 bbWeight=2 PerfScore 21.50
+G_M38674_IG46:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M38674_IG50
+ cmp gword ptr [rbp-0x58], 0
+ je G_M38674_IG52
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M38674_IG63
+ ;; size=38 bbWeight=2 PerfScore 26.50
+G_M38674_IG47:
+ mov rdx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x238], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je G_M38674_IG64
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M38674_IG48:
+ mov qword ptr [rbp-0x1D8], rax
+ ;; size=7 bbWeight=1.60 PerfScore 1.60
+G_M38674_IG49:
+ lea rdi, [rbp-0x68]
+ call r8
+ mov rdi, gword ptr [rbp-0x238]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x1D8]
+ je SHORT G_M38674_IG52
+ ;; size=26 bbWeight=2 PerfScore 19.00
+G_M38674_IG50:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M38674_IG65
+ ;; size=20 bbWeight=2 PerfScore 14.50
+G_M38674_IG51:
+ mov qword ptr [rbp-0x1F0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1F0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M38674_IG52:
+ mov rdi, gword ptr [rbp-0x50]
+ test rdi, rdi
+ je SHORT G_M38674_IG58
+ ;; size=9 bbWeight=2 PerfScore 4.50
+G_M38674_IG53:
+ vmovdqu xmm0, xmmword ptr [rdi+0x20]
+ vmovdqu xmmword ptr [rbp-0x1D0], xmm0
+ ;; size=13 bbWeight=2 PerfScore 10.00
+G_M38674_IG54:
lea edi, [rbx+0x01]
mov edx, edi
cmp ebx, r13d
- jae SHORT G_M38674_IG11
+ jae G_M38674_IG66
mov edi, ebx
shl rdi, 4
lea rdi, bword ptr [r15+rdi+0x10]
- lea rsi, bword ptr [rbp-0xC8]
+ lea rsi, bword ptr [rbp-0x1D0]
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov ebx, edx
- ;; size=73 bbWeight=2 PerfScore 25.00
-G_M38674_IG08:
+ ;; size=41 bbWeight=2 PerfScore 13.00
+G_M38674_IG55:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rsi, qword ptr [rdi+0xB8]
test rsi, rsi
- je SHORT G_M38674_IG12
- ;; size=19 bbWeight=8 PerfScore 58.00
-G_M38674_IG09:
+ je G_M38674_IG67
+ ;; size=23 bbWeight=8 PerfScore 58.00
+G_M38674_IG56:
lea rdi, [rbp-0xB8]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M38674_IG07
- ;; size=23 bbWeight=8 PerfScore 40.00
-G_M38674_IG10:
- jmp SHORT G_M38674_IG13
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M38674_IG11:
+ jne G_M38674_IG31
+ ;; size=27 bbWeight=8 PerfScore 40.00
+G_M38674_IG57:
+ jmp G_M38674_IG68
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M38674_IG58:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M38674_IG59:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M38674_IG60:
+ vmovdqu xmm0, xmmword ptr [rbp-0x78]
+ vmovdqu xmmword ptr [rbp-0x1D0], xmm0
+ ;; size=13 bbWeight=2 PerfScore 8.00
+G_M38674_IG61:
+ jmp G_M38674_IG54
+ ;; size=5 bbWeight=2 PerfScore 4.00
+G_M38674_IG62:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ jmp G_M38674_IG46
+ ;; size=20 bbWeight=0.40 PerfScore 1.30
+G_M38674_IG63:
+ mov qword ptr [rbp-0x1D8], rax
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x1D8]
+ jmp G_M38674_IG47
+ ;; size=40 bbWeight=0.40 PerfScore 2.30
+G_M38674_IG64:
+ mov qword ptr [rbp-0x1D8], rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ jmp G_M38674_IG49
+ ;; size=30 bbWeight=0.40 PerfScore 1.80
+G_M38674_IG65:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M38674_IG51
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M38674_IG66:
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M38674_IG12:
+G_M38674_IG67:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
- jmp SHORT G_M38674_IG09
- ;; size=23 bbWeight=1.60 PerfScore 6.00
-G_M38674_IG13:
+ jmp G_M38674_IG56
+ ;; size=26 bbWeight=1.60 PerfScore 6.00
+G_M38674_IG68:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0xC8]
test rax, rax
- je SHORT G_M38674_IG15
+ je SHORT G_M38674_IG70
;; size=19 bbWeight=1 PerfScore 7.25
-G_M38674_IG14:
- jmp SHORT G_M38674_IG16
+G_M38674_IG69:
+ jmp SHORT G_M38674_IG71
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M38674_IG15:
+G_M38674_IG70:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M38674_IG16:
+G_M38674_IG71:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M38674_IG17:
- add rsp, 312
+G_M38674_IG72:
+ vzeroupper
+ add rsp, 600
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M38674_IG18:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M38674_IG73:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M38674_IG19:
+G_M38674_IG74:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M38674_IG20:
+G_M38674_IG75:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M38674_IG76:
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+0x160]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M38674_IG21:
- mov rdx, gword ptr [rbp-0x158]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x280]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M38674_IG77:
+ mov rdx, gword ptr [rbp-0x210]
mov r14, qword ptr [rdx]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0xC8]
test rax, rax
- je SHORT G_M38674_IG22
- jmp SHORT G_M38674_IG23
+ je SHORT G_M38674_IG78
+ jmp SHORT G_M38674_IG79
;; size=34 bbWeight=0 PerfScore 0.00
-G_M38674_IG22:
+G_M38674_IG78:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M38674_IG23:
+G_M38674_IG79:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M38674_IG24:
- add rsp, 8
+G_M38674_IG80:
+ vzeroupper
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 633, prolog size 90, PerfScore 229.43, instruction count 159, allocated bytes for code 633 (MethodHash=010268ed) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
+; Total bytes of code 2235, prolog size 106, PerfScore 649.77, instruction count 485, allocated bytes for code 2235 (MethodHash=010268ed) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
1559 (21.70 % of base) - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this
; Assembly listing for method System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte: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; 137 single block inlinees; 50 inlinees without PGO data
+; 0 inlinees with PGO data; 173 single block inlinees; 71 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T14] ( 25, 19.50) ref -> r14 this class-hnd single-def <System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]>
-; V01 arg1 [V01,T00] ( 49,143 ) byref -> rbx single-def
-; V02 arg2 [V02,T133] ( 3, 2.50) ref -> [rbp-0x6B8] class-hnd single-def <System.Type>
-; V03 arg3 [V03,T21] ( 13, 19 ) ref -> r13 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V04 arg4 [V04,T01] ( 76, 74 ) byref -> r15 single-def
-; V05 arg5 [V05,T100] ( 9, 5.50) byref -> [rbp-0x6C0] single-def
-; V06 loc0 [V06,T99] ( 13, 7.50) ref -> [rbp-0x6C8] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-; V07 loc1 [V07,T43] ( 14, 15.62) ref -> rbx class-hnd <System.Object>
-; V08 loc2 [V08,T35] ( 12, 16.50) ref -> [rbp-0x6D0] class-hnd exact spill-single-def <System.Text.Json.ArgumentState>
+; V00 this [V00,T19] ( 24, 19 ) ref -> r13 this class-hnd single-def <System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 72,238.50) byref -> rbx single-def
+; V02 arg2 [V02,T160] ( 3, 2.50) ref -> [rbp-0x880] class-hnd single-def <System.Type>
+; V03 arg3 [V03,T18] ( 14, 24.50) ref -> r14 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V04 arg4 [V04,T01] ( 82, 86.50) byref -> r15 single-def
+; V05 arg5 [V05,T117] ( 9, 5.50) byref -> [rbp-0x888] single-def
+; V06 loc0 [V06,T69] ( 19, 10.50) ref -> [rbp-0x890] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V07 loc1 [V07,T51] ( 14, 15.62) ref -> [rbp-0x898] class-hnd <System.Object>
+; V08 loc2 [V08,T40] ( 12, 16.50) ref -> [rbp-0x8A0] class-hnd exact spill-single-def <System.Text.Json.ArgumentState>
;* V09 loc3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V10 loc4 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Buffers.ReadOnlySequence`1[ubyte]>
-; V11 loc5 [V11,T202] ( 4, 1.62) ref -> [rbp-0x6D8] class-hnd spill-single-def <System.Object>
-; V12 loc6 [V12 ] ( 22, 86 ) struct (192) [rbp-0xF0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.Json.Utf8JsonReader>
-; V13 loc7 [V13,T47] ( 4, 12.50) ref -> [rbp-0x6E0] class-hnd exact spill-single-def <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-; V14 loc8 [V14,T223] ( 2, 1 ) ref -> r13 class-hnd exact single-def <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-;* V15 loc9 [V15,T232] ( 0, 0 ) int -> zero-ref
-; V16 loc10 [V16,T16] ( 8, 24 ) ref -> [rbp-0x6E8] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
-; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0xF8] spill-single-def
-; V18 loc12 [V18,T81] ( 2, 8 ) ref -> [rbp-0x6F0] class-hnd spill-single-def <ubyte[]>
-; V19 loc13 [V19,T61] ( 3, 10 ) ref -> [rbp-0x6F8] class-hnd spill-single-def <System.String>
-; V20 loc14 [V20,T63] ( 3, 10 ) ubyte -> [rbp-0xFC] spill-single-def
-; V21 loc15 [V21,T163] ( 6, 3 ) ref -> [rbp-0x700] class-hnd spill-single-def <System.Text.Json.Serialization.JsonConverter>
-; V22 loc16 [V22,T206] ( 3, 1.50) ubyte -> r13
+; V11 loc5 [V11,T71] ( 8, 10.12) ref -> [rbp-0x8A8] class-hnd spill-single-def <System.Object>
+; V12 loc6 [V12 ] ( 17, 78 ) struct (192) [rbp-0xF0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.Json.Utf8JsonReader>
+; V13 loc7 [V13,T56] ( 4, 12.50) ref -> [rbp-0x8B0] class-hnd exact spill-single-def <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+; V14 loc8 [V14,T256] ( 2, 1 ) ref -> r14 class-hnd exact single-def <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+;* V15 loc9 [V15,T266] ( 0, 0 ) int -> zero-ref
+; V16 loc10 [V16,T21] ( 8, 24 ) ref -> [rbp-0x8B8] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+; V17 loc11 [V17,T33] ( 9, 18 ) long -> [rbp-0xF8] spill-single-def
+; V18 loc12 [V18,T99] ( 2, 8 ) ref -> [rbp-0x8C0] class-hnd spill-single-def <ubyte[]>
+; V19 loc13 [V19,T75] ( 3, 10 ) ref -> rbx class-hnd <System.String>
+; V20 loc14 [V20,T77] ( 3, 10 ) ubyte -> [rbp-0xFC] spill-single-def
+; V21 loc15 [V21,T197] ( 6, 3 ) ref -> [rbp-0x8C8] class-hnd spill-single-def <System.Text.Json.Serialization.JsonConverter>
+; V22 loc16 [V22,T240] ( 3, 1.50) ubyte -> r14
; V23 loc17 [V23 ] ( 2, 1 ) ref -> [rbp-0x108] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V24 loc18 [V24,T224] ( 2, 1 ) ref -> rsi class-hnd single-def <System.Object>
-; V25 loc19 [V25,T225] ( 2, 1 ) ref -> r13 class-hnd exact single-def <System.ValueTuple`3[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Object,System.String][]>
-;* V26 loc20 [V26,T233] ( 0, 0 ) int -> zero-ref
-; V27 loc21 [V27,T30] ( 8, 18 ) ref -> [rbp-0x708] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
-; V28 loc22 [V28,T34] ( 8, 17 ) ref -> [rbp-0x710] class-hnd spill-single-def <System.Object>
-; V29 loc23 [V29,T49] ( 4, 12 ) ref -> [rbp-0x718] class-hnd spill-single-def <System.String>
+; V24 loc18 [V24,T257] ( 2, 1 ) ref -> rsi class-hnd single-def <System.Object>
+; V25 loc19 [V25,T258] ( 2, 1 ) ref -> r14 class-hnd exact single-def <System.ValueTuple`3[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Object,System.String][]>
+;* V26 loc20 [V26,T267] ( 0, 0 ) int -> zero-ref
+; V27 loc21 [V27,T34] ( 8, 18 ) ref -> [rbp-0x8D0] class-hnd spill-single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+; V28 loc22 [V28,T39] ( 8, 17 ) ref -> [rbp-0x8D8] class-hnd spill-single-def <System.Object>
+; V29 loc23 [V29,T58] ( 4, 12 ) ref -> [rbp-0x8E0] class-hnd spill-single-def <System.String>
;* V30 loc24 [V30 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V31 loc25 [V31,T101] ( 3, 6 ) ref -> r12 class-hnd <System.Object>
-; V32 loc26 [V32,T102] ( 3, 6 ) ref -> [rbp-0x720] class-hnd spill-single-def <System.Collections.Generic.IDictionary`2[System.String,System.Text.Json.JsonElement]>
+; V31 loc25 [V31,T118] ( 3, 6 ) ref -> r12 class-hnd <System.Object>
+; V32 loc26 [V32,T119] ( 3, 6 ) ref -> [rbp-0x8E8] class-hnd spill-single-def <System.Collections.Generic.IDictionary`2[System.String,System.Text.Json.JsonElement]>
; V33 OutArgs [V33 ] ( 1, 1 ) struct (80) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V34 tmp1 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
;* V35 tmp2 [V35 ] ( 0, 0 ) ref -> zero-ref single-def
-; V36 tmp3 [V36,T207] ( 2, 1 ) int -> rax
-; V37 tmp4 [V37,T136] ( 4, 4 ) ref -> rcx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+; V36 tmp3 [V36,T241] ( 2, 1 ) int -> rax
+; V37 tmp4 [V37,T164] ( 4, 4 ) ref -> rdx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
;* V38 tmp5 [V38 ] ( 0, 0 ) ref -> zero-ref single-def
-; V39 tmp6 [V39,T137] ( 4, 4 ) ref -> rdx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+; V39 tmp6 [V39,T165] ( 4, 4 ) ref -> r8 class-hnd single-def "dup spill" <System.Action`1[System.Object]>
;* V40 tmp7 [V40 ] ( 0, 0 ) ref -> zero-ref single-def
;* V41 tmp8 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V42 tmp9 [V42,T138] ( 4, 4 ) ref -> rcx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+; V42 tmp9 [V42,T166] ( 4, 4 ) ref -> rcx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
;* V43 tmp10 [V43 ] ( 0, 0 ) ref -> zero-ref single-def
;* V44 tmp11 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V45 tmp12 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
;* V46 tmp13 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
-; V47 tmp14 [V47,T208] ( 2, 1 ) int -> rax
-; V48 tmp15 [V48,T139] ( 4, 4 ) ref -> rcx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+; V47 tmp14 [V47,T242] ( 2, 1 ) int -> rax
+; V48 tmp15 [V48,T167] ( 4, 4 ) ref -> rdx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
;* V49 tmp16 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
; V50 tmp17 [V50 ] ( 3, 12 ) struct (192) [rbp-0x1C8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Text.Json.Utf8JsonReader>
;* V51 tmp18 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V52 tmp19 [V52,T77] ( 3, 8 ) struct (192) [rbp-0x288] do-not-enreg[S] must-init <System.Text.Json.Utf8JsonReader>
+; V52 tmp19 [V52,T95] ( 3, 8 ) struct (192) [rbp-0x288] do-not-enreg[S] must-init <System.Text.Json.Utf8JsonReader>
;* V53 tmp20 [V53 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V54 tmp21 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V55 tmp22 [V55 ] ( 3, 12 ) struct (192) [rbp-0x348] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Text.Json.Utf8JsonReader>
;* V56 tmp23 [V56 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Buffers.ReadOnlySequence`1[ubyte]>
;* V57 tmp24 [V57 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V58 tmp25 [V58,T184] ( 4, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
-;* V59 tmp26 [V59 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-;* V60 tmp27 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V61 tmp28 [V61,T132] ( 5, 5 ) byref -> rsi single-def "Inlining Arg"
-; V62 tmp29 [V62,T209] ( 3, 1.50) long -> rdi "Inline return value spill temp"
-; V63 tmp30 [V63,T203] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V64 tmp31 [V64,T204] ( 3, 1.50) ref -> [rbp-0x728] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
-; V65 tmp32 [V65,T210] ( 3, 1.50) int -> [rbp-0x34C] spill-single-def "Inline stloc first use temp"
-; V66 tmp33 [V66,T211] ( 3, 1.50) int -> [rbp-0x350] spill-single-def "Inline stloc first use temp"
-; V67 tmp34 [V67,T226] ( 2, 1 ) ref -> [rbp-0x730] class-hnd spill-single-def "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V68 tmp35 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V69 tmp36 [V69 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-;* V70 tmp37 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V58 tmp25 [V58,T220] ( 4, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+; V59 tmp26 [V59,T168] ( 4, 4 ) ref -> rdx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+;* V60 tmp27 [V60 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V61 tmp28 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V62 tmp29 [V62,T169] ( 4, 4 ) ref -> rcx class-hnd single-def "dup spill" <System.Action`1[System.Object]>
+;* V63 tmp30 [V63 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V64 tmp31 [V64 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V65 tmp32 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+; V66 tmp33 [V66 ] ( 2, 8 ) ubyte -> [rbp-0x350] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V67 tmp34 [V67,T52] ( 5, 14 ) ref -> [rbp-0x8F0] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+;* V68 tmp35 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V69 tmp36 [V69,T224] ( 2, 2 ) byref -> [rbp-0x8F8] spill-single-def "Inlining Arg"
+; V70 tmp37 [V70,T198] ( 3, 3 ) ref -> [rbp-0x900] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
;* V71 tmp38 [V71 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V72 tmp39 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V73 tmp40 [V73,T91] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V74 tmp41 [V74 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V75 tmp42 [V75 ] ( 4, 12.50) ref -> [rbp-0x358] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.Json.Serialization.Metadata.JsonParameterInfo>
-; V76 tmp43 [V76 ] ( 1, 4 ) ubyte -> [rbp-0x360] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V77 tmp44 [V77,T62] ( 3, 10 ) ref -> [rbp-0x738] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
-; V78 tmp45 [V78,T23] ( 10, 20 ) ref -> [rbp-0x740] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Text.Json.ArgumentState>
-; V79 tmp46 [V79,T73] ( 4, 8 ) int -> [rbp-0x364] spill-single-def "Inline stloc first use temp"
-; V80 tmp47 [V80,T50] ( 3, 12 ) ref -> [rbp-0x748] class-hnd exact spill-single-def "impAppendStmt" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-; V81 tmp48 [V81,T92] ( 2, 8 ) struct (56) [rbp-0x3A0] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <System.Text.Json.JsonReaderState>
-; V82 tmp49 [V82,T28] ( 5, 20 ) struct (88) [rbp-0x3F8] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]>
-; V83 tmp50 [V83,T48] ( 6, 12 ) ref -> [rbp-0x750] class-hnd spill-single-def "Inline stloc first use temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-; V84 tmp51 [V84,T140] ( 2, 4 ) ref -> [rbp-0x758] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-; V85 tmp52 [V85,T82] ( 2, 8 ) ref -> rdi class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]>
-;* V86 tmp53 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V87 tmp54 [V87,T161] ( 8, 3 ) ref -> [rbp-0x760] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-;* V88 tmp55 [V88 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V89 tmp56 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
-;* V90 tmp57 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonSerializerOptions>
-;* V91 tmp58 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonParameterInfo]>
-;* V92 tmp59 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V93 tmp60 [V93,T189] ( 2, 2 ) byref -> [rbp-0x768] spill-single-def "Inlining Arg"
-; V94 tmp61 [V94,T164] ( 3, 3 ) ref -> [rbp-0x770] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
-;* V95 tmp62 [V95 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V96 tmp63 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V97 tmp64 [V97 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-;* V98 tmp65 [V98 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V99 tmp66 [V99 ] ( 2, 4 ) struct (24) [rbp-0x410] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
-;* V100 tmp67 [V100 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ubyte]>
-;* V101 tmp68 [V101 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-;* V102 tmp69 [V102 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V103 tmp70 [V103,T36] ( 4, 16 ) ref -> rax class-hnd "Inlining Arg" <ubyte[]>
-;* V104 tmp71 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V105 tmp72 [V105,T103] ( 3, 6 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-; V106 tmp73 [V106,T37] ( 4, 16 ) byref -> rdi "Inlining Arg"
-;* V107 tmp74 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V108 tmp75 [V108,T235] ( 3, 0 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-; V109 tmp76 [V109,T234] ( 4, 0 ) byref -> rdi "Inlining Arg"
-;* V110 tmp77 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V111 tmp78 [V111,T240] ( 2, 0 ) byref -> r15 "impAppendStmt"
-;* V112 tmp79 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V113 tmp80 [V113,T236] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
-; V114 tmp81 [V114,T237] ( 3, 0 ) ref -> r13 class-hnd exact "Inline stloc first use temp" <ubyte[]>
-; V115 tmp82 [V115,T241] ( 2, 0 ) byref -> rdi "Inlining Arg"
-;* V116 tmp83 [V116 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V117 tmp84 [V117,T248] ( 2, 0 ) long -> rdx "Inlining Arg"
-;* V118 tmp85 [V118 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V119 tmp86 [V119,T242] ( 2, 0 ) byref -> rbx "impAppendStmt"
-; V120 tmp87 [V120 ] ( 2, 0 ) struct (192) [rbp-0x4D0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
-; V121 tmp88 [V121,T243] ( 2, 0 ) byref -> r13 "impAppendStmt"
-;* V122 tmp89 [V122 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V123 tmp90 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-; V124 tmp91 [V124,T238] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
-; V125 tmp92 [V125,T239] ( 3, 0 ) ref -> r15 class-hnd exact "Inline stloc first use temp" <ubyte[]>
-; V126 tmp93 [V126,T244] ( 2, 0 ) byref -> rdi "Inlining Arg"
-;* V127 tmp94 [V127 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V128 tmp95 [V128,T249] ( 2, 0 ) long -> rdx "Inlining Arg"
-;* V129 tmp96 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V130 tmp97 [V130 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V131 tmp98 [V131,T64] ( 3, 10 ) int -> rax "Inline stloc first use temp"
-; V132 tmp99 [V132,T65] ( 3, 10 ) ubyte -> rdi "Inline stloc first use temp"
-;* V133 tmp100 [V133,T142] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V134 tmp101 [V134,T02] ( 5, 40 ) byref -> rsi "Inlining Arg"
-;* V135 tmp102 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V136 tmp103 [V136,T40] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonParameterInfo>
-;* V137 tmp104 [V137 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V138 tmp105 [V138,T143] ( 2, 4 ) struct (192) [rbp-0x590] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
-;* V139 tmp106 [V139 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V140 tmp107 [V140,T108] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
-;* V141 tmp108 [V141,T144] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V142 tmp109 [V142,T31] ( 2, 18 ) int -> [rbp-0x594] spill-single-def "Inline stloc first use temp"
+;* V73 tmp40 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+;* V74 tmp41 [V74 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
+; V75 tmp42 [V75 ] ( 2, 4 ) struct (24) [rbp-0x368] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
+;* V76 tmp43 [V76 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ubyte]>
+;* V77 tmp44 [V77 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+;* V78 tmp45 [V78 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
+; V79 tmp46 [V79,T41] ( 4, 16 ) ref -> rax class-hnd "Inlining Arg" <ubyte[]>
+;* V80 tmp47 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+; V81 tmp48 [V81,T120] ( 3, 6 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V82 tmp49 [V82,T42] ( 4, 16 ) byref -> rdi "Inlining Arg"
+;* V83 tmp50 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V84 tmp51 [V84,T270] ( 3, 0 ) ref -> rax class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V85 tmp52 [V85,T268] ( 4, 0 ) byref -> rdi "Inlining Arg"
+;* V86 tmp53 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V87 tmp54 [V87,T280] ( 2, 0 ) byref -> r15 "impAppendStmt"
+;* V88 tmp55 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
+; V89 tmp56 [V89,T271] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V90 tmp57 [V90,T272] ( 3, 0 ) ref -> r14 class-hnd exact "Inline stloc first use temp" <ubyte[]>
+; V91 tmp58 [V91,T281] ( 2, 0 ) byref -> rdi "Inlining Arg"
+;* V92 tmp59 [V92 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V93 tmp60 [V93,T294] ( 2, 0 ) long -> rdx "Inlining Arg"
+;* V94 tmp61 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V95 tmp62 [V95,T282] ( 2, 0 ) byref -> r14 "impAppendStmt"
+; V96 tmp63 [V96 ] ( 2, 0 ) struct (192) [rbp-0x428] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
+; V97 tmp64 [V97,T283] ( 2, 0 ) byref -> r14 "impAppendStmt"
+;* V98 tmp65 [V98 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V99 tmp66 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V100 tmp67 [V100,T273] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V101 tmp68 [V101,T274] ( 3, 0 ) ref -> r15 class-hnd exact "Inline stloc first use temp" <ubyte[]>
+; V102 tmp69 [V102,T284] ( 2, 0 ) byref -> rdi "Inlining Arg"
+;* V103 tmp70 [V103 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V104 tmp71 [V104,T295] ( 2, 0 ) long -> rdx "Inlining Arg"
+; V105 tmp72 [V105,T67] ( 2, 12 ) ubyte -> [rbp-0x42C] spill-single-def "Inlining Arg"
+;* V106 tmp73 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V107 tmp74 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V108 tmp75 [V108,T172] ( 2, 4 ) struct (192) [rbp-0x4F0] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
+;* V109 tmp76 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V110 tmp77 [V110,T127] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
+;* V111 tmp78 [V111,T173] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V112 tmp79 [V112,T35] ( 2, 18 ) int -> [rbp-0x4F4] spill-single-def "Inline stloc first use temp"
+;* V113 tmp80 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V114 tmp81 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V115 tmp82 [V115 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V116 tmp83 [V116,T128] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V117 tmp84 [V117,T129] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V118 tmp85 [V118,T174] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V119 tmp86 [V119 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V120 tmp87 [V120,T06] ( 3, 40 ) int -> rdi "Inline stloc first use temp"
+; V121 tmp88 [V121,T07] ( 3, 40 ) ubyte -> rsi "Inline stloc first use temp"
+;* V122 tmp89 [V122,T48] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V123 tmp90 [V123 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V124 tmp91 [V124,T130] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V125 tmp92 [V125,T131] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V126 tmp93 [V126,T175] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V127 tmp94 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V128 tmp95 [V128,T02] ( 5, 40 ) byref -> rsi "Inlining Arg"
+; V129 tmp96 [V129,T199] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
+;* V130 tmp97 [V130 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
+;* V131 tmp98 [V131 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
+; V132 tmp99 [V132,T159] ( 5, 5 ) byref -> rsi single-def "Inlining Arg"
+; V133 tmp100 [V133,T243] ( 3, 1.50) long -> rdi "Inline return value spill temp"
+; V134 tmp101 [V134,T237] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V135 tmp102 [V135,T238] ( 3, 1.50) ref -> [rbp-0x908] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
+; V136 tmp103 [V136,T244] ( 3, 1.50) int -> [rbp-0x4F8] spill-single-def "Inline stloc first use temp"
+; V137 tmp104 [V137,T245] ( 3, 1.50) int -> [rbp-0x4FC] spill-single-def "Inline stloc first use temp"
+; V138 tmp105 [V138,T259] ( 2, 1 ) ref -> [rbp-0x910] class-hnd spill-single-def "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V139 tmp106 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V140 tmp107 [V140 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+;* V141 tmp108 [V141 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V142 tmp109 [V142 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V143 tmp110 [V143 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V144 tmp111 [V144 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V145 tmp112 [V145 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V146 tmp113 [V146,T109] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V147 tmp114 [V147,T110] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
-;* V148 tmp115 [V148,T145] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V149 tmp116 [V149 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V150 tmp117 [V150,T05] ( 3, 40 ) int -> rdi "Inline stloc first use temp"
-; V151 tmp118 [V151,T06] ( 3, 40 ) ubyte -> rsi "Inline stloc first use temp"
-;* V152 tmp119 [V152,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V153 tmp120 [V153 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V154 tmp121 [V154,T111] ( 3, 6 ) int -> rax "Inline stloc first use temp"
-; V155 tmp122 [V155,T112] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
-;* V156 tmp123 [V156,T146] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V157 tmp124 [V157,T11] ( 4, 32 ) byref -> rdi "Inlining Arg"
-; V158 tmp125 [V158,T12] ( 4, 32 ) byref -> rsi "Inlining Arg"
-;* V159 tmp126 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-;* V160 tmp127 [V160 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonPropertyInfo]>
-;* V161 tmp128 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V162 tmp129 [V162,T113] ( 3, 6 ) int -> rsi "Inline return value spill temp"
-; V163 tmp130 [V163,T55] ( 3, 12 ) int -> rsi "Inlining Arg"
-; V164 tmp131 [V164,T26] ( 5, 20 ) ref -> [rbp-0x778] class-hnd exact spill-single-def "Inlining Arg" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
-;* V165 tmp132 [V165 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V166 tmp133 [V166,T114] ( 2, 4 ) int -> rdi "Inline return value spill temp"
-;* V167 tmp134 [V167 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V168 tmp135 [V168,T115] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
-; V169 tmp136 [V169,T83] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V170 tmp137 [V170,T93] ( 2, 8 ) long -> rdx "Inlining Arg"
-; V171 tmp138 [V171,T84] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" <ubyte[]>
-; V172 tmp139 [V172,T85] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
-;* V173 tmp140 [V173 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V174 tmp141 [V174 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V175 tmp142 [V175,T66] ( 3, 10 ) int -> rax "Inline stloc first use temp"
-; V176 tmp143 [V176,T67] ( 3, 10 ) ubyte -> rdi "Inline stloc first use temp"
-;* V177 tmp144 [V177,T147] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V178 tmp145 [V178,T03] ( 5, 40 ) byref -> rsi "Inlining Arg"
-; V179 tmp146 [V179,T78] ( 3, 8 ) long -> registers "Inline return value spill temp"
-;* V180 tmp147 [V180 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-;* V181 tmp148 [V181 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-; V182 tmp149 [V182,T79] ( 3, 8 ) int -> [rbp-0x598] spill-single-def "Inline stloc first use temp"
-; V183 tmp150 [V183,T80] ( 3, 8 ) int -> [rbp-0x59C] spill-single-def "Inline stloc first use temp"
-;* V184 tmp151 [V184,T199] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V185 tmp152 [V185 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V186 tmp153 [V186 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-;* V187 tmp154 [V187 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V188 tmp155 [V188 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V189 tmp156 [V189,T60] ( 5, 10 ) struct (24) [rbp-0x5B8] do-not-enreg[S] must-init "Inline return value spill temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
-;* V190 tmp157 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.SequencePosition>
-;* V191 tmp158 [V191 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.SequencePosition>
-;* V192 tmp159 [V192 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-;* V193 tmp160 [V193 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-; V194 tmp161 [V194,T74] ( 4, 8 ) int -> [rbp-0x5BC] spill-single-def "Inline stloc first use temp"
-; V195 tmp162 [V195,T116] ( 3, 6 ) int -> [rbp-0x5C0] spill-single-def "Inline stloc first use temp"
-;* V196 tmp163 [V196 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.SequencePosition>
-;* V197 tmp164 [V197,T200] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V198 tmp165 [V198 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
-; V199 tmp166 [V199,T75] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
-;* V200 tmp167 [V200 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.SequencePosition>
-;* V201 tmp168 [V201 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V202 tmp169 [V202 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V203 tmp170 [V203 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V204 tmp171 [V204 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
-;* V205 tmp172 [V205 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
-;* V206 tmp173 [V206 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
-; V207 tmp174 [V207,T94] ( 2, 8 ) int -> r11 "Inlining Arg"
-;* V208 tmp175 [V208 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V209 tmp176 [V209,T39] ( 4, 16 ) int -> rdi "Inlining Arg"
-;* V210 tmp177 [V210 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V211 tmp178 [V211,T86] ( 2, 8 ) byref -> rsi "Inlining Arg"
-; V212 tmp179 [V212,T95] ( 2, 8 ) int -> r11 "Inlining Arg"
-;* V213 tmp180 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V214 tmp181 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V215 tmp182 [V215,T148] ( 2, 4 ) struct (192) [rbp-0x680] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
-;* V216 tmp183 [V216 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V217 tmp184 [V217,T117] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
-;* V218 tmp185 [V218,T149] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V219 tmp186 [V219,T32] ( 2, 18 ) int -> [rbp-0x684] spill-single-def "Inline stloc first use temp"
-;* V220 tmp187 [V220 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V221 tmp188 [V221 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V222 tmp189 [V222,T118] ( 3, 6 ) int -> rax
-;* V223 tmp190 [V223 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V224 tmp191 [V224 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
-;* V225 tmp192 [V225 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V226 tmp193 [V226,T119] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V227 tmp194 [V227,T120] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
-;* V228 tmp195 [V228,T150] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V229 tmp196 [V229 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V230 tmp197 [V230,T07] ( 3, 40 ) int -> rdi "Inline stloc first use temp"
-; V231 tmp198 [V231,T08] ( 3, 40 ) ubyte -> rsi "Inline stloc first use temp"
-;* V232 tmp199 [V232,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V233 tmp200 [V233 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V234 tmp201 [V234,T121] ( 3, 6 ) int -> rax "Inline stloc first use temp"
-; V235 tmp202 [V235,T122] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
-;* V236 tmp203 [V236,T151] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V237 tmp204 [V237 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V238 tmp205 [V238,T04] ( 5, 40 ) byref -> rdi "Inlining Arg"
-; V239 tmp206 [V239,T227] ( 2, 1 ) byref -> rdi single-def "Inline stloc first use temp"
-; V240 tmp207 [V240,T228] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-; V241 tmp208 [V241,T190] ( 2, 2 ) byref -> r12 single-def "impAppendStmt"
-; V242 tmp209 [V242,T229] ( 2, 1 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-;* V243 tmp210 [V243 ] ( 0, 0 ) byref -> zero-ref
-; V244 tmp211 [V244,T230] ( 2, 1 ) byref -> r15 single-def
-; V245 tmp212 [V245,T231] ( 2, 1 ) int -> rdi
-; V246 tmp213 [V246,T185] ( 4, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
-; V247 tmp214 [V247,T191] ( 2, 2 ) byref -> [rbp-0x780] single-def "Inlining Arg"
-; V248 tmp215 [V248,T165] ( 3, 3 ) ref -> [rbp-0x788] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
-;* V249 tmp216 [V249 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V250 tmp217 [V250,T162] ( 8, 3 ) ref -> [rbp-0x790] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-;* V251 tmp218 [V251 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V252 tmp219 [V252 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
-;* V253 tmp220 [V253 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonSerializerOptions>
-;* V254 tmp221 [V254 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonParameterInfo]>
-;* V255 tmp222 [V255 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V256 tmp223 [V256,T192] ( 2, 2 ) byref -> [rbp-0x798] spill-single-def "Inlining Arg"
-; V257 tmp224 [V257,T166] ( 3, 3 ) ref -> [rbp-0x7A0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
+;* V144 tmp111 [V144,T109] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V145 tmp112 [V145 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+; V146 tmp113 [V146 ] ( 4, 12.50) ref -> [rbp-0x508] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.Json.Serialization.Metadata.JsonParameterInfo>
+; V147 tmp114 [V147 ] ( 1, 4 ) ubyte -> [rbp-0x510] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V148 tmp115 [V148,T76] ( 3, 10 ) ref -> [rbp-0x918] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+; V149 tmp116 [V149,T27] ( 10, 20 ) ref -> [rbp-0x920] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Text.Json.ArgumentState>
+; V150 tmp117 [V150,T90] ( 4, 8 ) int -> [rbp-0x514] spill-single-def "Inline stloc first use temp"
+; V151 tmp118 [V151,T59] ( 3, 12 ) ref -> [rbp-0x928] class-hnd exact spill-single-def "impAppendStmt" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+; V152 tmp119 [V152,T110] ( 2, 8 ) struct (56) [rbp-0x550] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <System.Text.Json.JsonReaderState>
+; V153 tmp120 [V153,T32] ( 5, 20 ) struct (88) [rbp-0x5A8] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]>
+; V154 tmp121 [V154,T57] ( 6, 12 ) ref -> [rbp-0x930] class-hnd spill-single-def "Inline stloc first use temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+; V155 tmp122 [V155,T170] ( 2, 4 ) ref -> [rbp-0x938] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+; V156 tmp123 [V156,T100] ( 2, 8 ) ref -> rdi class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]>
+;* V157 tmp124 [V157 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V158 tmp125 [V158,T195] ( 8, 3 ) ref -> [rbp-0x940] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+;* V159 tmp126 [V159 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V160 tmp127 [V160 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
+;* V161 tmp128 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonSerializerOptions>
+;* V162 tmp129 [V162 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonParameterInfo]>
+;* V163 tmp130 [V163 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V164 tmp131 [V164,T225] ( 2, 2 ) byref -> [rbp-0x948] spill-single-def "Inlining Arg"
+; V165 tmp132 [V165,T200] ( 3, 3 ) ref -> [rbp-0x950] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
+;* V166 tmp133 [V166 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V167 tmp134 [V167 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V168 tmp135 [V168 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+;* V169 tmp136 [V169 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
+; V170 tmp137 [V170 ] ( 2, 4 ) struct (24) [rbp-0x5C0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
+;* V171 tmp138 [V171 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ubyte]>
+;* V172 tmp139 [V172 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+;* V173 tmp140 [V173 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
+; V174 tmp141 [V174,T43] ( 4, 16 ) ref -> rax class-hnd "Inlining Arg" <ubyte[]>
+;* V175 tmp142 [V175 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+; V176 tmp143 [V176,T121] ( 3, 6 ) ref -> r10 class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V177 tmp144 [V177,T44] ( 4, 16 ) byref -> rdi "Inlining Arg"
+;* V178 tmp145 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V179 tmp146 [V179,T275] ( 3, 0 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V180 tmp147 [V180,T269] ( 4, 0 ) byref -> rdi "Inlining Arg"
+;* V181 tmp148 [V181 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V182 tmp149 [V182,T285] ( 2, 0 ) byref -> r15 "impAppendStmt"
+;* V183 tmp150 [V183 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
+; V184 tmp151 [V184,T276] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V185 tmp152 [V185,T277] ( 3, 0 ) ref -> r14 class-hnd exact "Inline stloc first use temp" <ubyte[]>
+; V186 tmp153 [V186,T286] ( 2, 0 ) byref -> rdi "Inlining Arg"
+;* V187 tmp154 [V187 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V188 tmp155 [V188,T296] ( 2, 0 ) long -> rdx "Inlining Arg"
+;* V189 tmp156 [V189 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V190 tmp157 [V190,T287] ( 2, 0 ) byref -> rbx "impAppendStmt"
+; V191 tmp158 [V191 ] ( 2, 0 ) struct (192) [rbp-0x680] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
+; V192 tmp159 [V192,T288] ( 2, 0 ) byref -> r14 "impAppendStmt"
+;* V193 tmp160 [V193 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V194 tmp161 [V194 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V195 tmp162 [V195,T278] ( 3, 0 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V196 tmp163 [V196,T279] ( 3, 0 ) ref -> r15 class-hnd exact "Inline stloc first use temp" <ubyte[]>
+; V197 tmp164 [V197,T289] ( 2, 0 ) byref -> rdi "Inlining Arg"
+;* V198 tmp165 [V198 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V199 tmp166 [V199,T297] ( 2, 0 ) long -> rdx "Inlining Arg"
+;* V200 tmp167 [V200 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V201 tmp168 [V201 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V202 tmp169 [V202,T78] ( 3, 10 ) int -> rax "Inline stloc first use temp"
+; V203 tmp170 [V203,T79] ( 3, 10 ) ubyte -> rdi "Inline stloc first use temp"
+;* V204 tmp171 [V204,T176] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V205 tmp172 [V205,T03] ( 5, 40 ) byref -> rsi "Inlining Arg"
+;* V206 tmp173 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V207 tmp174 [V207,T47] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonParameterInfo>
+;* V208 tmp175 [V208 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V209 tmp176 [V209,T177] ( 2, 4 ) struct (192) [rbp-0x740] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
+;* V210 tmp177 [V210 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V211 tmp178 [V211,T132] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
+;* V212 tmp179 [V212,T178] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V213 tmp180 [V213,T36] ( 2, 18 ) int -> [rbp-0x744] spill-single-def "Inline stloc first use temp"
+;* V214 tmp181 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V215 tmp182 [V215 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V216 tmp183 [V216 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V217 tmp184 [V217,T133] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V218 tmp185 [V218,T134] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V219 tmp186 [V219,T179] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V220 tmp187 [V220 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V221 tmp188 [V221,T08] ( 3, 40 ) int -> rdi "Inline stloc first use temp"
+; V222 tmp189 [V222,T09] ( 3, 40 ) ubyte -> rsi "Inline stloc first use temp"
+;* V223 tmp190 [V223,T49] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V224 tmp191 [V224 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V225 tmp192 [V225,T135] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V226 tmp193 [V226,T136] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V227 tmp194 [V227,T180] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V228 tmp195 [V228,T16] ( 4, 32 ) byref -> rdi "Inlining Arg"
+; V229 tmp196 [V229,T17] ( 4, 32 ) byref -> rsi "Inlining Arg"
+;* V230 tmp197 [V230 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+;* V231 tmp198 [V231 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonPropertyInfo]>
+;* V232 tmp199 [V232 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V233 tmp200 [V233,T137] ( 3, 6 ) int -> rsi "Inline return value spill temp"
+; V234 tmp201 [V234,T64] ( 3, 12 ) int -> rsi "Inlining Arg"
+; V235 tmp202 [V235,T30] ( 5, 20 ) ref -> [rbp-0x958] class-hnd exact spill-single-def "Inlining Arg" <System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String][]>
+;* V236 tmp203 [V236 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V237 tmp204 [V237,T138] ( 2, 4 ) int -> rdi "Inline return value spill temp"
+;* V238 tmp205 [V238 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V239 tmp206 [V239,T139] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
+; V240 tmp207 [V240,T101] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V241 tmp208 [V241,T111] ( 2, 8 ) long -> rdx "Inlining Arg"
+; V242 tmp209 [V242,T102] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" <ubyte[]>
+; V243 tmp210 [V243,T103] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
+;* V244 tmp211 [V244 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V245 tmp212 [V245 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V246 tmp213 [V246,T80] ( 3, 10 ) int -> rax "Inline stloc first use temp"
+; V247 tmp214 [V247,T81] ( 3, 10 ) ubyte -> rdi "Inline stloc first use temp"
+;* V248 tmp215 [V248,T181] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V249 tmp216 [V249,T04] ( 5, 40 ) byref -> rsi "Inlining Arg"
+; V250 tmp217 [V250,T96] ( 3, 8 ) long -> rsi "Inline return value spill temp"
+;* V251 tmp218 [V251 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
+;* V252 tmp219 [V252 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
+; V253 tmp220 [V253,T97] ( 3, 8 ) int -> [rbp-0x748] spill-single-def "Inline stloc first use temp"
+; V254 tmp221 [V254,T98] ( 3, 8 ) int -> [rbp-0x74C] spill-single-def "Inline stloc first use temp"
+;* V255 tmp222 [V255,T234] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V256 tmp223 [V256 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V257 tmp224 [V257 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V258 tmp225 [V258 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V259 tmp226 [V259,T87] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V260 tmp227 [V260,T27] ( 5, 20 ) ref -> rdi class-hnd exact "impAppendStmt" <System.Collections.BitArray>
-; V261 tmp228 [V261,T25] ( 6, 20 ) int -> r8 "Inlining Arg"
-; V262 tmp229 [V262,T152] ( 2, 4 ) int -> rsi "Inline stloc first use temp"
-; V263 tmp230 [V263,T104] ( 3, 6 ) byref -> rdx "Inline stloc first use temp"
-; V264 tmp231 [V264,T167] ( 3, 3 ) byref -> [rbp-0x7A8] spill-single-def "Inlining Arg"
-; V265 tmp232 [V265,T171] ( 3, 3 ) int -> rax "Single return block return value"
-; V266 tmp233 [V266,T177] ( 2, 2.50) byref -> [rbp-0x7B0] spill-single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V267 tmp234 [V267,T134] ( 3, 4.50) int -> [rbp-0x688] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
-; V268 tmp235 [V268,T19] ( 10, 20.50) ref -> [rbp-0x7B8] spill-single-def "field V10._startObject (fldOffset=0x0)" P-INDEP
-; V269 tmp236 [V269,T46] ( 6, 12.50) ref -> [rbp-0x7C0] spill-single-def "field V10._endObject (fldOffset=0x8)" P-INDEP
-; V270 tmp237 [V270,T59] ( 5, 10.50) int -> [rbp-0x68C] spill-single-def "field V10._startInteger (fldOffset=0x10)" P-INDEP
-; V271 tmp238 [V271,T70] ( 4, 8.50) int -> [rbp-0x690] spill-single-def "field V10._endInteger (fldOffset=0x14)" P-INDEP
-;* V272 tmp239 [V272 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
-;* V273 tmp240 [V273 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
-; V274 tmp241 [V274,T205] ( 3, 1.50) byref -> rax "field V59._reference (fldOffset=0x0)" P-INDEP
-; V275 tmp242 [V275,T212] ( 3, 1.50) int -> rdx "field V59._length (fldOffset=0x8)" P-INDEP
-;* V276 tmp243 [V276 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP
-;* V277 tmp244 [V277 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
-;* V278 tmp245 [V278 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V279 tmp246 [V279 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-;* V280 tmp247 [V280 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP
-;* V281 tmp248 [V281 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
-; V282 tmp249 [V282,T45] ( 8, 14 ) byref -> [rbp-0x7C8] "field V98._reference (fldOffset=0x0)" P-INDEP
-; V283 tmp250 [V283,T44] ( 12, 14 ) int -> [rbp-0x694] "field V98._length (fldOffset=0x8)" P-INDEP
-; V284 tmp251 [V284,T71] ( 4, 8 ) byref -> rax "field V100._reference (fldOffset=0x0)" P-INDEP
-; V285 tmp252 [V285,T76] ( 4, 8 ) int -> rcx "field V100._length (fldOffset=0x8)" P-INDEP
-;* V286 tmp253 [V286 ] ( 0, 0 ) byref -> zero-ref "field V101._reference (fldOffset=0x0)" P-INDEP
-;* V287 tmp254 [V287 ] ( 0, 0 ) int -> zero-ref "field V101._length (fldOffset=0x8)" P-INDEP
-;* V288 tmp255 [V288 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-DEP
-;* V289 tmp256 [V289 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-DEP
-; V290 tmp257 [V290,T105] ( 3, 6 ) byref -> registers "field V104._reference (fldOffset=0x0)" P-INDEP
-; V291 tmp258 [V291,T123] ( 3, 6 ) int -> registers "field V104._length (fldOffset=0x8)" P-INDEP
-;* V292 tmp259 [V292 ] ( 0, 0 ) byref -> zero-ref "field V110._reference (fldOffset=0x0)" P-INDEP
-;* V293 tmp260 [V293 ] ( 0, 0 ) int -> zero-ref "field V110._length (fldOffset=0x8)" P-INDEP
-;* V294 tmp261 [V294 ] ( 0, 0 ) byref -> zero-ref "field V118._reference (fldOffset=0x0)" P-INDEP
-;* V295 tmp262 [V295 ] ( 0, 0 ) int -> zero-ref "field V118._length (fldOffset=0x8)" P-INDEP
-;* V296 tmp263 [V296 ] ( 0, 0 ) ref -> zero-ref "field V130._array (fldOffset=0x0)" P-INDEP
-;* V297 tmp264 [V297 ] ( 0, 0 ) long -> zero-ref "field V130._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V298 tmp265 [V298,T68] ( 3, 10 ) int -> rsi "field V130._currentDepth (fldOffset=0x10)" P-INDEP
-;* V299 tmp266 [V299 ] ( 0, 0 ) ref -> zero-ref "field V145._array (fldOffset=0x0)" P-INDEP
-;* V300 tmp267 [V300 ] ( 0, 0 ) long -> zero-ref "field V145._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V301 tmp268 [V301,T124] ( 3, 6 ) int -> rax "field V145._currentDepth (fldOffset=0x10)" P-INDEP
-;* V302 tmp269 [V302 ] ( 0, 0 ) ref -> zero-ref "field V149._array (fldOffset=0x0)" P-INDEP
-;* V303 tmp270 [V303 ] ( 0, 0 ) long -> zero-ref "field V149._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V304 tmp271 [V304,T09] ( 3, 40 ) int -> rcx "field V149._currentDepth (fldOffset=0x10)" P-INDEP
-;* V305 tmp272 [V305 ] ( 0, 0 ) ref -> zero-ref "field V153._array (fldOffset=0x0)" P-INDEP
-;* V306 tmp273 [V306 ] ( 0, 0 ) long -> zero-ref "field V153._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V307 tmp274 [V307,T125] ( 3, 6 ) int -> rsi "field V153._currentDepth (fldOffset=0x10)" P-INDEP
-;* V308 tmp275 [V308 ] ( 0, 0 ) ref -> zero-ref "field V174._array (fldOffset=0x0)" P-INDEP
-;* V309 tmp276 [V309 ] ( 0, 0 ) long -> zero-ref "field V174._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V310 tmp277 [V310,T69] ( 3, 10 ) int -> rsi "field V174._currentDepth (fldOffset=0x10)" P-INDEP
-;* V311 tmp278 [V311 ] ( 0, 0 ) ref -> zero-ref "field V190._object (fldOffset=0x0)" P-INDEP
-;* V312 tmp279 [V312 ] ( 0, 0 ) int -> zero-ref "field V190._integer (fldOffset=0x8)" P-INDEP
-; V313 tmp280 [V313,T106] ( 3, 6 ) ref -> rdi "field V191._object (fldOffset=0x0)" P-INDEP
-; V314 tmp281 [V314,T126] ( 3, 6 ) int -> registers "field V191._integer (fldOffset=0x8)" P-INDEP
-;* V315 tmp282 [V315,T201] ( 0, 0 ) ref -> zero-ref "field V196._object (fldOffset=0x0)" P-INDEP
-; V316 tmp283 [V316,T153] ( 2, 4 ) int -> rax "field V196._integer (fldOffset=0x8)" P-INDEP
-;* V317 tmp284 [V317 ] ( 0, 0 ) ref -> zero-ref "field V198._object (fldOffset=0x0)" P-INDEP
-;* V318 tmp285 [V318 ] ( 0, 0 ) int -> zero-ref "field V198._index (fldOffset=0x8)" P-INDEP
-; V319 tmp286 [V319,T154] ( 2, 4 ) int -> rcx "field V198._length (fldOffset=0xc)" P-INDEP
-;* V320 tmp287 [V320 ] ( 0, 0 ) ref -> zero-ref "field V200._object (fldOffset=0x0)" P-DEP
-;* V321 tmp288 [V321 ] ( 0, 0 ) int -> zero-ref "field V200._integer (fldOffset=0x8)" P-DEP
-;* V322 tmp289 [V322 ] ( 0, 0 ) ref -> zero-ref "field V205._startObject (fldOffset=0x0)" P-INDEP
-;* V323 tmp290 [V323 ] ( 0, 0 ) ref -> zero-ref "field V205._endObject (fldOffset=0x8)" P-INDEP
-;* V324 tmp291 [V324 ] ( 0, 0 ) int -> zero-ref "field V205._startInteger (fldOffset=0x10)" P-INDEP
-;* V325 tmp292 [V325 ] ( 0, 0 ) int -> zero-ref "field V205._endInteger (fldOffset=0x14)" P-INDEP
-; V326 tmp293 [V326,T141] ( 2, 4 ) byref -> [rbp-0x7D0] spill-single-def "field V210._reference (fldOffset=0x0)" P-INDEP
-; V327 tmp294 [V327,T155] ( 2, 4 ) int -> r11 "field V210._length (fldOffset=0x8)" P-INDEP
-; V328 tmp295 [V328,T245] ( 2, 0 ) byref -> rcx "field V224._reference (fldOffset=0x0)" P-INDEP
-;* V329 tmp296 [V329,T250] ( 0, 0 ) int -> zero-ref "field V224._length (fldOffset=0x8)" P-INDEP
-;* V330 tmp297 [V330 ] ( 0, 0 ) ref -> zero-ref "field V225._array (fldOffset=0x0)" P-INDEP
-;* V331 tmp298 [V331 ] ( 0, 0 ) long -> zero-ref "field V225._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V332 tmp299 [V332,T127] ( 3, 6 ) int -> rax "field V225._currentDepth (fldOffset=0x10)" P-INDEP
-;* V333 tmp300 [V333 ] ( 0, 0 ) ref -> zero-ref "field V229._array (fldOffset=0x0)" P-INDEP
-;* V334 tmp301 [V334 ] ( 0, 0 ) long -> zero-ref "field V229._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V335 tmp302 [V335,T10] ( 3, 40 ) int -> rcx "field V229._currentDepth (fldOffset=0x10)" P-INDEP
-;* V336 tmp303 [V336 ] ( 0, 0 ) ref -> zero-ref "field V233._array (fldOffset=0x0)" P-INDEP
-;* V337 tmp304 [V337 ] ( 0, 0 ) long -> zero-ref "field V233._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V338 tmp305 [V338,T128] ( 3, 6 ) int -> rsi "field V233._currentDepth (fldOffset=0x10)" P-INDEP
-;* V339 tmp306 [V339 ] ( 0, 0 ) ref -> zero-ref "V82.[000..008)"
-;* V340 tmp307 [V340 ] ( 0, 0 ) ref -> zero-ref "V82.[008..016)"
-;* V341 tmp308 [V341 ] ( 0, 0 ) ref -> zero-ref "V82.[016..024)"
-;* V342 tmp309 [V342 ] ( 0, 0 ) long -> zero-ref "V82.[024..032)"
-; V343 tmp310 [V343,T107] ( 3, 6 ) ref -> rdi "V189.[000..008)"
-;* V344 tmp311 [V344 ] ( 0, 0 ) ref -> zero-ref "V189.[008..016)"
-; V345 tmp312 [V345,T129] ( 3, 6 ) int -> r11 "V189.[016..020)"
-;* V346 tmp313 [V346 ] ( 0, 0 ) int -> zero-ref "V189.[020..024)"
-; V347 tmp314 [V347,T51] ( 3, 12 ) byref -> r8 "Spilling address for field-by-field copy"
-; V348 tmp315 [V348,T168] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V349 tmp316 [V349,T172] ( 3, 3 ) int -> rsi "index expr"
-; V350 tmp317 [V350,T178] ( 3, 2.25) ref -> rax single-def "argument with side effect"
-; V351 tmp318 [V351,T213] ( 2, 1.50) long -> rbx "argument with side effect"
-; V352 tmp319 [V352,T193] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V353 tmp320 [V353,T246] ( 2, 0 ) ref -> rbx "argument with side effect"
-; V354 tmp321 [V354,T247] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V355 tmp322 [V355,T88] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V356 tmp323 [V356,T96] ( 2, 8 ) int -> rsi "argument with side effect"
-; V357 tmp324 [V357,T89] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V358 tmp325 [V358,T196] ( 2, 2 ) long -> rdi "argument with side effect"
-; V359 tmp326 [V359,T169] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V360 tmp327 [V360,T173] ( 3, 3 ) int -> rsi "index expr"
-; V361 tmp328 [V361,T179] ( 3, 2.25) ref -> rax single-def "argument with side effect"
-; V362 tmp329 [V362,T214] ( 2, 1.50) long -> rbx "argument with side effect"
-; V363 tmp330 [V363,T170] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V364 tmp331 [V364,T17] ( 3, 24 ) ref -> rdx "arr expr"
-; V365 tmp332 [V365,T18] ( 3, 24 ) ref -> rsi "arr expr"
-;* V366 tmp333 [V366,T98] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V367 tmp334 [V367,T90] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V368 tmp335 [V368,T52] ( 3, 12 ) ref -> rdx "arr expr"
-; V369 tmp336 [V369,T194] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V370 tmp337 [V370,T197] ( 2, 2 ) long -> rdi "argument with side effect"
-; V371 tmp338 [V371,T195] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V372 tmp339 [V372,T198] ( 2, 2 ) long -> rdi "argument with side effect"
-;* V373 cse0 [V373,T135] ( 0, 0 ) long -> zero-ref multi-def "CSE #11: conservative"
-; V374 cse1 [V374,T24] ( 6, 20 ) byref -> [rbp-0x7D8] spill-single-def "CSE #28: moderate"
-; V375 cse2 [V375,T53] ( 3, 12 ) byref -> rsi "CSE #49: conservative"
-; V376 cse3 [V376,T56] ( 3, 12 ) long -> rsi "CSE #27: conservative"
-; V377 cse4 [V377,T57] ( 3, 12 ) long -> rdi "CSE #48: conservative"
-; V378 cse5 [V378,T58] ( 9, 11.50) long -> [rbp-0x6A0] multi-def "CSE #07: conservative"
-; V379 cse6 [V379,T130] ( 3, 6 ) int -> rdi "CSE #08: conservative"
-; V380 cse7 [V380,T38] ( 3, 12 ) ref -> rsi "CSE #45: conservative"
-; V381 cse8 [V381,T72] ( 4, 8 ) ref -> [rbp-0x7E0] spill-single-def "CSE #10: conservative"
-; V382 cse9 [V382,T131] ( 3, 6 ) int -> rdi "CSE #37: conservative"
-; V383 cse10 [V383,T13] ( 25, 31 ) byref -> [rbp-0x7E8] multi-def "CSE #06: moderate"
-; V384 rat0 [V384,T15] ( 7, 24.50) long -> [rbp-0x6A8] "Widened IV V26"
-; V385 rat1 [V385,T22] ( 6, 20.50) long -> [rbp-0x6B0] "Widened IV V15"
-; V386 rat2 [V386,T215] ( 2, 1.50) long -> rdi "Spilling to split statement for tree"
-; V387 rat3 [V387,T156] ( 5, 3.75) ref -> rsi "replacement local"
-; V388 rat4 [V388,T218] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V389 rat5 [V389,T157] ( 5, 3.75) ref -> registers "replacement local"
-; V390 rat6 [V390,T219] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V391 rat7 [V391,T216] ( 2, 1.50) long -> rdi "Spilling to split statement for tree"
-; V392 rat8 [V392,T180] ( 3, 2.25) ref -> rsi "Spilling to split statement for tree"
-; V393 rat9 [V393,T158] ( 5, 3.75) ref -> rax "replacement local"
-; V394 rat10 [V394,T220] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V395 rat11 [V395,T159] ( 5, 3.75) ref -> registers "replacement local"
-; V396 rat12 [V396,T221] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V397 rat13 [V397,T217] ( 2, 1.50) long -> rdi "Spilling to split statement for tree"
-; V398 rat14 [V398,T160] ( 5, 3.75) ref -> rsi "replacement local"
-; V399 rat15 [V399,T222] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V400 rat16 [V400,T181] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V401 rat17 [V401,T186] ( 3, 2 ) long -> rdi "runtime lookup"
-; V402 rat18 [V402,T174] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V403 rat19 [V403,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V404 rat20 [V404,T97] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V405 rat21 [V405,T20] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V406 rat22 [V406,T182] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V407 rat23 [V407,T187] ( 3, 2 ) long -> rdi "runtime lookup"
-; V408 rat24 [V408,T175] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V409 rat25 [V409,T183] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V410 rat26 [V410,T188] ( 3, 2 ) long -> rdi "runtime lookup"
-; V411 rat27 [V411,T176] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V412 rat28 [V412,T54] ( 3, 12 ) ref -> r11 "delegate invoke call"
-; TEMP_01 int -> [rbp-0x7EC]
-; TEMP_02 ref -> [rbp-0x7F8]
+;* V259 tmp226 [V259 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V260 tmp227 [V260,T74] ( 5, 10 ) struct (24) [rbp-0x768] do-not-enreg[S] must-init "Inline return value spill temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
+;* V261 tmp228 [V261 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.SequencePosition>
+;* V262 tmp229 [V262 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.SequencePosition>
+;* V263 tmp230 [V263 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
+;* V264 tmp231 [V264 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
+; V265 tmp232 [V265,T91] ( 4, 8 ) int -> [rbp-0x76C] spill-single-def "Inline stloc first use temp"
+; V266 tmp233 [V266,T140] ( 3, 6 ) int -> [rbp-0x770] spill-single-def "Inline stloc first use temp"
+;* V267 tmp234 [V267 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.SequencePosition>
+;* V268 tmp235 [V268,T235] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V269 tmp236 [V269 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
+; V270 tmp237 [V270,T92] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+;* V271 tmp238 [V271 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.SequencePosition>
+;* V272 tmp239 [V272 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V273 tmp240 [V273 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V274 tmp241 [V274 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V275 tmp242 [V275 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
+;* V276 tmp243 [V276 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.ReadOnlySequence`1[ubyte]>
+;* V277 tmp244 [V277 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+; V278 tmp245 [V278,T112] ( 2, 8 ) int -> rdi "Inlining Arg"
+;* V279 tmp246 [V279 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V280 tmp247 [V280,T46] ( 4, 16 ) int -> rdi "Inlining Arg"
+;* V281 tmp248 [V281 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+; V282 tmp249 [V282,T104] ( 2, 8 ) byref -> rsi "Inlining Arg"
+; V283 tmp250 [V283,T113] ( 2, 8 ) int -> r8 "Inlining Arg"
+;* V284 tmp251 [V284 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V285 tmp252 [V285 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V286 tmp253 [V286,T182] ( 2, 4 ) struct (192) [rbp-0x830] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Text.Json.Utf8JsonReader>
+;* V287 tmp254 [V287 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V288 tmp255 [V288,T141] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
+;* V289 tmp256 [V289,T183] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V290 tmp257 [V290,T37] ( 2, 18 ) int -> rbx "Inline stloc first use temp"
+;* V291 tmp258 [V291 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V292 tmp259 [V292 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V293 tmp260 [V293 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V294 tmp261 [V294,T142] ( 3, 6 ) int -> rbx "Inline stloc first use temp"
+; V295 tmp262 [V295,T143] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V296 tmp263 [V296,T184] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V297 tmp264 [V297 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V298 tmp265 [V298,T10] ( 3, 40 ) int -> rdi "Inline stloc first use temp"
+; V299 tmp266 [V299,T11] ( 3, 40 ) ubyte -> rsi "Inline stloc first use temp"
+;* V300 tmp267 [V300,T50] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V301 tmp268 [V301 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
+; V302 tmp269 [V302,T144] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V303 tmp270 [V303,T145] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
+;* V304 tmp271 [V304,T185] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V305 tmp272 [V305 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V306 tmp273 [V306,T05] ( 5, 40 ) byref -> rdi "Inlining Arg"
+; V307 tmp274 [V307,T260] ( 2, 1 ) byref -> rdi single-def "Inline stloc first use temp"
+; V308 tmp275 [V308,T261] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+; V309 tmp276 [V309,T226] ( 2, 2 ) byref -> r12 single-def "impAppendStmt"
+; V310 tmp277 [V310,T262] ( 2, 1 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+;* V311 tmp278 [V311 ] ( 0, 0 ) byref -> zero-ref
+; V312 tmp279 [V312,T263] ( 2, 1 ) byref -> rbx single-def
+; V313 tmp280 [V313,T264] ( 2, 1 ) int -> rdi
+; V314 tmp281 [V314,T221] ( 4, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
+; V315 tmp282 [V315,T227] ( 2, 2 ) byref -> [rbp-0x960] single-def "Inlining Arg"
+; V316 tmp283 [V316,T201] ( 3, 3 ) ref -> [rbp-0x968] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
+;* V317 tmp284 [V317 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V318 tmp285 [V318,T196] ( 8, 3 ) ref -> [rbp-0x970] class-hnd spill-single-def "Inline stloc first use temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
+;* V319 tmp286 [V319 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V320 tmp287 [V320 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
+;* V321 tmp288 [V321 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonSerializerOptions>
+;* V322 tmp289 [V322 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Serialization.Metadata.JsonParameterInfo]>
+;* V323 tmp290 [V323 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V324 tmp291 [V324,T228] ( 2, 2 ) byref -> [rbp-0x978] spill-single-def "Inlining Arg"
+; V325 tmp292 [V325,T202] ( 3, 3 ) ref -> [rbp-0x980] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.BitArray>
+;* V326 tmp293 [V326 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V327 tmp294 [V327,T105] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V328 tmp295 [V328,T31] ( 5, 20 ) ref -> rdi class-hnd exact "impAppendStmt" <System.Collections.BitArray>
+; V329 tmp296 [V329,T29] ( 6, 20 ) int -> r8 "Inlining Arg"
+; V330 tmp297 [V330,T186] ( 2, 4 ) int -> rsi "Inline stloc first use temp"
+; V331 tmp298 [V331,T122] ( 3, 6 ) byref -> rdx "Inline stloc first use temp"
+; V332 tmp299 [V332,T203] ( 3, 3 ) byref -> [rbp-0x988] spill-single-def "Inlining Arg"
+; V333 tmp300 [V333,T207] ( 3, 3 ) int -> rax "Single return block return value"
+; V334 tmp301 [V334,T213] ( 2, 2.50) byref -> [rbp-0x990] spill-single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V335 tmp302 [V335,T161] ( 3, 4.50) int -> [rbp-0x834] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
+; V336 tmp303 [V336,T24] ( 10, 20.50) ref -> [rbp-0x998] spill-single-def "field V10._startObject (fldOffset=0x0)" P-INDEP
+; V337 tmp304 [V337,T55] ( 6, 12.50) ref -> [rbp-0x9A0] spill-single-def "field V10._endObject (fldOffset=0x8)" P-INDEP
+; V338 tmp305 [V338,T70] ( 5, 10.50) int -> [rbp-0x838] spill-single-def "field V10._startInteger (fldOffset=0x10)" P-INDEP
+; V339 tmp306 [V339,T84] ( 4, 8.50) int -> [rbp-0x83C] spill-single-def "field V10._endInteger (fldOffset=0x14)" P-INDEP
+;* V340 tmp307 [V340 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
+;* V341 tmp308 [V341 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
+;* V342 tmp309 [V342 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
+;* V343 tmp310 [V343 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
+;* V344 tmp311 [V344 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
+;* V345 tmp312 [V345 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
+; V346 tmp313 [V346,T73] ( 7, 10 ) byref -> [rbp-0x9A8] "field V74._reference (fldOffset=0x0)" P-INDEP
+; V347 tmp314 [V347,T72] ( 11, 10 ) int -> [rbp-0x840] "field V74._length (fldOffset=0x8)" P-INDEP
+; V348 tmp315 [V348,T87] ( 4, 8 ) byref -> rax "field V76._reference (fldOffset=0x0)" P-INDEP
+; V349 tmp316 [V349,T93] ( 4, 8 ) int -> rcx "field V76._length (fldOffset=0x8)" P-INDEP
+;* V350 tmp317 [V350 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
+;* V351 tmp318 [V351 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
+;* V352 tmp319 [V352 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-DEP
+;* V353 tmp320 [V353 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-DEP
+; V354 tmp321 [V354,T123] ( 3, 6 ) byref -> registers "field V80._reference (fldOffset=0x0)" P-INDEP
+; V355 tmp322 [V355,T146] ( 3, 6 ) int -> registers "field V80._length (fldOffset=0x8)" P-INDEP
+;* V356 tmp323 [V356 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
+;* V357 tmp324 [V357 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
+;* V358 tmp325 [V358 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP
+;* V359 tmp326 [V359 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
+;* V360 tmp327 [V360 ] ( 0, 0 ) ref -> zero-ref "field V115._array (fldOffset=0x0)" P-INDEP
+;* V361 tmp328 [V361 ] ( 0, 0 ) long -> zero-ref "field V115._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V362 tmp329 [V362,T147] ( 3, 6 ) int -> rax "field V115._currentDepth (fldOffset=0x10)" P-INDEP
+;* V363 tmp330 [V363 ] ( 0, 0 ) ref -> zero-ref "field V119._array (fldOffset=0x0)" P-INDEP
+;* V364 tmp331 [V364 ] ( 0, 0 ) long -> zero-ref "field V119._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V365 tmp332 [V365,T12] ( 3, 40 ) int -> rcx "field V119._currentDepth (fldOffset=0x10)" P-INDEP
+;* V366 tmp333 [V366 ] ( 0, 0 ) ref -> zero-ref "field V123._array (fldOffset=0x0)" P-INDEP
+;* V367 tmp334 [V367 ] ( 0, 0 ) long -> zero-ref "field V123._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V368 tmp335 [V368,T148] ( 3, 6 ) int -> rsi "field V123._currentDepth (fldOffset=0x10)" P-INDEP
+; V369 tmp336 [V369,T239] ( 3, 1.50) byref -> rax "field V130._reference (fldOffset=0x0)" P-INDEP
+; V370 tmp337 [V370,T246] ( 3, 1.50) int -> rdx "field V130._length (fldOffset=0x8)" P-INDEP
+;* V371 tmp338 [V371 ] ( 0, 0 ) byref -> zero-ref single-def "field V131._reference (fldOffset=0x0)" P-INDEP
+;* V372 tmp339 [V372 ] ( 0, 0 ) int -> zero-ref "field V131._length (fldOffset=0x8)" P-INDEP
+;* V373 tmp340 [V373 ] ( 0, 0 ) byref -> zero-ref "field V145._reference (fldOffset=0x0)" P-INDEP
+;* V374 tmp341 [V374 ] ( 0, 0 ) int -> zero-ref "field V145._length (fldOffset=0x8)" P-INDEP
+; V375 tmp342 [V375,T53] ( 4, 14 ) byref -> [rbp-0x9B0] spill-single-def "field V168._reference (fldOffset=0x0)" P-INDEP
+; V376 tmp343 [V376,T54] ( 4, 14 ) int -> [rbp-0x844] spill-single-def "field V168._length (fldOffset=0x8)" P-INDEP
+; V377 tmp344 [V377,T86] ( 6, 8 ) byref -> [rbp-0x9B8] "field V169._reference (fldOffset=0x0)" P-INDEP
+; V378 tmp345 [V378,T85] ( 10, 8 ) int -> [rbp-0x848] "field V169._length (fldOffset=0x8)" P-INDEP
+; V379 tmp346 [V379,T88] ( 4, 8 ) byref -> rax "field V171._reference (fldOffset=0x0)" P-INDEP
+; V380 tmp347 [V380,T94] ( 4, 8 ) int -> rcx "field V171._length (fldOffset=0x8)" P-INDEP
+;* V381 tmp348 [V381 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP
+;* V382 tmp349 [V382 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
+;* V383 tmp350 [V383 ] ( 0, 0 ) byref -> zero-ref "field V173._reference (fldOffset=0x0)" P-DEP
+;* V384 tmp351 [V384 ] ( 0, 0 ) int -> zero-ref "field V173._length (fldOffset=0x8)" P-DEP
+; V385 tmp352 [V385,T124] ( 3, 6 ) byref -> registers "field V175._reference (fldOffset=0x0)" P-INDEP
+; V386 tmp353 [V386,T149] ( 3, 6 ) int -> registers "field V175._length (fldOffset=0x8)" P-INDEP
+;* V387 tmp354 [V387 ] ( 0, 0 ) byref -> zero-ref "field V181._reference (fldOffset=0x0)" P-INDEP
+;* V388 tmp355 [V388 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
+;* V389 tmp356 [V389 ] ( 0, 0 ) byref -> zero-ref "field V189._reference (fldOffset=0x0)" P-INDEP
+;* V390 tmp357 [V390 ] ( 0, 0 ) int -> zero-ref "field V189._length (fldOffset=0x8)" P-INDEP
+;* V391 tmp358 [V391 ] ( 0, 0 ) ref -> zero-ref "field V201._array (fldOffset=0x0)" P-INDEP
+;* V392 tmp359 [V392 ] ( 0, 0 ) long -> zero-ref "field V201._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V393 tmp360 [V393,T82] ( 3, 10 ) int -> rsi "field V201._currentDepth (fldOffset=0x10)" P-INDEP
+;* V394 tmp361 [V394 ] ( 0, 0 ) ref -> zero-ref "field V216._array (fldOffset=0x0)" P-INDEP
+;* V395 tmp362 [V395 ] ( 0, 0 ) long -> zero-ref "field V216._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V396 tmp363 [V396,T150] ( 3, 6 ) int -> rax "field V216._currentDepth (fldOffset=0x10)" P-INDEP
+;* V397 tmp364 [V397 ] ( 0, 0 ) ref -> zero-ref "field V220._array (fldOffset=0x0)" P-INDEP
+;* V398 tmp365 [V398 ] ( 0, 0 ) long -> zero-ref "field V220._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V399 tmp366 [V399,T13] ( 3, 40 ) int -> rcx "field V220._currentDepth (fldOffset=0x10)" P-INDEP
+;* V400 tmp367 [V400 ] ( 0, 0 ) ref -> zero-ref "field V224._array (fldOffset=0x0)" P-INDEP
+;* V401 tmp368 [V401 ] ( 0, 0 ) long -> zero-ref "field V224._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V402 tmp369 [V402,T151] ( 3, 6 ) int -> rsi "field V224._currentDepth (fldOffset=0x10)" P-INDEP
+;* V403 tmp370 [V403 ] ( 0, 0 ) ref -> zero-ref "field V245._array (fldOffset=0x0)" P-INDEP
+;* V404 tmp371 [V404 ] ( 0, 0 ) long -> zero-ref "field V245._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V405 tmp372 [V405,T83] ( 3, 10 ) int -> rsi "field V245._currentDepth (fldOffset=0x10)" P-INDEP
+;* V406 tmp373 [V406 ] ( 0, 0 ) ref -> zero-ref "field V261._object (fldOffset=0x0)" P-INDEP
+;* V407 tmp374 [V407 ] ( 0, 0 ) int -> zero-ref "field V261._integer (fldOffset=0x8)" P-INDEP
+; V408 tmp375 [V408,T125] ( 3, 6 ) ref -> rsi "field V262._object (fldOffset=0x0)" P-INDEP
+; V409 tmp376 [V409,T152] ( 3, 6 ) int -> registers "field V262._integer (fldOffset=0x8)" P-INDEP
+;* V410 tmp377 [V410,T236] ( 0, 0 ) ref -> zero-ref "field V267._object (fldOffset=0x0)" P-INDEP
+; V411 tmp378 [V411,T187] ( 2, 4 ) int -> rax "field V267._integer (fldOffset=0x8)" P-INDEP
+;* V412 tmp379 [V412 ] ( 0, 0 ) ref -> zero-ref "field V269._object (fldOffset=0x0)" P-INDEP
+;* V413 tmp380 [V413 ] ( 0, 0 ) int -> zero-ref "field V269._index (fldOffset=0x8)" P-INDEP
+; V414 tmp381 [V414,T188] ( 2, 4 ) int -> rcx "field V269._length (fldOffset=0xc)" P-INDEP
+;* V415 tmp382 [V415 ] ( 0, 0 ) ref -> zero-ref "field V271._object (fldOffset=0x0)" P-DEP
+;* V416 tmp383 [V416 ] ( 0, 0 ) int -> zero-ref "field V271._integer (fldOffset=0x8)" P-DEP
+;* V417 tmp384 [V417 ] ( 0, 0 ) ref -> zero-ref "field V276._startObject (fldOffset=0x0)" P-INDEP
+;* V418 tmp385 [V418 ] ( 0, 0 ) ref -> zero-ref "field V276._endObject (fldOffset=0x8)" P-INDEP
+;* V419 tmp386 [V419 ] ( 0, 0 ) int -> zero-ref "field V276._startInteger (fldOffset=0x10)" P-INDEP
+;* V420 tmp387 [V420 ] ( 0, 0 ) int -> zero-ref "field V276._endInteger (fldOffset=0x14)" P-INDEP
+; V421 tmp388 [V421,T171] ( 2, 4 ) byref -> [rbp-0x9C0] spill-single-def "field V281._reference (fldOffset=0x0)" P-INDEP
+; V422 tmp389 [V422,T189] ( 2, 4 ) int -> r8 "field V281._length (fldOffset=0x8)" P-INDEP
+;* V423 tmp390 [V423 ] ( 0, 0 ) ref -> zero-ref "field V293._array (fldOffset=0x0)" P-INDEP
+;* V424 tmp391 [V424 ] ( 0, 0 ) long -> zero-ref "field V293._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V425 tmp392 [V425,T153] ( 3, 6 ) int -> rax "field V293._currentDepth (fldOffset=0x10)" P-INDEP
+;* V426 tmp393 [V426 ] ( 0, 0 ) ref -> zero-ref "field V297._array (fldOffset=0x0)" P-INDEP
+;* V427 tmp394 [V427 ] ( 0, 0 ) long -> zero-ref "field V297._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V428 tmp395 [V428,T14] ( 3, 40 ) int -> rcx "field V297._currentDepth (fldOffset=0x10)" P-INDEP
+;* V429 tmp396 [V429 ] ( 0, 0 ) ref -> zero-ref "field V301._array (fldOffset=0x0)" P-INDEP
+;* V430 tmp397 [V430 ] ( 0, 0 ) long -> zero-ref "field V301._allocationFreeContainer (fldOffset=0x8)" P-INDEP
+; V431 tmp398 [V431,T154] ( 3, 6 ) int -> rsi "field V301._currentDepth (fldOffset=0x10)" P-INDEP
+;* V432 tmp399 [V432 ] ( 0, 0 ) ref -> zero-ref "V153.[000..008)"
+;* V433 tmp400 [V433 ] ( 0, 0 ) ref -> zero-ref "V153.[008..016)"
+;* V434 tmp401 [V434 ] ( 0, 0 ) ref -> zero-ref "V153.[016..024)"
+;* V435 tmp402 [V435 ] ( 0, 0 ) long -> zero-ref "V153.[024..032)"
+; V436 tmp403 [V436,T126] ( 3, 6 ) ref -> rsi "V260.[000..008)"
+;* V437 tmp404 [V437 ] ( 0, 0 ) ref -> zero-ref "V260.[008..016)"
+; V438 tmp405 [V438,T155] ( 3, 6 ) int -> rdi "V260.[016..020)"
+;* V439 tmp406 [V439 ] ( 0, 0 ) int -> zero-ref "V260.[020..024)"
+; V440 tmp407 [V440,T60] ( 3, 12 ) byref -> r8 "Spilling address for field-by-field copy"
+; V441 tmp408 [V441,T204] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V442 tmp409 [V442,T208] ( 3, 3 ) int -> rsi "index expr"
+; V443 tmp410 [V443,T106] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V444 tmp411 [V444,T114] ( 2, 8 ) int -> rsi "argument with side effect"
+; V445 tmp412 [V445,T107] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V446 tmp413 [V446,T214] ( 3, 2.25) ref -> rax single-def "argument with side effect"
+; V447 tmp414 [V447,T247] ( 2, 1.50) long -> [rbp-0x850] spill-single-def "argument with side effect"
+; V448 tmp415 [V448,T229] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V449 tmp416 [V449,T290] ( 2, 0 ) ref -> rbx "argument with side effect"
+; V450 tmp417 [V450,T291] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V451 tmp418 [V451,T292] ( 2, 0 ) ref -> rbx "argument with side effect"
+; V452 tmp419 [V452,T293] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V453 tmp420 [V453,T205] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V454 tmp421 [V454,T209] ( 3, 3 ) int -> rsi "index expr"
+; V455 tmp422 [V455,T215] ( 3, 2.25) ref -> rax single-def "argument with side effect"
+; V456 tmp423 [V456,T248] ( 2, 1.50) long -> [rbp-0x858] spill-single-def "argument with side effect"
+; V457 tmp424 [V457,T206] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V458 tmp425 [V458,T22] ( 3, 24 ) ref -> rdx "arr expr"
+; V459 tmp426 [V459,T23] ( 3, 24 ) ref -> rsi "arr expr"
+;* V460 tmp427 [V460,T116] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V461 tmp428 [V461,T108] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V462 tmp429 [V462,T61] ( 3, 12 ) ref -> rdx "arr expr"
+; V463 tmp430 [V463,T230] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V464 tmp431 [V464,T232] ( 2, 2 ) long -> rdi "argument with side effect"
+; V465 tmp432 [V465,T231] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V466 tmp433 [V466,T233] ( 2, 2 ) long -> rdi "argument with side effect"
+;* V467 cse0 [V467,T162] ( 0, 0 ) long -> zero-ref multi-def "CSE #23: conservative"
+; V468 cse1 [V468,T28] ( 6, 20 ) byref -> [rbp-0x9C8] spill-single-def "CSE #39: conservative"
+; V469 cse2 [V469,T62] ( 3, 12 ) byref -> rsi "CSE #59: conservative"
+; V470 cse3 [V470,T163] ( 9, 4.25) long -> [rbp-0x860] multi-def "CSE #35: conservative"
+; V471 cse4 [V471,T65] ( 3, 12 ) long -> rsi "CSE #38: conservative"
+; V472 cse5 [V472,T66] ( 3, 12 ) long -> rdi "CSE #58: conservative"
+; V473 cse6 [V473,T68] ( 9, 11.50) long -> [rbp-0x868] multi-def "CSE #19: conservative"
+; V474 cse7 [V474,T156] ( 3, 6 ) int -> rdi "CSE #03: conservative"
+; V475 cse8 [V475,T157] ( 3, 6 ) int -> rdi "CSE #20: conservative"
+; V476 cse9 [V476,T45] ( 3, 12 ) ref -> rsi "CSE #55: conservative"
+; V477 cse10 [V477,T89] ( 4, 8 ) ref -> [rbp-0x9D0] spill-single-def "CSE #22: conservative"
+; V478 cse11 [V478,T158] ( 3, 6 ) int -> rdi "CSE #48: conservative"
+; V479 cse12 [V479,T15] ( 35, 39 ) byref -> [rbp-0x9D8] multi-def "CSE #02: moderate"
+; V480 rat0 [V480,T20] ( 7, 24.50) long -> [rbp-0x870] "Widened IV V26"
+; V481 rat1 [V481,T26] ( 6, 20.50) long -> [rbp-0x878] "Widened IV V15"
+; V482 rat2 [V482,T249] ( 2, 1.50) long -> rdi "Spilling to split statement for tree"
+; V483 rat3 [V483,T190] ( 5, 3.75) ref -> rsi "replacement local"
+; V484 rat4 [V484,T251] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V485 rat5 [V485,T191] ( 5, 3.75) ref -> registers "replacement local"
+; V486 rat6 [V486,T252] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V487 rat7 [V487,T250] ( 2, 1.50) long -> rdi "Spilling to split statement for tree"
+; V488 rat8 [V488,T216] ( 3, 2.25) ref -> rsi "Spilling to split statement for tree"
+; V489 rat9 [V489,T192] ( 5, 3.75) ref -> rax "replacement local"
+; V490 rat10 [V490,T253] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V491 rat11 [V491,T193] ( 5, 3.75) ref -> registers "replacement local"
+; V492 rat12 [V492,T254] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V493 rat13 [V493,T194] ( 5, 3.75) ref -> rsi "replacement local"
+; V494 rat14 [V494,T255] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+;* V495 rat15 [V495,T217] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V496 rat16 [V496,T265] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V497 rat17 [V497,T210] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V498 rat18 [V498,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V499 rat19 [V499,T115] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V500 rat20 [V500,T25] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V501 rat21 [V501,T218] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V502 rat22 [V502,T222] ( 3, 2 ) long -> rdi "runtime lookup"
+; V503 rat23 [V503,T211] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V504 rat24 [V504,T219] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V505 rat25 [V505,T223] ( 3, 2 ) long -> rdi "runtime lookup"
+; V506 rat26 [V506,T212] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V507 rat27 [V507,T63] ( 3, 12 ) ref -> [rbp-0x9E0] spill-single-def "delegate invoke call"
+; TEMP_01 int -> [rbp-0x9E4]
+; TEMP_02 ref -> [rbp-0x9F0]
;
-; Lcl frame size = 2088
+; Lcl frame size = 2584
G_M61993_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 0x828
- lea rbp, [rsp+0x850]
- xor eax, eax
- mov qword ptr [rbp-0x7F8], rax
+ sub rsp, 0xA18
+ lea rbp, [rsp+0xA40]
vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x7F0], xmm8
- mov rax, -0x7B0
+ mov rax, -0x9C0
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], rdi
- mov r14, rdi
+ mov r13, rdi
mov rbx, rsi
mov rax, rdx
- mov r13, rcx
+ mov r14, rcx
mov r15, r8
mov r12, r9
- ;; size=103 bbWeight=1 PerfScore 20.33
+ ;; size=86 bbWeight=1 PerfScore 17.08
G_M61993_IG02:
mov r10, gword ptr [r15+0x58]
- mov gword ptr [rbp-0x6C8], r10
+ mov gword ptr [rbp-0x890], r10
cmp gword ptr [r10+0x08], 0
je SHORT G_M61993_IG04
;; size=18 bbWeight=1 PerfScore 7.00
G_M61993_IG03:
cmp byte ptr [r15+0x90], 0
je SHORT G_M61993_IG05
;; size=10 bbWeight=0.50 PerfScore 2.00
G_M61993_IG04:
- mov rdi, r14
+ mov rdi, r13
mov rsi, rbx
mov rdx, rax
- mov rcx, r13
+ mov rcx, r14
mov r8, r15
mov r9, r12
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this
call [rax]System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this
- jmp G_M61993_IG172
+ jmp G_M61993_IG206
;; size=35 bbWeight=0.50 PerfScore 3.38
G_M61993_IG05:
mov rcx, gword ptr [r15+0x70]
- mov gword ptr [rbp-0x6D0], rcx
+ mov gword ptr [rbp-0x8A0], rcx
cmp byte ptr [r15+0x28], 0
jne SHORT G_M61993_IG07
cmp byte ptr [r15+0x8B], 0
jne SHORT G_M61993_IG06
cmp byte ptr [rbx+0x28], 1
- jne G_M61993_IG193
+ jne G_M61993_IG235
cmp byte ptr [r15+0x8F], 0
jne SHORT G_M61993_IG08
xor rdi, rdi
jmp SHORT G_M61993_IG09
;; size=52 bbWeight=0.50 PerfScore 10.62
G_M61993_IG06:
- mov r10, gword ptr [rbp-0x6C8]
- jmp G_M61993_IG127
+ mov r10, gword ptr [rbp-0x890]
+ jmp G_M61993_IG161
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M61993_IG07:
- mov r10, gword ptr [rbp-0x6C8]
- jmp G_M61993_IG127
+ mov r10, gword ptr [rbp-0x890]
+ jmp G_M61993_IG161
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M61993_IG08:
mov rdi, gword ptr [r15]
mov esi, dword ptr [r15+0x20]
add esi, -2
cmp esi, dword ptr [rdi+0x08]
- jae G_M61993_IG175
+ jae G_M61993_IG209
imul rsi, rsi, 112
mov rdi, gword ptr [rdi+rsi+0x10]
;; size=28 bbWeight=0.50 PerfScore 6.12
G_M61993_IG09:
test rdi, rdi
- je G_M61993_IG16
+ je G_M61993_IG52
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonPropertyInfo:TryGetPrePopulatedValue(byref):ubyte:this
call [rax]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:TryGetPrePopulatedValue(byref):ubyte:this
test eax, eax
- je G_M61993_IG16
+ je G_M61993_IG52
mov rax, gword ptr [r15+0x50]
- mov gword ptr [rbp-0x6D8], rax
- mov rdi, qword ptr [r14]
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi+0x20]
- mov rcx, qword ptr [rsi+0x18]
- test rcx, rcx
- je SHORT G_M61993_IG11
- ;; size=63 bbWeight=0.50 PerfScore 9.12
+ mov gword ptr [rbp-0x8A8], rax
+ cmp dword ptr [r13], r13d
+ mov rcx, gword ptr [rbp-0x890]
+ mov rdx, gword ptr [rcx+0x38]
+ test rdx, rdx
+ je SHORT G_M61993_IG10
+ mov rsi, rax
+ mov rdi, gword ptr [rdx+0x08]
+ call [rdx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ mov rax, gword ptr [rbp-0x8A8]
+ ;; size=80 bbWeight=0.50 PerfScore 11.25
G_M61993_IG10:
- mov rax, gword ptr [rbp-0x6D8]
- mov rdi, rcx
- jmp SHORT G_M61993_IG12
- ;; size=12 bbWeight=0.40 PerfScore 1.30
-G_M61993_IG11:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ lea rdx, bword ptr [r15+0x30]
+ mov bword ptr [rbp-0x9D8], rdx
+ mov bword ptr [rbp-0x8F8], rdx
+ mov rcx, gword ptr [rbp-0x890]
+ cmp dword ptr [rcx+0xF4], 0
+ jle SHORT G_M61993_IG11
+ mov rdi, 0xD1FFAB1E ; System.Collections.BitArray
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x900], rax
+ mov rcx, gword ptr [rbp-0x890]
+ mov esi, dword ptr [rcx+0xF4]
mov rdi, rax
- mov rax, gword ptr [rbp-0x6D8]
- ;; size=25 bbWeight=0.10 PerfScore 0.25
+ xor edx, edx
+ mov r8, 0xD1FFAB1E ; code for System.Collections.BitArray:.ctor(int,ubyte):this
+ call [r8]System.Collections.BitArray:.ctor(int,ubyte):this
+ mov rsi, bword ptr [rbp-0x8F8]
+ lea rdi, bword ptr [rsi+0x48]
+ mov rsi, gword ptr [rbp-0x900]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ;; size=110 bbWeight=0.50 PerfScore 10.00
+G_M61993_IG11:
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rsi]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ cmp byte ptr [rbx+0x28], 2
+ je G_M61993_IG43
+ cmp byte ptr [rbx+0x2D], 0
+ jne SHORT G_M61993_IG13
+ ;; size=31 bbWeight=4 PerfScore 46.00
G_M61993_IG12:
+ mov rdi, bword ptr [rbx+0x98]
+ mov rax, rdi
+ mov esi, dword ptr [rbx+0xA0]
+ mov ecx, esi
+ jmp SHORT G_M61993_IG16
+ ;; size=20 bbWeight=2 PerfScore 13.00
+G_M61993_IG13:
+ vmovdqu xmm0, xmmword ptr [rbx+0xA8]
+ vmovdqu xmmword ptr [rbp-0x368], xmm0
+ mov rdi, qword ptr [rbx+0xB8]
+ mov qword ptr [rbp-0x358], rdi
+ ;; size=30 bbWeight=2 PerfScore 16.00
+G_M61993_IG14:
+ lea rdi, [rbp-0x368]
+ mov rax, 0xD1FFAB1E ; code for System.Buffers.BuffersExtensions:ToArray[ubyte](byref):ubyte[]
+ call [rax]System.Buffers.BuffersExtensions:ToArray[ubyte](byref):ubyte[]
+ test rax, rax
+ jne SHORT G_M61993_IG15
+ xor rax, rax
+ xor ecx, ecx
+ jmp SHORT G_M61993_IG16
+ ;; size=30 bbWeight=2 PerfScore 15.00
+G_M61993_IG15:
+ lea rcx, bword ptr [rax+0x10]
+ mov edi, dword ptr [rax+0x08]
+ mov rax, rcx
+ mov ecx, edi
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M61993_IG16:
+ cmp byte ptr [rbx+0x2E], 0
+ jne SHORT G_M61993_IG18
+ ;; size=6 bbWeight=4 PerfScore 16.00
+G_M61993_IG17:
+ mov rdx, rax
+ mov r8d, ecx
+ jmp SHORT G_M61993_IG19
+ ;; size=8 bbWeight=2 PerfScore 5.00
+G_M61993_IG18:
+ mov rdi, rax
+ mov esi, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonReaderHelper:GetUnescapedSpan(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte]
+ call [rax]System.Text.Json.JsonReaderHelper:GetUnescapedSpan(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte]
+ mov ecx, edx
+ mov rdx, rax
+ mov r8d, ecx
+ ;; size=25 bbWeight=2 PerfScore 9.00
+G_M61993_IG19:
+ cmp byte ptr [r15+0x8B], 0
+ je SHORT G_M61993_IG23
+ ;; size=10 bbWeight=4 PerfScore 16.00
+G_M61993_IG20:
+ mov rax, bword ptr [rbp-0x9D8]
+ mov rdi, rax
+ cmp byte ptr [rdi+0x5E], 1
+ je SHORT G_M61993_IG21
+ mov rcx, gword ptr [rdi+0x28]
+ jmp SHORT G_M61993_IG22
+ ;; size=22 bbWeight=2 PerfScore 18.50
+G_M61993_IG21:
+ mov rcx, gword ptr [rdi+0x30]
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M61993_IG22:
+ mov bword ptr [rbp-0x9A8], rdx
+ mov rdi, rdx
+ mov dword ptr [rbp-0x840], r8d
+ mov esi, r8d
+ mov rdx, gword ptr [rcx+0x88]
+ mov rcx, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+ call [rcx]System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+ test eax, eax
+ je G_M61993_IG34
+ cmp byte ptr [r14+0x8B], 0
+ mov rdx, bword ptr [rbp-0x9A8]
+ mov r8d, dword ptr [rbp-0x840]
+ je G_M61993_IG210
+ ;; size=75 bbWeight=2 PerfScore 30.00
+G_M61993_IG23:
+ mov dword ptr [rsp], 1
+ mov rsi, rdx
+ mov edx, r8d
+ lea r9, [rbp-0x350]
+ mov rdi, gword ptr [rbp-0x8A8]
+ mov rcx, r15
+ mov r8, r14
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:LookupProperty(System.Object,System.ReadOnlySpan`1[ubyte],byref,System.Text.Json.JsonSerializerOptions,byref,ubyte):System.Text.Json.Serialization.Metadata.JsonPropertyInfo
+ call [rax]System.Text.Json.JsonSerializer:LookupProperty(System.Object,System.ReadOnlySpan`1[ubyte],byref,System.Text.Json.JsonSerializerOptions,byref,ubyte):System.Text.Json.Serialization.Metadata.JsonPropertyInfo
+ mov gword ptr [rbp-0x8F0], rax
+ movzx rcx, byte ptr [rbp-0x350]
+ mov dword ptr [rbp-0x42C], ecx
+ cmp byte ptr [rax+0x9B], 0
+ jne G_M61993_IG38
+ ;; size=78 bbWeight=4 PerfScore 55.00
+G_M61993_IG24:
+ cmp byte ptr [rbx+0x24], 0
+ je G_M61993_IG35
+ cmp byte ptr [rbx+0x28], 5
+ jne SHORT G_M61993_IG25
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ ;; size=31 bbWeight=2 PerfScore 23.00
+G_M61993_IG25:
+ movzx rdi, byte ptr [rbx+0x28]
+ mov eax, edi
+ cmp eax, 1
+ je SHORT G_M61993_IG26
+ cmp eax, 3
+ jne G_M61993_IG40
+ ;; size=21 bbWeight=2 PerfScore 9.50
+G_M61993_IG26:
+ mov eax, dword ptr [rbx+0x58]
+ mov ecx, eax
+ cmp edi, 1
+ je SHORT G_M61993_IG27
+ cmp edi, 3
+ jne SHORT G_M61993_IG28
+ ;; size=15 bbWeight=2 PerfScore 9.50
+G_M61993_IG27:
+ lea ecx, [rax-0x01]
+ ;; size=3 bbWeight=2 PerfScore 1.00
+G_M61993_IG28:
+ mov dword ptr [rbp-0x4F4], ecx
+ ;; size=6 bbWeight=2 PerfScore 2.00
+G_M61993_IG29:
+ mov rdi, rbx
+ mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rcx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ mov ecx, dword ptr [rbx+0x58]
+ mov edi, ecx
+ movzx rsi, byte ptr [rbx+0x28]
+ cmp esi, 1
+ je SHORT G_M61993_IG31
+ ;; size=30 bbWeight=16 PerfScore 144.00
+G_M61993_IG30:
+ cmp esi, 3
+ jne SHORT G_M61993_IG32
+ ;; size=5 bbWeight=8 PerfScore 10.00
+G_M61993_IG31:
+ lea edi, [rcx-0x01]
+ ;; size=3 bbWeight=8 PerfScore 4.00
+G_M61993_IG32:
+ mov ecx, dword ptr [rbp-0x4F4]
+ cmp ecx, edi
+ jl SHORT G_M61993_IG29
+ ;; size=10 bbWeight=16 PerfScore 36.00
+G_M61993_IG33:
+ jmp G_M61993_IG40
+ ;; size=5 bbWeight=2 PerfScore 4.00
+G_M61993_IG34:
+ mov rdx, bword ptr [rbp-0x9A8]
+ mov r8d, dword ptr [rbp-0x840]
+ jmp G_M61993_IG23
+ ;; size=19 bbWeight=1 PerfScore 4.00
+G_M61993_IG35:
+ lea rdi, bword ptr [rbp-0x4F0]
+ mov rsi, rbx
+ mov ecx, 24
+ rep movsq
+ mov esi, dword ptr [rbx+0x58]
+ mov eax, esi
+ movzx rdi, byte ptr [rbx+0x28]
+ cmp edi, 1
+ je SHORT G_M61993_IG36
+ cmp edi, 3
+ jne SHORT G_M61993_IG37
+ ;; size=38 bbWeight=2 PerfScore 65.50
+G_M61993_IG36:
+ lea eax, [rsi-0x01]
+ ;; size=3 bbWeight=2 PerfScore 1.00
+G_M61993_IG37:
+ mov rdi, rbx
+ mov esi, eax
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
+ call [rax]System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
+ test eax, eax
+ jne G_M61993_IG40
+ mov rdi, rbx
+ lea rsi, bword ptr [rbp-0x4F0]
+ mov ecx, 6
+ rep movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ call CORINFO_HELP_ASSIGN_BYREF
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ jmp SHORT G_M61993_IG40
+ ;; size=108 bbWeight=2 PerfScore 102.00
+G_M61993_IG38:
+ mov rdi, rbx
+ mov rdx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rdx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ cmp dword ptr [rbp-0x42C], 0
+ jne SHORT G_M61993_IG39
+ mov rdi, gword ptr [rbp-0x8F0]
+ mov rsi, gword ptr [rbp-0x8A8]
+ mov rdx, r15
+ mov rcx, rbx
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x30]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndSetMember(System.Object,byref,byref):ubyte:this
+ jmp SHORT G_M61993_IG40
+ ;; size=56 bbWeight=2 PerfScore 36.00
+G_M61993_IG39:
+ mov rdi, gword ptr [rbp-0x8F0]
+ mov rsi, gword ptr [rbp-0x8A8]
+ mov rdx, r15
+ mov rcx, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndAddExtensionProperty(System.Object,byref,byref):ubyte:this
+ call [rax]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndAddExtensionProperty(System.Object,byref,byref):ubyte:this
+ ;; size=32 bbWeight=2 PerfScore 11.50
+G_M61993_IG40:
+ mov rax, bword ptr [rbp-0x9D8]
mov rsi, rax
- mov rdx, gword ptr [rbp-0x6C8]
- mov rcx, r13
- mov r8, rbx
- mov r9, r15
- mov r10, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:PopulatePropertiesFastPath(System.Object,System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Text.Json.JsonSerializerOptions,byref,byref)
- call [r10]System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:PopulatePropertiesFastPath(System.Object,System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Text.Json.JsonSerializerOptions,byref,byref)
- mov rdi, qword ptr [r14]
+ xor rdi, rdi
+ mov gword ptr [rsi], rdi
+ ;; size=15 bbWeight=4 PerfScore 10.00
+G_M61993_IG41:
+ mov gword ptr [rsi+0x08], rdi
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M61993_IG42:
+ mov gword ptr [rsi+0x10], rdi
+ mov byte ptr [rsi+0x58], 0
+ jmp G_M61993_IG11
+ ;; size=13 bbWeight=4 PerfScore 16.00
+G_M61993_IG43:
+ mov r14, gword ptr [rbp-0x890]
+ mov rcx, gword ptr [r14+0x40]
+ test rcx, rcx
+ je SHORT G_M61993_IG44
+ mov rsi, gword ptr [rbp-0x8A8]
+ mov rdi, gword ptr [rcx+0x08]
+ call [rcx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ ;; size=30 bbWeight=0.50 PerfScore 5.12
+G_M61993_IG44:
+ mov rax, bword ptr [rbp-0x9D8]
+ mov rbx, rax
+ cmp dword ptr [r14+0xF4], 0
+ jle G_M61993_IG51
+ mov rdi, gword ptr [rbx+0x48]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.BitArray:HasAllSet():ubyte:this
+ cmp dword ptr [rdi], edi
+ call [rcx]System.Collections.BitArray:HasAllSet():ubyte:this
+ test eax, eax
+ jne SHORT G_M61993_IG50
+ mov rsi, gword ptr [rbx+0x48]
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException_JsonRequiredPropertyMissing(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Collections.BitArray)
+ call [rax]System.Text.Json.ThrowHelper:ThrowJsonException_JsonRequiredPropertyMissing(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Collections.BitArray)
+ mov rax, bword ptr [rbp-0x9D8]
+ ;; size=72 bbWeight=0.50 PerfScore 10.62
+G_M61993_IG45:
+ cmp gword ptr [r15+0x68], 0
+ je SHORT G_M61993_IG46
+ mov rsi, rax
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedPropertyCache(byref):this
+ call [rax]System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedPropertyCache(byref):this
+ ;; size=25 bbWeight=0.50 PerfScore 3.88
+G_M61993_IG46:
+ mov rdi, qword ptr [r13]
mov rdi, qword ptr [rdi+0x30]
mov rdi, qword ptr [rdi+0x20]
- mov rdi, qword ptr [rdi]
- mov rbx, gword ptr [rbp-0x6D8]
- mov rsi, rbx
+ mov rbx, qword ptr [rdi]
+ mov rdi, rbx
+ mov r15, gword ptr [rbp-0x8A8]
+ mov rsi, r15
test rsi, rsi
- je SHORT G_M61993_IG15
- ;; size=61 bbWeight=0.50 PerfScore 7.88
-G_M61993_IG13:
+ je SHORT G_M61993_IG49
+ ;; size=33 bbWeight=0.50 PerfScore 5.38
+G_M61993_IG47:
cmp qword ptr [rsi], rdi
- je SHORT G_M61993_IG15
+ je SHORT G_M61993_IG49
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M61993_IG14:
- mov rsi, rbx
+G_M61993_IG48:
+ mov rsi, r15
call CORINFO_HELP_CHKCASTANY
mov rsi, rax
;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M61993_IG15:
+G_M61993_IG49:
mov rdi, r12
call CORINFO_HELP_CHECKED_ASSIGN_REF
- jmp G_M61993_IG123
+ jmp G_M61993_IG156
;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M61993_IG16:
+G_M61993_IG50:
+ mov rax, bword ptr [rbp-0x9D8]
+ jmp SHORT G_M61993_IG45
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
+G_M61993_IG51:
+ mov rax, bword ptr [rbp-0x9D8]
+ jmp SHORT G_M61993_IG45
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
+G_M61993_IG52:
lea rsi, bword ptr [rbx+0x80]
mov rdi, gword ptr [rsi]
mov rax, gword ptr [rsi+0x08]
- mov gword ptr [rbp-0x728], rax
+ mov gword ptr [rbp-0x908], rax
mov edx, dword ptr [rsi+0x10]
and edx, 0xD1FFAB1E
- mov dword ptr [rbp-0x34C], edx
+ mov dword ptr [rbp-0x4F8], edx
mov r8d, dword ptr [rsi+0x14]
and r8d, 0xD1FFAB1E
- mov dword ptr [rbp-0x350], r8d
+ mov dword ptr [rbp-0x4FC], r8d
cmp rdi, rax
- je SHORT G_M61993_IG17
+ je SHORT G_M61993_IG53
mov rsi, rdi
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
call CORINFO_HELP_CHKCASTCLASS
- mov gword ptr [rbp-0x730], rax
- mov rsi, gword ptr [rbp-0x728]
+ mov gword ptr [rbp-0x910], rax
+ mov rsi, gword ptr [rbp-0x908]
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
call CORINFO_HELP_CHKCASTCLASS
- movsxd rdi, dword ptr [rbp-0x350]
+ movsxd rdi, dword ptr [rbp-0x4FC]
add rdi, qword ptr [rax+0x10]
- movsxd rax, dword ptr [rbp-0x34C]
- mov rcx, gword ptr [rbp-0x730]
+ movsxd rax, dword ptr [rbp-0x4F8]
+ mov rcx, gword ptr [rbp-0x910]
add rax, qword ptr [rcx+0x10]
sub rdi, rax
- jmp SHORT G_M61993_IG18
+ jmp SHORT G_M61993_IG54
;; size=140 bbWeight=0.50 PerfScore 16.62
-G_M61993_IG17:
- mov r8d, dword ptr [rbp-0x350]
- sub r8d, dword ptr [rbp-0x34C]
+G_M61993_IG53:
+ mov r8d, dword ptr [rbp-0x4FC]
+ sub r8d, dword ptr [rbp-0x4F8]
movsxd rdi, r8d
;; size=17 bbWeight=0.50 PerfScore 1.62
-G_M61993_IG18:
+G_M61993_IG54:
test rdi, rdi
- je SHORT G_M61993_IG19
+ je SHORT G_M61993_IG55
xor rax, rax
xor edx, edx
- jmp SHORT G_M61993_IG20
+ jmp SHORT G_M61993_IG56
;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M61993_IG19:
+G_M61993_IG55:
mov rax, bword ptr [rbx+0x30]
mov edx, dword ptr [rbx+0x38]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M61993_IG20:
- mov bword ptr [rbp-0x7B0], rax
- mov dword ptr [rbp-0x688], edx
+G_M61993_IG56:
+ mov bword ptr [rbp-0x990], rax
+ mov dword ptr [rbp-0x834], edx
mov rsi, gword ptr [rbx+0x80]
- mov gword ptr [rbp-0x7B8], rsi
+ mov gword ptr [rbp-0x998], rsi
mov r8, gword ptr [rbx+0x88]
- mov gword ptr [rbp-0x7C0], r8
+ mov gword ptr [rbp-0x9A0], r8
mov r9d, dword ptr [rbx+0x90]
- mov dword ptr [rbp-0x68C], r9d
+ mov dword ptr [rbp-0x838], r9d
mov r11d, dword ptr [rbx+0x94]
- mov dword ptr [rbp-0x690], r11d
+ mov dword ptr [rbp-0x83C], r11d
mov rdi, gword ptr [r15+0x58]
- mov gword ptr [rbp-0x760], rdi
+ mov gword ptr [rbp-0x940], rdi
cmp byte ptr [rdi+0x103], 0
- jne G_M61993_IG176
+ jne G_M61993_IG219
mov eax, dword ptr [rdi+0xF0]
- mov dword ptr [rbp-0x7EC], eax
+ mov dword ptr [rbp-0x9E4], eax
mov rax, gword ptr [rdi+0x08]
mov rax, gword ptr [rax+0x10]
- mov edi, dword ptr [rbp-0x7EC]
+ mov edi, dword ptr [rbp-0x9E4]
cmp edi, dword ptr [rax+0x10]
- jne G_M61993_IG195
+ jne G_M61993_IG237
lea rax, bword ptr [r15+0x30]
- mov bword ptr [rbp-0x7E8], rax
- mov bword ptr [rbp-0x768], rax
- mov rdi, gword ptr [rbp-0x760]
+ mov bword ptr [rbp-0x9D8], rax
+ mov bword ptr [rbp-0x948], rax
+ mov rdi, gword ptr [rbp-0x940]
cmp dword ptr [rdi+0xF4], 0
- jle SHORT G_M61993_IG21
+ jle SHORT G_M61993_IG57
mov rdi, 0xD1FFAB1E ; System.Collections.BitArray
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x770], rax
- mov rcx, gword ptr [rbp-0x760]
+ mov gword ptr [rbp-0x950], rax
+ mov rcx, gword ptr [rbp-0x940]
mov esi, dword ptr [rcx+0xF4]
mov rdi, rax
xor edx, edx
mov rcx, 0xD1FFAB1E ; code for System.Collections.BitArray:.ctor(int,ubyte):this
call [rcx]System.Collections.BitArray:.ctor(int,ubyte):this
- mov rdi, bword ptr [rbp-0x768]
+ mov rdi, bword ptr [rbp-0x948]
lea rdi, bword ptr [rdi+0x48]
- mov rsi, gword ptr [rbp-0x770]
+ mov rsi, gword ptr [rbp-0x950]
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=237 bbWeight=0.50 PerfScore 26.50
-G_M61993_IG21:
+G_M61993_IG57:
xor rdi, rdi
mov gword ptr [r15+0x30], rdi
- mov rdi, r14
+ mov rdi, r13
mov rsi, r15
- mov rdx, r13
- mov gword ptr [rbp-0x7F8], rdx
- mov rdx, qword ptr [r14]
+ mov rdx, r14
+ mov gword ptr [rbp-0x9F0], rdx
+ mov rdx, qword ptr [r13]
mov rdx, qword ptr [rdx+0x68]
- mov qword ptr [rbp-0x6A0], rdx
- mov rdx, gword ptr [rbp-0x7F8]
- mov r10, qword ptr [rbp-0x6A0]
- call [r10+0x08]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:InitializeConstructorArgumentCaches(byref,System.Text.Json.JsonSerializerOptions):this
- ;; size=54 bbWeight=0.50 PerfScore 6.50
-G_M61993_IG22:
+ mov qword ptr [rbp-0x868], rdx
+ mov rdx, gword ptr [rbp-0x9F0]
+ mov r11, qword ptr [rbp-0x868]
+ call [r11+0x08]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:InitializeConstructorArgumentCaches(byref,System.Text.Json.JsonSerializerOptions):this
+ ;; size=55 bbWeight=0.50 PerfScore 6.50
+G_M61993_IG58:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
cmp byte ptr [rbx+0x28], 2
- je G_M61993_IG75
+ je G_M61993_IG110
cmp byte ptr [rbx+0x2D], 0
- jne SHORT G_M61993_IG24
+ jne SHORT G_M61993_IG60
;; size=31 bbWeight=4 PerfScore 46.00
-G_M61993_IG23:
+G_M61993_IG59:
mov rdi, bword ptr [rbx+0x98]
mov rax, rdi
mov esi, dword ptr [rbx+0xA0]
mov ecx, esi
- jmp SHORT G_M61993_IG27
+ jmp SHORT G_M61993_IG63
;; size=20 bbWeight=2 PerfScore 13.00
-G_M61993_IG24:
+G_M61993_IG60:
vmovdqu xmm0, xmmword ptr [rbx+0xA8]
- vmovdqu xmmword ptr [rbp-0x410], xmm0
+ vmovdqu xmmword ptr [rbp-0x5C0], xmm0
mov rdi, qword ptr [rbx+0xB8]
- mov qword ptr [rbp-0x400], rdi
+ mov qword ptr [rbp-0x5B0], rdi
;; size=30 bbWeight=2 PerfScore 16.00
-G_M61993_IG25:
- lea rdi, [rbp-0x410]
+G_M61993_IG61:
+ lea rdi, [rbp-0x5C0]
mov rax, 0xD1FFAB1E ; code for System.Buffers.BuffersExtensions:ToArray[ubyte](byref):ubyte[]
call [rax]System.Buffers.BuffersExtensions:ToArray[ubyte](byref):ubyte[]
test rax, rax
- jne SHORT G_M61993_IG26
+ jne SHORT G_M61993_IG62
xor rax, rax
xor ecx, ecx
- jmp SHORT G_M61993_IG27
+ jmp SHORT G_M61993_IG63
;; size=30 bbWeight=2 PerfScore 15.00
-G_M61993_IG26:
+G_M61993_IG62:
lea rcx, bword ptr [rax+0x10]
mov edi, dword ptr [rax+0x08]
mov rax, rcx
mov ecx, edi
;; size=12 bbWeight=2 PerfScore 6.00
-G_M61993_IG27:
+G_M61993_IG63:
cmp byte ptr [rbx+0x2E], 0
- jne SHORT G_M61993_IG29
+ jne SHORT G_M61993_IG65
;; size=6 bbWeight=4 PerfScore 16.00
-G_M61993_IG28:
+G_M61993_IG64:
mov rdx, rax
mov r8d, ecx
- jmp SHORT G_M61993_IG30
+ jmp SHORT G_M61993_IG66
;; size=8 bbWeight=2 PerfScore 5.00
-G_M61993_IG29:
+G_M61993_IG65:
mov rdi, rax
mov esi, ecx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonReaderHelper:GetUnescapedSpan(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte]
call [rax]System.Text.Json.JsonReaderHelper:GetUnescapedSpan(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte]
mov ecx, edx
mov rdx, rax
mov r8d, ecx
;; size=25 bbWeight=2 PerfScore 9.00
-G_M61993_IG30:
+G_M61993_IG66:
+ mov bword ptr [rbp-0x9B8], rdx
+ mov rax, rdx
+ mov bword ptr [rbp-0x9B0], rax
+ mov dword ptr [rbp-0x848], r8d
+ mov ecx, r8d
+ mov dword ptr [rbp-0x844], ecx
cmp byte ptr [r15+0x8B], 0
- je G_M61993_IG41
- ;; size=14 bbWeight=4 PerfScore 16.00
-G_M61993_IG31:
- mov rax, bword ptr [rbp-0x7E8]
- mov rdi, rax
+ je G_M61993_IG76
+ ;; size=47 bbWeight=4 PerfScore 34.00
+G_M61993_IG67:
+ mov r9, bword ptr [rbp-0x9D8]
+ mov rdi, r9
cmp byte ptr [rdi+0x5E], 1
- je SHORT G_M61993_IG32
- mov rcx, gword ptr [rdi+0x28]
- jmp SHORT G_M61993_IG33
+ je SHORT G_M61993_IG68
+ mov r10, gword ptr [rdi+0x28]
+ jmp SHORT G_M61993_IG69
;; size=22 bbWeight=2 PerfScore 18.50
-G_M61993_IG32:
- mov rcx, gword ptr [rdi+0x30]
+G_M61993_IG68:
+ mov r10, gword ptr [rdi+0x30]
;; size=4 bbWeight=2 PerfScore 4.00
-G_M61993_IG33:
- mov bword ptr [rbp-0x7C8], rdx
- mov rdi, rdx
- mov dword ptr [rbp-0x694], r8d
- mov esi, r8d
- mov rdx, gword ptr [rcx+0x88]
- mov rcx, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
- call [rcx]System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+G_M61993_IG69:
+ mov rdi, rax
+ mov esi, ecx
+ mov rdx, gword ptr [r10+0x88]
+ mov r10, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+ call [r10]System.Text.Json.JsonSerializer:IsMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
test eax, eax
- je SHORT G_M61993_IG40
- cmp byte ptr [r13+0x8B], 0
- je G_M61993_IG177
- ;; size=57 bbWeight=2 PerfScore 26.00
-G_M61993_IG34:
+ mov rax, bword ptr [rbp-0x9B0]
+ mov ecx, dword ptr [rbp-0x844]
+ je SHORT G_M61993_IG76
+ cmp byte ptr [r14+0x8B], 0
+ je G_M61993_IG220
+ ;; size=56 bbWeight=2 PerfScore 26.00
+G_M61993_IG70:
mov esi, dword ptr [rbx+0x58]
mov eax, esi
movzx rdi, byte ptr [rbx+0x28]
cmp edi, 1
- je SHORT G_M61993_IG36
+ je SHORT G_M61993_IG72
;; size=15 bbWeight=4 PerfScore 22.00
-G_M61993_IG35:
+G_M61993_IG71:
cmp edi, 3
- jne SHORT G_M61993_IG37
+ jne SHORT G_M61993_IG73
;; size=5 bbWeight=2 PerfScore 2.50
-G_M61993_IG36:
+G_M61993_IG72:
lea eax, [rsi-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG37:
+G_M61993_IG73:
mov rdi, rbx
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
- mov rax, bword ptr [rbp-0x7E8]
+ mov rax, bword ptr [rbp-0x9D8]
mov rsi, rax
xor rdx, rdx
mov gword ptr [rsi], rdx
;; size=32 bbWeight=4 PerfScore 25.00
-G_M61993_IG38:
+G_M61993_IG74:
mov gword ptr [rsi+0x08], rdx
;; size=4 bbWeight=4 PerfScore 4.00
-G_M61993_IG39:
+G_M61993_IG75:
mov gword ptr [rsi+0x10], rdx
mov byte ptr [rsi+0x58], 0
- jmp G_M61993_IG22
- ;; size=13 bbWeight=4 PerfScore 16.00
-G_M61993_IG40:
- mov rdx, bword ptr [rbp-0x7C8]
- mov r8d, dword ptr [rbp-0x694]
- ;; size=14 bbWeight=1 PerfScore 2.00
-G_M61993_IG41:
- lea rsi, [rbp-0x358]
+ mov bword ptr [rbp-0x9D8], rax
+ jmp G_M61993_IG58
+ ;; size=20 bbWeight=4 PerfScore 20.00
+G_M61993_IG76:
+ lea rsi, [rbp-0x508]
mov qword ptr [rsp], rsi
- mov bword ptr [rbp-0x7C8], rdx
- mov rsi, rdx
- mov dword ptr [rbp-0x694], r8d
- mov edx, r8d
- mov rdi, r14
+ mov rsi, rax
+ mov edx, ecx
+ mov rdi, r13
mov rcx, r15
mov r8, rbx
- mov r9, r13
- mov r10, qword ptr [rbp-0x6A0]
+ mov r9, r14
+ mov r10, qword ptr [rbp-0x868]
call [r10+0x20]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:TryLookupConstructorParameter(System.ReadOnlySpan`1[ubyte],byref,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this
test eax, eax
- je G_M61993_IG59
+ je G_M61993_IG94
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
- mov rdi, gword ptr [rbp-0x358]
+ mov rdi, gword ptr [rbp-0x508]
cmp byte ptr [rdi+0x35], 0
- jne G_M61993_IG57
+ jne G_M61993_IG92
cmp byte ptr [rbx+0x24], 0
- je SHORT G_M61993_IG52
- ;; size=100 bbWeight=4 PerfScore 91.00
-G_M61993_IG42:
+ je SHORT G_M61993_IG87
+ ;; size=85 bbWeight=4 PerfScore 83.00
+G_M61993_IG77:
cmp byte ptr [rbx+0x28], 5
- jne SHORT G_M61993_IG43
+ jne SHORT G_M61993_IG78
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
;; size=21 bbWeight=2 PerfScore 15.00
-G_M61993_IG43:
+G_M61993_IG78:
movzx rdi, byte ptr [rbx+0x28]
mov eax, edi
cmp eax, 1
- je SHORT G_M61993_IG44
+ je SHORT G_M61993_IG79
cmp eax, 3
- jne G_M61993_IG55
+ jne G_M61993_IG90
;; size=21 bbWeight=2 PerfScore 9.50
-G_M61993_IG44:
+G_M61993_IG79:
mov eax, dword ptr [rbx+0x58]
mov ecx, eax
cmp edi, 1
- je SHORT G_M61993_IG45
+ je SHORT G_M61993_IG80
cmp edi, 3
- jne SHORT G_M61993_IG46
+ jne SHORT G_M61993_IG81
;; size=15 bbWeight=2 PerfScore 9.50
-G_M61993_IG45:
+G_M61993_IG80:
lea ecx, [rax-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG46:
- mov dword ptr [rbp-0x594], ecx
+G_M61993_IG81:
+ mov dword ptr [rbp-0x744], ecx
;; size=6 bbWeight=2 PerfScore 2.00
-G_M61993_IG47:
+G_M61993_IG82:
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rcx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
mov ecx, dword ptr [rbx+0x58]
mov edi, ecx
movzx rsi, byte ptr [rbx+0x28]
cmp esi, 1
- je SHORT G_M61993_IG49
+ je SHORT G_M61993_IG84
;; size=30 bbWeight=16 PerfScore 144.00
-G_M61993_IG48:
+G_M61993_IG83:
cmp esi, 3
- jne SHORT G_M61993_IG50
+ jne SHORT G_M61993_IG85
;; size=5 bbWeight=8 PerfScore 10.00
-G_M61993_IG49:
+G_M61993_IG84:
lea edi, [rcx-0x01]
;; size=3 bbWeight=8 PerfScore 4.00
-G_M61993_IG50:
- mov ecx, dword ptr [rbp-0x594]
+G_M61993_IG85:
+ mov ecx, dword ptr [rbp-0x744]
cmp ecx, edi
- jl SHORT G_M61993_IG47
+ jl SHORT G_M61993_IG82
;; size=10 bbWeight=16 PerfScore 36.00
-G_M61993_IG51:
- jmp G_M61993_IG55
+G_M61993_IG86:
+ jmp G_M61993_IG90
;; size=5 bbWeight=2 PerfScore 4.00
-G_M61993_IG52:
- lea rdi, bword ptr [rbp-0x590]
+G_M61993_IG87:
+ lea rdi, bword ptr [rbp-0x740]
mov rsi, rbx
mov ecx, 24
rep movsq
mov esi, dword ptr [rbx+0x58]
mov eax, esi
movzx rdi, byte ptr [rbx+0x28]
cmp edi, 1
- je SHORT G_M61993_IG53
+ je SHORT G_M61993_IG88
cmp edi, 3
- jne SHORT G_M61993_IG54
+ jne SHORT G_M61993_IG89
;; size=38 bbWeight=2 PerfScore 65.50
-G_M61993_IG53:
+G_M61993_IG88:
lea eax, [rsi-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG54:
+G_M61993_IG89:
mov rdi, rbx
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
test eax, eax
- jne SHORT G_M61993_IG55
+ jne SHORT G_M61993_IG90
mov rdi, rbx
- lea rsi, bword ptr [rbp-0x590]
+ lea rsi, bword ptr [rbp-0x740]
mov ecx, 6
rep movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
movsq
;; size=102 bbWeight=2 PerfScore 98.00
-G_M61993_IG55:
- mov rax, bword ptr [rbp-0x7E8]
+G_M61993_IG90:
+ mov rax, bword ptr [rbp-0x9D8]
mov rdi, rax
mov rsi, gword ptr [rdi+0x40]
xor rdx, rdx
mov gword ptr [rsi+0x20], rdx
;; size=20 bbWeight=4 PerfScore 18.00
-G_M61993_IG56:
+G_M61993_IG91:
mov gword ptr [rdi+0x08], rdx
mov byte ptr [rdi+0x58], 0
- jmp G_M61993_IG22
+ jmp G_M61993_IG58
;; size=13 bbWeight=4 PerfScore 16.00
-G_M61993_IG57:
- mov rdi, r14
+G_M61993_IG92:
+ mov rdi, r13
mov rsi, r15
mov rdx, rbx
- mov rcx, gword ptr [rbp-0x358]
- mov r8, qword ptr [rbp-0x6A0]
+ mov rcx, gword ptr [rbp-0x508]
+ mov r8, qword ptr [rbp-0x868]
call [r8+0x10]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadAndCacheConstructorArgument(byref,byref,System.Text.Json.Serialization.Metadata.JsonParameterInfo):ubyte:this
- mov rax, bword ptr [rbp-0x7E8]
+ mov rax, bword ptr [rbp-0x9D8]
mov rsi, rax
mov rdx, gword ptr [rsi+0x40]
xor r9, r9
mov gword ptr [rdx+0x20], r9
;; size=48 bbWeight=4 PerfScore 41.00
-G_M61993_IG58:
+G_M61993_IG93:
mov gword ptr [rsi+0x08], r9
mov byte ptr [rsi+0x58], 0
- jmp G_M61993_IG22
+ jmp G_M61993_IG58
;; size=13 bbWeight=4 PerfScore 16.00
-G_M61993_IG59:
+G_M61993_IG94:
xor esi, esi
mov dword ptr [rsp], esi
- mov rsi, bword ptr [rbp-0x7C8]
- mov edx, dword ptr [rbp-0x694]
- lea r9, [rbp-0x360]
+ mov rsi, bword ptr [rbp-0x9B0]
+ mov edx, dword ptr [rbp-0x844]
+ lea r9, [rbp-0x510]
mov rcx, r15
- mov r8, r13
+ mov r8, r14
xor rdi, rdi
mov r10, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:LookupProperty(System.Object,System.ReadOnlySpan`1[ubyte],byref,System.Text.Json.JsonSerializerOptions,byref,ubyte):System.Text.Json.Serialization.Metadata.JsonPropertyInfo
call [r10]System.Text.Json.JsonSerializer:LookupProperty(System.Object,System.ReadOnlySpan`1[ubyte],byref,System.Text.Json.JsonSerializerOptions,byref,ubyte):System.Text.Json.Serialization.Metadata.JsonPropertyInfo
- mov gword ptr [rbp-0x738], rax
+ mov gword ptr [rbp-0x918], rax
cmp byte ptr [rax+0x9A], 0
- je G_M61993_IG68
+ je G_M61993_IG103
;; size=66 bbWeight=4 PerfScore 51.00
-G_M61993_IG60:
+G_M61993_IG95:
mov rcx, gword ptr [r15+0x70]
- mov gword ptr [rbp-0x740], rcx
+ mov gword ptr [rbp-0x920], rcx
mov rdx, gword ptr [rcx+0x10]
- mov gword ptr [rbp-0x7E0], rdx
+ mov gword ptr [rbp-0x9D0], rdx
test rdx, rdx
- jne SHORT G_M61993_IG63
+ jne SHORT G_M61993_IG98
mov rdi, 0xD1FFAB1E
mov esi, 126
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]:s_shared
mov rdi, gword ptr [rdi]
mov rsi, gword ptr [r15+0x58]
mov rsi, gword ptr [rsi+0x10]
mov rsi, gword ptr [rsi+0x10]
mov esi, dword ptr [rsi+0x10]
cmp esi, 1
- jle SHORT G_M61993_IG61
- jmp SHORT G_M61993_IG62
+ jle SHORT G_M61993_IG96
+ jmp SHORT G_M61993_IG97
;; size=82 bbWeight=2 PerfScore 44.50
-G_M61993_IG61:
+G_M61993_IG96:
mov esi, 1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M61993_IG62:
+G_M61993_IG97:
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Rent(int):System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Rent(int):System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][]:this
- mov rcx, gword ptr [rbp-0x740]
+ mov rcx, gword ptr [rbp-0x920]
lea rdi, bword ptr [rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp G_M61993_IG65
+ jmp G_M61993_IG100
;; size=38 bbWeight=2 PerfScore 22.00
-G_M61993_IG63:
- mov rcx, gword ptr [rbp-0x740]
+G_M61993_IG98:
+ mov rcx, gword ptr [rbp-0x920]
mov edi, dword ptr [rcx+0x30]
cmp edi, dword ptr [rdx+0x08]
- jne G_M61993_IG65
+ jne G_M61993_IG100
mov rdi, 0xD1FFAB1E
mov esi, 126
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]:s_shared
mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rbp-0x7E0]
+ mov rsi, gword ptr [rbp-0x9D0]
mov esi, dword ptr [rsi+0x08]
add esi, esi
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Rent(int):System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Rent(int):System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][]:this
- mov gword ptr [rbp-0x750], rax
- mov rcx, gword ptr [rbp-0x740]
+ mov gword ptr [rbp-0x930], rax
+ mov rcx, gword ptr [rbp-0x920]
mov rdx, gword ptr [rcx+0x10]
- mov gword ptr [rbp-0x778], rdx
+ mov gword ptr [rbp-0x958], rdx
cmp byte ptr [rdx], dl
test rax, rax
- je G_M61993_IG74
+ je G_M61993_IG109
mov rdi, qword ptr [rax]
mov edi, dword ptr [rdi+0x04]
add edi, -24
shr edi, 3
- je SHORT G_M61993_IG64
+ je SHORT G_M61993_IG99
cmp edi, 1
- jne G_M61993_IG187
+ jne G_M61993_IG230
;; size=137 bbWeight=2 PerfScore 73.00
-G_M61993_IG64:
+G_M61993_IG99:
mov rdi, rdx
xor esi, esi
mov r8, 0xD1FFAB1E ; code for System.Array:GetLowerBound(int):int:this
call [r8]System.Array:GetLowerBound(int):int:this
mov esi, eax
- mov rdi, gword ptr [rbp-0x778]
+ mov rdi, gword ptr [rbp-0x958]
mov r8d, dword ptr [rdi+0x08]
test r8d, r8d
- jl G_M61993_IG174
- mov rdx, gword ptr [rbp-0x750]
+ jl G_M61993_IG208
+ mov rdx, gword ptr [rbp-0x930]
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov rax, gword ptr [rbp-0x740]
+ mov rax, gword ptr [rbp-0x920]
mov rcx, gword ptr [rax+0x10]
- mov gword ptr [rbp-0x758], rcx
+ mov gword ptr [rbp-0x938], rcx
lea rdi, bword ptr [rax+0x10]
- mov rsi, gword ptr [rbp-0x750]
+ mov rsi, gword ptr [rbp-0x930]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]:s_shared
mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rbp-0x758]
+ mov rsi, gword ptr [rbp-0x938]
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Return(System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][],ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Return(System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][],ubyte):this
;; size=134 bbWeight=2 PerfScore 58.00
-G_M61993_IG65:
- mov rsi, gword ptr [rbp-0x740]
+G_M61993_IG100:
+ mov rsi, gword ptr [rbp-0x920]
mov rax, gword ptr [rsi+0x10]
- mov gword ptr [rbp-0x748], rax
+ mov gword ptr [rbp-0x928], rax
mov ecx, dword ptr [rsi+0x30]
- mov dword ptr [rbp-0x364], ecx
+ mov dword ptr [rbp-0x514], ecx
lea edi, [rcx+0x01]
mov dword ptr [rsi+0x30], edi
- lea rsi, [rbp-0x3A0]
+ lea rsi, [rbp-0x550]
mov rdi, rbx
mov rdx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:get_CurrentState():System.Text.Json.JsonReaderState:this
call [rdx]System.Text.Json.Utf8JsonReader:get_CurrentState():System.Text.Json.JsonReaderState:this
mov rdx, qword ptr [rbx+0x10]
movsxd r8, dword ptr [rbx+0x20]
add rdx, r8
mov rcx, gword ptr [r15+0x38]
mov rdi, gword ptr [r15+0x40]
;; size=74 bbWeight=2 PerfScore 45.50
-G_M61993_IG66:
- vmovdqu ymm0, ymmword ptr [rbp-0x3A0]
- vmovdqu ymmword ptr [rbp-0x3D8], ymm0
- vmovdqu ymm0, ymmword ptr [rbp-0x388]
- vmovdqu ymmword ptr [rbp-0x3C0], ymm0
+G_M61993_IG101:
+ vmovdqu ymm0, ymmword ptr [rbp-0x550]
+ vmovdqu ymmword ptr [rbp-0x588], ymm0
+ vmovdqu ymm0, ymmword ptr [rbp-0x538]
+ vmovdqu ymmword ptr [rbp-0x570], ymm0
;; size=32 bbWeight=2 PerfScore 20.00
-G_M61993_IG67:
- mov rsi, gword ptr [rbp-0x738]
- mov gword ptr [rbp-0x3F8], rsi
- mov gword ptr [rbp-0x3F0], rcx
- mov gword ptr [rbp-0x3E8], rdi
- mov ecx, dword ptr [rbp-0x364]
- mov rdi, gword ptr [rbp-0x748]
+G_M61993_IG102:
+ mov rsi, gword ptr [rbp-0x918]
+ mov gword ptr [rbp-0x5A8], rsi
+ mov gword ptr [rbp-0x5A0], rcx
+ mov gword ptr [rbp-0x598], rdi
+ mov ecx, dword ptr [rbp-0x514]
+ mov rdi, gword ptr [rbp-0x928]
cmp ecx, dword ptr [rdi+0x08]
- jae G_M61993_IG175
+ jae G_M61993_IG209
imul rcx, rcx, 88
lea r8, bword ptr [rdi+rcx+0x10]
mov rdi, r8
- lea rsi, bword ptr [rbp-0x3F8]
+ lea rsi, bword ptr [rbp-0x5A8]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
mov ecx, 5
rep movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
mov qword ptr [r8+0x18], rdx
;; size=105 bbWeight=2 PerfScore 92.00
-G_M61993_IG68:
+G_M61993_IG103:
mov esi, dword ptr [rbx+0x58]
mov eax, esi
movzx rdi, byte ptr [rbx+0x28]
cmp edi, 1
- je SHORT G_M61993_IG70
+ je SHORT G_M61993_IG105
;; size=15 bbWeight=4 PerfScore 22.00
-G_M61993_IG69:
+G_M61993_IG104:
cmp edi, 3
- jne SHORT G_M61993_IG71
+ jne SHORT G_M61993_IG106
;; size=5 bbWeight=2 PerfScore 2.50
-G_M61993_IG70:
+G_M61993_IG105:
lea eax, [rsi-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG71:
+G_M61993_IG106:
mov rdi, rbx
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
- mov rax, bword ptr [rbp-0x7E8]
+ mov rax, bword ptr [rbp-0x9D8]
mov rsi, rax
xor rdi, rdi
mov gword ptr [rsi], rdi
;; size=32 bbWeight=4 PerfScore 25.00
-G_M61993_IG72:
+G_M61993_IG107:
mov gword ptr [rsi+0x08], rdi
;; size=4 bbWeight=4 PerfScore 4.00
-G_M61993_IG73:
+G_M61993_IG108:
mov gword ptr [rsi+0x10], rdi
mov byte ptr [rsi+0x58], 0
- mov bword ptr [rbp-0x7E8], rax
- jmp G_M61993_IG22
+ mov bword ptr [rbp-0x9D8], rax
+ jmp G_M61993_IG58
;; size=20 bbWeight=4 PerfScore 20.00
-G_M61993_IG74:
- jmp G_M61993_IG64
+G_M61993_IG109:
+ jmp G_M61993_IG99
;; size=5 bbWeight=1 PerfScore 2.00
-G_M61993_IG75:
- mov rax, bword ptr [rbp-0x7E8]
+G_M61993_IG110:
+ mov rax, bword ptr [rbp-0x9D8]
xor rsi, rsi
- mov gword ptr [rbp-0x358], rsi
- mov rsi, qword ptr [r14]
+ mov gword ptr [rbp-0x508], rsi
+ mov rsi, qword ptr [r13]
mov rsi, qword ptr [rsi+0x30]
mov rsi, qword ptr [rsi+0x20]
mov rbx, qword ptr [rsi]
- mov bword ptr [rbp-0x7E8], rax
+ mov qword ptr [rbp-0x860], rbx
+ mov qword ptr [rbp-0x850], rbx
+ mov bword ptr [rbp-0x9D8], rax
mov rsi, rax
- mov rdi, r14
- mov rcx, qword ptr [rbp-0x6A0]
+ mov rdi, r13
+ mov rcx, qword ptr [rbp-0x868]
call [rcx+0x18]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:CreateObject(byref):System.Object:this
mov rcx, rax
test rcx, rcx
- je SHORT G_M61993_IG78
- ;; size=61 bbWeight=0.50 PerfScore 8.62
-G_M61993_IG76:
- mov rdi, rbx
+ je SHORT G_M61993_IG113
+ ;; size=76 bbWeight=0.50 PerfScore 9.62
+G_M61993_IG111:
+ mov rdi, qword ptr [rbp-0x850]
cmp qword ptr [rcx], rdi
- je SHORT G_M61993_IG78
- ;; size=8 bbWeight=0.25 PerfScore 1.06
-G_M61993_IG77:
+ je SHORT G_M61993_IG113
+ ;; size=12 bbWeight=0.25 PerfScore 1.25
+G_M61993_IG112:
mov rsi, rax
call CORINFO_HELP_CHKCASTANY
- mov rbx, rax
- mov rcx, rbx
- ;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M61993_IG78:
- mov rbx, rcx
- mov rax, gword ptr [rbp-0x6C8]
- mov rcx, gword ptr [rax+0x38]
- test rcx, rcx
- je G_M61993_IG82
- mov rsi, rbx
- mov rdi, gword ptr [rcx+0x08]
- call [rcx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
- mov rax, gword ptr [rbp-0x6C8]
- ;; size=40 bbWeight=0.50 PerfScore 5.38
-G_M61993_IG79:
- mov rcx, gword ptr [rbp-0x6D0]
- cmp dword ptr [rcx+0x30], 0
- jle G_M61993_IG116
- mov rdx, gword ptr [rcx+0x10]
- mov gword ptr [rbp-0x6E0], rdx
- xor r8d, r8d
- mov bword ptr [rbp-0x6C0], r12
+ mov rcx, rax
+ ;; size=11 bbWeight=0.12 PerfScore 0.19
+G_M61993_IG113:
+ mov rax, rcx
+ mov rcx, gword ptr [rbp-0x890]
+ mov rdx, gword ptr [rcx+0x38]
+ test rdx, rdx
+ je G_M61993_IG117
+ mov gword ptr [rbp-0x898], rax
+ mov rsi, rax
+ mov rdi, gword ptr [rdx+0x08]
+ call [rdx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ mov rax, gword ptr [rbp-0x898]
+ mov rcx, gword ptr [rbp-0x890]
+ ;; size=54 bbWeight=0.50 PerfScore 6.38
+G_M61993_IG114:
+ mov rdx, gword ptr [rbp-0x8A0]
+ cmp dword ptr [rdx+0x30], 0
+ jle G_M61993_IG149
+ mov r8, gword ptr [rdx+0x10]
+ mov gword ptr [rbp-0x8B0], r8
+ xor r9d, r9d
+ mov bword ptr [rbp-0x888], r12
;; size=38 bbWeight=0.50 PerfScore 4.62
-G_M61993_IG80:
- cmp r8d, dword ptr [rdx+0x08]
- jae G_M61993_IG175
- mov qword ptr [rbp-0x6B0], r8
- imul rsi, r8, 88
- mov r9, gword ptr [rdx+rsi+0x10]
- mov gword ptr [rbp-0x6E8], r9
- lea r10, bword ptr [rdx+rsi+0x10]
- mov bword ptr [rbp-0x7D8], r10
- mov r11, qword ptr [r10+0x18]
- mov qword ptr [rbp-0xF8], r11
- mov rdi, gword ptr [r10+0x08]
- mov gword ptr [rbp-0x6F0], rdi
- mov rsi, gword ptr [r10+0x10]
- mov gword ptr [rbp-0x6F8], rsi
- mov eax, dword ptr [rbp-0x68C]
- and eax, 0xD1FFAB1E
- mov dword ptr [rbp-0x598], eax
- mov r12d, dword ptr [rbp-0x690]
+G_M61993_IG115:
+ cmp r9d, dword ptr [r8+0x08]
+ jae G_M61993_IG209
+ mov qword ptr [rbp-0x878], r9
+ imul rsi, r9, 88
+ mov r10, gword ptr [r8+rsi+0x10]
+ mov gword ptr [rbp-0x8B8], r10
+ lea r11, bword ptr [r8+rsi+0x10]
+ mov bword ptr [rbp-0x9C8], r11
+ mov rdi, qword ptr [r11+0x18]
+ mov qword ptr [rbp-0xF8], rdi
+ mov rsi, gword ptr [r11+0x08]
+ mov gword ptr [rbp-0x8C0], rsi
+ mov rbx, gword ptr [r11+0x10]
+ mov ecx, dword ptr [rbp-0x838]
+ and ecx, 0xD1FFAB1E
+ mov dword ptr [rbp-0x748], ecx
+ mov r12d, dword ptr [rbp-0x83C]
and r12d, 0xD1FFAB1E
- mov dword ptr [rbp-0x59C], r12d
- mov r12, gword ptr [rbp-0x7B8]
- mov rax, gword ptr [rbp-0x7C0]
- cmp r12, rax
- je SHORT G_M61993_IG83
- ;; size=135 bbWeight=4 PerfScore 115.00
-G_M61993_IG81:
+ mov dword ptr [rbp-0x74C], r12d
+ mov r12, gword ptr [rbp-0x998]
+ mov rcx, gword ptr [rbp-0x9A0]
+ cmp r12, rcx
+ je SHORT G_M61993_IG118
+ ;; size=129 bbWeight=4 PerfScore 111.00
+G_M61993_IG116:
+ mov gword ptr [rbp-0x898], rax
mov rsi, r12
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
call CORINFO_HELP_CHKCASTCLASS
- mov rsi, gword ptr [rbp-0x7C0]
+ mov rsi, gword ptr [rbp-0x9A0]
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
call CORINFO_HELP_CHKCASTCLASS
- movsxd rsi, dword ptr [rbp-0x59C]
+ movsxd rsi, dword ptr [rbp-0x74C]
add rsi, qword ptr [rax+0x10]
- movsxd rdi, dword ptr [rbp-0x598]
+ movsxd rdi, dword ptr [rbp-0x748]
add rdi, qword ptr [r12+0x10]
sub rsi, rdi
- jmp SHORT G_M61993_IG84
- ;; size=68 bbWeight=2 PerfScore 36.00
-G_M61993_IG82:
- mov rax, gword ptr [rbp-0x6C8]
- jmp G_M61993_IG79
+ jmp SHORT G_M61993_IG119
+ ;; size=75 bbWeight=2 PerfScore 38.00
+G_M61993_IG117:
+ mov rcx, gword ptr [rbp-0x890]
+ jmp G_M61993_IG114
;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M61993_IG83:
- mov edi, dword ptr [rbp-0x59C]
- sub edi, dword ptr [rbp-0x598]
- movsxd rdi, edi
- mov rsi, rdi
- ;; size=18 bbWeight=2 PerfScore 7.00
-G_M61993_IG84:
+G_M61993_IG118:
+ mov esi, dword ptr [rbp-0x74C]
+ sub esi, dword ptr [rbp-0x748]
+ movsxd rsi, esi
+ mov gword ptr [rbp-0x898], rax
+ ;; size=22 bbWeight=2 PerfScore 8.50
+G_M61993_IG119:
test rsi, rsi
- je G_M61993_IG91
+ je G_M61993_IG127
;; size=9 bbWeight=4 PerfScore 5.00
-G_M61993_IG85:
- mov r11, qword ptr [rbp-0xF8]
- test r11, r11
- jl G_M61993_IG188
- test r11, r11
- jne SHORT G_M61993_IG86
- mov rdi, r12
- mov esi, dword ptr [rbp-0x68C]
- mov r11d, esi
- jmp G_M61993_IG90
- ;; size=38 bbWeight=2 PerfScore 14.00
-G_M61993_IG86:
- mov esi, dword ptr [rbp-0x68C]
- mov edi, esi
- and edi, 0xD1FFAB1E
- mov dword ptr [rbp-0x5BC], edi
- mov esi, dword ptr [rbp-0x690]
+G_M61993_IG120:
+ mov rdi, qword ptr [rbp-0xF8]
+ test rdi, rdi
+ jl G_M61993_IG231
+ test rdi, rdi
+ jne SHORT G_M61993_IG121
+ mov rsi, r12
+ mov edi, dword ptr [rbp-0x838]
+ jmp G_M61993_IG126
+ ;; size=35 bbWeight=2 PerfScore 13.50
+G_M61993_IG121:
+ mov esi, dword ptr [rbp-0x838]
and esi, 0xD1FFAB1E
- mov dword ptr [rbp-0x5C0], esi
- mov rax, gword ptr [rbp-0x7C0]
- cmp r12, rax
- je SHORT G_M61993_IG87
+ mov dword ptr [rbp-0x76C], esi
+ mov r8d, dword ptr [rbp-0x83C]
+ and r8d, 0xD1FFAB1E
+ mov dword ptr [rbp-0x770], r8d
+ mov rcx, gword ptr [rbp-0x9A0]
+ cmp r12, rcx
+ je SHORT G_M61993_IG122
mov rsi, r12
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
call CORINFO_HELP_CHKCASTCLASS
mov ecx, dword ptr [r12+0x24]
- mov eax, dword ptr [rbp-0x5BC]
+ mov eax, dword ptr [rbp-0x76C]
sub ecx, eax
movsxd rdi, ecx
mov rsi, qword ptr [rbp-0xF8]
cmp rdi, rsi
- jg SHORT G_M61993_IG88
+ jg SHORT G_M61993_IG124
test ecx, ecx
- jl G_M61993_IG189
+ jl G_M61993_IG232
movsxd rcx, ecx
sub rsi, rcx
mov rcx, rsi
mov rdi, gword ptr [r12+0x08]
- mov rsi, gword ptr [rbp-0x7C0]
- mov edx, dword ptr [rbp-0x5C0]
+ mov rsi, gword ptr [rbp-0x9A0]
+ mov edx, dword ptr [rbp-0x770]
mov r8d, 1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition
call [rax]System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition
- mov rdi, rax
- jmp SHORT G_M61993_IG89
- ;; size=154 bbWeight=2 PerfScore 52.00
-G_M61993_IG87:
- mov esi, dword ptr [rbp-0x5C0]
- mov edi, dword ptr [rbp-0x5BC]
- sub esi, edi
- movsxd rsi, esi
- mov r11, qword ptr [rbp-0xF8]
- cmp rsi, r11
- mov eax, edi
- mov rsi, r11
- jl G_M61993_IG190
- ;; size=38 bbWeight=2 PerfScore 10.50
-G_M61993_IG88:
+ mov rsi, rax
+ jmp SHORT G_M61993_IG125
+ ;; size=155 bbWeight=2 PerfScore 51.50
+G_M61993_IG122:
+ mov r8d, dword ptr [rbp-0x770]
+ mov esi, dword ptr [rbp-0x76C]
+ sub r8d, esi
+ movsxd r8, r8d
+ mov rdi, qword ptr [rbp-0xF8]
+ cmp r8, rdi
+ mov eax, esi
+ jl G_M61993_IG233
+ ;; size=37 bbWeight=2 PerfScore 10.00
+G_M61993_IG123:
+ mov rsi, rdi
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M61993_IG124:
add eax, esi
- mov rdi, r12
+ mov rsi, r12
mov edx, eax
;; size=7 bbWeight=2 PerfScore 1.50
-G_M61993_IG89:
- mov eax, dword ptr [rbp-0x68C]
- mov r11d, eax
- and r11d, 0xD1FFAB1E
- or r11d, edx
- ;; size=19 bbWeight=2 PerfScore 3.50
-G_M61993_IG90:
+G_M61993_IG125:
+ mov eax, dword ptr [rbp-0x838]
+ mov edi, eax
+ and edi, 0xD1FFAB1E
+ or edi, edx
+ ;; size=16 bbWeight=2 PerfScore 3.50
+G_M61993_IG126:
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x348], ymm0
vmovdqu ymmword ptr [rbp-0x328], ymm0
vmovdqu ymmword ptr [rbp-0x308], ymm0
vmovdqu ymmword ptr [rbp-0x2E8], ymm0
vmovdqu ymmword ptr [rbp-0x2C8], ymm0
vmovdqu ymmword ptr [rbp-0x2A8], ymm0
- mov gword ptr [rbp-0x5B8], rdi
- mov rax, gword ptr [rbp-0x7C0]
- mov gword ptr [rbp-0x5B0], rax
- mov dword ptr [rbp-0x5A8], r11d
- mov r11d, dword ptr [rbp-0x690]
- mov dword ptr [rbp-0x5A4], r11d
+ mov gword ptr [rbp-0x768], rsi
+ mov rcx, gword ptr [rbp-0x9A0]
+ mov gword ptr [rbp-0x760], rcx
+ mov dword ptr [rbp-0x758], edi
+ mov edi, dword ptr [rbp-0x83C]
+ mov dword ptr [rbp-0x754], edi
lea rdi, [rsp]
- lea rsi, [rbp-0x5B8]
+ lea rsi, [rbp-0x768]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x08], rcx
add rsi, 8
add rdi, 8
movsq
- mov r10, bword ptr [rbp-0x7D8]
- add r10, 32
+ mov r11, bword ptr [rbp-0x9C8]
+ add r11, 32
lea rdi, [rsp+0x18]
- mov rsi, r10
+ mov rsi, r11
mov ecx, 4
rep movsq
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x38], rcx
add rsi, 8
add rdi, 8
movsq
movsq
lea rdi, [rbp-0x348]
mov esi, 1
mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:.ctor(System.Buffers.ReadOnlySequence`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
call [rcx]System.Text.Json.Utf8JsonReader:.ctor(System.Buffers.ReadOnlySequence`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
lea rdi, bword ptr [rbp-0x288]
lea rsi, bword ptr [rbp-0x348]
mov ecx, 24
rep movsq
- jmp G_M61993_IG92
- ;; size=236 bbWeight=2 PerfScore 172.67
-G_M61993_IG91:
- mov r11, qword ptr [rbp-0xF8]
- movsxd rdi, r11d
- cmp r11, rdi
- jne G_M61993_IG174
- mov edi, r11d
- mov r11d, dword ptr [rbp-0x688]
- cmp edi, r11d
- ja G_M61993_IG191
+ jmp G_M61993_IG128
+ ;; size=233 bbWeight=2 PerfScore 172.67
+G_M61993_IG127:
+ mov rdi, qword ptr [rbp-0xF8]
+ movsxd rsi, edi
+ cmp rdi, rsi
+ jne G_M61993_IG208
+ cmp edi, dword ptr [rbp-0x834]
+ ja G_M61993_IG234
mov esi, edi
- add rsi, bword ptr [rbp-0x7B0]
- sub r11d, edi
- mov bword ptr [rbp-0x7D0], rsi
+ add rsi, bword ptr [rbp-0x990]
+ mov r8d, dword ptr [rbp-0x834]
+ sub r8d, edi
+ mov bword ptr [rbp-0x9C0], rsi
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x1C8], ymm0
vmovdqu ymmword ptr [rbp-0x1A8], ymm0
vmovdqu ymmword ptr [rbp-0x188], ymm0
vmovdqu ymmword ptr [rbp-0x168], ymm0
vmovdqu ymmword ptr [rbp-0x148], ymm0
vmovdqu ymmword ptr [rbp-0x128], ymm0
- mov r10, bword ptr [rbp-0x7D8]
- add r10, 32
+ mov r11, bword ptr [rbp-0x9C8]
+ add r11, 32
lea rdi, [rsp]
- mov rsi, r10
+ mov rsi, r11
mov ecx, 4
rep movsq
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x20], rcx
add rsi, 8
add rdi, 8
movsq
movsq
- mov rsi, bword ptr [rbp-0x7D0]
- mov edx, r11d
+ mov rsi, bword ptr [rbp-0x9C0]
+ mov edx, r8d
lea rdi, [rbp-0x1C8]
mov ecx, 1
- mov r10, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
- call [r10]System.Text.Json.Utf8JsonReader:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
+ mov r8, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
+ call [r8]System.Text.Json.Utf8JsonReader:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this
lea rdi, bword ptr [rbp-0x288]
lea rsi, bword ptr [rbp-0x1C8]
mov ecx, 24
rep movsq
- ;; size=212 bbWeight=2 PerfScore 158.17
-G_M61993_IG92:
+ ;; size=212 bbWeight=2 PerfScore 161.17
+G_M61993_IG128:
lea rdi, bword ptr [rbp-0xF0]
lea rsi, bword ptr [rbp-0x288]
mov ecx, 24
rep movsq
lea rdi, bword ptr [r15+0x38]
- mov rsi, gword ptr [rbp-0x6F0]
+ mov rsi, gword ptr [rbp-0x8C0]
call CORINFO_HELP_CHECKED_ASSIGN_REF
lea rdi, bword ptr [r15+0x30]
- mov rsi, gword ptr [rbp-0x6E8]
+ mov rsi, gword ptr [rbp-0x8B8]
call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rax, gword ptr [rbp-0x6E8]
+ mov rax, gword ptr [rbp-0x8B8]
mov rdi, qword ptr [rax+0xB8]
mov qword ptr [r15+0x94], rdi
- mov rsi, gword ptr [rbp-0x6F8]
xor ecx, ecx
- test rsi, rsi
+ test rbx, rbx
setne cl
mov dword ptr [rbp-0xFC], ecx
test ecx, ecx
- je SHORT G_M61993_IG94
- ;; size=100 bbWeight=4 PerfScore 160.00
-G_M61993_IG93:
+ je SHORT G_M61993_IG130
+ ;; size=93 bbWeight=4 PerfScore 156.00
+G_M61993_IG129:
lea rdi, bword ptr [r15+0x40]
+ mov rsi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rdi, rbx
- mov rsi, gword ptr [rbp-0x6E8]
- mov rdx, r13
+ mov rdi, gword ptr [rbp-0x898]
+ mov rsi, gword ptr [rbp-0x8B8]
+ mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:CreateExtensionDataProperty(System.Object,System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonSerializerOptions)
call [rax]System.Text.Json.JsonSerializer:CreateExtensionDataProperty(System.Object,System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonSerializerOptions)
- ;; size=34 bbWeight=2 PerfScore 12.50
-G_M61993_IG94:
- mov rax, gword ptr [rbp-0x6E8]
+ ;; size=41 bbWeight=2 PerfScore 14.50
+G_M61993_IG130:
+ mov rax, gword ptr [rbp-0x8B8]
cmp byte ptr [rax+0x9B], 0
- jne G_M61993_IG110
+ jne G_M61993_IG143
;; size=20 bbWeight=4 PerfScore 20.00
-G_M61993_IG95:
+G_M61993_IG131:
cmp byte ptr [rbp-0xCC], 0
- je G_M61993_IG107
+ je G_M61993_IG140
cmp byte ptr [rbp-0xC8], 5
- jne SHORT G_M61993_IG98
- cmp byte ptr [rbp-0xC5], 0
- jne SHORT G_M61993_IG96
- lea rdi, [rbp-0xF0]
- mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:ReadSingleSegment():ubyte:this
- call [rax]System.Text.Json.Utf8JsonReader:ReadSingleSegment():ubyte:this
- jmp SHORT G_M61993_IG97
- ;; size=52 bbWeight=2 PerfScore 29.50
-G_M61993_IG96:
+ jne SHORT G_M61993_IG132
lea rdi, [rbp-0xF0]
- mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:ReadMultiSegment():ubyte:this
- call [rax]System.Text.Json.Utf8JsonReader:ReadMultiSegment():ubyte:this
- ;; size=19 bbWeight=2 PerfScore 7.50
-G_M61993_IG97:
- test eax, eax
- jne SHORT G_M61993_IG98
- cmp byte ptr [rbp-0xCC], 0
- je SHORT G_M61993_IG98
- cmp byte ptr [rbp-0xC8], 0
- je G_M61993_IG192
- ;; size=26 bbWeight=2 PerfScore 14.50
-G_M61993_IG98:
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ ;; size=41 bbWeight=2 PerfScore 19.50
+G_M61993_IG132:
movzx rdi, byte ptr [rbp-0xC8]
mov eax, edi
cmp eax, 1
- je SHORT G_M61993_IG99
+ je SHORT G_M61993_IG133
cmp eax, 3
- jne G_M61993_IG112
+ jne G_M61993_IG145
;; size=24 bbWeight=2 PerfScore 7.50
-G_M61993_IG99:
+G_M61993_IG133:
mov eax, dword ptr [rbp-0x98]
- mov ecx, eax
+ mov ebx, eax
cmp edi, 1
- je SHORT G_M61993_IG100
+ je SHORT G_M61993_IG134
cmp edi, 3
- jne SHORT G_M61993_IG101
+ jne SHORT G_M61993_IG135
;; size=18 bbWeight=2 PerfScore 7.50
-G_M61993_IG100:
- lea ecx, [rax-0x01]
+G_M61993_IG134:
+ lea ebx, [rax-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG101:
- mov dword ptr [rbp-0x684], ecx
- ;; size=6 bbWeight=2 PerfScore 2.00
-G_M61993_IG102:
+G_M61993_IG135:
lea rdi, [rbp-0xF0]
- mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
- call [rcx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
+ call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
mov ecx, dword ptr [rbp-0x98]
mov edi, ecx
movzx rsi, byte ptr [rbp-0xC8]
cmp esi, 1
- je SHORT G_M61993_IG104
+ je SHORT G_M61993_IG137
;; size=40 bbWeight=16 PerfScore 116.00
-G_M61993_IG103:
+G_M61993_IG136:
cmp esi, 3
- jne SHORT G_M61993_IG105
+ jne SHORT G_M61993_IG138
;; size=5 bbWeight=8 PerfScore 10.00
-G_M61993_IG104:
+G_M61993_IG137:
lea edi, [rcx-0x01]
;; size=3 bbWeight=8 PerfScore 4.00
-G_M61993_IG105:
- mov ecx, dword ptr [rbp-0x684]
- cmp ecx, edi
- jl SHORT G_M61993_IG102
- ;; size=10 bbWeight=16 PerfScore 36.00
-G_M61993_IG106:
- jmp G_M61993_IG112
+G_M61993_IG138:
+ cmp ebx, edi
+ jl SHORT G_M61993_IG135
+ ;; size=4 bbWeight=16 PerfScore 20.00
+G_M61993_IG139:
+ jmp G_M61993_IG145
;; size=5 bbWeight=2 PerfScore 4.00
-G_M61993_IG107:
- lea rdi, bword ptr [rbp-0x680]
+G_M61993_IG140:
+ lea rdi, bword ptr [rbp-0x830]
lea rsi, bword ptr [rbp-0xF0]
mov ecx, 24
rep movsq
mov esi, dword ptr [rbp-0x98]
mov eax, esi
movzx rdi, byte ptr [rbp-0xC8]
cmp edi, 1
- je SHORT G_M61993_IG108
+ je SHORT G_M61993_IG141
cmp edi, 3
- jne SHORT G_M61993_IG109
+ jne SHORT G_M61993_IG142
;; size=48 bbWeight=2 PerfScore 62.00
-G_M61993_IG108:
+G_M61993_IG141:
lea eax, [rsi-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
-G_M61993_IG109:
+G_M61993_IG142:
lea rdi, [rbp-0xF0]
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
test eax, eax
- jne SHORT G_M61993_IG112
+ jne G_M61993_IG145
lea rdi, bword ptr [rbp-0xF0]
- lea rsi, bword ptr [rbp-0x680]
+ lea rsi, bword ptr [rbp-0x830]
mov ecx, 24
rep movsq
- jmp SHORT G_M61993_IG112
- ;; size=49 bbWeight=2 PerfScore 67.00
-G_M61993_IG110:
+ jmp SHORT G_M61993_IG145
+ ;; size=53 bbWeight=2 PerfScore 67.00
+G_M61993_IG143:
lea rdi, [rbp-0xF0]
mov rdx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rdx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
cmp dword ptr [rbp-0xFC], 0
- jne SHORT G_M61993_IG111
+ jne SHORT G_M61993_IG144
lea rcx, [rbp-0xF0]
- mov rdi, gword ptr [rbp-0x6E8]
- mov rsi, rbx
+ mov rdi, gword ptr [rbp-0x8B8]
+ mov rsi, gword ptr [rbp-0x898]
mov rdx, r15
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x30]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndSetMember(System.Object,byref,byref):ubyte:this
- jmp SHORT G_M61993_IG112
- ;; size=60 bbWeight=2 PerfScore 35.50
-G_M61993_IG111:
+ jmp SHORT G_M61993_IG145
+ ;; size=64 bbWeight=2 PerfScore 37.00
+G_M61993_IG144:
lea rcx, [rbp-0xF0]
- mov rdi, gword ptr [rbp-0x6E8]
- mov rsi, rbx
+ mov rdi, gword ptr [rbp-0x8B8]
+ mov rsi, gword ptr [rbp-0x898]
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndAddExtensionProperty(System.Object,byref,byref):ubyte:this
call [rax]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:ReadJsonAndAddExtensionProperty(System.Object,byref,byref):ubyte:this
- ;; size=32 bbWeight=2 PerfScore 10.50
-G_M61993_IG112:
- mov rax, bword ptr [rbp-0x7E8]
- mov rdi, rax
+ ;; size=36 bbWeight=2 PerfScore 12.00
+G_M61993_IG145:
+ mov rbx, bword ptr [rbp-0x9D8]
+ mov rdi, rbx
xor rsi, rsi
mov gword ptr [rdi], rsi
;; size=15 bbWeight=4 PerfScore 10.00
-G_M61993_IG113:
+G_M61993_IG146:
mov gword ptr [rdi+0x08], rsi
;; size=4 bbWeight=4 PerfScore 4.00
-G_M61993_IG114:
+G_M61993_IG147:
mov gword ptr [rdi+0x10], rsi
mov byte ptr [rdi+0x58], 0
- mov rdi, qword ptr [rbp-0x6B0]
+ mov rdi, qword ptr [rbp-0x878]
inc edi
- mov rcx, gword ptr [rbp-0x6D0]
- cmp edi, dword ptr [rcx+0x30]
- mov bword ptr [rbp-0x7E8], rax
- mov r8, rdi
- mov rdx, gword ptr [rbp-0x6E0]
- jl G_M61993_IG80
+ mov rax, gword ptr [rbp-0x8A0]
+ cmp edi, dword ptr [rax+0x30]
+ mov bword ptr [rbp-0x9D8], rbx
+ mov r9, rdi
+ mov r8, gword ptr [rbp-0x8B0]
+ jl G_M61993_IG160
;; size=50 bbWeight=4 PerfScore 42.00
-G_M61993_IG115:
- mov r12, bword ptr [rbp-0x6C0]
- mov rcx, gword ptr [rbp-0x6D0]
- mov r13, gword ptr [rcx+0x10]
+G_M61993_IG148:
+ mov r12, bword ptr [rbp-0x888]
+ mov rdx, gword ptr [rbp-0x8A0]
+ mov r14, gword ptr [rdx+0x10]
xor rdi, rdi
- mov gword ptr [rcx+0x10], rdi
+ mov gword ptr [rdx+0x10], rdi
mov rdi, 0xD1FFAB1E
mov esi, 126
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[System.ValueTuple`5[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonReaderState,long,ubyte[],System.String]]:s_shared
mov rdi, gword ptr [rdi]
- mov rsi, r13
+ mov rsi, r14
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Return(System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][],ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon]]:Return(System.ValueTuple`5[System.__Canon,System.Text.Json.JsonReaderState,long,System.__Canon,System.__Canon][],ubyte):this
- mov rax, gword ptr [rbp-0x6C8]
- mov rcx, gword ptr [rbp-0x6D0]
- ;; size=93 bbWeight=0.50 PerfScore 8.88
-G_M61993_IG116:
- mov rdx, gword ptr [rax+0x40]
- test rdx, rdx
- je SHORT G_M61993_IG117
- mov rsi, rbx
- mov rdi, gword ptr [rdx+0x08]
- call [rdx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
- mov rcx, gword ptr [rbp-0x6D0]
- ;; size=26 bbWeight=0.50 PerfScore 4.75
-G_M61993_IG117:
- mov r13, bword ptr [rbp-0x7E8]
- mov rdx, r13
- mov bword ptr [rbp-0x7A8], rdx
- mov rax, gword ptr [rbp-0x6C8]
- cmp dword ptr [rax+0xF4], 0
- jle SHORT G_M61993_IG118
- mov rdi, gword ptr [rdx+0x48]
- mov rsi, 0xD1FFAB1E ; code for System.Collections.BitArray:HasAllSet():ubyte:this
+ mov rax, gword ptr [rbp-0x898]
+ mov rcx, gword ptr [rbp-0x890]
+ mov rdx, gword ptr [rbp-0x8A0]
+ ;; size=100 bbWeight=0.50 PerfScore 9.38
+G_M61993_IG149:
+ mov r8, gword ptr [rcx+0x40]
+ test r8, r8
+ je SHORT G_M61993_IG150
+ mov gword ptr [rbp-0x898], rax
+ mov rsi, rax
+ mov rdi, gword ptr [r8+0x08]
+ call [r8+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ mov rax, gword ptr [rbp-0x898]
+ mov rdx, gword ptr [rbp-0x8A0]
+ ;; size=41 bbWeight=0.50 PerfScore 5.75
+G_M61993_IG150:
+ mov r14, bword ptr [rbp-0x9D8]
+ mov rsi, r14
+ mov bword ptr [rbp-0x988], rsi
+ mov rcx, gword ptr [rbp-0x890]
+ cmp dword ptr [rcx+0xF4], 0
+ jle SHORT G_M61993_IG151
+ mov gword ptr [rbp-0x898], rax
+ mov rdi, gword ptr [rsi+0x48]
+ mov r8, 0xD1FFAB1E ; code for System.Collections.BitArray:HasAllSet():ubyte:this
cmp dword ptr [rdi], edi
- call [rsi]System.Collections.BitArray:HasAllSet():ubyte:this
+ call [r8]System.Collections.BitArray:HasAllSet():ubyte:this
test eax, eax
- jne G_M61993_IG126
- mov rsi, bword ptr [rbp-0x7A8]
+ jne G_M61993_IG159
+ mov rsi, bword ptr [rbp-0x988]
mov rsi, gword ptr [rsi+0x48]
- mov rdi, gword ptr [rbp-0x6C8]
+ mov rdi, gword ptr [rbp-0x890]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException_JsonRequiredPropertyMissing(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Collections.BitArray)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonException_JsonRequiredPropertyMissing(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Collections.BitArray)
- mov rcx, gword ptr [rbp-0x6D0]
- ;; size=96 bbWeight=0.50 PerfScore 12.50
-G_M61993_IG118:
- mov rdi, qword ptr [r14]
- mov rdi, qword ptr [rdi+0x30]
- mov rdi, qword ptr [rdi+0x20]
- mov rdi, qword ptr [rdi]
- mov rsi, rbx
+ mov rax, gword ptr [rbp-0x898]
+ mov rdx, gword ptr [rbp-0x8A0]
+ ;; size=111 bbWeight=0.50 PerfScore 13.50
+G_M61993_IG151:
+ mov rsi, rax
test rsi, rsi
- je SHORT G_M61993_IG125
- ;; size=22 bbWeight=0.50 PerfScore 4.75
-G_M61993_IG119:
+ je SHORT G_M61993_IG158
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M61993_IG152:
+ mov rbx, qword ptr [rbp-0x860]
+ mov rdi, rbx
cmp qword ptr [rsi], rdi
- je SHORT G_M61993_IG121
- ;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M61993_IG120:
- mov rsi, rbx
+ je SHORT G_M61993_IG154
+ ;; size=15 bbWeight=0.25 PerfScore 1.31
+G_M61993_IG153:
+ mov rsi, rax
call CORINFO_HELP_CHKCASTANY
mov rsi, rax
;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M61993_IG121:
+G_M61993_IG154:
mov rdi, r12
call CORINFO_HELP_CHECKED_ASSIGN_REF
cmp gword ptr [r15+0x68], 0
- je SHORT G_M61993_IG122
- mov rsi, r13
+ je SHORT G_M61993_IG155
+ mov rsi, r14
mov rdi, gword ptr [r15+0x58]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedPropertyCache(byref):this
cmp dword ptr [rdi], edi
call [rax]System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedPropertyCache(byref):this
;; size=36 bbWeight=0.50 PerfScore 6.88
-G_M61993_IG122:
- mov rbx, gword ptr [rbp-0x6D0]
+G_M61993_IG155:
+ mov rbx, gword ptr [rbp-0x8A0]
cmp gword ptr [rbx+0x28], 0
- je SHORT G_M61993_IG123
- mov rsi, r13
+ je SHORT G_M61993_IG156
+ mov rsi, r14
mov rdi, gword ptr [r15+0x58]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedParameterCache(byref):this
cmp dword ptr [rdi], edi
call [rax]System.Text.Json.Serialization.Metadata.JsonTypeInfo:UpdateSortedParameterCache(byref):this
;; size=35 bbWeight=0.50 PerfScore 6.75
-G_M61993_IG123:
+G_M61993_IG156:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M61993_IG124:
+G_M61993_IG157:
vzeroupper
- add rsp, 0x828
+ add rsp, 0xA18
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
-G_M61993_IG125:
- jmp SHORT G_M61993_IG121
+G_M61993_IG158:
+ jmp SHORT G_M61993_IG154
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M61993_IG126:
- mov rcx, gword ptr [rbp-0x6D0]
- jmp G_M61993_IG118
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M61993_IG127:
+G_M61993_IG159:
+ mov rax, gword ptr [rbp-0x898]
+ mov rdx, gword ptr [rbp-0x8A0]
+ jmp G_M61993_IG151
+ ;; size=19 bbWeight=0.25 PerfScore 1.00
+G_M61993_IG160:
+ mov rax, gword ptr [rbp-0x898]
+ jmp G_M61993_IG115
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M61993_IG161:
cmp byte ptr [r15+0x8A], 0
- jne SHORT G_M61993_IG128
+ jne SHORT G_M61993_IG162
cmp byte ptr [rbx+0x28], 1
- jne G_M61993_IG193
+ jne G_M61993_IG235
mov byte ptr [r15+0x8A], 1
;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M61993_IG128:
+G_M61993_IG162:
cmp byte ptr [r15+0x8B], 0
- je G_M61993_IG133
+ je G_M61993_IG167
cmp byte ptr [r15+0x8A], 2
- jae G_M61993_IG133
- mov gword ptr [rbp-0x6B8], rax
- mov rdi, r14
+ jae G_M61993_IG167
+ mov gword ptr [rbp-0x880], rax
+ mov rdi, r13
mov rsi, r10
mov rdx, rbx
mov rcx, r15
mov r8, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:TryReadMetadata(System.Text.Json.Serialization.JsonConverter,System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref,byref):ubyte
call [r8]System.Text.Json.JsonSerializer:TryReadMetadata(System.Text.Json.Serialization.JsonConverter,System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref,byref):ubyte
test eax, eax
- je G_M61993_IG153
+ je G_M61993_IG187
cmp byte ptr [r15+0x8D], 4
- jne SHORT G_M61993_IG132
- mov rdi, qword ptr [r14]
+ jne SHORT G_M61993_IG166
+ mov rdi, qword ptr [r13]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x20]
mov rax, qword ptr [rsi+0x10]
test rax, rax
- je SHORT G_M61993_IG130
- ;; size=98 bbWeight=0.50 PerfScore 13.88
-G_M61993_IG129:
+ je SHORT G_M61993_IG164
+ ;; size=99 bbWeight=0.50 PerfScore 13.88
+G_M61993_IG163:
mov rdi, rax
- jmp SHORT G_M61993_IG131
+ jmp SHORT G_M61993_IG165
;; size=5 bbWeight=0.40 PerfScore 0.90
-G_M61993_IG130:
+G_M61993_IG164:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
-G_M61993_IG131:
+G_M61993_IG165:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:ResolveReferenceId[System.__Canon](byref):System.__Canon
call [rax]System.Text.Json.JsonSerializer:ResolveReferenceId[System.__Canon](byref):System.__Canon
mov rsi, rax
mov rdi, r12
call CORINFO_HELP_CHECKED_ASSIGN_REF
- jmp G_M61993_IG123
+ jmp G_M61993_IG156
;; size=31 bbWeight=0.50 PerfScore 3.50
-G_M61993_IG132:
+G_M61993_IG166:
mov byte ptr [r15+0x8A], 2
- mov rax, gword ptr [rbp-0x6B8]
- mov r10, gword ptr [rbp-0x6C8]
+ mov rax, gword ptr [rbp-0x880]
+ mov r10, gword ptr [rbp-0x890]
;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M61993_IG133:
+G_M61993_IG167:
test byte ptr [r15+0x8D], 8
- je G_M61993_IG138
+ je G_M61993_IG172
cmp byte ptr [r15+0x8E], 1
- je G_M61993_IG138
- mov gword ptr [rbp-0x6B8], rax
- mov rdi, r14
+ je G_M61993_IG172
+ mov gword ptr [rbp-0x880], rax
+ mov rdi, r13
mov rsi, r10
mov rdx, r15
mov r8, 0xD1FFAB1E ; code for System.Text.Json.Serialization.JsonConverter:ResolvePolymorphicConverter(System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref):System.Text.Json.Serialization.JsonConverter:this
call [r8]System.Text.Json.Serialization.JsonConverter:ResolvePolymorphicConverter(System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref):System.Text.Json.Serialization.JsonConverter:this
- mov gword ptr [rbp-0x700], rax
+ mov gword ptr [rbp-0x8C8], rax
test rax, rax
- mov r10, gword ptr [rbp-0x6C8]
- je G_M61993_IG137
+ mov r10, gword ptr [rbp-0x890]
+ je G_M61993_IG171
mov rdi, rax
mov rcx, qword ptr [rax]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
mov rdx, rax
lea r9, [rbp-0x108]
mov rsi, rbx
- mov rdi, gword ptr [rbp-0x700]
- mov rcx, r13
+ mov rdi, gword ptr [rbp-0x8C8]
+ mov rcx, r14
mov r8, r15
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax]System.Text.Json.Serialization.JsonConverter:OnTryReadAsObject(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this
- mov r13d, eax
- mov rdi, qword ptr [r14]
+ mov r14d, eax
+ mov rdi, qword ptr [r13]
mov rdi, qword ptr [rdi+0x30]
mov rdi, qword ptr [rdi+0x20]
- mov rdi, qword ptr [rdi]
+ mov rbx, qword ptr [rdi]
+ mov rdi, rbx
mov rsi, gword ptr [rbp-0x108]
mov rax, rsi
test rax, rax
- je SHORT G_M61993_IG136
- ;; size=160 bbWeight=0.50 PerfScore 21.88
-G_M61993_IG134:
+ je SHORT G_M61993_IG170
+ ;; size=164 bbWeight=0.50 PerfScore 22.00
+G_M61993_IG168:
cmp qword ptr [rax], rdi
- je SHORT G_M61993_IG136
+ je SHORT G_M61993_IG170
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M61993_IG135:
+G_M61993_IG169:
call CORINFO_HELP_CHKCASTANY
;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M61993_IG136:
+G_M61993_IG170:
mov rdi, r12
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
lea rdi, bword ptr [r15+0x58]
lea r12, bword ptr [r15+0x60]
mov rsi, gword ptr [r15+0x60]
mov rbx, gword ptr [r15+0x58]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rdi, r12
mov rsi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rax, bword ptr [r15+0x30]
- mov r15, rax
+ add r15, 48
+ mov rbx, r15
xor edi, edi
mov esi, 2
- test r13d, r13d
+ test r14d, r14d
cmove edi, esi
- mov byte ptr [r15+0x5E], dil
- mov eax, r13d
- jmp G_M61993_IG172
- ;; size=75 bbWeight=0.50 PerfScore 7.00
-G_M61993_IG137:
- mov rax, gword ptr [rbp-0x6B8]
+ mov byte ptr [rbx+0x5E], dil
+ mov eax, r14d
+ jmp G_M61993_IG206
+ ;; size=75 bbWeight=0.50 PerfScore 6.88
+G_M61993_IG171:
+ mov rax, gword ptr [rbp-0x880]
;; size=7 bbWeight=0.25 PerfScore 0.25
-G_M61993_IG138:
+G_M61993_IG172:
cmp byte ptr [r15+0x8F], 0
- jne SHORT G_M61993_IG139
+ jne SHORT G_M61993_IG173
xor rdi, rdi
- jmp SHORT G_M61993_IG140
+ jmp SHORT G_M61993_IG174
;; size=14 bbWeight=0.50 PerfScore 3.12
-G_M61993_IG139:
+G_M61993_IG173:
mov rdi, gword ptr [r15]
mov esi, dword ptr [r15+0x20]
add esi, -2
cmp esi, dword ptr [rdi+0x08]
- jae G_M61993_IG175
+ jae G_M61993_IG209
imul rsi, rsi, 112
mov rdi, gword ptr [rdi+rsi+0x10]
;; size=28 bbWeight=0.50 PerfScore 6.12
-G_M61993_IG140:
+G_M61993_IG174:
test rdi, rdi
- mov gword ptr [rbp-0x6B8], rax
- je G_M61993_IG144
+ mov gword ptr [rbp-0x880], rax
+ je G_M61993_IG178
mov rsi, r15
mov rdx, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonPropertyInfo:TryGetPrePopulatedValue(byref):ubyte:this
call [rdx]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:TryGetPrePopulatedValue(byref):ubyte:this
test eax, eax
- je G_M61993_IG143
+ je G_M61993_IG177
mov rsi, gword ptr [r15+0x50]
- mov rax, gword ptr [rbp-0x6C8]
+ mov rax, gword ptr [rbp-0x890]
mov rcx, gword ptr [rax+0x38]
test rcx, rcx
- je SHORT G_M61993_IG141
+ je SHORT G_M61993_IG175
mov rdi, gword ptr [rcx+0x08]
call [rcx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
;; size=66 bbWeight=0.50 PerfScore 9.12
-G_M61993_IG141:
+G_M61993_IG175:
mov byte ptr [r15+0x8A], 4
lea rdi, bword ptr [r15+0x30]
mov rcx, rdi
- mov rax, gword ptr [rbp-0x6C8]
+ mov rax, gword ptr [rbp-0x890]
cmp dword ptr [rax+0xF4], 0
- mov bword ptr [rbp-0x780], rcx
- jle SHORT G_M61993_IG142
+ mov bword ptr [rbp-0x960], rcx
+ jle SHORT G_M61993_IG176
mov rdi, 0xD1FFAB1E ; System.Collections.BitArray
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x788], rax
- mov rcx, gword ptr [rbp-0x6C8]
+ mov gword ptr [rbp-0x968], rax
+ mov rcx, gword ptr [rbp-0x890]
mov esi, dword ptr [rcx+0xF4]
mov rdi, rax
xor edx, edx
mov rcx, 0xD1FFAB1E ; code for System.Collections.BitArray:.ctor(int,ubyte):this
call [rcx]System.Collections.BitArray:.ctor(int,ubyte):this
- mov rdi, bword ptr [rbp-0x780]
+ mov rdi, bword ptr [rbp-0x960]
lea rdi, bword ptr [rdi+0x48]
- mov rsi, gword ptr [rbp-0x788]
+ mov rsi, gword ptr [rbp-0x968]
call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rax, gword ptr [rbp-0x6B8]
+ mov rax, gword ptr [rbp-0x880]
jmp G_M61993_IG04
;; size=125 bbWeight=0.50 PerfScore 11.62
-G_M61993_IG142:
- mov rax, gword ptr [rbp-0x6B8]
+G_M61993_IG176:
+ mov rax, gword ptr [rbp-0x880]
jmp G_M61993_IG04
;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M61993_IG143:
- mov r10, gword ptr [rbp-0x6C8]
+G_M61993_IG177:
+ mov r10, gword ptr [rbp-0x890]
;; size=7 bbWeight=0.25 PerfScore 0.25
-G_M61993_IG144:
+G_M61993_IG178:
cmp byte ptr [r15+0x8A], 3
- jae SHORT G_M61993_IG147
+ jae SHORT G_M61993_IG181
cmp byte ptr [r15+0x8B], 0
- je SHORT G_M61993_IG145
+ je SHORT G_M61993_IG179
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:ValidateMetadataForObjectConverter(byref)
call [rax]System.Text.Json.JsonSerializer:ValidateMetadataForObjectConverter(byref)
- mov r10, gword ptr [rbp-0x6C8]
+ mov r10, gword ptr [rbp-0x890]
;; size=42 bbWeight=0.50 PerfScore 6.25
-G_M61993_IG145:
+G_M61993_IG179:
cmp byte ptr [r15+0x8D], 4
- jne SHORT G_M61993_IG150
- mov rdi, qword ptr [r14]
+ jne SHORT G_M61993_IG184
+ mov rdi, qword ptr [r13]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x20]
mov rax, qword ptr [rsi+0x10]
test rax, rax
- je SHORT G_M61993_IG148
- ;; size=30 bbWeight=0.50 PerfScore 6.62
-G_M61993_IG146:
+ je SHORT G_M61993_IG182
+ ;; size=31 bbWeight=0.50 PerfScore 6.62
+G_M61993_IG180:
mov rdi, rax
- jmp SHORT G_M61993_IG149
+ jmp SHORT G_M61993_IG183
;; size=5 bbWeight=0.40 PerfScore 0.90
-G_M61993_IG147:
- jmp G_M61993_IG152
+G_M61993_IG181:
+ jmp G_M61993_IG186
;; size=5 bbWeight=0.25 PerfScore 0.50
-G_M61993_IG148:
+G_M61993_IG182:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
-G_M61993_IG149:
+G_M61993_IG183:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:ResolveReferenceId[System.__Canon](byref):System.__Canon
call [rax]System.Text.Json.JsonSerializer:ResolveReferenceId[System.__Canon](byref):System.__Canon
mov rsi, rax
mov rdi, r12
call CORINFO_HELP_CHECKED_ASSIGN_REF
- jmp G_M61993_IG123
+ jmp G_M61993_IG156
;; size=31 bbWeight=0.50 PerfScore 3.50
-G_M61993_IG150:
+G_M61993_IG184:
mov rax, gword ptr [r15+0x58]
- mov gword ptr [rbp-0x790], rax
+ mov gword ptr [rbp-0x970], rax
cmp byte ptr [rax+0x103], 0
- jne G_M61993_IG194
+ jne G_M61993_IG236
mov edi, dword ptr [rax+0xF0]
mov rdx, gword ptr [rax+0x08]
mov rdx, gword ptr [rdx+0x10]
cmp edi, dword ptr [rdx+0x10]
- jne G_M61993_IG195
+ jne G_M61993_IG237
lea rdi, bword ptr [r15+0x30]
mov rdx, rdi
- mov bword ptr [rbp-0x798], rdx
+ mov bword ptr [rbp-0x978], rdx
cmp dword ptr [rax+0xF4], 0
- jle SHORT G_M61993_IG151
+ jle SHORT G_M61993_IG185
mov rdi, 0xD1FFAB1E ; System.Collections.BitArray
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x7A0], rax
- mov rcx, gword ptr [rbp-0x790]
+ mov gword ptr [rbp-0x980], rax
+ mov rcx, gword ptr [rbp-0x970]
mov esi, dword ptr [rcx+0xF4]
mov rdi, rax
xor edx, edx
mov rcx, 0xD1FFAB1E ; code for System.Collections.BitArray:.ctor(int,ubyte):this
call [rcx]System.Collections.BitArray:.ctor(int,ubyte):this
- mov rdi, bword ptr [rbp-0x798]
+ mov rdi, bword ptr [rbp-0x978]
lea rdi, bword ptr [rdi+0x48]
- mov rsi, gword ptr [rbp-0x7A0]
+ mov rsi, gword ptr [rbp-0x980]
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=145 bbWeight=0.50 PerfScore 17.62
-G_M61993_IG151:
+G_M61993_IG185:
xor rdi, rdi
mov gword ptr [r15+0x30], rdi
- mov rdi, r14
+ mov rdi, r13
mov rsi, r15
- mov rdx, r13
- mov rax, qword ptr [r14]
+ mov rdx, r14
+ mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x68]
call [rax+0x08]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:InitializeConstructorArgumentCaches(byref,System.Text.Json.JsonSerializerOptions):this
mov byte ptr [r15+0x8A], 3
- ;; size=33 bbWeight=0.50 PerfScore 5.00
-G_M61993_IG152:
- mov rdi, r14
+ ;; size=34 bbWeight=0.50 PerfScore 5.00
+G_M61993_IG186:
+ mov rdi, r13
mov rsi, r15
mov rdx, rbx
- mov rcx, r13
+ mov rcx, r14
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this
call [rax]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this
test eax, eax
- jne SHORT G_M61993_IG155
+ jne SHORT G_M61993_IG189
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M61993_IG153:
+G_M61993_IG187:
xor rax, rax
mov gword ptr [r12], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M61993_IG154:
+G_M61993_IG188:
vzeroupper
- add rsp, 0x828
+ add rsp, 0xA18
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
-G_M61993_IG155:
- mov rsi, qword ptr [r14]
+G_M61993_IG189:
+ mov rsi, qword ptr [r13]
mov rsi, qword ptr [rsi+0x30]
mov rsi, qword ptr [rsi+0x20]
mov rbx, qword ptr [rsi]
+ mov qword ptr [rbp-0x858], rbx
lea rdx, bword ptr [r15+0x30]
mov rax, rdx
- mov bword ptr [rbp-0x7E8], rax
+ mov bword ptr [rbp-0x9D8], rax
mov rsi, rax
- mov rdi, r14
- mov rcx, qword ptr [r14]
+ mov rdi, r13
+ mov rcx, qword ptr [r13]
mov rcx, qword ptr [rcx+0x68]
call [rcx+0x18]System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:CreateObject(byref):System.Object:this
mov rcx, rax
test rcx, rcx
- je SHORT G_M61993_IG158
- ;; size=52 bbWeight=0.50 PerfScore 9.38
-G_M61993_IG156:
- mov rdi, rbx
+ je SHORT G_M61993_IG192
+ ;; size=61 bbWeight=0.50 PerfScore 9.88
+G_M61993_IG190:
+ mov rdi, qword ptr [rbp-0x858]
cmp qword ptr [rcx], rdi
- je SHORT G_M61993_IG158
- ;; size=8 bbWeight=0.25 PerfScore 1.06
-G_M61993_IG157:
+ je SHORT G_M61993_IG192
+ ;; size=12 bbWeight=0.25 PerfScore 1.25
+G_M61993_IG191:
mov rsi, rax
call CORINFO_HELP_CHKCASTANY
- mov rbx, rax
- mov rcx, rbx
- ;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M61993_IG158:
- mov rbx, rcx
+ mov rcx, rax
+ ;; size=11 bbWeight=0.12 PerfScore 0.19
+G_M61993_IG192:
+ mov rax, rcx
test byte ptr [r15+0x8D], 2
- je SHORT G_M61993_IG159
+ je SHORT G_M61993_IG193
mov rdi, gword ptr [r15+0x08]
mov rsi, gword ptr [r15+0x10]
- mov rdx, rbx
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x20]System.Text.Json.Serialization.ReferenceResolver:AddReference(System.String,System.Object):this
+ mov gword ptr [rbp-0x898], rax
+ mov rdx, rax
+ mov rcx, qword ptr [rdi]
+ mov rcx, qword ptr [rcx+0x40]
+ call [rcx+0x20]System.Text.Json.Serialization.ReferenceResolver:AddReference(System.String,System.Object):this
xor rsi, rsi
mov gword ptr [r15+0x10], rsi
- ;; size=40 bbWeight=0.50 PerfScore 8.38
-G_M61993_IG159:
- mov rax, gword ptr [rbp-0x6C8]
- mov rcx, gword ptr [rax+0x38]
- test rcx, rcx
- je SHORT G_M61993_IG160
- mov rsi, rbx
- mov rdi, gword ptr [rcx+0x08]
- call [rcx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
- ;; size=26 bbWeight=0.50 PerfScore 4.75
-G_M61993_IG160:
- mov rcx, gword ptr [rbp-0x6D0]
- cmp dword ptr [rcx+0x30], 0
- jle G_M61993_IG165
- xor r8d, r8d
- ;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M61993_IG161:
- mov rsi, gword ptr [rcx+0x18]
+ mov rax, gword ptr [rbp-0x898]
+ ;; size=54 bbWeight=0.50 PerfScore 9.38
+G_M61993_IG193:
+ mov rcx, gword ptr [rbp-0x890]
+ mov rdx, gword ptr [rcx+0x38]
+ test rdx, rdx
+ je SHORT G_M61993_IG194
+ mov gword ptr [rbp-0x898], rax
+ mov rsi, rax
+ mov rdi, gword ptr [rdx+0x08]
+ call [rdx+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ mov rax, gword ptr [rbp-0x898]
+ ;; size=40 bbWeight=0.50 PerfScore 5.75
+G_M61993_IG194:
+ mov r8, gword ptr [rbp-0x8A0]
+ cmp dword ptr [r8+0x30], 0
+ jle G_M61993_IG199
+ xor r9d, r9d
+ ;; size=21 bbWeight=0.50 PerfScore 2.62
+G_M61993_IG195:
+ mov rsi, gword ptr [r8+0x18]
mov rdx, rsi
- cmp r8d, dword ptr [rdx+0x08]
- jae G_M61993_IG175
- lea rdi, [r8+2*r8]
- mov r9, gword ptr [rdx+8*rdi+0x10]
- mov gword ptr [rbp-0x708], r9
- mov qword ptr [rbp-0x6A8], r8
- cmp r8d, dword ptr [rsi+0x08]
- jae G_M61993_IG175
+ cmp r9d, dword ptr [rdx+0x08]
+ jae G_M61993_IG209
+ lea rdi, [r9+2*r9]
+ mov r10, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x8D0], r10
+ mov qword ptr [rbp-0x870], r9
+ cmp r9d, dword ptr [rsi+0x08]
+ jae G_M61993_IG209
lea rsi, bword ptr [rsi+8*rdi+0x10]
- mov r10, gword ptr [rsi+0x08]
- mov gword ptr [rbp-0x710], r10
- mov r11, gword ptr [rsi+0x10]
- mov gword ptr [rbp-0x718], r11
- test r11, r11
- jne G_M61993_IG166
+ mov r11, gword ptr [rsi+0x08]
+ mov gword ptr [rbp-0x8D8], r11
+ mov rdi, gword ptr [rsi+0x10]
+ mov gword ptr [rbp-0x8E0], rdi
+ test rdi, rdi
+ jne G_M61993_IG200
;; size=86 bbWeight=4 PerfScore 92.00
-G_M61993_IG162:
- test r10, r10
- jne SHORT G_M61993_IG163
- cmp byte ptr [r9+0x96], 0
- jne G_M61993_IG170
+G_M61993_IG196:
+ test r11, r11
+ jne SHORT G_M61993_IG197
+ cmp byte ptr [r10+0x96], 0
+ jne G_M61993_IG204
;; size=19 bbWeight=2 PerfScore 10.50
-G_M61993_IG163:
- mov r11, gword ptr [r9+0x28]
- mov rsi, rbx
- mov rdx, r10
- mov rdi, gword ptr [r11+0x08]
+G_M61993_IG197:
+ mov rdi, gword ptr [r10+0x28]
+ mov gword ptr [rbp-0x9E0], rdi
+ mov gword ptr [rbp-0x898], rax
+ mov rsi, rax
+ mov rdx, r11
+ mov rdi, gword ptr [rdi+0x08]
+ mov r11, gword ptr [rbp-0x9E0]
call [r11+0x18]System.Action`2[System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon):this
- mov rax, bword ptr [rbp-0x7E8]
+ mov rax, bword ptr [rbp-0x9D8]
mov rdi, rax
- mov rcx, gword ptr [rbp-0x708]
+ mov rcx, gword ptr [rbp-0x8D0]
cmp byte ptr [rcx+0x94], 0
- je SHORT G_M61993_IG164
+ je SHORT G_M61993_IG198
mov rdi, gword ptr [rdi+0x48]
mov r8d, dword ptr [rcx+0x8C]
cmp r8d, dword ptr [rdi+0x10]
- jae G_M61993_IG196
+ jae G_M61993_IG238
mov ecx, 1
shlx esi, ecx, r8d
mov rdx, gword ptr [rdi+0x08]
mov ecx, r8d
sar ecx, 5
cmp ecx, dword ptr [rdx+0x08]
- jae G_M61993_IG175
+ jae G_M61993_IG209
sar r8d, 5
mov ecx, r8d
lea rdx, bword ptr [rdx+4*rcx+0x10]
or dword ptr [rdx], esi
inc dword ptr [rdi+0x14]
- mov bword ptr [rbp-0x7E8], rax
- jmp G_M61993_IG170
- ;; size=123 bbWeight=2 PerfScore 80.00
-G_M61993_IG164:
- mov bword ptr [rbp-0x7E8], rax
- jmp G_M61993_IG170
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M61993_IG165:
- mov rax, gword ptr [rbp-0x6C8]
- jmp G_M61993_IG116
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M61993_IG166:
- mov bword ptr [rbp-0x6C0], r12
- mov rdi, rbx
- mov rsi, r9
- mov rdx, r13
+ mov bword ptr [rbp-0x9D8], rax
+ mov rax, gword ptr [rbp-0x898]
+ jmp G_M61993_IG204
+ ;; size=151 bbWeight=2 PerfScore 88.00
+G_M61993_IG198:
+ mov bword ptr [rbp-0x9D8], rax
+ mov rax, gword ptr [rbp-0x898]
+ jmp G_M61993_IG204
+ ;; size=19 bbWeight=1 PerfScore 4.00
+G_M61993_IG199:
+ mov qword ptr [rbp-0x860], rbx
+ mov rdx, r8
+ mov rcx, gword ptr [rbp-0x890]
+ jmp G_M61993_IG149
+ ;; size=22 bbWeight=0.25 PerfScore 1.06
+G_M61993_IG200:
+ mov bword ptr [rbp-0x888], r12
+ mov gword ptr [rbp-0x898], rax
+ mov rdi, rax
+ mov rsi, r10
+ mov rdx, r14
mov r12, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:CreateExtensionDataProperty(System.Object,System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonSerializerOptions)
call [r12]System.Text.Json.JsonSerializer:CreateExtensionDataProperty(System.Object,System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Text.Json.JsonSerializerOptions)
- mov rdi, gword ptr [rbp-0x708]
- mov rsi, rbx
+ mov rdi, gword ptr [rbp-0x8D0]
+ mov rsi, gword ptr [rbp-0x898]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]System.Text.Json.Serialization.Metadata.JsonPropertyInfo:GetValueAsObject(System.Object):System.Object:this
mov r12, rax
mov rsi, r12
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.IDictionary`2[System.String,System.Text.Json.JsonElement]
call CORINFO_HELP_ISINSTANCEOFINTERFACE
- mov gword ptr [rbp-0x720], rax
+ mov gword ptr [rbp-0x8E8], rax
test rax, rax
- je SHORT G_M61993_IG169
- mov rax, gword ptr [rbp-0x720]
+ je SHORT G_M61993_IG203
+ mov rax, gword ptr [rbp-0x8E8]
mov rsi, 0xD1FFAB1E ; System.Text.Json.JsonElement
- mov r12, gword ptr [rbp-0x710]
+ mov r12, gword ptr [rbp-0x8D8]
cmp qword ptr [r12], rsi
- je SHORT G_M61993_IG168
- ;; size=113 bbWeight=2 PerfScore 47.00
-G_M61993_IG167:
+ je SHORT G_M61993_IG202
+ ;; size=124 bbWeight=2 PerfScore 50.50
+G_M61993_IG201:
mov rsi, r12
mov rdi, 0xD1FFAB1E ; System.Text.Json.JsonElement
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rcx]CORINFO_HELP_UNBOX
- mov rax, gword ptr [rbp-0x720]
+ mov rax, gword ptr [rbp-0x8E8]
;; size=32 bbWeight=1 PerfScore 4.75
-G_M61993_IG168:
+G_M61993_IG202:
mov rdx, gword ptr [r12+0x08]
mov rcx, qword ptr [r12+0x10]
mov rdi, rax
- mov rsi, gword ptr [rbp-0x718]
+ mov rsi, gword ptr [rbp-0x8E0]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.Text.Json.JsonElement]:set_Item(System.__Canon,System.Text.Json.JsonElement):this
call [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.Text.Json.JsonElement]:set_Item(System.__Canon,System.Text.Json.JsonElement):this
- mov r12, bword ptr [rbp-0x6C0]
- jmp SHORT G_M61993_IG170
- ;; size=42 bbWeight=2 PerfScore 23.00
-G_M61993_IG169:
+ mov rax, gword ptr [rbp-0x898]
+ mov r12, bword ptr [rbp-0x888]
+ jmp SHORT G_M61993_IG204
+ ;; size=49 bbWeight=2 PerfScore 25.00
+G_M61993_IG203:
mov rsi, r12
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.IDictionary`2[System.String,System.Object]
call CORINFO_HELP_CHKCASTINTERFACE
mov rdi, rax
- mov rdx, gword ptr [rbp-0x710]
- mov rsi, gword ptr [rbp-0x718]
+ mov rdx, gword ptr [rbp-0x8D8]
+ mov rsi, gword ptr [rbp-0x8E0]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
call [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
- mov r12, bword ptr [rbp-0x6C0]
- ;; size=55 bbWeight=2 PerfScore 16.00
-G_M61993_IG170:
- mov r8, qword ptr [rbp-0x6A8]
- inc r8d
- mov rdi, r8
- mov rcx, gword ptr [rbp-0x6D0]
- cmp edi, dword ptr [rcx+0x30]
- mov r8, rdi
- jl G_M61993_IG161
- ;; size=32 bbWeight=4 PerfScore 27.00
-G_M61993_IG171:
- mov r13, gword ptr [rcx+0x18]
+ mov rax, gword ptr [rbp-0x898]
+ mov r12, bword ptr [rbp-0x888]
+ ;; size=62 bbWeight=2 PerfScore 18.00
+G_M61993_IG204:
+ mov r9, qword ptr [rbp-0x870]
+ inc r9d
+ mov rdi, r9
+ mov r8, gword ptr [rbp-0x8A0]
+ cmp edi, dword ptr [r8+0x30]
+ mov r9, rdi
+ jl G_M61993_IG195
+ ;; size=33 bbWeight=4 PerfScore 27.00
+G_M61993_IG205:
+ mov gword ptr [rbp-0x898], rax
+ mov r14, gword ptr [r8+0x18]
xor rdi, rdi
- mov gword ptr [rcx+0x18], rdi
+ mov gword ptr [r8+0x18], rdi
mov rdi, 0xD1FFAB1E
mov esi, 125
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[System.ValueTuple`3[System.Text.Json.Serialization.Metadata.JsonPropertyInfo,System.Object,System.String]]:s_shared
mov rdi, gword ptr [rdi]
- mov rsi, r13
+ mov rsi, r14
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:Return(System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon][],ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:Return(System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon][],ubyte):this
- mov rax, gword ptr [rbp-0x6C8]
- mov rcx, gword ptr [rbp-0x6D0]
- jmp G_M61993_IG116
- ;; size=84 bbWeight=0.50 PerfScore 8.88
-G_M61993_IG172:
+ mov qword ptr [rbp-0x860], rbx
+ mov rax, gword ptr [rbp-0x898]
+ mov rcx, gword ptr [rbp-0x890]
+ mov rdx, gword ptr [rbp-0x8A0]
+ jmp G_M61993_IG149
+ ;; size=105 bbWeight=0.50 PerfScore 10.38
+G_M61993_IG206:
movzx rax, al
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M61993_IG173:
+G_M61993_IG207:
vzeroupper
- add rsp, 0x828
+ add rsp, 0xA18
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
-G_M61993_IG174:
+G_M61993_IG208:
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M61993_IG175:
+G_M61993_IG209:
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M61993_IG176:
+G_M61993_IG210:
+ mov r14, bword ptr [rbp-0x9D8]
+ mov rdi, r14
+ cmp byte ptr [rdi+0x5E], 1
+ je SHORT G_M61993_IG211
+ mov rax, gword ptr [rdi+0x28]
+ jmp SHORT G_M61993_IG212
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M61993_IG211:
+ mov rax, gword ptr [rdi+0x30]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M61993_IG212:
+ mov bword ptr [rbp-0x9A8], rdx
+ mov rdi, rdx
+ mov dword ptr [rbp-0x840], r8d
+ mov esi, r8d
+ mov rdx, gword ptr [rax+0x88]
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+ call [rax]System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
+ test eax, eax
+ je G_M61993_IG215
+ mov r15, r14
+ mov r12d, dword ptr [rbp-0x840]
+ test r12d, r12d
+ jne SHORT G_M61993_IG213
+ mov rdi, 0xD1FFAB1E
+ mov esi, 20
+ call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
+ mov rsi, gword ptr [rsi]
+ jmp SHORT G_M61993_IG214
+ ;; size=97 bbWeight=0 PerfScore 0.00
+G_M61993_IG213:
+ mov esi, r12d
+ mov rdi, 0xD1FFAB1E ; ubyte[]
+ call CORINFO_HELP_NEWARR_1_VC
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x10]
+ mov edx, r12d
+ mov rsi, bword ptr [rbp-0x9A8]
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov rsi, r14
+ ;; size=50 bbWeight=0 PerfScore 0.00
+G_M61993_IG214:
+ lea rdi, bword ptr [r15+0x08]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov edi, 0x19D3
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
+ call [rax]System.SR:GetResourceString(System.String):System.String
+ mov rbx, rax
+ mov rdi, 0xD1FFAB1E
+ mov esi, 51
+ call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value
+ mov rsi, gword ptr [rdi]
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object[]):System.String
+ call [rax]System.SR:Format(System.String,System.Object[]):System.String
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
+ call [rax]System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
+ int3
+ ;; size=111 bbWeight=0 PerfScore 0.00
+G_M61993_IG215:
+ mov rcx, gword ptr [r15+0x58]
+ cmp dword ptr [rcx+0xF8], 3
+ jne SHORT G_M61993_IG216
+ lea rdi, bword ptr [rbp-0x428]
+ mov rsi, rbx
+ mov ecx, 24
+ rep movsq
+ lea rdi, [rbp-0x428]
+ mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:GetString():System.String:this
+ call [rax]System.Text.Json.Utf8JsonReader:GetString():System.String:this
+ lea rdi, bword ptr [r14+0x10]
+ mov rsi, rax
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ jmp G_M61993_IG229
+ ;; size=67 bbWeight=0 PerfScore 0.00
+G_M61993_IG216:
+ mov r12d, dword ptr [rbp-0x840]
+ test r12d, r12d
+ jne SHORT G_M61993_IG217
+ mov rdi, 0xD1FFAB1E
+ mov esi, 20
+ call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
+ mov rsi, gword ptr [rsi]
+ jmp SHORT G_M61993_IG218
+ ;; size=47 bbWeight=0 PerfScore 0.00
+G_M61993_IG217:
+ mov esi, r12d
+ mov rdi, 0xD1FFAB1E ; ubyte[]
+ call CORINFO_HELP_NEWARR_1_VC
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x10]
+ mov edx, r12d
+ mov rsi, bword ptr [rbp-0x9A8]
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov rsi, r15
+ ;; size=50 bbWeight=0 PerfScore 0.00
+G_M61993_IG218:
+ lea rdi, bword ptr [r14+0x08]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ jmp G_M61993_IG229
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M61993_IG219:
mov rsi, gword ptr [rdi+0xB0]
mov rdi, gword ptr [rsi+0x20]
- mov r13, gword ptr [rbp-0x760]
- mov rsi, gword ptr [r13+0xB8]
+ mov rbx, gword ptr [rbp-0x940]
+ mov rsi, gword ptr [rbx+0xB8]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NoMetadataForTypeProperties(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NoMetadataForTypeProperties(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Type)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M61993_IG177:
- mov r13, bword ptr [rbp-0x7E8]
- mov rdi, r13
+G_M61993_IG220:
+ mov r14, bword ptr [rbp-0x9D8]
+ mov rdi, r14
cmp byte ptr [rdi+0x5E], 1
- je SHORT G_M61993_IG178
+ je SHORT G_M61993_IG221
mov rdx, gword ptr [rdi+0x28]
- jmp SHORT G_M61993_IG179
+ jmp SHORT G_M61993_IG222
;; size=22 bbWeight=0 PerfScore 0.00
-G_M61993_IG178:
+G_M61993_IG221:
mov rdx, gword ptr [rdi+0x30]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M61993_IG179:
- mov rdi, bword ptr [rbp-0x7C8]
- mov esi, dword ptr [rbp-0x694]
+G_M61993_IG222:
+ mov rdi, bword ptr [rbp-0x9B8]
+ mov esi, dword ptr [rbp-0x848]
mov rdx, gword ptr [rdx+0x88]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
call [rax]System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte
test eax, eax
- je G_M61993_IG182
- mov r15, r13
- mov r12d, dword ptr [rbp-0x694]
+ je G_M61993_IG225
+ mov r15, r14
+ mov r12d, dword ptr [rbp-0x848]
test r12d, r12d
- jne SHORT G_M61993_IG180
+ jne SHORT G_M61993_IG223
mov rdi, 0xD1FFAB1E
mov esi, 20
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov rsi, gword ptr [rsi]
- jmp SHORT G_M61993_IG181
+ jmp SHORT G_M61993_IG224
;; size=90 bbWeight=0 PerfScore 0.00
-G_M61993_IG180:
+G_M61993_IG223:
mov esi, r12d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
- mov r13, rax
- lea rdi, bword ptr [r13+0x10]
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x10]
mov edx, r12d
- mov rsi, bword ptr [rbp-0x7C8]
+ mov rsi, bword ptr [rbp-0x9B8]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov rsi, r13
+ mov rsi, r14
;; size=50 bbWeight=0 PerfScore 0.00
-G_M61993_IG181:
+G_M61993_IG224:
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov edi, 0x19D3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
call [rax]System.SR:GetResourceString(System.String):System.String
mov rbx, rax
mov rdi, 0xD1FFAB1E
mov esi, 51
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value
mov rsi, gword ptr [rdi]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object[]):System.String
call [rax]System.SR:Format(System.String,System.Object[]):System.String
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
int3
;; size=111 bbWeight=0 PerfScore 0.00
-G_M61993_IG182:
+G_M61993_IG225:
mov rcx, gword ptr [r15+0x58]
cmp dword ptr [rcx+0xF8], 3
- jne SHORT G_M61993_IG183
- lea rdi, bword ptr [rbp-0x4D0]
+ jne SHORT G_M61993_IG226
+ lea rdi, bword ptr [rbp-0x680]
mov rsi, rbx
mov ecx, 24
rep movsq
- lea rdi, [rbp-0x4D0]
+ lea rdi, [rbp-0x680]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:GetString():System.String:this
call [rax]System.Text.Json.Utf8JsonReader:GetString():System.String:this
- lea rdi, bword ptr [r13+0x10]
+ lea rdi, bword ptr [r14+0x10]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
- jmp SHORT G_M61993_IG186
+ jmp SHORT G_M61993_IG229
;; size=64 bbWeight=0 PerfScore 0.00
-G_M61993_IG183:
- mov rbx, r13
- mov r12d, dword ptr [rbp-0x694]
+G_M61993_IG226:
+ mov rbx, r14
+ mov r12d, dword ptr [rbp-0x848]
test r12d, r12d
- jne SHORT G_M61993_IG184
+ jne SHORT G_M61993_IG227
mov rdi, 0xD1FFAB1E
mov esi, 20
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov rsi, gword ptr [rsi]
- jmp SHORT G_M61993_IG185
+ jmp SHORT G_M61993_IG228
;; size=50 bbWeight=0 PerfScore 0.00
-G_M61993_IG184:
+G_M61993_IG227:
mov esi, r12d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r15, rax
lea rdi, bword ptr [r15+0x10]
mov edx, r12d
- mov rsi, bword ptr [rbp-0x7C8]
+ mov rsi, bword ptr [rbp-0x9B8]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov rsi, r15
;; size=50 bbWeight=0 PerfScore 0.00
-G_M61993_IG185:
+G_M61993_IG228:
lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=9 bbWeight=0 PerfScore 0.00
-G_M61993_IG186:
+G_M61993_IG229:
mov edi, 0x1979
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
call [rax]System.SR:GetResourceString(System.String):System.String
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonException(System.String)
int3
;; size=51 bbWeight=0 PerfScore 0.00
-G_M61993_IG187:
+G_M61993_IG230:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int)
call [rax]System.ThrowHelper:ThrowArgumentException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M61993_IG188:
- mov rdi, r11
+G_M61993_IG231:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowStartOrEndArgumentValidationException(long)
call [rax]System.ThrowHelper:ThrowStartOrEndArgumentValidationException(long)
int3
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M61993_IG189:
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M61993_IG232:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_PositionOutOfRange()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_PositionOutOfRange()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M61993_IG190:
+G_M61993_IG233:
mov edi, 1
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M61993_IG191:
+G_M61993_IG234:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M61993_IG192:
- xor rcx, rcx
- xor r8d, r8d
- lea rdi, [rbp-0xF0]
- mov esi, 32
- xor edx, edx
- mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonReaderException(byref,int,ubyte,System.ReadOnlySpan`1[ubyte])
- call [rax]System.Text.Json.ThrowHelper:ThrowJsonReaderException(byref,int,ubyte,System.ReadOnlySpan`1[ubyte])
- int3
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M61993_IG193:
- mov rdi, gword ptr [r14+0x20]
+G_M61993_IG235:
+ mov rdi, gword ptr [r13+0x20]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonException_DeserializeUnableToConvertValue(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonException_DeserializeUnableToConvertValue(System.Type)
int3
;; size=17 bbWeight=0 PerfScore 0.00
-G_M61993_IG194:
+G_M61993_IG236:
mov rdi, gword ptr [rax+0xB0]
mov rdi, gword ptr [rdi+0x20]
mov rsi, gword ptr [rax+0xB8]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NoMetadataForTypeProperties(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NoMetadataForTypeProperties(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Type)
int3
;; size=31 bbWeight=0 PerfScore 0.00
-G_M61993_IG195:
- mov rdi, gword ptr [r14+0x20]
+G_M61993_IG237:
+ mov rdi, gword ptr [r13+0x20]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConstructorParameterIncompleteBinding(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConstructorParameterIncompleteBinding(System.Type)
int3
;; size=17 bbWeight=0 PerfScore 0.00
-G_M61993_IG196:
+G_M61993_IG238:
mov edi, r8d
mov rax, 0xD1FFAB1E ; code for System.Collections.BitArray:ThrowArgumentOutOfRangeException(int)
call [rax]System.Collections.BitArray:ThrowArgumentOutOfRangeException(int)
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 7185, prolog size 103, PerfScore 3238.88, instruction count 1564, allocated bytes for code 7185 (MethodHash=67e50dd6) for method System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
+; Total bytes of code 8744, prolog size 86, PerfScore 3999.77, instruction count 1882, allocated bytes for code 8744 (MethodHash=67e50dd6) for method System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
1538 (269.35 % of base) - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):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; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 6, 5 ) ref -> [rbp-0x158] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T05] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][]>
-; V02 arg2 [V02,T06] ( 4, 6 ) int -> registers
-; V03 loc0 [V03 ] ( 5, 12 ) struct (136) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V04 loc1 [V04,T17] ( 2, 4 ) struct (16) [rbp-0xC8] do-not-enreg[SR] multireg-ret must-init <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T22] ( 7, 6 ) ref -> [rbp-0x1F8] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T17] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][]>
+; V02 arg2 [V02,T23] ( 4, 6 ) int -> registers
+; V03 loc0 [V03 ] ( 17, 36 ) struct (136) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T03] ( 4, 16 ) int -> r15 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T14] ( 6, 4 ) long -> rax "Indirect call through function pointer"
-; V12 tmp7 [V12 ] ( 2, 4 ) struct (136) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp9 [V14,T18] ( 2, 4 ) long -> rsi "argument with side effect"
-; V15 tmp10 [V15,T02] ( 2, 32 ) long -> rsi "argument with side effect"
-; V16 tmp11 [V16,T07] ( 2, 8 ) long -> rsi "argument with side effect"
-; V17 PSPSym [V17,T21] ( 1, 1 ) long -> [rbp-0x160] do-not-enreg[V] "PSPSym"
-; V18 cse0 [V18,T15] ( 3, 4 ) long -> r13 "CSE #02: moderate"
-; V19 cse1 [V19,T04] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
-;* V20 rat0 [V20,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V21 rat1 [V21,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V22 rat2 [V22,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V23 rat3 [V23,T16] ( 3, 4 ) long -> r13 "runtime lookup"
-; V24 rat4 [V24,T10] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V25 rat5 [V25,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V26 rat6 [V26,T11] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V27 rat7 [V27,T01] ( 3, 32 ) long -> rsi "runtime lookup"
-; V28 rat8 [V28,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V29 rat9 [V29,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V30 rat10 [V30,T22] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V31 rat11 [V31,T23] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T43] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V12 tmp7 [V12 ] ( 5, 10 ) struct (136) [rbp-0x140] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V13 tmp8 [V13,T41] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V14 tmp9 [V14,T31] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V15 tmp10 [V15 ] ( 14, 20 ) struct (32) [rbp-0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref
+; V19 tmp14 [V19,T59] ( 2, 2 ) byref -> rcx single-def
+; V20 tmp15 [V20,T61] ( 2, 2 ) int -> rdi
+; V21 tmp16 [V21,T40] ( 6, 5.40) long -> [rbp-0x168] spill-single-def "Inlining Arg"
+;* V22 tmp17 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V23 tmp18 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V24 tmp19 [V24,T62] ( 2, 2 ) struct (32) [rbp-0x188] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V25 tmp20 [V25,T50] ( 3, 3 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V28 tmp23 [V28,T48] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V29 tmp24 [V29,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V30 tmp25 [V30 ] ( 3, 3 ) struct (32) [rbp-0x1A8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V31 tmp26 [V31,T49] ( 5, 3.40) long -> [rbp-0x1B0] spill-single-def "Inlining Arg"
+;* V32 tmp27 [V32 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V33 tmp28 [V33,T63] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T64] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V37 tmp32 [V37,T60] ( 2, 2 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V38 tmp33 [V38,T65] ( 2, 2 ) int -> rax "Inlining Arg"
+; V39 tmp34 [V39,T21] ( 3, 8.80) long -> r12 "Inlining Arg"
+;* V40 tmp35 [V40 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V41 tmp36 [V41,T18] ( 4, 8.80) long -> rdi "spilling helperCall"
+; V42 tmp37 [V42,T06] ( 5, 13.60) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V44 tmp39 [V44,T19] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V45 tmp40 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp42 [V47,T24] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V48 tmp43 [V48,T07] ( 3, 12 ) ref -> [rbp-0x210] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V49 tmp44 [V49,T33] ( 3, 6 ) int -> rsi "Inline stloc first use temp"
+; V50 tmp45 [V50,T34] ( 3, 6 ) struct (16) [rbp-0x1C8] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V52 tmp47 [V52 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V53 tmp48 [V53,T74] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V55 tmp50 [V55,T75] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V56 tmp51 [V56,T05] ( 6, 13.60) long -> r12 "Inlining Arg"
+;* V57 tmp52 [V57 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V58 tmp53 [V58,T20] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V61 tmp56 [V61,T25] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V62 tmp57 [V62,T08] ( 3, 12 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V63 tmp58 [V63,T28] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V64 tmp59 [V64 ] ( 7, 7.50) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V15._root (fldOffset=0x0)" P-DEP
+; V65 tmp60 [V65 ] ( 9, 8 ) ref -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V15._stack (fldOffset=0x8)" P-DEP
+; V66 tmp61 [V66 ] ( 5, 6 ) ref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V15._current (fldOffset=0x10)" P-DEP
+; V67 tmp62 [V67 ] ( 5, 6 ) int -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V15._poolUserId (fldOffset=0x18)" P-DEP
+; V68 tmp63 [V68,T66] ( 2, 2 ) long -> rdi "argument with side effect"
+; V69 tmp64 [V69,T67] ( 2, 2 ) long -> r12 "argument with side effect"
+; V70 tmp65 [V70,T02] ( 2, 32 ) long -> rsi "argument with side effect"
+; V71 tmp66 [V71,T29] ( 2, 8 ) long -> [rbp-0x1D0] spill-single-def "argument with side effect"
+; V72 tmp67 [V72,T30] ( 2, 8 ) long -> [rbp-0x1D8] spill-single-def "argument with side effect"
+; V73 PSPSym [V73,T73] ( 1, 1 ) long -> [rbp-0x228] do-not-enreg[V] "PSPSym"
+; V74 cse0 [V74,T44] ( 3, 4 ) long -> r13 "CSE #04: moderate"
+; V75 cse1 [V75,T45] ( 3, 4 ) long -> [rbp-0x1E0] spill-single-def "CSE #05: moderate"
+; V76 cse2 [V76,T70] ( 3, 1.50) long -> [rbp-0x1E8] spill-single-def "CSE #02: conservative"
+; V77 cse3 [V77,T71] ( 3, 1.50) long -> [rbp-0x1F0] spill-single-def "CSE #03: conservative"
+; V78 cse4 [V78,T04] ( 10, 14 ) long -> r14 multi-def "CSE #01: aggressive"
+; V79 cse5 [V79,T32] ( 3, 6 ) ref -> rdi "CSE #08: moderate"
+;* V80 rat0 [V80,T42] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V81 rat1 [V81,T68] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V82 rat2 [V82,T35] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V83 rat3 [V83,T46] ( 3, 4 ) long -> r13 "runtime lookup"
+; V84 rat4 [V84,T36] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V85 rat5 [V85,T47] ( 3, 4 ) long -> rax "runtime lookup"
+; V86 rat6 [V86,T37] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V87 rat7 [V87,T55] ( 3, 2 ) long -> registers "runtime lookup"
+; V88 rat8 [V88,T51] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V89 rat9 [V89,T56] ( 3, 2 ) long -> registers "runtime lookup"
+; V90 rat10 [V90,T52] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V91 rat11 [V91,T57] ( 3, 2 ) long -> rdi "runtime lookup"
+; V92 rat12 [V92,T53] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V93 rat13 [V93,T58] ( 3, 2 ) long -> rdi "runtime lookup"
+; V94 rat14 [V94,T54] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V95 rat15 [V95,T69] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V96 rat16 [V96,T38] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V97 rat17 [V97,T09] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V98 rat18 [V98,T10] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V99 rat19 [V99,T26] ( 3, 8 ) long -> rdi "runtime lookup"
+; V100 rat20 [V100,T11] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V101 rat21 [V101,T12] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V102 rat22 [V102,T13] ( 3, 11.20) long -> r12 "fgMakeTemp is creating a new local variable"
+; V103 rat23 [V103,T14] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V104 rat24 [V104,T15] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V105 rat25 [V105,T27] ( 3, 8 ) long -> rdi "runtime lookup"
+; V106 rat26 [V106,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V107 rat27 [V107,T01] ( 3, 32 ) long -> rsi "runtime lookup"
+; V108 rat28 [V108,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V109 rat29 [V109,T39] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V110 rat30 [V110,T76] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V111 rat31 [V111,T77] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 312
+; Lcl frame size = 568
G_M32152_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 312
- lea rbp, [rsp+0x160]
+ sub rsp, 568
+ lea rbp, [rsp+0x260]
+ xor eax, eax
+ mov qword ptr [rbp-0x1C8], rax
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ vmovdqa xmmword ptr [rbp-0x1C0], xmm8
+ mov rax, -384
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-0x160], rsp
+ mov qword ptr [rbp-0x228], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x158], rdi
+ mov gword ptr [rbp-0x1F8], rdi
+ mov r8, rdi
mov rbx, rsi
mov r15d, edx
- mov rdx, rdi
- ;; size=91 bbWeight=1 PerfScore 18.33
+ ;; size=108 bbWeight=1 PerfScore 21.58
G_M32152_IG02:
- mov r14, qword ptr [rdx]
+ mov r14, qword ptr [r8]
test rbx, rbx
- je G_M32152_IG18
+ je G_M32152_IG72
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov r13, qword ptr [rdi+0x60]
test r13, r13
je SHORT G_M32152_IG04
;; size=28 bbWeight=1 PerfScore 10.50
G_M32152_IG03:
jmp SHORT G_M32152_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M32152_IG04:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M32152_IG05:
- mov rsi, r13
- mov rdx, gword ptr [rbp-0x158]
- mov rdx, gword ptr [rdx+0x08]
- lea rdi, [rbp-0x150]
- mov rcx, gword ptr [rbp-0x158]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ mov rdi, r13
+ mov r8, gword ptr [rbp-0x1F8]
+ mov r12, gword ptr [r8+0x08]
+ mov gword ptr [rbp-0x140], r8
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x18]
+ test rax, rax
+ je SHORT G_M32152_IG07
+ ;; size=37 bbWeight=1 PerfScore 11.50
+G_M32152_IG06:
+ jmp SHORT G_M32152_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M32152_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M32152_IG08:
+ mov qword ptr [rbp-0x1E0], rax
+ mov qword ptr [rbp-0x168], rax
+ test r12, r12
+ je G_M32152_IG73
+ mov gword ptr [rbp-0x160], r12
+ xor rdx, rdx
+ mov gword ptr [rbp-0x150], rdx
+ mov rdx, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rdx]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x148], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x158], rdi
+ mov rdi, gword ptr [rbp-0x160]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M32152_IG28
+ ;; size=84 bbWeight=1 PerfScore 16.00
+G_M32152_IG09:
+ mov rax, qword ptr [rbp-0x168]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M32152_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M32152_IG10:
+ jmp SHORT G_M32152_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M32152_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x168]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M32152_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1F0], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1B0], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M32152_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x1A8], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M32152_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M32152_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M32152_IG15:
+ jmp SHORT G_M32152_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M32152_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M32152_IG17:
+ mov qword ptr [rbp-0x1E8], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x1A8]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M32152_IG21
+ mov rdi, qword ptr [rbp-0x1B0]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M32152_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M32152_IG18:
+ mov rdi, rax
+ jmp SHORT G_M32152_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M32152_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M32152_IG20:
+ lea rsi, [rbp-0x158]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M32152_IG21
+ mov r12, qword ptr [rbp-0x1E8]
+ mov rax, gword ptr [rbp-0x158]
+ mov gword ptr [rbp-0x208], rax
+ lea rdi, [rbp-0x1A8]
+ call r12
+ mov r12, gword ptr [rbp-0x208]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M32152_IG27
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M32152_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x158], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M32152_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x188], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M32152_IG23:
+ mov rax, qword ptr [rbp-0x168]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M32152_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M32152_IG24:
+ jmp SHORT G_M32152_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M32152_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M32152_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x200], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x1F0]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x188]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x200]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x158], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M32152_IG27:
+ lea rdi, [rbp-0x160]
+ mov rsi, qword ptr [rbp-0x168]
+ mov rdx, gword ptr [rbp-0x160]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M32152_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x160]
+ vmovdqu ymmword ptr [rbp-0x130], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M32152_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x110], ymm0
+ vmovdqu ymmword ptr [rbp-0xF0], ymm0
+ vmovdqu ymmword ptr [rbp-0xD8], ymm0
+ lea rcx, bword ptr [rbp-0x140]
+ mov r8, gword ptr [rbp-0x1F8]
+ mov edi, dword ptr [r8+0x2C]
+ mov dword ptr [rcx+0x08], edi
lea rdi, bword ptr [rbp-0xB8]
- lea rsi, bword ptr [rbp-0x150]
+ lea rsi, bword ptr [rbp-0x140]
mov ecx, 17
rep movsq
- ;; size=62 bbWeight=1 PerfScore 34.25
-G_M32152_IG06:
+ ;; size=71 bbWeight=1 PerfScore 34.08
+G_M32152_IG30:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x60]
test rdi, rdi
- jne SHORT G_M32152_IG08
- jmp SHORT G_M32152_IG08
- ;; size=18 bbWeight=1 PerfScore 9.25
-G_M32152_IG07:
- mov rsi, r13
- lea rdi, [rbp-0xB8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xC8], rax
- mov qword ptr [rbp-0xC0], rdx
+ jne G_M32152_IG54
+ jmp G_M32152_IG54
+ ;; size=25 bbWeight=1 PerfScore 9.25
+G_M32152_IG31:
+ mov r12, r13
+ mov rax, qword ptr [rbp-0x1E0]
+ mov rcx, rax
+ mov qword ptr [rbp-0x1B8], rcx
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M32152_IG38
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M32152_IG42
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M32152_IG33
+ ;; size=64 bbWeight=2 PerfScore 31.50
+G_M32152_IG32:
+ jmp SHORT G_M32152_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M32152_IG33:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rcx, qword ptr [rbp-0x1B8]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M32152_IG34:
+ mov rdx, gword ptr [rbp-0xA0]
+ mov gword ptr [rbp-0x210], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M32152_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M32152_IG35:
+ jmp SHORT G_M32152_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M32152_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M32152_IG37:
+ lea rdi, [rbp-0xA8]
+ call r8
+ mov rdi, gword ptr [rbp-0x210]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rcx, qword ptr [rbp-0x1B8]
+ je G_M32152_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M32152_IG38:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M32152_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M32152_IG39:
+ jmp SHORT G_M32152_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M32152_IG40:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M32152_IG41:
+ mov qword ptr [rbp-0x1D0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA8]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1D0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M32152_IG42:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M32152_IG44
+ ;; size=17 bbWeight=2 PerfScore 14.50
+G_M32152_IG43:
+ jmp SHORT G_M32152_IG45
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M32152_IG44:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M32152_IG45:
+ mov esi, dword ptr [rbp-0x88]
+ cmp esi, 1
+ je G_M32152_IG59
+ cmp esi, 2
+ jne G_M32152_IG58
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r12, qword ptr [rsi+0x18]
+ test r12, r12
+ je G_M32152_IG61
+ ;; size=44 bbWeight=2 PerfScore 21.50
+G_M32152_IG46:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M32152_IG49
+ cmp gword ptr [rbp-0x58], 0
+ je G_M32152_IG51
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M32152_IG62
+ ;; size=39 bbWeight=2 PerfScore 26.50
+G_M32152_IG47:
+ mov rcx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x218], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M32152_IG63
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M32152_IG48:
+ lea rdi, [rbp-0x68]
+ call rdx
+ mov rdi, gword ptr [rbp-0x218]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M32152_IG51
+ ;; size=22 bbWeight=2 PerfScore 17.00
+G_M32152_IG49:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M32152_IG64
+ ;; size=21 bbWeight=2 PerfScore 14.50
+G_M32152_IG50:
+ mov qword ptr [rbp-0x1D8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1D8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M32152_IG51:
+ mov rdi, gword ptr [rbp-0x50]
+ test rdi, rdi
+ je SHORT G_M32152_IG57
+ ;; size=9 bbWeight=2 PerfScore 4.50
+G_M32152_IG52:
+ vmovdqu xmm0, xmmword ptr [rdi+0x20]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=2 PerfScore 10.00
+G_M32152_IG53:
lea edi, [r15+0x01]
mov r12d, edi
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M32152_IG11
+ jae G_M32152_IG65
mov edi, r15d
shl rdi, 4
lea rdi, bword ptr [rbx+rdi+0x10]
- lea rsi, bword ptr [rbp-0xC8]
+ lea rsi, bword ptr [rbp-0x1C8]
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov r15d, r12d
- ;; size=78 bbWeight=2 PerfScore 30.50
-G_M32152_IG08:
+ ;; size=46 bbWeight=2 PerfScore 18.50
+G_M32152_IG54:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x60]
test rsi, rsi
- je SHORT G_M32152_IG12
- ;; size=16 bbWeight=8 PerfScore 58.00
-G_M32152_IG09:
+ je G_M32152_IG66
+ ;; size=20 bbWeight=8 PerfScore 58.00
+G_M32152_IG55:
lea rdi, [rbp-0xB8]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M32152_IG07
- ;; size=23 bbWeight=8 PerfScore 40.00
-G_M32152_IG10:
- jmp SHORT G_M32152_IG13
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M32152_IG11:
+ jne G_M32152_IG31
+ ;; size=27 bbWeight=8 PerfScore 40.00
+G_M32152_IG56:
+ jmp G_M32152_IG67
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M32152_IG57:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M32152_IG58:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M32152_IG59:
+ vmovdqu xmm0, xmmword ptr [rbp-0x78]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=2 PerfScore 8.00
+G_M32152_IG60:
+ jmp G_M32152_IG53
+ ;; size=5 bbWeight=2 PerfScore 4.00
+G_M32152_IG61:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M32152_IG46
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M32152_IG62:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M32152_IG47
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M32152_IG63:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M32152_IG48
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M32152_IG64:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M32152_IG50
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M32152_IG65:
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M32152_IG12:
+G_M32152_IG66:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
- jmp SHORT G_M32152_IG09
- ;; size=23 bbWeight=1.60 PerfScore 6.00
-G_M32152_IG13:
+ jmp G_M32152_IG55
+ ;; size=26 bbWeight=1.60 PerfScore 6.00
+G_M32152_IG67:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x80]
test rax, rax
- je SHORT G_M32152_IG15
+ je SHORT G_M32152_IG69
;; size=19 bbWeight=1 PerfScore 7.25
-G_M32152_IG14:
- jmp SHORT G_M32152_IG16
+G_M32152_IG68:
+ jmp SHORT G_M32152_IG70
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M32152_IG15:
+G_M32152_IG69:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M32152_IG16:
+G_M32152_IG70:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M32152_IG17:
- add rsp, 312
+G_M32152_IG71:
+ vzeroupper
+ add rsp, 568
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M32152_IG18:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M32152_IG72:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M32152_IG19:
+G_M32152_IG73:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M32152_IG74:
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+0x160]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M32152_IG20:
- mov rdx, gword ptr [rbp-0x158]
- mov r14, qword ptr [rdx]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x260]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M32152_IG75:
+ mov r8, gword ptr [rbp-0x1F8]
+ mov r14, qword ptr [r8]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x80]
test rax, rax
- je SHORT G_M32152_IG21
- jmp SHORT G_M32152_IG22
+ je SHORT G_M32152_IG76
+ jmp SHORT G_M32152_IG77
;; size=34 bbWeight=0 PerfScore 0.00
-G_M32152_IG21:
+G_M32152_IG76:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M32152_IG22:
+G_M32152_IG77:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M32152_IG23:
- add rsp, 8
+G_M32152_IG78:
+ vzeroupper
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 571, prolog size 91, PerfScore 227.93, instruction count 144, allocated bytes for code 571 (MethodHash=3a938267) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
+; Total bytes of code 2109, prolog size 108, PerfScore 638.39, instruction count 463, allocated bytes for code 2109 (MethodHash=3a938267) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
1508 (191.86 % of base) - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):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; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x160] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T06] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 arg2 [V02,T09] ( 6, 8 ) int -> r15
-; V03 loc0 [V03 ] ( 5, 12 ) struct (136) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V04 loc1 [V04,T16] ( 3, 6 ) struct (16) [rbp-0xC8] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T04] ( 9, 15 ) ref -> [rbp-0x1F0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T07] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
+; V02 arg2 [V02,T22] ( 6, 8 ) int -> r15
+; V03 loc0 [V03 ] ( 19, 40 ) struct (136) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T11] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <System.__Canon>
-; V12 tmp7 [V12 ] ( 2, 8 ) struct ( 8) [rbp-0xD0] do-not-enreg[XS] addr-exposed "location for address-of(RValue)" <System.Nullable`1[int]>
+;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.__Canon>
+; V12 tmp7 [V12 ] ( 3, 12 ) struct ( 8) [rbp-0xC0] do-not-enreg[XS] addr-exposed "location for address-of(RValue)" <System.Nullable`1[int]>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.DictionaryEntry>
-; V14 tmp9 [V14,T05] ( 4, 16 ) ref -> [rbp-0x168] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
-; V15 tmp10 [V15,T07] ( 3, 12 ) int -> rsi "impSpillLclRefs"
+; V14 tmp9 [V14,T05] ( 4, 16 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
+; V15 tmp10 [V15,T12] ( 3, 12 ) int -> rsi "impSpillLclRefs"
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T23] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V17 tmp12 [V17,T53] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp15 [V20 ] ( 2, 4 ) struct (136) [rbp-0x158] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V21 tmp16 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp17 [V22,T12] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" <System.Int32>
-;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.DictionaryEntry>
-; V24 tmp19 [V24,T17] ( 2, 4 ) int -> rdi "Inline return value spill temp"
-;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp21 [V26,T18] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
-; V27 tmp22 [V27,T13] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V28 tmp23 [V28 ] ( 2, 8 ) ubyte -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
-; V29 tmp24 [V29 ] ( 2, 8 ) int -> [rbp-0xCC] do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
-; V30 tmp25 [V30,T26] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T27] ( 2, 4 ) ref -> [rbp-0x170] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
-; V32 tmp27 [V32,T33] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V33 tmp28 [V33,T28] ( 2, 4 ) long -> rsi "argument with side effect"
-; V34 tmp29 [V34,T03] ( 2, 32 ) long -> rsi "argument with side effect"
-; V35 tmp30 [V35,T14] ( 2, 8 ) long -> rsi "argument with side effect"
-; V36 tmp31 [V36,T15] ( 2, 8 ) long -> rdx "argument with side effect"
-; V37 PSPSym [V37,T30] ( 1, 1 ) long -> [rbp-0x180] do-not-enreg[V] "PSPSym"
-; V38 cse0 [V38,T24] ( 3, 4 ) long -> r13 "CSE #02: moderate"
-;* V39 cse1 [V39,T29] ( 0, 0 ) long -> zero-ref "CSE #03: moderate"
-; V40 cse2 [V40,T19] ( 6, 3.20) long -> r14 multi-def "CSE #01: moderate"
-; V41 rat0 [V41,T22] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V42 rat1 [V42,T25] ( 3, 4 ) long -> r13 "runtime lookup"
-; V43 rat2 [V43,T20] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V44 rat3 [V44,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V45 rat4 [V45,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V46 rat5 [V46,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V47 rat6 [V47,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V48 rat7 [V48,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V49 rat8 [V49,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V50 rat9 [V50,T31] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V51 rat10 [V51,T32] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V20 tmp15 [V20 ] ( 5, 10 ) struct (136) [rbp-0x148] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V21 tmp16 [V21,T51] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V22 tmp17 [V22,T38] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V23 tmp18 [V23 ] ( 14, 20 ) struct (32) [rbp-0x168] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V24 tmp19 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref
+; V27 tmp22 [V27,T71] ( 2, 2 ) byref -> rcx single-def
+; V28 tmp23 [V28,T73] ( 2, 2 ) int -> rdi
+; V29 tmp24 [V29,T50] ( 6, 5.40) long -> [rbp-0x170] spill-single-def "Inlining Arg"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V32 tmp27 [V32,T74] ( 2, 2 ) struct (32) [rbp-0x190] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V33 tmp28 [V33,T62] ( 3, 3 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T58] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V37 tmp32 [V37,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V38 tmp33 [V38 ] ( 3, 3 ) struct (32) [rbp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V39 tmp34 [V39,T61] ( 5, 3.40) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V40 tmp35 [V40 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V41 tmp36 [V41,T75] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V44 tmp39 [V44,T76] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V45 tmp40 [V45,T72] ( 2, 2 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V46 tmp41 [V46,T77] ( 2, 2 ) int -> rax "Inlining Arg"
+; V47 tmp42 [V47,T26] ( 3, 8.80) long -> r12 "Inlining Arg"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V49 tmp44 [V49,T23] ( 4, 8.80) long -> rdi "spilling helperCall"
+; V50 tmp45 [V50,T09] ( 5, 13.60) long -> [rbp-0x1C0] spill-single-def "Inlining Arg"
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V52 tmp47 [V52,T24] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V55 tmp50 [V55,T27] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V56 tmp51 [V56,T10] ( 3, 12 ) ref -> [rbp-0x210] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V57 tmp52 [V57,T41] ( 3, 6 ) int -> rsi "Inline stloc first use temp"
+;* V58 tmp53 [V58 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V61 tmp56 [V61,T85] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V63 tmp58 [V63,T86] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V64 tmp59 [V64,T08] ( 6, 13.60) long -> r12 "Inlining Arg"
+;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V66 tmp61 [V66,T25] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V68 tmp63 [V68 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V69 tmp64 [V69,T28] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V70 tmp65 [V70,T11] ( 3, 12 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V71 tmp66 [V71,T32] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V72 tmp67 [V72,T33] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" <System.Int32>
+;* V73 tmp68 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.DictionaryEntry>
+; V74 tmp69 [V74,T42] ( 2, 4 ) int -> rax "Inline return value spill temp"
+;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V76 tmp71 [V76,T43] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V77 tmp72 [V77,T34] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V78 tmp73 [V78 ] ( 2, 6 ) ubyte -> [rbp-0xC0] do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
+; V79 tmp74 [V79 ] ( 2, 6 ) int -> [rbp-0xBC] do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
+; V80 tmp75 [V80,T59] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
+; V81 tmp76 [V81,T60] ( 2, 4 ) ref -> [rbp-0x220] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
+; V82 tmp77 [V82 ] ( 7, 7.50) ref -> [rbp-0x168] do-not-enreg[X] addr-exposed "field V23._root (fldOffset=0x0)" P-DEP
+; V83 tmp78 [V83 ] ( 9, 8 ) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V23._stack (fldOffset=0x8)" P-DEP
+; V84 tmp79 [V84 ] ( 5, 6 ) ref -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V23._current (fldOffset=0x10)" P-DEP
+; V85 tmp80 [V85 ] ( 5, 6 ) int -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V23._poolUserId (fldOffset=0x18)" P-DEP
+;* V86 tmp81 [V86 ] ( 0, 0 ) ref -> zero-ref "V04.[000..008)"
+;* V87 tmp82 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V04.[008..009)"
+;* V88 tmp83 [V88 ] ( 0, 0 ) int -> zero-ref "V04.[012..016)"
+; V89 tmp84 [V89,T39] ( 3, 6 ) ref -> r12 "V58.[000..008)"
+; V90 tmp85 [V90,T44] ( 3, 6 ) ubyte -> rcx "V58.[008..009)"
+; V91 tmp86 [V91,T45] ( 3, 6 ) int -> rdx "V58.[012..016)"
+; V92 tmp87 [V92,T06] ( 4, 16 ) byref -> rsi "Spilling address for field-by-field copy"
+; V93 tmp88 [V93,T89] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V94 tmp89 [V94,T78] ( 2, 2 ) long -> rdi "argument with side effect"
+; V95 tmp90 [V95,T79] ( 2, 2 ) long -> r12 "argument with side effect"
+; V96 tmp91 [V96,T03] ( 2, 32 ) long -> rsi "argument with side effect"
+; V97 tmp92 [V97,T35] ( 2, 8 ) long -> [rbp-0x1C8] spill-single-def "argument with side effect"
+; V98 tmp93 [V98,T36] ( 2, 8 ) long -> [rbp-0x1D0] spill-single-def "argument with side effect"
+; V99 tmp94 [V99,T37] ( 2, 8 ) long -> rdx "argument with side effect"
+; V100 PSPSym [V100,T84] ( 1, 1 ) long -> [rbp-0x228] do-not-enreg[V] "PSPSym"
+; V101 cse0 [V101,T54] ( 3, 4 ) long -> r13 "CSE #04: conservative"
+;* V102 cse1 [V102,T80] ( 0, 0 ) long -> zero-ref "CSE #09: moderate"
+; V103 cse2 [V103,T55] ( 3, 4 ) long -> [rbp-0x1D8] spill-single-def "CSE #05: conservative"
+; V104 cse3 [V104,T81] ( 3, 1.50) long -> [rbp-0x1E0] spill-single-def "CSE #01: conservative"
+; V105 cse4 [V105,T82] ( 3, 1.50) long -> [rbp-0x1E8] spill-single-def "CSE #02: conservative"
+; V106 cse5 [V106,T46] ( 6, 3.20) long -> r14 multi-def "CSE #03: moderate"
+; V107 cse6 [V107,T40] ( 3, 6 ) ref -> rsi "CSE #08: moderate"
+; V108 rat0 [V108,T52] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V109 rat1 [V109,T56] ( 3, 4 ) long -> r13 "runtime lookup"
+; V110 rat2 [V110,T47] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V111 rat3 [V111,T57] ( 3, 4 ) long -> rax "runtime lookup"
+; V112 rat4 [V112,T48] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V113 rat5 [V113,T67] ( 3, 2 ) long -> registers "runtime lookup"
+; V114 rat6 [V114,T63] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V115 rat7 [V115,T68] ( 3, 2 ) long -> registers "runtime lookup"
+; V116 rat8 [V116,T64] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V117 rat9 [V117,T69] ( 3, 2 ) long -> rdi "runtime lookup"
+; V118 rat10 [V118,T65] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V119 rat11 [V119,T70] ( 3, 2 ) long -> rdi "runtime lookup"
+; V120 rat12 [V120,T66] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V121 rat13 [V121,T13] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V122 rat14 [V122,T14] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V123 rat15 [V123,T29] ( 3, 8 ) long -> rdi "runtime lookup"
+; V124 rat16 [V124,T15] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V125 rat17 [V125,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V126 rat18 [V126,T17] ( 3, 11.20) long -> r12 "fgMakeTemp is creating a new local variable"
+; V127 rat19 [V127,T18] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V128 rat20 [V128,T19] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V129 rat21 [V129,T30] ( 3, 8 ) long -> rdi "runtime lookup"
+; V130 rat22 [V130,T20] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V131 rat23 [V131,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V132 rat24 [V132,T21] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V133 rat25 [V133,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V134 rat26 [V134,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V135 rat27 [V135,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V136 rat28 [V136,T49] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V137 rat29 [V137,T87] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V138 rat30 [V138,T88] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 344
+; Lcl frame size = 568
G_M38819_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 344
- lea rbp, [rsp+0x180]
- xor eax, eax
- mov qword ptr [rbp-0x158], rax
+ sub rsp, 568
+ lea rbp, [rsp+0x260]
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ mov rax, -384
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-0x180], rsp
+ mov qword ptr [rbp-0x228], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x160], rdi
+ mov gword ptr [rbp-0x1F0], rdi
mov r8, rdi
mov rbx, rsi
mov r15d, edx
- ;; size=100 bbWeight=1 PerfScore 19.58
+ ;; size=91 bbWeight=1 PerfScore 18.33
G_M38819_IG02:
test rbx, rbx
- je G_M38819_IG21
+ je G_M38819_IG73
test r15d, r15d
- jl G_M38819_IG22
+ jl G_M38819_IG74
mov edi, dword ptr [rbx+0x08]
test edi, edi
- jl G_M38819_IG20
+ jl G_M38819_IG72
mov esi, r15d
add esi, dword ptr [r8+0x28]
cmp edi, esi
- jl G_M38819_IG22
+ jl G_M38819_IG74
mov r14, qword ptr [r8]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov r13, qword ptr [rsi+0x60]
test r13, r13
je SHORT G_M38819_IG04
;; size=66 bbWeight=1 PerfScore 19.75
G_M38819_IG03:
jmp SHORT G_M38819_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M38819_IG04:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M38819_IG05:
- mov rsi, r13
- mov r8, gword ptr [rbp-0x160]
- mov rdx, gword ptr [r8+0x08]
- lea rdi, [rbp-0x158]
- mov rcx, r8
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ mov rdi, r13
+ mov r8, gword ptr [rbp-0x1F0]
+ mov r12, gword ptr [r8+0x08]
+ mov gword ptr [rbp-0x148], r8
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x18]
+ test rax, rax
+ je SHORT G_M38819_IG07
+ ;; size=37 bbWeight=1 PerfScore 11.50
+G_M38819_IG06:
+ jmp SHORT G_M38819_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M38819_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M38819_IG08:
+ mov qword ptr [rbp-0x1D8], rax
+ mov qword ptr [rbp-0x170], rax
+ test r12, r12
+ je G_M38819_IG75
+ mov gword ptr [rbp-0x168], r12
+ xor rdx, rdx
+ mov gword ptr [rbp-0x158], rdx
+ mov rdx, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rdx]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x150], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x160], rdi
+ mov rdi, gword ptr [rbp-0x168]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M38819_IG28
+ ;; size=84 bbWeight=1 PerfScore 16.00
+G_M38819_IG09:
+ mov rax, qword ptr [rbp-0x170]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M38819_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M38819_IG10:
+ jmp SHORT G_M38819_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38819_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x170]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M38819_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1E8], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1B8], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M38819_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x1B0], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M38819_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M38819_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M38819_IG15:
+ jmp SHORT G_M38819_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38819_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M38819_IG17:
+ mov qword ptr [rbp-0x1E0], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x1B0]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M38819_IG21
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M38819_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M38819_IG18:
+ mov rdi, rax
+ jmp SHORT G_M38819_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M38819_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M38819_IG20:
+ lea rsi, [rbp-0x160]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M38819_IG21
+ mov r12, qword ptr [rbp-0x1E0]
+ mov rax, gword ptr [rbp-0x160]
+ mov gword ptr [rbp-0x208], rax
+ lea rdi, [rbp-0x1B0]
+ call r12
+ mov r12, gword ptr [rbp-0x208]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M38819_IG27
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M38819_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x160], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M38819_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x190], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M38819_IG23:
+ mov rax, qword ptr [rbp-0x170]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M38819_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M38819_IG24:
+ jmp SHORT G_M38819_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M38819_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M38819_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x200], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x1E8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x190]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x200]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x160], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M38819_IG27:
+ lea rdi, [rbp-0x168]
+ mov rsi, qword ptr [rbp-0x170]
+ mov rdx, gword ptr [rbp-0x168]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M38819_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x138], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M38819_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x118], ymm0
+ vmovdqu ymmword ptr [rbp-0xF8], ymm0
+ vmovdqu ymmword ptr [rbp-0xE0], ymm0
+ lea rcx, bword ptr [rbp-0x148]
+ mov r8, gword ptr [rbp-0x1F0]
+ mov edi, dword ptr [r8+0x2C]
+ mov dword ptr [rcx+0x08], edi
lea rdi, bword ptr [rbp-0xB8]
- lea rsi, bword ptr [rbp-0x158]
+ lea rsi, bword ptr [rbp-0x148]
mov ecx, 17
rep movsq
- ;; size=58 bbWeight=1 PerfScore 33.50
-G_M38819_IG06:
- jmp G_M38819_IG09
+ ;; size=71 bbWeight=1 PerfScore 34.08
+G_M38819_IG30:
+ jmp G_M38819_IG54
;; size=5 bbWeight=1 PerfScore 2.00
-G_M38819_IG07:
- mov rsi, r13
- lea rdi, [rbp-0xB8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xC8], rax
- mov qword ptr [rbp-0xC0], rdx
- mov r12, gword ptr [rbp-0xC8]
- mov rsi, qword ptr [rbp-0xC0]
- mov qword ptr [rbp-0xD0], rsi
- lea rsi, [rbp-0xD0]
+G_M38819_IG31:
+ mov r12, r13
+ mov rax, qword ptr [rbp-0x1D8]
+ mov rcx, rax
+ mov qword ptr [rbp-0x1C0], rcx
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M38819_IG38
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M38819_IG42
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M38819_IG33
+ ;; size=64 bbWeight=2 PerfScore 31.50
+G_M38819_IG32:
+ jmp SHORT G_M38819_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38819_IG33:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rcx, qword ptr [rbp-0x1C0]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M38819_IG34:
+ mov rdx, gword ptr [rbp-0xA0]
+ mov gword ptr [rbp-0x210], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M38819_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M38819_IG35:
+ jmp SHORT G_M38819_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38819_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M38819_IG37:
+ lea rdi, [rbp-0xA8]
+ call r8
+ mov rdi, gword ptr [rbp-0x210]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rcx, qword ptr [rbp-0x1C0]
+ je G_M38819_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M38819_IG38:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M38819_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M38819_IG39:
+ jmp SHORT G_M38819_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38819_IG40:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M38819_IG41:
+ mov qword ptr [rbp-0x1C8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA8]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1C8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M38819_IG42:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M38819_IG44
+ ;; size=17 bbWeight=2 PerfScore 14.50
+G_M38819_IG43:
+ jmp SHORT G_M38819_IG45
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M38819_IG44:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M38819_IG45:
+ mov esi, dword ptr [rbp-0x88]
+ cmp esi, 1
+ je G_M38819_IG60
+ cmp esi, 2
+ jne G_M38819_IG58
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r12, qword ptr [rsi+0x18]
+ test r12, r12
+ je G_M38819_IG61
+ ;; size=44 bbWeight=2 PerfScore 21.50
+G_M38819_IG46:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M38819_IG49
+ cmp gword ptr [rbp-0x58], 0
+ je G_M38819_IG51
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M38819_IG62
+ ;; size=39 bbWeight=2 PerfScore 26.50
+G_M38819_IG47:
+ mov rcx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x218], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M38819_IG63
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M38819_IG48:
+ lea rdi, [rbp-0x68]
+ call rdx
+ mov rdi, gword ptr [rbp-0x218]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M38819_IG51
+ ;; size=22 bbWeight=2 PerfScore 17.00
+G_M38819_IG49:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M38819_IG64
+ ;; size=21 bbWeight=2 PerfScore 14.50
+G_M38819_IG50:
+ mov qword ptr [rbp-0x1D0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1D0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M38819_IG51:
+ mov rsi, gword ptr [rbp-0x50]
+ test rsi, rsi
+ je G_M38819_IG57
+ add rsi, 32
+ mov r12, gword ptr [rsi]
+ movzx rcx, byte ptr [rsi+0x08]
+ mov edx, dword ptr [rsi+0x0C]
+ ;; size=27 bbWeight=2 PerfScore 17.00
+G_M38819_IG52:
+ mov byte ptr [rbp-0xC0], cl
+ mov dword ptr [rbp-0xBC], edx
+ lea rsi, [rbp-0xC0]
mov rdi, 0xD1FFAB1E ; System.Nullable`1[int]
call CORINFO_HELP_BOX_NULLABLE
- mov gword ptr [rbp-0x170], rax
+ mov gword ptr [rbp-0x220], rax
mov rdi, 0xD1FFAB1E ; System.Collections.DictionaryEntry
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x168], rax
+ mov gword ptr [rbp-0x1F8], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- mov r12, gword ptr [rbp-0x168]
+ mov r12, gword ptr [rbp-0x1F8]
lea rdi, bword ptr [r12+0x10]
- mov rsi, gword ptr [rbp-0x170]
+ mov rsi, gword ptr [rbp-0x220]
call CORINFO_HELP_ASSIGN_REF
mov esi, r15d
lea r15d, [rsi+0x01]
mov rdi, qword ptr [rbx]
- mov edi, dword ptr [rdi+0x04]
- add edi, -24
- shr edi, 3
- je SHORT G_M38819_IG08
- cmp edi, 1
- jne SHORT G_M38819_IG14
- ;; size=170 bbWeight=2 PerfScore 54.00
-G_M38819_IG08:
+ mov eax, dword ptr [rdi+0x04]
+ add eax, -24
+ shr eax, 3
+ jne G_M38819_IG65
+ ;; size=124 bbWeight=2 PerfScore 37.50
+G_M38819_IG53:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Array:GetFlattenedIndex(int):long:this
call [rax]System.Array:GetFlattenedIndex(int):long:this
mov rdx, rax
mov rsi, r12
mov rdi, rbx
call System.Array:InternalSetValue(System.Object,long):this
- ;; size=29 bbWeight=2 PerfScore 10.50
-G_M38819_IG09:
- mov rcx, gword ptr [rbp-0x160]
- mov rdi, qword ptr [rcx]
+ mov r8, gword ptr [rbp-0x1F0]
+ ;; size=36 bbWeight=2 PerfScore 12.50
+G_M38819_IG54:
+ mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x60]
test rsi, rsi
- je SHORT G_M38819_IG11
- ;; size=26 bbWeight=8 PerfScore 82.00
-G_M38819_IG10:
- jmp SHORT G_M38819_IG12
- ;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M38819_IG11:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=18 bbWeight=1.60 PerfScore 2.40
-G_M38819_IG12:
+ je G_M38819_IG66
+ ;; size=23 bbWeight=8 PerfScore 74.00
+G_M38819_IG55:
lea rdi, [rbp-0xB8]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne G_M38819_IG07
+ jne G_M38819_IG31
;; size=27 bbWeight=8 PerfScore 40.00
-G_M38819_IG13:
- jmp SHORT G_M38819_IG15
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M38819_IG14:
+G_M38819_IG56:
+ jmp G_M38819_IG67
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M38819_IG57:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov r14, rax
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, r14
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M38819_IG58:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M38819_IG59:
mov edi, 58
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int)
call [rax]System.ThrowHelper:ThrowArgumentException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M38819_IG15:
+G_M38819_IG60:
+ mov r12, gword ptr [rbp-0x78]
+ movzx rcx, byte ptr [rbp-0x70]
+ mov edx, dword ptr [rbp-0x6C]
+ jmp G_M38819_IG52
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M38819_IG61:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M38819_IG46
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M38819_IG62:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M38819_IG47
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M38819_IG63:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M38819_IG48
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M38819_IG64:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M38819_IG50
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M38819_IG65:
+ cmp eax, 1
+ jne G_M38819_IG59
+ jmp G_M38819_IG53
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M38819_IG66:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ jmp G_M38819_IG55
+ ;; size=23 bbWeight=1.60 PerfScore 5.60
+G_M38819_IG67:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x80]
test rax, rax
- je SHORT G_M38819_IG17
+ je SHORT G_M38819_IG69
;; size=19 bbWeight=1 PerfScore 7.25
-G_M38819_IG16:
- jmp SHORT G_M38819_IG18
+G_M38819_IG68:
+ jmp SHORT G_M38819_IG70
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M38819_IG17:
+G_M38819_IG69:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M38819_IG18:
+G_M38819_IG70:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M38819_IG19:
- add rsp, 344
+G_M38819_IG71:
+ vzeroupper
+ add rsp, 568
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M38819_IG20:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M38819_IG72:
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M38819_IG21:
+G_M38819_IG73:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M38819_IG22:
+G_M38819_IG74:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M38819_IG23:
+G_M38819_IG75:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M38819_IG76:
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+0x180]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M38819_IG24:
- mov r8, gword ptr [rbp-0x160]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x260]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M38819_IG77:
+ mov r8, gword ptr [rbp-0x1F0]
mov r14, qword ptr [r8]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x80]
test rax, rax
- je SHORT G_M38819_IG25
- jmp SHORT G_M38819_IG26
+ je SHORT G_M38819_IG78
+ jmp SHORT G_M38819_IG79
;; size=34 bbWeight=0 PerfScore 0.00
-G_M38819_IG25:
+G_M38819_IG78:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M38819_IG26:
+G_M38819_IG79:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M38819_IG27:
- add rsp, 8
+G_M38819_IG80:
+ vzeroupper
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 786, prolog size 100, PerfScore 297.58, instruction count 185, allocated bytes for code 786 (MethodHash=5858685c) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 2294, prolog size 91, PerfScore 691.19, instruction count 502, allocated bytes for code 2294 (MethodHash=5858685c) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
1500 (189.63 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):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; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 13 ) ref -> [rbp-0x160] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T06] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 arg2 [V02,T09] ( 6, 8 ) int -> r15
-; V03 loc0 [V03 ] ( 5, 12 ) struct (136) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V04 loc1 [V04,T16] ( 3, 6 ) struct (16) [rbp-0xC8] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T06] ( 7, 13 ) ref -> [rbp-0x1F0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T07] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
+; V02 arg2 [V02,T22] ( 6, 8 ) int -> r15
+; V03 loc0 [V03 ] ( 19, 40 ) struct (136) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T11] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <System.__Canon>
-; V12 tmp7 [V12 ] ( 2, 8 ) struct ( 8) [rbp-0xD0] do-not-enreg[XS] addr-exposed "location for address-of(RValue)" <System.Nullable`1[int]>
+;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.__Canon>
+; V12 tmp7 [V12 ] ( 3, 12 ) struct ( 8) [rbp-0xC0] do-not-enreg[XS] addr-exposed "location for address-of(RValue)" <System.Nullable`1[int]>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.DictionaryEntry>
-; V14 tmp9 [V14,T04] ( 4, 16 ) ref -> [rbp-0x168] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
-; V15 tmp10 [V15,T07] ( 3, 12 ) int -> rsi "impSpillLclRefs"
+; V14 tmp9 [V14,T04] ( 4, 16 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
+; V15 tmp10 [V15,T12] ( 3, 12 ) int -> rsi "impSpillLclRefs"
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T23] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V17 tmp12 [V17,T53] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp15 [V20 ] ( 2, 4 ) struct (136) [rbp-0x158] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V21 tmp16 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp17 [V22,T12] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" <System.Int32>
-;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.DictionaryEntry>
-; V24 tmp19 [V24,T17] ( 2, 4 ) int -> rdi "Inline return value spill temp"
-;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp21 [V26,T18] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
-; V27 tmp22 [V27,T13] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V28 tmp23 [V28 ] ( 2, 8 ) ubyte -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
-; V29 tmp24 [V29 ] ( 2, 8 ) int -> [rbp-0xCC] do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
-; V30 tmp25 [V30,T26] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T27] ( 2, 4 ) ref -> [rbp-0x170] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
-; V32 tmp27 [V32,T33] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V33 tmp28 [V33,T28] ( 2, 4 ) long -> rsi "argument with side effect"
-; V34 tmp29 [V34,T03] ( 2, 32 ) long -> rsi "argument with side effect"
-; V35 tmp30 [V35,T14] ( 2, 8 ) long -> rsi "argument with side effect"
-; V36 tmp31 [V36,T15] ( 2, 8 ) long -> rdx "argument with side effect"
-; V37 PSPSym [V37,T30] ( 1, 1 ) long -> [rbp-0x180] do-not-enreg[V] "PSPSym"
-; V38 cse0 [V38,T24] ( 3, 4 ) long -> r13 "CSE #02: moderate"
-;* V39 cse1 [V39,T29] ( 0, 0 ) long -> zero-ref "CSE #03: moderate"
-; V40 cse2 [V40,T19] ( 6, 3.20) long -> r14 multi-def "CSE #01: moderate"
-; V41 rat0 [V41,T22] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V42 rat1 [V42,T25] ( 3, 4 ) long -> r13 "runtime lookup"
-; V43 rat2 [V43,T20] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V44 rat3 [V44,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V45 rat4 [V45,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V46 rat5 [V46,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V47 rat6 [V47,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V48 rat7 [V48,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V49 rat8 [V49,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V50 rat9 [V50,T31] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V51 rat10 [V51,T32] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V20 tmp15 [V20 ] ( 5, 10 ) struct (136) [rbp-0x148] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V21 tmp16 [V21,T51] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V22 tmp17 [V22,T38] ( 4, 7 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V23 tmp18 [V23 ] ( 14, 20 ) struct (32) [rbp-0x168] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V24 tmp19 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref
+;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref
+;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
+; V29 tmp24 [V29,T50] ( 6, 5.40) long -> [rbp-0x170] spill-single-def "Inlining Arg"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V32 tmp27 [V32,T72] ( 2, 2 ) struct (32) [rbp-0x190] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V33 tmp28 [V33,T62] ( 3, 3 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V36 tmp31 [V36,T58] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V37 tmp32 [V37,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V38 tmp33 [V38 ] ( 3, 3 ) struct (32) [rbp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V39 tmp34 [V39,T61] ( 5, 3.40) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V40 tmp35 [V40 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V41 tmp36 [V41,T73] ( 2, 2 ) long -> rsi "Indirect call through function pointer"
+;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V44 tmp39 [V44,T74] ( 2, 2 ) long -> r12 "Indirect call through function pointer"
+; V45 tmp40 [V45,T71] ( 2, 2 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V46 tmp41 [V46,T75] ( 2, 2 ) int -> rax "Inlining Arg"
+; V47 tmp42 [V47,T26] ( 3, 8.80) long -> r12 "Inlining Arg"
+;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V49 tmp44 [V49,T23] ( 4, 8.80) long -> rdi "spilling helperCall"
+; V50 tmp45 [V50,T09] ( 5, 13.60) long -> [rbp-0x1C0] spill-single-def "Inlining Arg"
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V52 tmp47 [V52,T24] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V55 tmp50 [V55,T27] ( 3, 8 ) long -> r8 "Indirect call through function pointer"
+; V56 tmp51 [V56,T10] ( 3, 12 ) ref -> [rbp-0x210] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V57 tmp52 [V57,T41] ( 3, 6 ) int -> rsi "Inline stloc first use temp"
+;* V58 tmp53 [V58 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V61 tmp56 [V61,T83] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V63 tmp58 [V63,T84] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V64 tmp59 [V64,T08] ( 6, 13.60) long -> r12 "Inlining Arg"
+;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V66 tmp61 [V66,T25] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V68 tmp63 [V68 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V69 tmp64 [V69,T28] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V70 tmp65 [V70,T11] ( 3, 12 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V71 tmp66 [V71,T32] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V72 tmp67 [V72,T33] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" <System.Int32>
+;* V73 tmp68 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.DictionaryEntry>
+; V74 tmp69 [V74,T42] ( 2, 4 ) int -> rax "Inline return value spill temp"
+;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V76 tmp71 [V76,T43] ( 3, 6 ) int -> rax "Inline stloc first use temp"
+; V77 tmp72 [V77,T34] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V78 tmp73 [V78 ] ( 2, 6 ) ubyte -> [rbp-0xC0] do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
+; V79 tmp74 [V79 ] ( 2, 6 ) int -> [rbp-0xBC] do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
+; V80 tmp75 [V80,T59] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
+; V81 tmp76 [V81,T60] ( 2, 4 ) ref -> [rbp-0x220] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
+; V82 tmp77 [V82 ] ( 7, 7.50) ref -> [rbp-0x168] do-not-enreg[X] addr-exposed "field V23._root (fldOffset=0x0)" P-DEP
+; V83 tmp78 [V83 ] ( 9, 8 ) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V23._stack (fldOffset=0x8)" P-DEP
+; V84 tmp79 [V84 ] ( 5, 6 ) ref -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V23._current (fldOffset=0x10)" P-DEP
+; V85 tmp80 [V85 ] ( 5, 6 ) int -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V23._poolUserId (fldOffset=0x18)" P-DEP
+;* V86 tmp81 [V86 ] ( 0, 0 ) ref -> zero-ref "V04.[000..008)"
+;* V87 tmp82 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V04.[008..009)"
+;* V88 tmp83 [V88 ] ( 0, 0 ) int -> zero-ref "V04.[012..016)"
+; V89 tmp84 [V89,T39] ( 3, 6 ) ref -> r12 "V58.[000..008)"
+; V90 tmp85 [V90,T44] ( 3, 6 ) ubyte -> rcx "V58.[008..009)"
+; V91 tmp86 [V91,T45] ( 3, 6 ) int -> rdx "V58.[012..016)"
+; V92 tmp87 [V92,T05] ( 4, 16 ) byref -> rsi "Spilling address for field-by-field copy"
+; V93 tmp88 [V93,T87] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V94 tmp89 [V94,T76] ( 2, 2 ) long -> rdi "argument with side effect"
+; V95 tmp90 [V95,T77] ( 2, 2 ) long -> r12 "argument with side effect"
+; V96 tmp91 [V96,T03] ( 2, 32 ) long -> rsi "argument with side effect"
+; V97 tmp92 [V97,T35] ( 2, 8 ) long -> [rbp-0x1C8] spill-single-def "argument with side effect"
+; V98 tmp93 [V98,T36] ( 2, 8 ) long -> [rbp-0x1D0] spill-single-def "argument with side effect"
+; V99 tmp94 [V99,T37] ( 2, 8 ) long -> rdx "argument with side effect"
+; V100 PSPSym [V100,T82] ( 1, 1 ) long -> [rbp-0x228] do-not-enreg[V] "PSPSym"
+; V101 cse0 [V101,T54] ( 3, 4 ) long -> r13 "CSE #04: conservative"
+;* V102 cse1 [V102,T78] ( 0, 0 ) long -> zero-ref "CSE #09: moderate"
+; V103 cse2 [V103,T55] ( 3, 4 ) long -> [rbp-0x1D8] spill-single-def "CSE #05: conservative"
+; V104 cse3 [V104,T79] ( 3, 1.50) long -> [rbp-0x1E0] spill-single-def "CSE #01: conservative"
+; V105 cse4 [V105,T80] ( 3, 1.50) long -> [rbp-0x1E8] spill-single-def "CSE #02: conservative"
+; V106 cse5 [V106,T46] ( 6, 3.20) long -> r14 multi-def "CSE #03: moderate"
+; V107 cse6 [V107,T40] ( 3, 6 ) ref -> rsi "CSE #08: moderate"
+; V108 rat0 [V108,T52] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V109 rat1 [V109,T56] ( 3, 4 ) long -> r13 "runtime lookup"
+; V110 rat2 [V110,T47] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V111 rat3 [V111,T57] ( 3, 4 ) long -> rax "runtime lookup"
+; V112 rat4 [V112,T48] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V113 rat5 [V113,T67] ( 3, 2 ) long -> registers "runtime lookup"
+; V114 rat6 [V114,T63] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V115 rat7 [V115,T68] ( 3, 2 ) long -> registers "runtime lookup"
+; V116 rat8 [V116,T64] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V117 rat9 [V117,T69] ( 3, 2 ) long -> rdi "runtime lookup"
+; V118 rat10 [V118,T65] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V119 rat11 [V119,T70] ( 3, 2 ) long -> rdi "runtime lookup"
+; V120 rat12 [V120,T66] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V121 rat13 [V121,T13] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V122 rat14 [V122,T14] ( 3, 11.20) long -> r8 "fgMakeTemp is creating a new local variable"
+; V123 rat15 [V123,T29] ( 3, 8 ) long -> rdi "runtime lookup"
+; V124 rat16 [V124,T15] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V125 rat17 [V125,T16] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V126 rat18 [V126,T17] ( 3, 11.20) long -> r12 "fgMakeTemp is creating a new local variable"
+; V127 rat19 [V127,T18] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V128 rat20 [V128,T19] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V129 rat21 [V129,T30] ( 3, 8 ) long -> rdi "runtime lookup"
+; V130 rat22 [V130,T20] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V131 rat23 [V131,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V132 rat24 [V132,T21] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V133 rat25 [V133,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V134 rat26 [V134,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V135 rat27 [V135,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V136 rat28 [V136,T49] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V137 rat29 [V137,T85] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V138 rat30 [V138,T86] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 344
+; Lcl frame size = 568
G_M52777_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 344
- lea rbp, [rsp+0x180]
- xor eax, eax
- mov qword ptr [rbp-0x158], rax
+ sub rsp, 568
+ lea rbp, [rsp+0x260]
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ mov rax, -384
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-0x180], rsp
+ mov qword ptr [rbp-0x228], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x160], rdi
+ mov gword ptr [rbp-0x1F0], rdi
mov r8, rdi
mov rbx, rsi
mov r15d, edx
- ;; size=100 bbWeight=1 PerfScore 19.58
+ ;; size=91 bbWeight=1 PerfScore 18.33
G_M52777_IG02:
test rbx, rbx
- je G_M52777_IG21
+ je G_M52777_IG73
test r15d, r15d
- jl G_M52777_IG22
+ jl G_M52777_IG74
mov edi, dword ptr [rbx+0x08]
test edi, edi
- jl G_M52777_IG20
+ jl G_M52777_IG72
mov esi, r15d
add esi, dword ptr [r8+0x18]
cmp edi, esi
- jl G_M52777_IG22
+ jl G_M52777_IG74
mov r14, qword ptr [r8]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov r13, qword ptr [rsi+0xB8]
test r13, r13
je SHORT G_M52777_IG04
;; size=69 bbWeight=1 PerfScore 19.75
G_M52777_IG03:
jmp SHORT G_M52777_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M52777_IG04:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M52777_IG05:
- mov rsi, r13
- mov r8, gword ptr [rbp-0x160]
- mov rdx, gword ptr [r8+0x08]
- lea rdi, [rbp-0x158]
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ mov rdi, r13
+ mov r8, gword ptr [rbp-0x1F0]
+ mov r12, gword ptr [r8+0x08]
+ xor rsi, rsi
+ mov gword ptr [rbp-0x148], rsi
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x18]
+ test rax, rax
+ je SHORT G_M52777_IG07
+ ;; size=39 bbWeight=1 PerfScore 11.75
+G_M52777_IG06:
+ jmp SHORT G_M52777_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M52777_IG07:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=15 bbWeight=0.20 PerfScore 0.25
+G_M52777_IG08:
+ mov qword ptr [rbp-0x1D8], rax
+ mov qword ptr [rbp-0x170], rax
+ test r12, r12
+ je G_M52777_IG75
+ mov gword ptr [rbp-0x168], r12
+ xor rdx, rdx
+ mov gword ptr [rbp-0x158], rdx
+ mov rdx, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rdx]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x150], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x160], rdi
+ mov rdi, gword ptr [rbp-0x168]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M52777_IG28
+ ;; size=84 bbWeight=1 PerfScore 16.00
+G_M52777_IG09:
+ mov rax, qword ptr [rbp-0x170]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x18]
+ test rcx, rcx
+ je SHORT G_M52777_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M52777_IG10:
+ jmp SHORT G_M52777_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M52777_IG11:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0x170]
+ ;; size=28 bbWeight=0.10 PerfScore 0.28
+G_M52777_IG12:
+ mov rdi, rcx
+ mov qword ptr [rbp-0x1E8], rdi
+ mov rcx, rdi
+ mov qword ptr [rbp-0x1B8], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M52777_IG13:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x1B0], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M52777_IG14:
+ mov rsi, qword ptr [rcx+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rdx, qword ptr [rsi+0x18]
+ test rdx, rdx
+ je SHORT G_M52777_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M52777_IG15:
+ jmp SHORT G_M52777_IG17
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M52777_IG16:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdx, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M52777_IG17:
+ mov qword ptr [rbp-0x1E0], rdx
+ mov rsi, rdx
+ lea rdi, [rbp-0x1B0]
+ call rsi
+ cmp eax, -1
+ je SHORT G_M52777_IG21
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M52777_IG19
+ ;; size=47 bbWeight=0.50 PerfScore 7.12
+G_M52777_IG18:
+ mov rdi, rax
+ jmp SHORT G_M52777_IG20
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M52777_IG19:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.10 PerfScore 0.15
+G_M52777_IG20:
+ lea rsi, [rbp-0x160]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M52777_IG21
+ mov r12, qword ptr [rbp-0x1E0]
+ mov rax, gword ptr [rbp-0x160]
+ mov gword ptr [rbp-0x208], rax
+ lea rdi, [rbp-0x1B0]
+ call r12
+ mov r12, gword ptr [rbp-0x208]
+ mov dword ptr [r12+0x10], eax
+ jmp G_M52777_IG27
+ ;; size=71 bbWeight=0.50 PerfScore 7.75
+G_M52777_IG21:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x160], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M52777_IG22:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x190], ymm0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M52777_IG23:
+ mov rax, qword ptr [rbp-0x170]
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M52777_IG25
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M52777_IG24:
+ jmp SHORT G_M52777_IG26
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M52777_IG25:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M52777_IG26:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x200], rax
+ movzx rsi, byte ptr [r12+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r12, qword ptr [rbp-0x1E8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x190]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r12
+ mov rsi, gword ptr [rbp-0x200]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x160], rax
+ ;; size=129 bbWeight=0.50 PerfScore 13.25
+G_M52777_IG27:
+ lea rdi, [rbp-0x168]
+ mov rsi, qword ptr [rbp-0x170]
+ mov rdx, gword ptr [rbp-0x168]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M52777_IG28:
+ vmovdqu ymm0, ymmword ptr [rbp-0x168]
+ vmovdqu ymmword ptr [rbp-0x138], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M52777_IG29:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x118], ymm0
+ vmovdqu ymmword ptr [rbp-0xF8], ymm0
+ vmovdqu ymmword ptr [rbp-0xE0], ymm0
+ mov dword ptr [rbp-0x140], -1
lea rdi, bword ptr [rbp-0xB8]
- lea rsi, bword ptr [rbp-0x158]
+ lea rsi, bword ptr [rbp-0x148]
mov ecx, 17
rep movsq
- ;; size=57 bbWeight=1 PerfScore 33.50
-G_M52777_IG06:
- jmp G_M52777_IG09
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M52777_IG30:
+ jmp G_M52777_IG54
;; size=5 bbWeight=1 PerfScore 2.00
-G_M52777_IG07:
- mov rsi, r13
- lea rdi, [rbp-0xB8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xC8], rax
- mov qword ptr [rbp-0xC0], rdx
- mov r12, gword ptr [rbp-0xC8]
- mov rsi, qword ptr [rbp-0xC0]
- mov qword ptr [rbp-0xD0], rsi
- lea rsi, [rbp-0xD0]
+G_M52777_IG31:
+ mov r12, r13
+ mov rax, qword ptr [rbp-0x1D8]
+ mov rcx, rax
+ mov qword ptr [rbp-0x1C0], rcx
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M52777_IG38
+ cmp gword ptr [rbp-0xA0], 0
+ je G_M52777_IG42
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M52777_IG33
+ ;; size=64 bbWeight=2 PerfScore 31.50
+G_M52777_IG32:
+ jmp SHORT G_M52777_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M52777_IG33:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rcx, qword ptr [rbp-0x1C0]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M52777_IG34:
+ mov rdx, gword ptr [rbp-0xA0]
+ mov gword ptr [rbp-0x210], rdx
+ cmp byte ptr [rdx], dl
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M52777_IG36
+ ;; size=29 bbWeight=2 PerfScore 20.50
+G_M52777_IG35:
+ jmp SHORT G_M52777_IG37
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M52777_IG36:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M52777_IG37:
+ lea rdi, [rbp-0xA8]
+ call r8
+ mov rdi, gword ptr [rbp-0x210]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rcx, qword ptr [rbp-0x1C0]
+ je G_M52777_IG42
+ ;; size=33 bbWeight=2 PerfScore 19.00
+G_M52777_IG38:
+ mov rdi, qword ptr [rcx+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M52777_IG40
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M52777_IG39:
+ jmp SHORT G_M52777_IG41
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M52777_IG40:
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M52777_IG41:
+ mov qword ptr [rbp-0x1C8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xA8]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1C8]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=2 PerfScore 35.50
+G_M52777_IG42:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M52777_IG44
+ ;; size=17 bbWeight=2 PerfScore 14.50
+G_M52777_IG43:
+ jmp SHORT G_M52777_IG45
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M52777_IG44:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M52777_IG45:
+ mov esi, dword ptr [rbp-0x88]
+ cmp esi, 1
+ je G_M52777_IG60
+ cmp esi, 2
+ jne G_M52777_IG58
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r12, qword ptr [rsi+0x18]
+ test r12, r12
+ je G_M52777_IG61
+ ;; size=44 bbWeight=2 PerfScore 21.50
+G_M52777_IG46:
+ cmp gword ptr [rbp-0x60], 0
+ je SHORT G_M52777_IG49
+ cmp gword ptr [rbp-0x58], 0
+ je G_M52777_IG51
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M52777_IG62
+ ;; size=39 bbWeight=2 PerfScore 26.50
+G_M52777_IG47:
+ mov rcx, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x218], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je G_M52777_IG63
+ ;; size=30 bbWeight=2 PerfScore 20.50
+G_M52777_IG48:
+ lea rdi, [rbp-0x68]
+ call rdx
+ mov rdi, gword ptr [rbp-0x218]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M52777_IG51
+ ;; size=22 bbWeight=2 PerfScore 17.00
+G_M52777_IG49:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M52777_IG64
+ ;; size=21 bbWeight=2 PerfScore 14.50
+G_M52777_IG50:
+ mov qword ptr [rbp-0x1D0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1D0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=2 PerfScore 46.50
+G_M52777_IG51:
+ mov rsi, gword ptr [rbp-0x50]
+ test rsi, rsi
+ je G_M52777_IG57
+ add rsi, 32
+ mov r12, gword ptr [rsi]
+ movzx rcx, byte ptr [rsi+0x08]
+ mov edx, dword ptr [rsi+0x0C]
+ ;; size=27 bbWeight=2 PerfScore 17.00
+G_M52777_IG52:
+ mov byte ptr [rbp-0xC0], cl
+ mov dword ptr [rbp-0xBC], edx
+ lea rsi, [rbp-0xC0]
mov rdi, 0xD1FFAB1E ; System.Nullable`1[int]
call CORINFO_HELP_BOX_NULLABLE
- mov gword ptr [rbp-0x170], rax
+ mov gword ptr [rbp-0x220], rax
mov rdi, 0xD1FFAB1E ; System.Collections.DictionaryEntry
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x168], rax
+ mov gword ptr [rbp-0x1F8], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- mov r12, gword ptr [rbp-0x168]
+ mov r12, gword ptr [rbp-0x1F8]
lea rdi, bword ptr [r12+0x10]
- mov rsi, gword ptr [rbp-0x170]
+ mov rsi, gword ptr [rbp-0x220]
call CORINFO_HELP_ASSIGN_REF
mov esi, r15d
lea r15d, [rsi+0x01]
mov rdi, qword ptr [rbx]
- mov edi, dword ptr [rdi+0x04]
- add edi, -24
- shr edi, 3
- je SHORT G_M52777_IG08
- cmp edi, 1
- jne SHORT G_M52777_IG14
- ;; size=170 bbWeight=2 PerfScore 54.00
-G_M52777_IG08:
+ mov eax, dword ptr [rdi+0x04]
+ add eax, -24
+ shr eax, 3
+ jne G_M52777_IG65
+ ;; size=124 bbWeight=2 PerfScore 37.50
+G_M52777_IG53:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Array:GetFlattenedIndex(int):long:this
call [rax]System.Array:GetFlattenedIndex(int):long:this
mov rdx, rax
mov rsi, r12
mov rdi, rbx
call System.Array:InternalSetValue(System.Object,long):this
;; size=29 bbWeight=2 PerfScore 10.50
-G_M52777_IG09:
- mov r8, gword ptr [rbp-0x160]
+G_M52777_IG54:
+ mov r8, gword ptr [rbp-0x1F0]
mov rdi, qword ptr [r8]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0xB8]
test rsi, rsi
- je SHORT G_M52777_IG11
- ;; size=29 bbWeight=8 PerfScore 82.00
-G_M52777_IG10:
- jmp SHORT G_M52777_IG12
- ;; size=2 bbWeight=6.40 PerfScore 12.80
-G_M52777_IG11:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov rsi, rax
- ;; size=18 bbWeight=1.60 PerfScore 2.40
-G_M52777_IG12:
+ je G_M52777_IG66
+ ;; size=33 bbWeight=8 PerfScore 82.00
+G_M52777_IG55:
lea rdi, [rbp-0xB8]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne G_M52777_IG07
+ jne G_M52777_IG31
;; size=27 bbWeight=8 PerfScore 40.00
-G_M52777_IG13:
- jmp SHORT G_M52777_IG15
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M52777_IG14:
+G_M52777_IG56:
+ jmp G_M52777_IG67
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M52777_IG57:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov r14, rax
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, r14
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M52777_IG58:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M52777_IG59:
mov edi, 58
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int)
call [rax]System.ThrowHelper:ThrowArgumentException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M52777_IG15:
+G_M52777_IG60:
+ mov r12, gword ptr [rbp-0x78]
+ movzx rcx, byte ptr [rbp-0x70]
+ mov edx, dword ptr [rbp-0x6C]
+ jmp G_M52777_IG52
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M52777_IG61:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M52777_IG46
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M52777_IG62:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M52777_IG47
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M52777_IG63:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ jmp G_M52777_IG48
+ ;; size=23 bbWeight=0.40 PerfScore 1.40
+G_M52777_IG64:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M52777_IG50
+ ;; size=26 bbWeight=0.40 PerfScore 1.50
+G_M52777_IG65:
+ cmp eax, 1
+ jne G_M52777_IG59
+ jmp G_M52777_IG53
+ ;; size=14 bbWeight=2 PerfScore 6.50
+G_M52777_IG66:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ jmp G_M52777_IG55
+ ;; size=23 bbWeight=1.60 PerfScore 5.60
+G_M52777_IG67:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0xC8]
test rax, rax
- je SHORT G_M52777_IG17
+ je SHORT G_M52777_IG69
;; size=19 bbWeight=1 PerfScore 7.25
-G_M52777_IG16:
- jmp SHORT G_M52777_IG18
+G_M52777_IG68:
+ jmp SHORT G_M52777_IG70
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M52777_IG17:
+G_M52777_IG69:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M52777_IG18:
+G_M52777_IG70:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M52777_IG19:
- add rsp, 344
+G_M52777_IG71:
+ vzeroupper
+ add rsp, 568
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M52777_IG20:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M52777_IG72:
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M52777_IG21:
+G_M52777_IG73:
mov edi, 0x497
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M52777_IG22:
+G_M52777_IG74:
mov edi, 0x4A3
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
-G_M52777_IG23:
+G_M52777_IG75:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M52777_IG76:
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+0x180]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M52777_IG24:
- mov r8, gword ptr [rbp-0x160]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x260]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M52777_IG77:
+ mov r8, gword ptr [rbp-0x1F0]
mov r14, qword ptr [r8]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0xC8]
test rax, rax
- je SHORT G_M52777_IG25
- jmp SHORT G_M52777_IG26
+ je SHORT G_M52777_IG78
+ jmp SHORT G_M52777_IG79
;; size=34 bbWeight=0 PerfScore 0.00
-G_M52777_IG25:
+G_M52777_IG78:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0 PerfScore 0.00
-G_M52777_IG26:
+G_M52777_IG79:
lea rdi, [rbp-0xB8]
call rax
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M52777_IG27:
- add rsp, 8
+G_M52777_IG80:
+ vzeroupper
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 791, prolog size 100, PerfScore 297.58, instruction count 185, allocated bytes for code 791 (MethodHash=fb7631d6) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 2291, prolog size 91, PerfScore 693.94, instruction count 500, allocated bytes for code 2291 (MethodHash=fb7631d6) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
1461 (293.96 % of base) - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte: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; 4 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 10 ) ref -> [rbp-0x150] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T08] ( 3, 6 ) struct ( 8) [rbp-0x20] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V02 loc0 [V02 ] ( 5, 15 ) struct (136) [rbp-0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V03 loc1 [V03,T09] ( 2, 8 ) struct (16) [rbp-0xB8] do-not-enreg[SR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-; V04 loc2 [V04,T18] ( 2, 2 ) ubyte -> [rbp-0xBC] do-not-enreg[Z] EH-live
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T27] ( 8, 11 ) ref -> [rbp-0x1F0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T35] ( 3, 6 ) struct ( 8) [rbp-0x38] do-not-enreg[S] single-def <System.Nullable`1[int]>
+; V02 loc0 [V02 ] ( 17, 63 ) struct (136) [rbp-0xC0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V04 loc2 [V04,T68] ( 2, 2 ) ubyte -> [rbp-0xC4] do-not-enreg[Z] EH-live
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Nullable`1[int]>
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T07] ( 6, 8 ) long -> rax "Indirect call through function pointer"
-; V13 tmp8 [V13 ] ( 2, 4 ) struct (136) [rbp-0x148] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp10 [V15,T02] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
-; V18 tmp13 [V18,T17] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T00] ( 2, 32 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T03] ( 2, 16 ) long -> rsi "argument with side effect"
-; V21 PSPSym [V21,T19] ( 1, 1 ) long -> [rbp-0x160] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T04] ( 4, 14 ) long -> r15 "CSE #02: aggressive"
-; V23 cse1 [V23,T06] ( 6, 5.20) long -> rbx multi-def "CSE #01: aggressive"
-; V24 rat0 [V24,T14] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V25 rat1 [V25,T16] ( 3, 4 ) long -> r15 "runtime lookup"
-; V26 rat2 [V26,T11] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
-;* V27 rat3 [V27,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V28 rat4 [V28,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V30 rat6 [V30,T15] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V31 rat7 [V31,T13] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V12 tmp7 [V12,T33] ( 6, 8 ) long -> rax "Indirect call through function pointer"
+; V13 tmp8 [V13 ] ( 5, 10 ) struct (136) [rbp-0x150] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V14 tmp9 [V14,T48] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V15 tmp10 [V15,T34] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V16 tmp11 [V16 ] ( 14, 28 ) struct (32) [rbp-0x170] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V18 tmp13 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref
+; V20 tmp15 [V20,T67] ( 2, 2 ) byref -> rcx single-def
+; V21 tmp16 [V21,T69] ( 2, 2 ) int -> rdi
+; V22 tmp17 [V22,T32] ( 6, 8.80) long -> r12 "Inlining Arg"
+;* V23 tmp18 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V24 tmp19 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V25 tmp20 [V25,T59] ( 2, 4 ) struct (32) [rbp-0x190] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V26 tmp21 [V26,T38] ( 3, 6 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V28 tmp23 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V29 tmp24 [V29,T57] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V30 tmp25 [V30,T70] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp26 [V31 ] ( 3, 6 ) struct (32) [rbp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V32 tmp27 [V32,T37] ( 5, 6.80) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V34 tmp29 [V34,T60] ( 2, 4 ) long -> rdx "Indirect call through function pointer"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V36 tmp31 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V37 tmp32 [V37,T61] ( 2, 4 ) long -> r14 "Indirect call through function pointer"
+; V38 tmp33 [V38,T58] ( 2, 4 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V39 tmp34 [V39,T62] ( 2, 4 ) int -> rax "Inlining Arg"
+; V40 tmp35 [V40,T17] ( 3, 17.60) long -> r14 "Inlining Arg"
+;* V41 tmp36 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V42 tmp37 [V42,T14] ( 4, 17.60) long -> rdi "spilling helperCall"
+; V43 tmp38 [V43,T02] ( 5, 27.20) long -> r12 "Inlining Arg"
+;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V45 tmp40 [V45,T15] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V48 tmp43 [V48,T18] ( 3, 16 ) long -> rcx "Indirect call through function pointer"
+; V49 tmp44 [V49,T03] ( 3, 24 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V50 tmp45 [V50,T29] ( 3, 12 ) int -> rsi "Inline stloc first use temp"
+; V51 tmp46 [V51,T30] ( 3, 12 ) struct (16) [rbp-0x1C8] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V52 tmp47 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V54 tmp49 [V54,T72] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V55 tmp50 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V56 tmp51 [V56,T73] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V57 tmp52 [V57,T01] ( 6, 27.20) long -> r14 "Inlining Arg"
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V59 tmp54 [V59,T16] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp56 [V61 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V62 tmp57 [V62,T19] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+; V63 tmp58 [V63,T04] ( 3, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V64 tmp59 [V64,T22] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V65 tmp60 [V65,T23] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]>
+;* V66 tmp61 [V66 ] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
+; V68 tmp63 [V68 ] ( 7, 11 ) ref -> [rbp-0x170] do-not-enreg[X] addr-exposed "field V16._root (fldOffset=0x0)" P-DEP
+; V69 tmp64 [V69 ] ( 9, 13 ) ref -> [rbp-0x168] do-not-enreg[X] addr-exposed "field V16._stack (fldOffset=0x8)" P-DEP
+; V70 tmp65 [V70 ] ( 5, 9 ) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V16._current (fldOffset=0x10)" P-DEP
+; V71 tmp66 [V71 ] ( 5, 9 ) int -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V16._poolUserId (fldOffset=0x18)" P-DEP
+; V72 tmp67 [V72,T63] ( 2, 4 ) long -> rdi "argument with side effect"
+; V73 tmp68 [V73,T64] ( 2, 4 ) long -> r14 "argument with side effect"
+; V74 tmp69 [V74,T00] ( 2, 32 ) long -> rsi "argument with side effect"
+; V75 tmp70 [V75,T24] ( 2, 16 ) long -> [rbp-0x1D0] spill-single-def "argument with side effect"
+; V76 tmp71 [V76,T25] ( 2, 16 ) long -> [rbp-0x1D8] spill-single-def "argument with side effect"
+; V77 PSPSym [V77,T71] ( 1, 1 ) long -> [rbp-0x218] do-not-enreg[V] "PSPSym"
+; V78 cse0 [V78,T26] ( 4, 14 ) long -> r15 "CSE #04: moderate"
+; V79 cse1 [V79,T39] ( 3, 6 ) long -> r13 "CSE #05: moderate"
+; V80 cse2 [V80,T65] ( 3, 3 ) long -> [rbp-0x1E0] spill-single-def "CSE #01: moderate"
+; V81 cse3 [V81,T66] ( 3, 3 ) long -> [rbp-0x1E8] spill-single-def "CSE #02: moderate"
+; V82 cse4 [V82,T31] ( 6, 5.20) long -> rbx multi-def "CSE #03: moderate"
+; V83 cse5 [V83,T28] ( 3, 12 ) ref -> rdi "CSE #08: moderate"
+; V84 rat0 [V84,T49] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V85 rat1 [V85,T51] ( 3, 4 ) long -> r15 "runtime lookup"
+; V86 rat2 [V86,T40] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
+; V87 rat3 [V87,T52] ( 3, 4 ) long -> r13 "runtime lookup"
+; V88 rat4 [V88,T41] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V89 rat5 [V89,T53] ( 3, 4 ) long -> rax "runtime lookup"
+; V90 rat6 [V90,T42] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V91 rat7 [V91,T54] ( 3, 4 ) long -> registers "runtime lookup"
+; V92 rat8 [V92,T43] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T55] ( 3, 4 ) long -> rdi "runtime lookup"
+; V94 rat10 [V94,T44] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T56] ( 3, 4 ) long -> rdi "runtime lookup"
+; V96 rat12 [V96,T45] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V97 rat13 [V97,T05] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T06] ( 3, 22.40) long -> rcx "fgMakeTemp is creating a new local variable"
+; V99 rat15 [V99,T20] ( 3, 16 ) long -> rdi "runtime lookup"
+; V100 rat16 [V100,T07] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V101 rat17 [V101,T08] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V102 rat18 [V102,T09] ( 3, 22.40) long -> r14 "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T10] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V104 rat20 [V104,T11] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V105 rat21 [V105,T21] ( 3, 16 ) long -> rdi "runtime lookup"
+; V106 rat22 [V106,T12] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V107 rat23 [V107,T36] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V108 rat24 [V108,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V109 rat25 [V109,T46] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V110 rat26 [V110,T50] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V111 rat27 [V111,T47] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 336
+; Lcl frame size = 552
G_M15826_IG01:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 336
- lea rbp, [rsp+0x160]
+ sub rsp, 552
+ lea rbp, [rsp+0x250]
xor eax, eax
- mov qword ptr [rbp-0x148], rax
+ mov qword ptr [rbp-0x1C8], rax
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ mov rax, -384
+ vmovdqa xmmword ptr [rbp+rax-0x40], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
- vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
- vmovdqa xmmword ptr [rax+rbp], xmm8
add rax, 48
jne SHORT -5 instr
- mov qword ptr [rbp-0x160], rsp
- mov qword ptr [rbp-0x18], rdi
- mov gword ptr [rbp-0x150], rdi
- mov qword ptr [rbp-0x20], rsi
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x218], rsp
+ mov qword ptr [rbp-0x30], rdi
+ mov gword ptr [rbp-0x1F0], rdi
+ mov qword ptr [rbp-0x38], rsi
mov rdx, rdi
- ;; size=91 bbWeight=1 PerfScore 17.08
+ ;; size=102 bbWeight=1 PerfScore 21.08
G_M15826_IG02:
mov rbx, qword ptr [rdx]
mov rdi, rbx
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov r15, qword ptr [rsi+0x60]
test r15, r15
je SHORT G_M15826_IG04
;; size=22 bbWeight=1 PerfScore 9.50
G_M15826_IG03:
jmp SHORT G_M15826_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M15826_IG04:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r15, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M15826_IG05:
- mov rsi, r15
- mov rdx, gword ptr [rbp-0x150]
- mov rdx, gword ptr [rdx+0x08]
- lea rdi, [rbp-0x148]
- mov rcx, gword ptr [rbp-0x150]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- lea rdi, bword ptr [rbp-0xA8]
- lea rsi, bword ptr [rbp-0x148]
- mov ecx, 17
- rep movsq
- ;; size=62 bbWeight=1 PerfScore 34.25
+ mov rdi, r15
+ mov rdx, gword ptr [rbp-0x1F0]
+ mov r14, gword ptr [rdx+0x08]
+ mov gword ptr [rbp-0x150], rdx
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r13, qword ptr [rsi+0x18]
+ test r13, r13
+ je SHORT G_M15826_IG07
+ ;; size=37 bbWeight=1 PerfScore 11.50
G_M15826_IG06:
jmp SHORT G_M15826_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
G_M15826_IG07:
- mov rsi, r15
- lea rdi, [rbp-0xA8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xB8], rax
- mov qword ptr [rbp-0xB0], rdx
- mov rcx, gword ptr [rbp-0x150]
- mov rdi, gword ptr [rcx+0x10]
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M15826_IG08:
+ mov r12, r13
+ test r14, r14
+ je G_M15826_IG74
+ mov gword ptr [rbp-0x170], r14
+ xor rax, rax
+ mov gword ptr [rbp-0x160], rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rax]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x158], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x168], rdi
+ mov rdi, gword ptr [rbp-0x170]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M15826_IG27
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M15826_IG10
+ ;; size=90 bbWeight=1 PerfScore 21.50
+G_M15826_IG09:
+ jmp SHORT G_M15826_IG11
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M15826_IG10:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M15826_IG11:
+ mov rdi, rax
+ mov qword ptr [rbp-0x1E8], rdi
+ mov rax, rdi
+ mov qword ptr [rbp-0x1B8], rax
+ ;; size=20 bbWeight=1 PerfScore 2.50
+G_M15826_IG12:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x1B0], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M15826_IG13:
+ mov rsi, qword ptr [rax+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rcx, qword ptr [rsi+0x18]
+ test rcx, rcx
+ je SHORT G_M15826_IG15
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M15826_IG14:
+ jmp SHORT G_M15826_IG16
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M15826_IG15:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M15826_IG16:
+ mov qword ptr [rbp-0x1E0], rcx
+ mov rdx, rcx
+ lea rdi, [rbp-0x1B0]
+ call rdx
+ cmp eax, -1
+ je SHORT G_M15826_IG20
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M15826_IG18
+ ;; size=47 bbWeight=1 PerfScore 14.25
+G_M15826_IG17:
+ mov rdi, rax
+ jmp SHORT G_M15826_IG19
+ ;; size=5 bbWeight=0.80 PerfScore 1.80
+G_M15826_IG18:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M15826_IG19:
+ lea rsi, [rbp-0x168]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M15826_IG20
+ mov r14, qword ptr [rbp-0x1E0]
+ mov rax, gword ptr [rbp-0x168]
+ mov gword ptr [rbp-0x200], rax
+ lea rdi, [rbp-0x1B0]
+ call r14
+ mov r14, gword ptr [rbp-0x200]
+ mov dword ptr [r14+0x10], eax
+ jmp G_M15826_IG26
+ ;; size=70 bbWeight=1 PerfScore 15.50
+G_M15826_IG20:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x168], rdi
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M15826_IG21:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x190], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M15826_IG22:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M15826_IG24
+ ;; size=17 bbWeight=1 PerfScore 7.25
+G_M15826_IG23:
+ jmp SHORT G_M15826_IG25
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M15826_IG24:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M15826_IG25:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x1F8], rax
+ movzx rsi, byte ptr [r14+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r14, qword ptr [rbp-0x1E8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x190]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r14
+ mov rsi, gword ptr [rbp-0x1F8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x168], rax
+ ;; size=128 bbWeight=1 PerfScore 26.50
+G_M15826_IG26:
+ lea rdi, [rbp-0x170]
+ mov rsi, r12
+ mov rdx, gword ptr [rbp-0x170]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=29 bbWeight=1 PerfScore 5.00
+G_M15826_IG27:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x140], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M15826_IG28:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x120], ymm0
+ vmovdqu ymmword ptr [rbp-0x100], ymm0
+ vmovdqu ymmword ptr [rbp-0xE8], ymm0
+ lea rcx, bword ptr [rbp-0x150]
+ mov rdx, gword ptr [rbp-0x1F0]
+ mov edi, dword ptr [rdx+0x2C]
+ mov dword ptr [rcx+0x08], edi
+ lea rdi, bword ptr [rbp-0xC0]
+ lea rsi, bword ptr [rbp-0x150]
+ mov ecx, 17
+ rep movsq
+ ;; size=70 bbWeight=1 PerfScore 34.08
+G_M15826_IG29:
+ jmp G_M15826_IG53
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M15826_IG30:
+ mov r14, r15
+ mov r12, r13
+ cmp gword ptr [rbp-0xB0], 0
+ je G_M15826_IG37
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M15826_IG41
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M15826_IG32
+ ;; size=51 bbWeight=4 PerfScore 55.00
+G_M15826_IG31:
+ jmp SHORT G_M15826_IG33
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M15826_IG32:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M15826_IG33:
+ mov rax, gword ptr [rbp-0xA8]
+ mov gword ptr [rbp-0x208], rax
+ cmp byte ptr [rax], al
+ mov rsi, qword ptr [rdi+0x10]
+ mov rcx, qword ptr [rsi+0x10]
+ test rcx, rcx
+ je SHORT G_M15826_IG35
+ ;; size=29 bbWeight=4 PerfScore 41.00
+G_M15826_IG34:
+ jmp SHORT G_M15826_IG36
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M15826_IG35:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rcx, rax
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M15826_IG36:
+ lea rdi, [rbp-0xB0]
+ call rcx
+ mov rdi, gword ptr [rbp-0x208]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M15826_IG41
+ ;; size=25 bbWeight=4 PerfScore 34.00
+G_M15826_IG37:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M15826_IG39
+ ;; size=17 bbWeight=4 PerfScore 29.00
+G_M15826_IG38:
+ jmp SHORT G_M15826_IG40
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M15826_IG39:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M15826_IG40:
+ mov qword ptr [rbp-0x1D0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xB0]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1D0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=4 PerfScore 71.00
+G_M15826_IG41:
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M15826_IG43
+ ;; size=16 bbWeight=4 PerfScore 29.00
+G_M15826_IG42:
+ jmp SHORT G_M15826_IG44
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M15826_IG43:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M15826_IG44:
+ mov esi, dword ptr [rbp-0x90]
+ cmp esi, 1
+ je G_M15826_IG57
+ cmp esi, 2
+ jne G_M15826_IG56
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r14, qword ptr [rsi+0x18]
+ test r14, r14
+ je G_M15826_IG59
+ ;; size=44 bbWeight=4 PerfScore 43.00
+G_M15826_IG45:
+ cmp gword ptr [rbp-0x68], 0
+ je SHORT G_M15826_IG48
+ cmp gword ptr [rbp-0x60], 0
+ je G_M15826_IG50
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M15826_IG60
+ ;; size=38 bbWeight=4 PerfScore 53.00
+G_M15826_IG46:
+ mov r12, gword ptr [rbp-0x60]
+ cmp byte ptr [r12], r12b
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je G_M15826_IG61
+ ;; size=25 bbWeight=4 PerfScore 37.00
+G_M15826_IG47:
+ lea rdi, [rbp-0x70]
+ call rax
+ cmp eax, dword ptr [r12+0x10]
+ je SHORT G_M15826_IG50
+ ;; size=13 bbWeight=4 PerfScore 30.00
+G_M15826_IG48:
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M15826_IG62
+ ;; size=20 bbWeight=4 PerfScore 29.00
+G_M15826_IG49:
+ mov qword ptr [rbp-0x1D8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x70]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1D8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=4 PerfScore 93.00
+G_M15826_IG50:
+ mov rdi, gword ptr [rbp-0x58]
+ test rdi, rdi
+ je SHORT G_M15826_IG55
+ ;; size=9 bbWeight=4 PerfScore 9.00
+G_M15826_IG51:
+ vmovdqu xmm0, xmmword ptr [rdi+0x20]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=4 PerfScore 20.00
+G_M15826_IG52:
+ mov rdx, gword ptr [rbp-0x1F0]
+ mov rdi, gword ptr [rdx+0x10]
mov rdi, gword ptr [rdi+0x10]
- mov rdx, qword ptr [rbp-0xB0]
- mov rsi, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x1C0]
+ mov rsi, qword ptr [rbp-0x38]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]:Equals(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this
call [r11]System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]:Equals(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this
test eax, eax
- jne SHORT G_M15826_IG10
- ;; size=79 bbWeight=4 PerfScore 70.00
-G_M15826_IG08:
+ jne G_M15826_IG63
+ ;; size=47 bbWeight=4 PerfScore 46.00
+G_M15826_IG53:
mov rsi, r15
- lea rdi, [rbp-0xA8]
+ lea rdi, [rbp-0xC0]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M15826_IG07
- ;; size=26 bbWeight=8 PerfScore 42.00
-G_M15826_IG09:
- jmp SHORT G_M15826_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M15826_IG10:
- mov dword ptr [rbp-0xBC], 1
- jmp SHORT G_M15826_IG15
+ jne G_M15826_IG30
+ ;; size=30 bbWeight=8 PerfScore 42.00
+G_M15826_IG54:
+ jmp G_M15826_IG64
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M15826_IG55:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M15826_IG56:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M15826_IG57:
+ vmovdqu xmm0, xmmword ptr [rbp-0x80]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=4 PerfScore 16.00
+G_M15826_IG58:
+ jmp G_M15826_IG52
+ ;; size=5 bbWeight=4 PerfScore 8.00
+G_M15826_IG59:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r14, rax
+ jmp G_M15826_IG45
+ ;; size=23 bbWeight=0.80 PerfScore 2.80
+G_M15826_IG60:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M15826_IG46
+ ;; size=26 bbWeight=0.80 PerfScore 3.00
+G_M15826_IG61:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ jmp G_M15826_IG47
+ ;; size=20 bbWeight=0.80 PerfScore 2.60
+G_M15826_IG62:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M15826_IG49
+ ;; size=26 bbWeight=0.80 PerfScore 3.00
+G_M15826_IG63:
+ mov dword ptr [rbp-0xC4], 1
+ jmp SHORT G_M15826_IG68
;; size=12 bbWeight=1 PerfScore 3.00
-G_M15826_IG11:
+G_M15826_IG64:
mov rdi, qword ptr [rbx+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x80]
test rax, rax
- je SHORT G_M15826_IG13
+ je SHORT G_M15826_IG66
;; size=19 bbWeight=1 PerfScore 7.25
-G_M15826_IG12:
- jmp SHORT G_M15826_IG14
+G_M15826_IG65:
+ jmp SHORT G_M15826_IG67
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M15826_IG13:
+G_M15826_IG66:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M15826_IG14:
- lea rdi, [rbp-0xA8]
+G_M15826_IG67:
+ lea rdi, [rbp-0xC0]
call rax
- jmp SHORT G_M15826_IG19
+ jmp SHORT G_M15826_IG72
;; size=11 bbWeight=1 PerfScore 5.50
-G_M15826_IG15:
+G_M15826_IG68:
mov rdi, rsp
- call G_M15826_IG21
+ call G_M15826_IG75
;; size=8 bbWeight=1 PerfScore 1.25
-G_M15826_IG16:
+G_M15826_IG69:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M15826_IG17:
- mov eax, dword ptr [rbp-0xBC]
+G_M15826_IG70:
+ mov eax, dword ptr [rbp-0xC4]
;; size=6 bbWeight=1 PerfScore 1.00
-G_M15826_IG18:
- add rsp, 336
+G_M15826_IG71:
+ vzeroupper
+ add rsp, 552
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=12 bbWeight=1 PerfScore 2.75
-G_M15826_IG19:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M15826_IG72:
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M15826_IG20:
- add rsp, 336
+G_M15826_IG73:
+ vzeroupper
+ add rsp, 552
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=12 bbWeight=1 PerfScore 2.75
-G_M15826_IG21:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M15826_IG74:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M15826_IG75:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 16
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x160]
- ;; size=22 bbWeight=1 PerfScore 6.75
-G_M15826_IG22:
- mov rcx, gword ptr [rbp-0x150]
- mov rbx, qword ptr [rcx]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x250]
+ ;; size=30 bbWeight=1 PerfScore 9.75
+G_M15826_IG76:
+ mov rdx, gword ptr [rbp-0x1F0]
+ mov rbx, qword ptr [rdx]
mov rdi, rbx
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x80]
test rax, rax
- je SHORT G_M15826_IG24
+ je SHORT G_M15826_IG78
;; size=32 bbWeight=1 PerfScore 10.50
-G_M15826_IG23:
- jmp SHORT G_M15826_IG25
+G_M15826_IG77:
+ jmp SHORT G_M15826_IG79
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M15826_IG24:
+G_M15826_IG78:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0.20 PerfScore 0.25
-G_M15826_IG25:
- lea rdi, [rbp-0xA8]
+G_M15826_IG79:
+ lea rdi, [rbp-0xC0]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M15826_IG26:
- add rsp, 16
+G_M15826_IG80:
+ vzeroupper
+ add rsp, 72
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=18 bbWeight=1 PerfScore 5.25
-; Total bytes of code 497, prolog size 91, PerfScore 230.23, instruction count 119, allocated bytes for code 497 (MethodHash=223ec22d) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this (FullOpts)
+; Total bytes of code 1958, prolog size 102, PerfScore 997.27, instruction count 441, allocated bytes for code 1958 (MethodHash=223ec22d) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this (FullOpts)
1449 (292.73 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this
; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte: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; 4 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 6, 9 ) ref -> [rbp-0x150] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T08] ( 3, 6 ) struct ( 8) [rbp-0x20] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V02 loc0 [V02 ] ( 5, 15 ) struct (136) [rbp-0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V03 loc1 [V03,T09] ( 2, 8 ) struct (16) [rbp-0xB8] do-not-enreg[SR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-; V04 loc2 [V04,T18] ( 2, 2 ) ubyte -> [rbp-0xBC] do-not-enreg[Z] EH-live
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T30] ( 6, 9 ) ref -> [rbp-0x1F0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T35] ( 3, 6 ) struct ( 8) [rbp-0x38] do-not-enreg[S] single-def <System.Nullable`1[int]>
+; V02 loc0 [V02 ] ( 17, 63 ) struct (136) [rbp-0xC0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V04 loc2 [V04,T67] ( 2, 2 ) ubyte -> [rbp-0xC4] do-not-enreg[Z] EH-live
+; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Nullable`1[int]>
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T07] ( 6, 8 ) long -> rax "Indirect call through function pointer"
-; V13 tmp8 [V13 ] ( 2, 4 ) struct (136) [rbp-0x148] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp10 [V15,T02] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
-; V18 tmp13 [V18,T17] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T00] ( 2, 32 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T03] ( 2, 16 ) long -> rsi "argument with side effect"
-; V21 PSPSym [V21,T19] ( 1, 1 ) long -> [rbp-0x160] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T04] ( 4, 14 ) long -> r15 "CSE #02: aggressive"
-; V23 cse1 [V23,T06] ( 6, 5.20) long -> rbx multi-def "CSE #01: aggressive"
-; V24 rat0 [V24,T14] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V25 rat1 [V25,T16] ( 3, 4 ) long -> r15 "runtime lookup"
-; V26 rat2 [V26,T11] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
-;* V27 rat3 [V27,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V28 rat4 [V28,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V30 rat6 [V30,T15] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V31 rat7 [V31,T13] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V12 tmp7 [V12,T33] ( 6, 8 ) long -> rax "Indirect call through function pointer"
+; V13 tmp8 [V13 ] ( 4, 8 ) struct (136) [rbp-0x150] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V14 tmp9 [V14,T48] ( 3, 4.40) long -> rdi "spilling helperCall"
+; V15 tmp10 [V15,T34] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V16 tmp11 [V16 ] ( 14, 28 ) struct (32) [rbp-0x170] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V18 tmp13 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref
+;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref
+;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
+; V22 tmp17 [V22,T32] ( 6, 8.80) long -> r12 "Inlining Arg"
+;* V23 tmp18 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V24 tmp19 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V25 tmp20 [V25,T59] ( 2, 4 ) struct (32) [rbp-0x190] do-not-enreg[S] must-init "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V26 tmp21 [V26,T38] ( 3, 6 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V28 tmp23 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V29 tmp24 [V29,T57] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+;* V30 tmp25 [V30,T68] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp26 [V31 ] ( 3, 6 ) struct (32) [rbp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]>
+; V32 tmp27 [V32,T37] ( 5, 6.80) long -> [rbp-0x1B8] spill-single-def "Inlining Arg"
+;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V34 tmp29 [V34,T60] ( 2, 4 ) long -> rdx "Indirect call through function pointer"
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V36 tmp31 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V37 tmp32 [V37,T61] ( 2, 4 ) long -> r14 "Indirect call through function pointer"
+; V38 tmp33 [V38,T58] ( 2, 4 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "non-inline candidate call" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V39 tmp34 [V39,T62] ( 2, 4 ) int -> rax "Inlining Arg"
+; V40 tmp35 [V40,T17] ( 3, 17.60) long -> r14 "Inlining Arg"
+;* V41 tmp36 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V42 tmp37 [V42,T14] ( 4, 17.60) long -> rdi "spilling helperCall"
+; V43 tmp38 [V43,T02] ( 5, 27.20) long -> r12 "Inlining Arg"
+;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V45 tmp40 [V45,T15] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V48 tmp43 [V48,T18] ( 3, 16 ) long -> rcx "Indirect call through function pointer"
+; V49 tmp44 [V49,T03] ( 3, 24 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V50 tmp45 [V50,T28] ( 3, 12 ) int -> rsi "Inline stloc first use temp"
+; V51 tmp46 [V51,T29] ( 3, 12 ) struct (16) [rbp-0x1C8] do-not-enreg[S] must-init "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V52 tmp47 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V54 tmp49 [V54,T70] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V55 tmp50 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V56 tmp51 [V56,T71] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V57 tmp52 [V57,T01] ( 6, 27.20) long -> r14 "Inlining Arg"
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V59 tmp54 [V59,T16] ( 4, 17.60) long -> rdi "spilling helperCall"
+;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp56 [V61 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V62 tmp57 [V62,T19] ( 3, 16 ) long -> rax "Indirect call through function pointer"
+; V63 tmp58 [V63,T04] ( 3, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V64 tmp59 [V64,T22] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]>
+; V65 tmp60 [V65,T23] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]>
+;* V66 tmp61 [V66 ] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
+; V68 tmp63 [V68 ] ( 7, 11 ) ref -> [rbp-0x170] do-not-enreg[X] addr-exposed "field V16._root (fldOffset=0x0)" P-DEP
+; V69 tmp64 [V69 ] ( 9, 13 ) ref -> [rbp-0x168] do-not-enreg[X] addr-exposed "field V16._stack (fldOffset=0x8)" P-DEP
+; V70 tmp65 [V70 ] ( 5, 9 ) ref -> [rbp-0x160] do-not-enreg[X] addr-exposed "field V16._current (fldOffset=0x10)" P-DEP
+; V71 tmp66 [V71 ] ( 5, 9 ) int -> [rbp-0x158] do-not-enreg[X] addr-exposed "field V16._poolUserId (fldOffset=0x18)" P-DEP
+; V72 tmp67 [V72,T63] ( 2, 4 ) long -> rdi "argument with side effect"
+; V73 tmp68 [V73,T64] ( 2, 4 ) long -> r14 "argument with side effect"
+; V74 tmp69 [V74,T00] ( 2, 32 ) long -> rsi "argument with side effect"
+; V75 tmp70 [V75,T24] ( 2, 16 ) long -> [rbp-0x1D0] spill-single-def "argument with side effect"
+; V76 tmp71 [V76,T25] ( 2, 16 ) long -> [rbp-0x1D8] spill-single-def "argument with side effect"
+; V77 PSPSym [V77,T69] ( 1, 1 ) long -> [rbp-0x218] do-not-enreg[V] "PSPSym"
+; V78 cse0 [V78,T26] ( 4, 14 ) long -> r15 "CSE #04: moderate"
+; V79 cse1 [V79,T39] ( 3, 6 ) long -> r13 "CSE #05: moderate"
+; V80 cse2 [V80,T65] ( 3, 3 ) long -> [rbp-0x1E0] spill-single-def "CSE #01: moderate"
+; V81 cse3 [V81,T66] ( 3, 3 ) long -> [rbp-0x1E8] spill-single-def "CSE #02: moderate"
+; V82 cse4 [V82,T31] ( 6, 5.20) long -> rbx multi-def "CSE #03: moderate"
+; V83 cse5 [V83,T27] ( 3, 12 ) ref -> rdi "CSE #08: moderate"
+; V84 rat0 [V84,T49] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V85 rat1 [V85,T51] ( 3, 4 ) long -> r15 "runtime lookup"
+; V86 rat2 [V86,T40] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable"
+; V87 rat3 [V87,T52] ( 3, 4 ) long -> r13 "runtime lookup"
+; V88 rat4 [V88,T41] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V89 rat5 [V89,T53] ( 3, 4 ) long -> rax "runtime lookup"
+; V90 rat6 [V90,T42] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V91 rat7 [V91,T54] ( 3, 4 ) long -> registers "runtime lookup"
+; V92 rat8 [V92,T43] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T55] ( 3, 4 ) long -> rdi "runtime lookup"
+; V94 rat10 [V94,T44] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T56] ( 3, 4 ) long -> rdi "runtime lookup"
+; V96 rat12 [V96,T45] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V97 rat13 [V97,T05] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T06] ( 3, 22.40) long -> rcx "fgMakeTemp is creating a new local variable"
+; V99 rat15 [V99,T20] ( 3, 16 ) long -> rdi "runtime lookup"
+; V100 rat16 [V100,T07] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V101 rat17 [V101,T08] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V102 rat18 [V102,T09] ( 3, 22.40) long -> r14 "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T10] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V104 rat20 [V104,T11] ( 3, 22.40) long -> rax "fgMakeTemp is creating a new local variable"
+; V105 rat21 [V105,T21] ( 3, 16 ) long -> rdi "runtime lookup"
+; V106 rat22 [V106,T12] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V107 rat23 [V107,T36] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V108 rat24 [V108,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V109 rat25 [V109,T46] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V110 rat26 [V110,T50] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V111 rat27 [V111,T47] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 336
+; Lcl frame size = 552
G_M39000_IG01:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 336
- lea rbp, [rsp+0x160]
+ sub rsp, 552
+ lea rbp, [rsp+0x250]
xor eax, eax
- mov qword ptr [rbp-0x148], rax
+ mov qword ptr [rbp-0x1C8], rax
vxorps xmm8, xmm8, xmm8
- mov rax, -288
+ mov rax, -384
+ vmovdqa xmmword ptr [rbp+rax-0x40], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
- vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
- vmovdqa xmmword ptr [rax+rbp], xmm8
add rax, 48
jne SHORT -5 instr
- mov qword ptr [rbp-0x160], rsp
- mov qword ptr [rbp-0x18], rdi
- mov gword ptr [rbp-0x150], rdi
- mov qword ptr [rbp-0x20], rsi
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x218], rsp
+ mov qword ptr [rbp-0x30], rdi
+ mov gword ptr [rbp-0x1F0], rdi
+ mov qword ptr [rbp-0x38], rsi
mov rdx, rdi
- ;; size=91 bbWeight=1 PerfScore 17.08
+ ;; size=102 bbWeight=1 PerfScore 21.08
G_M39000_IG02:
mov rbx, qword ptr [rdx]
mov rdi, rbx
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov r15, qword ptr [rsi+0xB8]
test r15, r15
je SHORT G_M39000_IG04
;; size=25 bbWeight=1 PerfScore 9.50
G_M39000_IG03:
jmp SHORT G_M39000_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M39000_IG04:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r15, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M39000_IG05:
- mov rsi, r15
- mov rdx, gword ptr [rbp-0x150]
- mov rdx, gword ptr [rdx+0x08]
- lea rdi, [rbp-0x148]
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
- lea rdi, bword ptr [rbp-0xA8]
- lea rsi, bword ptr [rbp-0x148]
- mov ecx, 17
- rep movsq
- ;; size=57 bbWeight=1 PerfScore 33.50
+ mov rdi, r15
+ mov rdx, gword ptr [rbp-0x1F0]
+ mov r14, gword ptr [rdx+0x08]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r13, qword ptr [rsi+0x18]
+ test r13, r13
+ je SHORT G_M39000_IG07
+ ;; size=30 bbWeight=1 PerfScore 10.50
G_M39000_IG06:
jmp SHORT G_M39000_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
G_M39000_IG07:
- mov rsi, r15
- lea rdi, [rbp-0xA8]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0xB8], rax
- mov qword ptr [rbp-0xB0], rdx
- mov rdx, gword ptr [rbp-0x150]
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M39000_IG08:
+ mov r12, r13
+ test r14, r14
+ je G_M39000_IG74
+ mov gword ptr [rbp-0x170], r14
+ xor rax, rax
+ mov gword ptr [rbp-0x160], rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
+ call [rax]System.Collections.Immutable.SecureObjectPool:NewId():int
+ mov dword ptr [rbp-0x158], eax
+ xor rdi, rdi
+ mov gword ptr [rbp-0x168], rdi
+ mov rdi, gword ptr [rbp-0x170]
+ cmp gword ptr [rdi+0x08], 0
+ je G_M39000_IG27
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M39000_IG10
+ ;; size=90 bbWeight=1 PerfScore 21.50
+G_M39000_IG09:
+ jmp SHORT G_M39000_IG11
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M39000_IG10:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M39000_IG11:
+ mov rdi, rax
+ mov qword ptr [rbp-0x1E8], rdi
+ mov rax, rdi
+ mov qword ptr [rbp-0x1B8], rax
+ ;; size=20 bbWeight=1 PerfScore 2.50
+G_M39000_IG12:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x1B0], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M39000_IG13:
+ mov rsi, qword ptr [rax+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rcx, qword ptr [rsi+0x18]
+ test rcx, rcx
+ je SHORT G_M39000_IG15
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M39000_IG14:
+ jmp SHORT G_M39000_IG16
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M39000_IG15:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M39000_IG16:
+ mov qword ptr [rbp-0x1E0], rcx
+ mov rdx, rcx
+ lea rdi, [rbp-0x1B0]
+ call rdx
+ cmp eax, -1
+ je SHORT G_M39000_IG20
+ mov rdi, qword ptr [rbp-0x1B8]
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x20]
+ test rax, rax
+ je SHORT G_M39000_IG18
+ ;; size=47 bbWeight=1 PerfScore 14.25
+G_M39000_IG17:
+ mov rdi, rax
+ jmp SHORT G_M39000_IG19
+ ;; size=5 bbWeight=0.80 PerfScore 1.80
+G_M39000_IG18:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=18 bbWeight=0.20 PerfScore 0.30
+G_M39000_IG19:
+ lea rsi, [rbp-0x168]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
+ test eax, eax
+ je SHORT G_M39000_IG20
+ mov r14, qword ptr [rbp-0x1E0]
+ mov rax, gword ptr [rbp-0x168]
+ mov gword ptr [rbp-0x200], rax
+ lea rdi, [rbp-0x1B0]
+ call r14
+ mov r14, gword ptr [rbp-0x200]
+ mov dword ptr [r14+0x10], eax
+ jmp G_M39000_IG26
+ ;; size=70 bbWeight=1 PerfScore 15.50
+G_M39000_IG20:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x168], rdi
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M39000_IG21:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x190], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M39000_IG22:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M39000_IG24
+ ;; size=17 bbWeight=1 PerfScore 7.25
+G_M39000_IG23:
+ jmp SHORT G_M39000_IG25
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M39000_IG24:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
+G_M39000_IG25:
+ call CORINFO_HELP_NEWSFAST
+ mov gword ptr [rbp-0x1F8], rax
+ movzx rsi, byte ptr [r14+0x1D]
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ call [rcx]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
+ mov r14, qword ptr [rbp-0x1E8]
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x190]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r14
+ mov rsi, gword ptr [rbp-0x1F8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ call [rax]System.Collections.Immutable.SecureObjectPool`2[System.__Canon,System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]]:PrepNew(System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.__Canon):System.Collections.Immutable.SecurePooledObject`1[System.__Canon]
+ mov gword ptr [rbp-0x168], rax
+ ;; size=128 bbWeight=1 PerfScore 26.50
+G_M39000_IG26:
+ lea rdi, [rbp-0x170]
+ mov rsi, r12
+ mov rdx, gword ptr [rbp-0x170]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this
+ ;; size=29 bbWeight=1 PerfScore 5.00
+G_M39000_IG27:
+ vmovdqu ymm0, ymmword ptr [rbp-0x170]
+ vmovdqu ymmword ptr [rbp-0x140], ymm0
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M39000_IG28:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x120], ymm0
+ vmovdqu ymmword ptr [rbp-0x100], ymm0
+ vmovdqu ymmword ptr [rbp-0xE8], ymm0
+ mov dword ptr [rbp-0x148], -1
+ lea rdi, bword ptr [rbp-0xC0]
+ lea rsi, bword ptr [rbp-0x150]
+ mov ecx, 17
+ rep movsq
+ ;; size=60 bbWeight=1 PerfScore 30.58
+G_M39000_IG29:
+ jmp G_M39000_IG53
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M39000_IG30:
+ mov r14, r15
+ mov r12, r13
+ cmp gword ptr [rbp-0xB0], 0
+ je G_M39000_IG37
+ cmp gword ptr [rbp-0xA8], 0
+ je G_M39000_IG41
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x30]
+ test rdi, rdi
+ je SHORT G_M39000_IG32
+ ;; size=51 bbWeight=4 PerfScore 55.00
+G_M39000_IG31:
+ jmp SHORT G_M39000_IG33
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39000_IG32:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M39000_IG33:
+ mov rax, gword ptr [rbp-0xA8]
+ mov gword ptr [rbp-0x208], rax
+ cmp byte ptr [rax], al
+ mov rsi, qword ptr [rdi+0x10]
+ mov rcx, qword ptr [rsi+0x10]
+ test rcx, rcx
+ je SHORT G_M39000_IG35
+ ;; size=29 bbWeight=4 PerfScore 41.00
+G_M39000_IG34:
+ jmp SHORT G_M39000_IG36
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39000_IG35:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rcx, rax
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M39000_IG36:
+ lea rdi, [rbp-0xB0]
+ call rcx
+ mov rdi, gword ptr [rbp-0x208]
+ cmp eax, dword ptr [rdi+0x10]
+ je G_M39000_IG41
+ ;; size=25 bbWeight=4 PerfScore 34.00
+G_M39000_IG37:
+ mov rdi, qword ptr [r12+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x28]
+ test rdi, rdi
+ je SHORT G_M39000_IG39
+ ;; size=17 bbWeight=4 PerfScore 29.00
+G_M39000_IG38:
+ jmp SHORT G_M39000_IG40
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39000_IG39:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M39000_IG40:
+ mov qword ptr [rbp-0x1D0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0xB0]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0x1D0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]])
+ ;; size=86 bbWeight=4 PerfScore 71.00
+G_M39000_IG41:
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M39000_IG43
+ ;; size=16 bbWeight=4 PerfScore 29.00
+G_M39000_IG42:
+ jmp SHORT G_M39000_IG44
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39000_IG43:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.80 PerfScore 1.40
+G_M39000_IG44:
+ mov esi, dword ptr [rbp-0x90]
+ cmp esi, 1
+ je G_M39000_IG57
+ cmp esi, 2
+ jne G_M39000_IG56
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov r14, qword ptr [rsi+0x18]
+ test r14, r14
+ je G_M39000_IG59
+ ;; size=44 bbWeight=4 PerfScore 43.00
+G_M39000_IG45:
+ cmp gword ptr [rbp-0x68], 0
+ je SHORT G_M39000_IG48
+ cmp gword ptr [rbp-0x60], 0
+ je G_M39000_IG50
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je G_M39000_IG60
+ ;; size=38 bbWeight=4 PerfScore 53.00
+G_M39000_IG46:
+ mov r12, gword ptr [rbp-0x60]
+ cmp byte ptr [r12], r12b
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je G_M39000_IG61
+ ;; size=25 bbWeight=4 PerfScore 37.00
+G_M39000_IG47:
+ lea rdi, [rbp-0x70]
+ call rax
+ cmp eax, dword ptr [r12+0x10]
+ je SHORT G_M39000_IG50
+ ;; size=13 bbWeight=4 PerfScore 30.00
+G_M39000_IG48:
+ mov rdi, qword ptr [r14+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je G_M39000_IG62
+ ;; size=20 bbWeight=4 PerfScore 29.00
+G_M39000_IG49:
+ mov qword ptr [rbp-0x1D8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x70]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ movsq
+ mov rdi, qword ptr [rbp-0x1D8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]](System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]])
+ ;; size=103 bbWeight=4 PerfScore 93.00
+G_M39000_IG50:
+ mov rdi, gword ptr [rbp-0x58]
+ test rdi, rdi
+ je SHORT G_M39000_IG55
+ ;; size=9 bbWeight=4 PerfScore 9.00
+G_M39000_IG51:
+ vmovdqu xmm0, xmmword ptr [rdi+0x20]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=4 PerfScore 20.00
+G_M39000_IG52:
+ mov rdx, gword ptr [rbp-0x1F0]
mov rdi, gword ptr [rdx+0x10]
mov rdi, gword ptr [rdi+0x10]
- mov rdx, qword ptr [rbp-0xB0]
- mov rsi, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x1C0]
+ mov rsi, qword ptr [rbp-0x38]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]:Equals(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this
call [r11]System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]:Equals(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this
test eax, eax
- jne SHORT G_M39000_IG10
- ;; size=79 bbWeight=4 PerfScore 70.00
-G_M39000_IG08:
+ jne G_M39000_IG63
+ ;; size=47 bbWeight=4 PerfScore 46.00
+G_M39000_IG53:
mov rsi, r15
- lea rdi, [rbp-0xA8]
+ lea rdi, [rbp-0xC0]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M39000_IG07
- ;; size=26 bbWeight=8 PerfScore 42.00
-G_M39000_IG09:
- jmp SHORT G_M39000_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M39000_IG10:
- mov dword ptr [rbp-0xBC], 1
- jmp SHORT G_M39000_IG15
+ jne G_M39000_IG30
+ ;; size=30 bbWeight=8 PerfScore 42.00
+G_M39000_IG54:
+ jmp G_M39000_IG64
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M39000_IG55:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M39000_IG56:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M39000_IG57:
+ vmovdqu xmm0, xmmword ptr [rbp-0x80]
+ vmovdqu xmmword ptr [rbp-0x1C8], xmm0
+ ;; size=13 bbWeight=4 PerfScore 16.00
+G_M39000_IG58:
+ jmp G_M39000_IG52
+ ;; size=5 bbWeight=4 PerfScore 8.00
+G_M39000_IG59:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r14, rax
+ jmp G_M39000_IG45
+ ;; size=23 bbWeight=0.80 PerfScore 2.80
+G_M39000_IG60:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M39000_IG46
+ ;; size=26 bbWeight=0.80 PerfScore 3.00
+G_M39000_IG61:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ jmp G_M39000_IG47
+ ;; size=20 bbWeight=0.80 PerfScore 2.60
+G_M39000_IG62:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ jmp G_M39000_IG49
+ ;; size=26 bbWeight=0.80 PerfScore 3.00
+G_M39000_IG63:
+ mov dword ptr [rbp-0xC4], 1
+ jmp SHORT G_M39000_IG68
;; size=12 bbWeight=1 PerfScore 3.00
-G_M39000_IG11:
+G_M39000_IG64:
mov rdi, qword ptr [rbx+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0xC8]
test rax, rax
- je SHORT G_M39000_IG13
+ je SHORT G_M39000_IG66
;; size=19 bbWeight=1 PerfScore 7.25
-G_M39000_IG12:
- jmp SHORT G_M39000_IG14
+G_M39000_IG65:
+ jmp SHORT G_M39000_IG67
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39000_IG13:
+G_M39000_IG66:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M39000_IG14:
- lea rdi, [rbp-0xA8]
+G_M39000_IG67:
+ lea rdi, [rbp-0xC0]
call rax
- jmp SHORT G_M39000_IG19
+ jmp SHORT G_M39000_IG72
;; size=11 bbWeight=1 PerfScore 5.50
-G_M39000_IG15:
+G_M39000_IG68:
mov rdi, rsp
- call G_M39000_IG21
+ call G_M39000_IG75
;; size=8 bbWeight=1 PerfScore 1.25
-G_M39000_IG16:
+G_M39000_IG69:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M39000_IG17:
- mov eax, dword ptr [rbp-0xBC]
+G_M39000_IG70:
+ mov eax, dword ptr [rbp-0xC4]
;; size=6 bbWeight=1 PerfScore 1.00
-G_M39000_IG18:
- add rsp, 336
+G_M39000_IG71:
+ vzeroupper
+ add rsp, 552
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=12 bbWeight=1 PerfScore 2.75
-G_M39000_IG19:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M39000_IG72:
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M39000_IG20:
- add rsp, 336
+G_M39000_IG73:
+ vzeroupper
+ add rsp, 552
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=12 bbWeight=1 PerfScore 2.75
-G_M39000_IG21:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M39000_IG74:
+ mov edi, 0x45F
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M39000_IG75:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 16
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x160]
- ;; size=22 bbWeight=1 PerfScore 6.75
-G_M39000_IG22:
- mov rdx, gword ptr [rbp-0x150]
+ sub rsp, 72
+ mov rbp, qword ptr [rdi+0x38]
+ mov qword ptr [rsp+0x38], rbp
+ lea rbp, [rbp+0x250]
+ ;; size=30 bbWeight=1 PerfScore 9.75
+G_M39000_IG76:
+ mov rdx, gword ptr [rbp-0x1F0]
mov rbx, qword ptr [rdx]
mov rdi, rbx
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0xC8]
test rax, rax
- je SHORT G_M39000_IG24
+ je SHORT G_M39000_IG78
;; size=32 bbWeight=1 PerfScore 10.50
-G_M39000_IG23:
- jmp SHORT G_M39000_IG25
+G_M39000_IG77:
+ jmp SHORT G_M39000_IG79
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39000_IG24:
+G_M39000_IG78:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=15 bbWeight=0.20 PerfScore 0.25
-G_M39000_IG25:
- lea rdi, [rbp-0xA8]
+G_M39000_IG79:
+ lea rdi, [rbp-0xC0]
call rax
nop
;; size=10 bbWeight=1 PerfScore 3.75
-G_M39000_IG26:
- add rsp, 16
+G_M39000_IG80:
+ vzeroupper
+ add rsp, 72
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=18 bbWeight=1 PerfScore 5.25
-; Total bytes of code 495, prolog size 91, PerfScore 229.48, instruction count 119, allocated bytes for code 495 (MethodHash=45b467a7) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this (FullOpts)
+; Total bytes of code 1944, prolog size 102, PerfScore 992.77, instruction count 437, allocated bytes for code 1944 (MethodHash=45b467a7) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:ContainsValue(System.Nullable`1[int]):ubyte:this (FullOpts)
1346 (246.97 % of base) - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:set_KeyComparer(System.Collections.Generic.IComparer`1[System.__Canon]):this
; Assembly listing for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:set_KeyComparer(System.Collections.Generic.IComparer`1[System.__Canon]):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; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 14 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 15, 10.50) ref -> [rbp-0x78] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T03] ( 6, 6.50) ref -> rbx class-hnd single-def <System.Collections.Generic.IComparer`1[System.__Canon]>
-; V02 loc0 [V02,T10] ( 5, 5.50) ref -> r14 class-hnd <System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
-; V03 loc1 [V03,T11] ( 4, 5 ) int -> r13
-; V04 loc2 [V04 ] ( 5, 7 ) struct (40) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
-; V05 loc3 [V05,T08] ( 3, 6 ) struct (16) [rbp-0x68] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
-; V06 loc4 [V06 ] ( 2, 4 ) ubyte -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op
-;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T11] ( 15, 10.50) ref -> [rbp-0xD0] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T36] ( 6, 6.50) ref -> rbx class-hnd single-def <System.Collections.Generic.IComparer`1[System.__Canon]>
+; V02 loc0 [V02,T30] ( 5, 5.50) ref -> r14 class-hnd <System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
+; V03 loc1 [V03,T51] ( 4, 5 ) int -> r13
+; V04 loc2 [V04 ] ( 24, 59 ) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+; V06 loc4 [V06 ] ( 2, 4 ) ubyte -> [rbp-0x60] do-not-enreg[X] addr-exposed ld-addr-op
+; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.__Canon>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Nullable`1[int]>
;* V16 tmp9 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp10 [V17,T16] ( 6, 2 ) long -> rax "Indirect call through function pointer"
-;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "field V15.hasValue (fldOffset=0x0)" P-INDEP
-;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "field V15.value (fldOffset=0x4)" P-INDEP
-; V20 tmp13 [V20,T00] ( 2, 16 ) long -> rsi "argument with side effect"
-; V21 tmp14 [V21,T05] ( 2, 8 ) long -> rsi "argument with side effect"
-; V22 PSPSym [V22,T21] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T06] ( 3, 6.50) long -> r12 hoist "CSE #02: aggressive"
-;* V24 cse1 [V24,T20] ( 0, 0 ) long -> zero-ref "CSE #03: aggressive"
-; V25 cse2 [V25,T07] ( 9, 2.80) long -> r15 multi-def "CSE #01: aggressive"
-;* V26 rat0 [V26,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V27 rat1 [V27,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V28 rat2 [V28,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat3 [V29,T17] ( 3, 2 ) long -> rsi "runtime lookup"
-; V30 rat4 [V30,T13] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V31 rat5 [V31,T18] ( 3, 2 ) long -> r12 "runtime lookup"
-; V32 rat6 [V32,T14] ( 3, 2.80) long -> r12 "fgMakeTemp is creating a new local variable"
-;* V33 rat7 [V33,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V34 rat8 [V34,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V35 rat9 [V35,T15] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V36 rat10 [V36,T22] ( 3, 0 ) long -> r15 "Spilling to split statement for tree"
-; V37 rat11 [V37,T23] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V17 tmp10 [V17,T67] ( 6, 2 ) long -> rax "Indirect call through function pointer"
+; V18 tmp11 [V18,T61] ( 3, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
+; V19 tmp12 [V19 ] ( 2, 2 ) struct (40) [rbp-0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
+;* V20 tmp13 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V21 tmp14 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V22 tmp15 [V22,T75] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V23 tmp16 [V23,T10] ( 5, 13.60) long -> [rbp-0x90] spill-single-def "Inlining Arg"
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V25 tmp18 [V25,T31] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V27 tmp20 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V28 tmp21 [V28,T37] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V29 tmp22 [V29,T12] ( 3, 12 ) ref -> [rbp-0xD8] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V30 tmp23 [V30,T06] ( 5, 20 ) ref -> rdx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
+;* V32 tmp25 [V32 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V33 tmp26 [V33,T13] ( 3, 12 ) ref -> rsi class-hnd "Inlining Arg" <System.__Canon>
+;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
+;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V37 tmp30 [V37,T14] ( 3, 12 ) ref -> r8 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]>
+; V38 tmp31 [V38 ] ( 1, 2 ) ubyte -> [rbp-0x98] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;* V39 tmp32 [V39,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V40 tmp33 [V40,T00] ( 8, 35.20) long -> [rbp-0xA0] spill-single-def "Inlining Arg"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V42 tmp35 [V42,T15] ( 3, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]>
+;* V43 tmp36 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <System.Collections.Immutable.RefAsValueType`1[System.__Canon]>
+;* V44 tmp37 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V47 tmp40 [V47,T32] ( 4, 8.80) long -> rdi "spilling helperCall"
+;* V48 tmp41 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V50 tmp43 [V50,T38] ( 3, 8 ) long -> rdx "Indirect call through function pointer"
+; V51 tmp44 [V51,T16] ( 3, 12 ) ref -> [rbp-0xE0] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V52 tmp45 [V52,T76] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+;* V53 tmp46 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V54 tmp47 [V54,T01] ( 4, 32 ) ref -> [rbp-0xE8] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SecurePooledObject`1[System.__Canon]>
+; V55 tmp48 [V55,T02] ( 6, 22.40) long -> [rbp-0xA8] "Inlining Arg"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V60 tmp53 [V60,T08] ( 3, 16 ) long -> r8 "Indirect call through function pointer"
+; V61 tmp54 [V61,T53] ( 2, 4 ) ubyte -> rdi "field V15.hasValue (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T54] ( 2, 4 ) int -> rdx "field V15.value (fldOffset=0x4)" P-INDEP
+; V63 tmp56 [V63,T55] ( 2, 4 ) ubyte -> rdi "field V34.hasValue (fldOffset=0x0)" P-INDEP
+; V64 tmp57 [V64,T56] ( 2, 4 ) int -> rdx "field V34.value (fldOffset=0x4)" P-INDEP
+; V65 tmp58 [V65,T17] ( 3, 12 ) ref -> rax "field V43.Value (fldOffset=0x0)" P-INDEP
+;* V66 tmp59 [V66 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
+;* V67 tmp60 [V67 ] ( 0, 0 ) ubyte -> zero-ref "V05.[008..009)"
+;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "V05.[012..016)"
+;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref "V31.[000..008)"
+; V70 tmp63 [V70,T57] ( 2, 4 ) ubyte -> rdi "V31.[008..009)"
+;* V71 tmp64 [V71 ] ( 0, 0 ) int -> zero-ref "V31.[012..016)"
+; V72 tmp65 [V72,T71] ( 2, 2 ) long -> rsi "argument with side effect"
+; V73 tmp66 [V73,T44] ( 2, 8 ) long -> [rbp-0xB0] spill-single-def "argument with side effect"
+; V74 tmp67 [V74,T07] ( 3, 17.60) long -> rdi "argument with side effect"
+; V75 tmp68 [V75,T45] ( 2, 8 ) long -> [rbp-0xB8] spill-single-def "argument with side effect"
+; V76 tmp69 [V76,T46] ( 2, 8 ) long -> [rbp-0xC0] spill-single-def "argument with side effect"
+; V77 tmp70 [V77,T18] ( 3, 12 ) struct ( 8) [rbp-0xC8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V78 tmp71 [V78,T79] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V79 PSPSym [V79,T74] ( 1, 1 ) long -> [rbp-0xF8] do-not-enreg[V] "PSPSym"
+; V80 cse0 [V80,T47] ( 3, 6.50) long -> r12 hoist "CSE #02: moderate"
+;* V81 cse1 [V81,T73] ( 0, 0 ) long -> zero-ref "CSE #05: moderate"
+; V82 cse2 [V82,T48] ( 9, 2.80) long -> r15 multi-def "CSE #01: moderate"
+; V83 cse3 [V83,T49] ( 3, 6 ) ref -> rdx "CSE #04: moderate"
+;* V84 rat0 [V84,T52] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V85 rat1 [V85,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V86 rat2 [V86,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V87 rat3 [V87,T68] ( 3, 2 ) long -> rsi "runtime lookup"
+; V88 rat4 [V88,T62] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V89 rat5 [V89,T66] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V90 rat6 [V90,T69] ( 3, 2 ) long -> rsi "runtime lookup"
+; V91 rat7 [V91,T63] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V92 rat8 [V92,T70] ( 3, 2 ) long -> r12 "runtime lookup"
+; V93 rat9 [V93,T64] ( 3, 2.80) long -> r12 "fgMakeTemp is creating a new local variable"
+; V94 rat10 [V94,T19] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T20] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V96 rat12 [V96,T39] ( 3, 8 ) long -> rdi "runtime lookup"
+; V97 rat13 [V97,T21] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V98 rat14 [V98,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V99 rat15 [V99,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V100 rat16 [V100,T22] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V101 rat17 [V101,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T23] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V103 rat19 [V103,T34] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V104 rat20 [V104,T59] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V105 rat21 [V105,T24] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V106 rat22 [V106,T35] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V107 rat23 [V107,T60] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V108 rat24 [V108,T25] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V109 rat25 [V109,T26] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V110 rat26 [V110,T27] ( 3, 11.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V111 rat27 [V111,T41] ( 3, 8 ) long -> rdi "runtime lookup"
+; V112 rat28 [V112,T28] ( 3, 11.20) long -> rdi "fgMakeTemp is creating a new local variable"
+; V113 rat29 [V113,T03] ( 3, 22.40) long -> rcx "fgMakeTemp is creating a new local variable"
+; V114 rat30 [V114,T09] ( 3, 16 ) long -> rdi "runtime lookup"
+; V115 rat31 [V115,T04] ( 3, 22.40) long -> rdi "fgMakeTemp is creating a new local variable"
+; V116 rat32 [V116,T05] ( 3, 22.40) long -> r8 "fgMakeTemp is creating a new local variable"
+; V117 rat33 [V117,T42] ( 3, 8 ) long -> rdi "runtime lookup"
+; V118 rat34 [V118,T29] ( 3, 11.20) long -> rax "fgMakeTemp is creating a new local variable"
+; V119 rat35 [V119,T65] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V120 rat36 [V120,T77] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V121 rat37 [V121,T78] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 248
G_M26647_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 248
+ lea rbp, [rsp+0x120]
xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ mov qword ptr [rbp-0x88], rax
vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
- mov qword ptr [rbp-0x80], rsp
+ mov qword ptr [rbp-0xF8], rsp
mov qword ptr [rbp-0x30], rdi
- mov gword ptr [rbp-0x78], rdi
+ mov gword ptr [rbp-0xD0], rdi
mov rbx, rsi
- ;; size=58 bbWeight=1 PerfScore 15.58
+ ;; size=75 bbWeight=1 PerfScore 17.58
G_M26647_IG02:
mov r15, qword ptr [rdi]
test rbx, rbx
- je G_M26647_IG19
+ je G_M26647_IG67
cmp rbx, gword ptr [rdi+0x10]
- je G_M26647_IG18
+ je G_M26647_IG66
;; size=22 bbWeight=1 PerfScore 7.25
G_M26647_IG03:
mov rsi, qword ptr [r15+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x38]
test rsi, rsi
je SHORT G_M26647_IG05
;; size=16 bbWeight=0.50 PerfScore 3.62
G_M26647_IG04:
jmp SHORT G_M26647_IG06
;; size=2 bbWeight=0.40 PerfScore 0.80
G_M26647_IG05:
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
;; size=21 bbWeight=0.10 PerfScore 0.18
G_M26647_IG06:
mov rdi, rsi
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
mov r14, gword ptr [rax]
xor r13d, r13d
- mov rdi, gword ptr [rbp-0x78]
- mov rdi, gword ptr [rdi+0x08]
- lea rsi, [rbp-0x58]
- mov rdx, gword ptr [rbp-0x78]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:GetEnumerator(System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:this
- cmp dword ptr [rdi], edi
- call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:GetEnumerator(System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:this
- nop
- ;; size=45 bbWeight=0.50 PerfScore 7.25
+ mov rdi, gword ptr [rbp-0xD0]
+ mov r12, gword ptr [rdi+0x08]
+ mov rsi, qword ptr [r12]
+ mov rax, qword ptr [rsi+0x30]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x28]
+ test rax, rax
+ je SHORT G_M26647_IG08
+ ;; size=45 bbWeight=0.50 PerfScore 7.88
G_M26647_IG07:
+ mov rsi, rax
+ jmp SHORT G_M26647_IG09
+ ;; size=5 bbWeight=0.40 PerfScore 0.90
+G_M26647_IG08:
+ mov rdi, rsi
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rsi, rax
+ ;; size=21 bbWeight=0.10 PerfScore 0.18
+G_M26647_IG09:
+ lea rdi, [rbp-0x88]
+ mov rdx, r12
+ mov rcx, gword ptr [rbp-0xD0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]):this
+ ;; size=29 bbWeight=0.50 PerfScore 2.50
+G_M26647_IG10:
+ vmovdqu ymm0, ymmword ptr [rbp-0x88]
+ vmovdqu ymmword ptr [rbp-0x58], ymm0
+ mov rdi, qword ptr [rbp-0x68]
+ mov qword ptr [rbp-0x38], rdi
+ ;; size=21 bbWeight=0.50 PerfScore 3.50
+G_M26647_IG11:
mov rdi, qword ptr [r15+0x30]
mov rdi, qword ptr [rdi]
mov r12, qword ptr [rdi+0x40]
test r12, r12
- je SHORT G_M26647_IG09
+ je SHORT G_M26647_IG13
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M26647_IG08:
- jmp SHORT G_M26647_IG10
+G_M26647_IG12:
+ jmp SHORT G_M26647_IG14
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M26647_IG09:
+G_M26647_IG13:
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r12, rax
;; size=21 bbWeight=0.10 PerfScore 0.18
-G_M26647_IG10:
- jmp SHORT G_M26647_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M26647_IG11:
- mov rsi, r12
+G_M26647_IG14:
+ jmp G_M26647_IG27
+ ;; size=5 bbWeight=0.50 PerfScore 1.00
+G_M26647_IG15:
+ mov rax, r12
+ mov qword ptr [rbp-0x90], rax
+ cmp gword ptr [rbp-0x50], 0
+ je G_M26647_IG22
+ cmp gword ptr [rbp-0x48], 0
+ je G_M26647_IG26
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M26647_IG17
+ ;; size=48 bbWeight=2 PerfScore 29.00
+G_M26647_IG16:
+ jmp SHORT G_M26647_IG18
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG17:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0x90]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M26647_IG18:
+ mov rcx, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0xD8], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je SHORT G_M26647_IG20
+ ;; size=26 bbWeight=2 PerfScore 20.50
+G_M26647_IG19:
+ jmp SHORT G_M26647_IG21
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG20:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M26647_IG21:
lea rdi, [rbp-0x58]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]:this
- mov gword ptr [rbp-0x68], rax
- mov qword ptr [rbp-0x60], rdx
- mov rdx, gword ptr [rbp-0x78]
- mov r8, gword ptr [rdx+0x18]
- lea r9, [rbp-0x70]
+ call rdx
+ mov rdi, gword ptr [rbp-0xD8]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0x90]
+ je G_M26647_IG26
+ ;; size=29 bbWeight=2 PerfScore 19.00
+G_M26647_IG22:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M26647_IG24
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M26647_IG23:
+ jmp SHORT G_M26647_IG25
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG24:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M26647_IG25:
+ mov qword ptr [rbp-0xC0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x58]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0xC0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ ;; size=99 bbWeight=2 PerfScore 42.50
+G_M26647_IG26:
+ mov rdx, gword ptr [rbp-0x40]
+ test rdx, rdx
+ je G_M26647_IG57
+ cmp dword ptr [rdx], edx
+ mov rsi, gword ptr [rdx+0x08]
+ movzx rdi, byte ptr [rdx+0x24]
+ mov edx, dword ptr [rdx+0x28]
+ mov rcx, gword ptr [rbp-0xD0]
+ mov r8, gword ptr [rcx+0x18]
+ test rsi, rsi
+ je G_M26647_IG58
+ test r8, r8
+ je G_M26647_IG59
+ mov byte ptr [rbp-0xC8], dil
+ mov dword ptr [rbp-0xC4], edx
+ lea rdx, [rbp-0x98]
+ mov qword ptr [rsp], rdx
+ lea rdx, [rbp-0x60]
+ mov qword ptr [rsp+0x08], rdx
+ mov rdx, qword ptr [rbp-0xC8]
mov rdi, r14
- mov rsi, gword ptr [rbp-0x68]
- mov rdx, qword ptr [rbp-0x60]
mov rcx, rbx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:Add(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this
- cmp dword ptr [rdi], edi
- call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:Add(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this
+ xor r9d, r9d
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:SetOrAdd(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],ubyte,byref,byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this
+ call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:SetOrAdd(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],ubyte,byref,byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this
mov r14, rax
- cmp byte ptr [rbp-0x70], 0
- je SHORT G_M26647_IG12
+ cmp byte ptr [rbp-0x60], 0
+ je SHORT G_M26647_IG27
inc r13d
- ;; size=79 bbWeight=2 PerfScore 43.50
-G_M26647_IG12:
- mov rsi, r12
+ ;; size=129 bbWeight=2 PerfScore 60.50
+G_M26647_IG27:
+ mov rax, r12
+ mov qword ptr [rbp-0xA0], rax
+ cmp gword ptr [rbp-0x50], 0
+ je G_M26647_IG35
+ ;; size=21 bbWeight=4 PerfScore 17.00
+G_M26647_IG28:
+ cmp gword ptr [rbp-0x48], 0
+ je G_M26647_IG39
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x20]
+ test rdi, rdi
+ je SHORT G_M26647_IG30
+ ;; size=27 bbWeight=2 PerfScore 20.50
+G_M26647_IG29:
+ jmp SHORT G_M26647_IG31
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG30:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0xA0]
+ ;; size=28 bbWeight=0.40 PerfScore 1.10
+G_M26647_IG31:
+ mov rcx, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0xE0], rcx
+ cmp byte ptr [rcx], cl
+ mov rsi, qword ptr [rdi+0x10]
+ mov rdx, qword ptr [rsi+0x10]
+ test rdx, rdx
+ je SHORT G_M26647_IG33
+ ;; size=26 bbWeight=2 PerfScore 20.50
+G_M26647_IG32:
+ jmp SHORT G_M26647_IG34
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG33:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdx, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M26647_IG34:
lea rdi, [rbp-0x58]
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
- call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this
- test eax, eax
- jne SHORT G_M26647_IG11
- ;; size=23 bbWeight=4 PerfScore 21.00
-G_M26647_IG13:
+ call rdx
+ mov rdi, gword ptr [rbp-0xE0]
+ cmp eax, dword ptr [rdi+0x10]
+ mov rax, qword ptr [rbp-0xA0]
+ je G_M26647_IG39
+ ;; size=29 bbWeight=2 PerfScore 19.00
+G_M26647_IG35:
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi+0x18]
+ test rdi, rdi
+ je SHORT G_M26647_IG37
+ ;; size=16 bbWeight=2 PerfScore 14.50
+G_M26647_IG36:
+ jmp SHORT G_M26647_IG38
+ ;; size=2 bbWeight=1.60 PerfScore 3.20
+G_M26647_IG37:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rdi, rax
+ ;; size=21 bbWeight=0.40 PerfScore 0.70
+G_M26647_IG38:
+ mov qword ptr [rbp-0xB0], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x58]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0xB0]
+ mov rcx, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ call [rcx]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ mov rax, qword ptr [rbp-0xA0]
+ ;; size=106 bbWeight=2 PerfScore 44.50
+G_M26647_IG39:
+ cmp gword ptr [rbp-0x58], 0
+ je SHORT G_M26647_IG41
+ ;; size=7 bbWeight=4 PerfScore 12.00
+G_M26647_IG40:
+ mov rdi, gword ptr [rbp-0x58]
+ mov edi, dword ptr [rdi+0x34]
+ cmp edi, dword ptr [rbp-0x34]
+ jne G_M26647_IG60
+ ;; size=16 bbWeight=2 PerfScore 12.00
+G_M26647_IG41:
+ cmp gword ptr [rbp-0x48], 0
+ je G_M26647_IG56
+ mov rdi, qword ptr [rax+0x30]
+ mov rdi, qword ptr [rdi]
+ mov rcx, qword ptr [rdi+0x28]
+ test rcx, rcx
+ je SHORT G_M26647_IG43
+ ;; size=27 bbWeight=4 PerfScore 41.00
+G_M26647_IG42:
+ jmp SHORT G_M26647_IG44
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M26647_IG43:
+ mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov rcx, rax
+ mov rax, qword ptr [rbp-0xA0]
+ ;; size=28 bbWeight=0.80 PerfScore 2.20
+G_M26647_IG44:
+ mov rdx, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0xE8], rdx
+ cmp byte ptr [rdx], dl
+ mov rdi, qword ptr [rcx+0x10]
+ mov rdi, qword ptr [rdi+0x10]
+ test rdi, rdi
+ je SHORT G_M26647_IG46
+ ;; size=26 bbWeight=4 PerfScore 41.00
+G_M26647_IG45:
+ jmp SHORT G_M26647_IG47
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M26647_IG46:
+ mov qword ptr [rbp-0xA8], rcx
+ mov rdi, rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ mov rax, qword ptr [rbp-0xA0]
+ mov rcx, qword ptr [rbp-0xA8]
+ ;; size=42 bbWeight=0.80 PerfScore 3.80
+G_M26647_IG47:
+ mov rsi, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rsi+0x10]
+ test r8, r8
+ je SHORT G_M26647_IG49
+ ;; size=13 bbWeight=4 PerfScore 21.00
+G_M26647_IG48:
+ mov qword ptr [rbp-0xA8], rcx
+ jmp SHORT G_M26647_IG50
+ ;; size=9 bbWeight=3.20 PerfScore 9.60
+G_M26647_IG49:
+ mov qword ptr [rbp-0xA8], rcx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov r8, rax
+ ;; size=25 bbWeight=0.80 PerfScore 2.00
+G_M26647_IG50:
+ lea rdi, [rbp-0x58]
+ call r8
+ mov rcx, gword ptr [rbp-0xE8]
+ cmp eax, dword ptr [rcx+0x10]
+ je G_M26647_IG55
+ ;; size=23 bbWeight=4 PerfScore 34.00
+G_M26647_IG51:
+ mov rdi, qword ptr [rbp-0xA8]
+ mov rsi, qword ptr [rdi+0x10]
+ mov rax, qword ptr [rsi+0x18]
+ test rax, rax
+ je SHORT G_M26647_IG53
+ ;; size=20 bbWeight=2 PerfScore 12.50
+G_M26647_IG52:
+ mov rdi, rax
+ jmp SHORT G_M26647_IG54
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M26647_IG53:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M26647_IG54:
+ mov qword ptr [rbp-0xB8], rdi
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x58]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x18], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, qword ptr [rbp-0xB8]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ call [rax]System.Collections.Immutable.Requires:FailObjectDisposed[System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]](System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]])
+ ;; size=99 bbWeight=2 PerfScore 42.50
+G_M26647_IG55:
+ mov rcx, gword ptr [rbp-0xE8]
+ mov rdi, gword ptr [rcx+0x08]
+ cmp dword ptr [rdi+0x10], 0
+ jle SHORT G_M26647_IG56
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this
+ call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this
+ mov gword ptr [rbp-0x40], rax
+ mov rdx, gword ptr [rax+0x18]
+ lea rdi, [rbp-0x58]
+ mov rsi, qword ptr [rbp-0xA0]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:PushLeft(System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]):this
+ call [rax]System.Collections.Immutable.ImmutableSortedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:PushLeft(System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]):this
+ jmp G_M26647_IG15
+ ;; size=65 bbWeight=4 PerfScore 80.00
+G_M26647_IG56:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x40], rdi
+ jmp G_M26647_IG61
+ ;; size=11 bbWeight=4 PerfScore 13.00
+G_M26647_IG57:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
+ call [rax]System.InvalidOperationException:.ctor():this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M26647_IG58:
+ mov edi, 0x671
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M26647_IG59:
+ mov edi, 0x4C5
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M26647_IG60:
+ mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov rax, 0xD1FFAB1E ; code for System.SR:get_CollectionModifiedDuringEnumeration():System.String
+ call [rax]System.SR:get_CollectionModifiedDuringEnumeration():System.String
+ mov rsi, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
+ call [rax]System.InvalidOperationException:.ctor(System.String):this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ int3
+ ;; size=57 bbWeight=0 PerfScore 0.00
+G_M26647_IG61:
mov rdi, qword ptr [r15+0x30]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x50]
test rax, rax
- je SHORT G_M26647_IG15
+ je SHORT G_M26647_IG63
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M26647_IG14:
- jmp SHORT G_M26647_IG16
+G_M26647_IG62:
+ jmp SHORT G_M26647_IG64
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M26647_IG15:
+G_M26647_IG63:
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=18 bbWeight=0.10 PerfScore 0.15
-G_M26647_IG16:
+G_M26647_IG64:
lea rdi, [rbp-0x58]
call rax
- mov rdx, gword ptr [rbp-0x78]
- lea rdi, bword ptr [rdx+0x10]
+ mov rcx, gword ptr [rbp-0xD0]
+ lea rdi, bword ptr [rcx+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov rdx, gword ptr [rbp-0x78]
- inc dword ptr [rdx+0x34]
- cmp gword ptr [rdx+0x08], r14
- je SHORT G_M26647_IG17
- lea rdi, bword ptr [rdx+0x08]
+ mov rcx, gword ptr [rbp-0xD0]
+ inc dword ptr [rcx+0x34]
+ cmp gword ptr [rcx+0x08], r14
+ je SHORT G_M26647_IG65
+ lea rdi, bword ptr [rcx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
- mov rdx, gword ptr [rbp-0x78]
- mov gword ptr [rdx+0x20], rdi
- ;; size=57 bbWeight=0.50 PerfScore 9.12
-G_M26647_IG17:
- mov dword ptr [rdx+0x30], r13d
+ mov rcx, gword ptr [rbp-0xD0]
+ mov gword ptr [rcx+0x20], rdi
+ ;; size=66 bbWeight=0.50 PerfScore 9.12
+G_M26647_IG65:
+ mov dword ptr [rcx+0x30], r13d
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M26647_IG18:
- add rsp, 88
+G_M26647_IG66:
+ vzeroupper
+ add rsp, 248
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M26647_IG19:
+ ;; size=21 bbWeight=1 PerfScore 5.25
+G_M26647_IG67:
mov edi, 0x4E9
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M26647_IG20:
+G_M26647_IG68:
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+0x80]
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M26647_IG21:
- mov rdi, gword ptr [rbp-0x78]
- mov r15, qword ptr [rdi]
- mov rsi, qword ptr [r15+0x30]
+ sub rsp, 56
+ mov rbp, qword ptr [rdi+0x28]
+ mov qword ptr [rsp+0x28], rbp
+ lea rbp, [rbp+0x120]
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M26647_IG69:
+ mov rcx, gword ptr [rbp-0xD0]
+ mov r15, qword ptr [rcx]
+ mov rdi, r15
+ mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x50]
test rax, rax
- je SHORT G_M26647_IG22
- jmp SHORT G_M26647_IG23
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M26647_IG22:
- mov rdi, r15
+ je SHORT G_M26647_IG70
+ jmp SHORT G_M26647_IG71
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26647_IG70:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M26647_IG23:
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M26647_IG71:
lea rdi, [rbp-0x58]
call rax
nop
;; size=7 bbWeight=0 PerfScore 0.00
-G_M26647_IG24:
- add rsp, 8
+G_M26647_IG72:
+ vzeroupper
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 545, prolog size 58, PerfScore 123.23, instruction count 154, allocated bytes for code 545 (MethodHash=abde97e8) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:set_KeyComparer(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 1891, prolog size 75, PerfScore 759.03, instruction count 442, allocated bytes for code 1891 (MethodHash=abde97e8) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:set_KeyComparer(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)