## Top method improvements

<details>
<summary>-169 (-37.81 % of base) - System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]</summary>

```diff
 ; Assembly listing for method System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
 ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T00] (  7,  4.20)    long  ->  rdi         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <System.__Canon[]>
-;  V09 tmp7         [V09,T04] (  6,  3.40)    long  ->  r14         "Inlining Arg"
+;  V09 tmp7         [V09,T09] (  4,  2.20)    long  ->  rsi         "Inlining Arg"
 ;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.__Canon[]>
-;  V12 tmp10        [V12,T10] (  5,  2.50)     ref  ->  r13         class-hnd exact single-def "Inline stloc first use temp" <System.__Canon[]>
+;  V11 tmp9         [V11,T04] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V12 tmp10        [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V14 tmp12        [V14    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[System.__Canon]>
+;* V14 tmp12        [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp13        [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V16 tmp14        [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V17 tmp15        [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
-;* V19 tmp17        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V20 tmp18        [V20,T11] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
-;  V21 tmp19        [V21,T12] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V22 tmp20        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;* V23 tmp21        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V24 tmp22        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V25 tmp23        [V25    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V26 tmp24        [V26    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V27 tmp25        [V27    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V28 tmp26        [V28,T02] (  4,  4   )    long  ->  rdx         "Inlining Arg"
-;  V29 tmp27        [V29,T03] (  3,  2   )   byref  ->  r15         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V30 tmp28        [V30,T01] (  5,  3.50)     int  ->  rbx         single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V31 tmp29        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05.array (fldOffset=0x0)" P-INDEP
-;* V32 tmp30        [V32    ] (  0,  0   )   byref  ->  zero-ref    "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V33 tmp31        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
-;  V34 tmp32        [V34,T16] (  3,  1.50)   byref  ->  rdi         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;  V35 tmp33        [V35,T17] (  2,  1   )     int  ->  rax         "field V18._length (fldOffset=0x8)" P-INDEP
-;* V36 tmp34        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V37 tmp35        [V37    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
-;  V38 tmp36        [V38,T15] (  2,  2   )    long  ->  rdi         "argument with side effect"
-;  V39 rat0         [V39,T13] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V40 rat1         [V40,T05] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V41 rat2         [V41,T06] (  3,  2.80)    long  ->  r14         "fgMakeTemp is creating a new local variable"
-;  V42 rat3         [V42,T14] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V43 rat4         [V43,T07] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V44 rat5         [V44,T08] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V45 rat6         [V45,T09] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V16 tmp14        [V16,T05] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V17 tmp15        [V17    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;* V18 tmp16        [V18    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V19 tmp17        [V19,T02] (  4,  4   )    long  ->  rdx         "Inlining Arg"
+;  V20 tmp18        [V20,T03] (  3,  2   )   byref  ->  r15         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;  V21 tmp19        [V21,T01] (  4,  3   )     int  ->  rbx         single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V22 tmp20        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05.array (fldOffset=0x0)" P-INDEP
+;  V23 tmp21        [V23,T12] (  2,  2   )    long  ->  rdi         "argument with side effect"
+;  V24 rat0         [V24,T10] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V25 rat1         [V25,T06] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V26 rat2         [V26,T07] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V27 rat3         [V27,T11] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V28 rat4         [V28,T08] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M47358_IG01:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x30]
-       mov      qword ptr [rbp-0x28], rdi
+       push     rax
+       lea      rbp, [rsp+0x20]
+       mov      qword ptr [rbp-0x20], rdi
        mov      r15, rsi
        mov      ebx, edx
-						;; size=26 bbWeight=1 PerfScore 7.25
+						;; size=21 bbWeight=1 PerfScore 7.00
 G_M47358_IG02:
        test     ebx, ebx
-       je       G_M47358_IG11
+       je       G_M47358_IG12
 						;; size=8 bbWeight=1 PerfScore 1.25
 G_M47358_IG03:
        mov      rsi, qword ptr [rdi+0x18]
-       mov      r14, qword ptr [rsi+0x10]
-       test     r14, r14
-       je       G_M47358_IG15
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+       mov      rsi, qword ptr [rsi+0x10]
+       test     rsi, rsi
+       je       SHORT G_M47358_IG06
+						;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M47358_IG04:
-       mov      rdi, qword ptr [r14+0x30]
+       mov      rdi, qword ptr [rsi+0x30]
        mov      rdi, qword ptr [rdi]
        mov      rdi, qword ptr [rdi+0x10]
        test     rdi, rdi
-       je       G_M47358_IG16
-						;; size=20 bbWeight=0.50 PerfScore 3.62
+       je       SHORT G_M47358_IG07
+						;; size=16 bbWeight=0.50 PerfScore 3.62
 G_M47358_IG05:
        mov      esi, ebx
        call     CORINFO_HELP_NEWARR_1_PTR
-       mov      r13, rax
-       mov      rdi, qword ptr [r14+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x18]
-       test     rdi, rdi
-       je       G_M47358_IG17
-						;; size=30 bbWeight=0.50 PerfScore 4.38
-G_M47358_IG06:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       G_M47358_IG18
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M47358_IG07:
-       cmp      qword ptr [r13], rax
-       jne      G_M47358_IG19
-       lea      rdi, bword ptr [r13+0x10]
-       mov      eax, dword ptr [r13+0x08]
-       cmp      ebx, eax
-       jg       G_M47358_IG20
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
        mov      edx, ebx
        shl      rdx, 3
        cmp      rdx, 0x4000
-       jbe      SHORT G_M47358_IG08
-       mov      rsi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       jmp      SHORT G_M47358_IG09
-						;; size=58 bbWeight=0.50 PerfScore 7.12
-G_M47358_IG08:
+       ja       SHORT G_M47358_IG08
        mov      rsi, r15
        call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
        mov      rax, 0xD1FFAB1E      ; global ptr
        cmp      dword ptr [rax], 0
-       je       SHORT G_M47358_IG09
-       call     CORINFO_HELP_POLL_GC
-						;; size=28 bbWeight=0.50 PerfScore 2.75
+       je       SHORT G_M47358_IG10
+       jmp      SHORT G_M47358_IG09
+						;; size=54 bbWeight=0.50 PerfScore 5.25
+G_M47358_IG06:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      rsi, rax
+       jmp      SHORT G_M47358_IG04
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M47358_IG07:
+       mov      rdi, rsi
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rdi, rax
+       jmp      SHORT G_M47358_IG05
+						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M47358_IG08:
+       mov      rsi, r15
+       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       jmp      SHORT G_M47358_IG10
+						;; size=17 bbWeight=0.50 PerfScore 2.75
 G_M47358_IG09:
-       mov      rax, r13
-						;; size=3 bbWeight=0.50 PerfScore 0.12
+       call     CORINFO_HELP_POLL_GC
+						;; size=5 bbWeight=0.50 PerfScore 0.50
 G_M47358_IG10:
-       add      rsp, 16
+       mov      rax, r14
+						;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M47358_IG11:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M47358_IG11:
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M47358_IG12:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rsi, qword ptr [rsi+0x18]
        test     rsi, rsi
-       je       SHORT G_M47358_IG14
+       je       SHORT G_M47358_IG15
 						;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M47358_IG12:
+G_M47358_IG13:
        mov      rdi, rsi
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        mov      rax, gword ptr [rax]
        mov      rax, gword ptr [rax+0x08]
 						;; size=22 bbWeight=0.50 PerfScore 3.75
-G_M47358_IG13:
-       add      rsp, 16
+G_M47358_IG14:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M47358_IG14:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      rsi, rax
-       jmp      SHORT G_M47358_IG12
-						;; size=27 bbWeight=0.10 PerfScore 0.58
+						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M47358_IG15:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      r14, rax
-       jmp      G_M47358_IG04
-						;; size=30 bbWeight=0.10 PerfScore 0.58
-G_M47358_IG16:
-       mov      rdi, r14
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-       jmp      G_M47358_IG05
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M47358_IG17:
-       mov      rdi, r14
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-       jmp      G_M47358_IG06
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M47358_IG18:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      G_M47358_IG07
-						;; size=27 bbWeight=0.10 PerfScore 0.55
-G_M47358_IG19:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M47358_IG20:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+       mov      rsi, rax
+       jmp      SHORT G_M47358_IG13
+						;; size=27 bbWeight=0.10 PerfScore 0.58
 
-; Total bytes of code 447, prolog size 21, PerfScore 45.77, instruction count 110, allocated bytes for code 447 (MethodHash=e4364701) for method System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
+; Total bytes of code 278, prolog size 16, PerfScore 34.50, instruction count 77, allocated bytes for code 278 (MethodHash=e4364701) for method System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
 ; ============================================================
```

</details>


<details>
<summary>-166 (-32.05 % of base) - System.Collections.ObjectModel.ReadOnlyCollection:CreateCollection[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]</summary>

```diff
 ; Assembly listing for method System.Collections.ObjectModel.ReadOnlyCollection:CreateCollection[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
 ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T00] (  9,  4.80)    long  ->  rbx         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V06 tmp4         [V06,T05] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
+;  V06 tmp4         [V06,T04] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
 ;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <System.__Canon[]>
-;  V09 tmp7         [V09,T04] (  6,  3.40)    long  ->  r13         "Inlining Arg"
+;  V09 tmp7         [V09,T11] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
 ;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.__Canon[]>
-;  V12 tmp10        [V12,T12] (  5,  2.50)     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.__Canon[]>
+;  V11 tmp9         [V11,T05] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V12 tmp10        [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V14 tmp12        [V14    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[System.__Canon]>
+;* V14 tmp12        [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp13        [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V16 tmp14        [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V17 tmp15        [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
-;* V19 tmp17        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V20 tmp18        [V20,T13] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
-;  V21 tmp19        [V21,T14] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V22 tmp20        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;* V23 tmp21        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V24 tmp22        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V25 tmp23        [V25    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V26 tmp24        [V26    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V27 tmp25        [V27    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V28 tmp26        [V28,T02] (  4,  4   )    long  ->  rdx         "Inlining Arg"
-;* V29 tmp27        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V30 tmp28        [V30,T03] (  3,  2   )   byref  ->  r14         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V31 tmp29        [V31,T01] (  5,  3.50)     int  ->  r15         single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V32 tmp30        [V32    ] (  0,  0   )   byref  ->  zero-ref    "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V33 tmp31        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
-;  V34 tmp32        [V34,T19] (  3,  1.50)   byref  ->  rdi         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;  V35 tmp33        [V35,T20] (  2,  1   )     int  ->  rax         "field V18._length (fldOffset=0x8)" P-INDEP
-;* V36 tmp34        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V37 tmp35        [V37    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
-;  V38 tmp36        [V38,T18] (  2,  2   )    long  ->  rdi         "argument with side effect"
-;  V39 rat0         [V39,T06] (  3,  2.80)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  V40 rat1         [V40,T15] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V41 rat2         [V41,T07] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V42 rat3         [V42,T08] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V43 rat4         [V43,T09] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V44 rat5         [V44,T16] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V45 rat6         [V45,T10] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V46 rat7         [V46,T17] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V47 rat8         [V47,T11] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V16 tmp14        [V16,T06] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V17 tmp15        [V17    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;* V18 tmp16        [V18    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V19 tmp17        [V19,T02] (  4,  4   )    long  ->  rdx         "Inlining Arg"
+;* V20 tmp18        [V20    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V21 tmp19        [V21,T03] (  3,  2   )   byref  ->  r14         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;  V22 tmp20        [V22,T01] (  4,  3   )     int  ->  r15         single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;  V23 tmp21        [V23,T15] (  2,  2   )    long  ->  rdi         "argument with side effect"
+;  V24 rat0         [V24,T07] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V25 rat1         [V25,T12] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V26 rat2         [V26,T08] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V27 rat3         [V27,T13] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V28 rat4         [V28,T09] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V29 rat5         [V29,T14] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V30 rat6         [V30,T10] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M20136_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
+       sub      rsp, 16
        lea      rbp, [rsp+0x30]
-       mov      qword ptr [rbp-0x30], rdi
+       mov      qword ptr [rbp-0x28], rdi
        mov      rbx, rdi
        mov      r14, rsi
        mov      r15d, edx
-						;; size=29 bbWeight=1 PerfScore 9.25
+						;; size=30 bbWeight=1 PerfScore 7.50
 G_M20136_IG02:
        test     r15d, r15d
        jne      SHORT G_M20136_IG07
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M20136_IG03:
        mov      rdi, qword ptr [rbx+0x18]
        mov      rdi, qword ptr [rdi+0x18]
        test     rdi, rdi
        je       SHORT G_M20136_IG06
 						;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M20136_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        mov      rax, gword ptr [rax]
 						;; size=15 bbWeight=0.50 PerfScore 2.62
 G_M20136_IG05:
-       add      rsp, 8
+       add      rsp, 16
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M20136_IG06:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdi, rax
        jmp      SHORT G_M20136_IG04
 						;; size=30 bbWeight=0.10 PerfScore 0.60
 G_M20136_IG07:
        mov      rdi, qword ptr [rbx+0x18]
-       mov      r13, qword ptr [rdi+0x10]
-       test     r13, r13
-       je       G_M20136_IG17
-						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M20136_IG08:
-       mov      rdi, qword ptr [r13+0x30]
-       mov      rdi, qword ptr [rdi]
        mov      rdi, qword ptr [rdi+0x10]
        test     rdi, rdi
-       je       G_M20136_IG18
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M20136_IG09:
-       mov      esi, r15d
-       call     CORINFO_HELP_NEWARR_1_PTR
-       mov      r12, rax
-       mov      rdi, qword ptr [r13+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x18]
-       test     rdi, rdi
-       je       G_M20136_IG19
-						;; size=31 bbWeight=0.50 PerfScore 4.38
-G_M20136_IG10:
+       je       SHORT G_M20136_IG11
+						;; size=13 bbWeight=0.50 PerfScore 2.62
+G_M20136_IG08:
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi]
        mov      rax, qword ptr [rsi+0x10]
        test     rax, rax
-       je       G_M20136_IG20
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M20136_IG11:
-       cmp      qword ptr [r12], rax
-       jne      G_M20136_IG21
-       lea      rdi, bword ptr [r12+0x10]
-       mov      eax, dword ptr [r12+0x08]
-       cmp      r15d, eax
-       jg       G_M20136_IG22
+       je       SHORT G_M20136_IG12
+						;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M20136_IG09:
+       mov      rdi, rax
+						;; size=3 bbWeight=0.40 PerfScore 0.10
+G_M20136_IG10:
+       mov      esi, r15d
+       call     CORINFO_HELP_NEWARR_1_PTR
+       mov      r13, rax
+       lea      rdi, bword ptr [r13+0x10]
        mov      edx, r15d
        shl      rdx, 3
        cmp      rdx, 0x4000
-       jbe      SHORT G_M20136_IG12
-       mov      rsi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       jmp      SHORT G_M20136_IG13
-						;; size=62 bbWeight=0.50 PerfScore 7.12
-G_M20136_IG12:
+       ja       SHORT G_M20136_IG13
        mov      rsi, r14
        call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
        mov      rax, 0xD1FFAB1E      ; global ptr
        cmp      dword ptr [rax], 0
-       je       SHORT G_M20136_IG13
-       call     CORINFO_HELP_POLL_GC
-						;; size=28 bbWeight=0.50 PerfScore 2.75
+       je       SHORT G_M20136_IG15
+       jmp      SHORT G_M20136_IG14
+						;; size=56 bbWeight=0.50 PerfScore 5.25
+G_M20136_IG11:
+       mov      rdi, rbx
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      rdi, rax
+       jmp      SHORT G_M20136_IG08
+						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M20136_IG12:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rdi, rax
+       jmp      SHORT G_M20136_IG10
+						;; size=27 bbWeight=0.10 PerfScore 0.58
 G_M20136_IG13:
+       mov      rsi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       jmp      SHORT G_M20136_IG15
+						;; size=17 bbWeight=0.50 PerfScore 2.75
+G_M20136_IG14:
+       call     CORINFO_HELP_POLL_GC
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M20136_IG15:
        mov      rdi, qword ptr [rbx+0x18]
        mov      rdi, qword ptr [rdi+0x18]
        test     rdi, rdi
-       je       SHORT G_M20136_IG16
+       je       SHORT G_M20136_IG18
 						;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M20136_IG14:
+G_M20136_IG16:
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, r12
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, rbx
 						;; size=23 bbWeight=0.50 PerfScore 1.62
-G_M20136_IG15:
-       add      rsp, 8
+G_M20136_IG17:
+       add      rsp, 16
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M20136_IG16:
-       mov      rdi, rbx
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      rdi, rax
-       jmp      SHORT G_M20136_IG14
-						;; size=30 bbWeight=0.10 PerfScore 0.60
-G_M20136_IG17:
-       mov      rdi, rbx
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      r13, rax
-       jmp      G_M20136_IG08
-						;; size=33 bbWeight=0.10 PerfScore 0.60
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M20136_IG18:
-       mov      rdi, r13
+       mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdi, rax
-       jmp      G_M20136_IG09
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M20136_IG19:
-       mov      rdi, r13
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-       jmp      G_M20136_IG10
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M20136_IG20:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      G_M20136_IG11
-						;; size=27 bbWeight=0.10 PerfScore 0.55
-G_M20136_IG21:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20136_IG22:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M20136_IG16
+						;; size=30 bbWeight=0.10 PerfScore 0.60
 
-; Total bytes of code 518, prolog size 20, PerfScore 51.92, instruction count 129, allocated bytes for code 518 (MethodHash=b261b157) for method System.Collections.ObjectModel.ReadOnlyCollection:CreateCollection[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
+; Total bytes of code 352, prolog size 21, PerfScore 39.22, instruction count 96, allocated bytes for code 352 (MethodHash=b261b157) for method System.Collections.ObjectModel.ReadOnlyCollection:CreateCollection[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
 ; ============================================================
```

</details>


<details>
<summary>-166 (-24.02 % of base) - System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]:MoveNext():bool:this</summary>

```diff
 ; Assembly listing for method System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]:MoveNext():bool:this (FullOpts)
 ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 14,  8.50)     ref  ->  rbx         this class-hnd single-def <System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]>
-;  V01 loc0         [V01,T15] (  3,  2.50)     int  ->  rax        
+;  V01 loc0         [V01,T14] (  3,  2.50)     int  ->  rax        
 ;* V02 loc1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.__Canon[]>
 ;* V03 loc2         [V03    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;  V05 tmp1         [V05,T02] (  4,  4   )     ref  ->  rdx         class-hnd single-def "impAppendStmt" <System.__Canon[]>
-;  V06 tmp2         [V06,T03] (  4,  4   )     int  ->  rdi         "impAppendStmt"
+;  V05 tmp1         [V05,T01] (  4,  4   )     ref  ->  rdx         class-hnd single-def "impAppendStmt" <System.__Canon[]>
+;  V06 tmp2         [V06,T02] (  4,  4   )     int  ->  rdi         "impAppendStmt"
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
 ;* V08 tmp4         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp5         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp6         [V10,T22] (  4,  2   )     int  ->  r15         "Inline return value spill temp"
-;  V11 tmp7         [V11,T06] (  3,  3   )     int  ->  r15         "Inlining Arg"
-;  V12 tmp8         [V12,T07] (  3,  3   )     int  ->  rcx         "Inlining Arg"
-;  V13 tmp9         [V13,T19] (  4,  2   )     ref  ->  r12         class-hnd "Inline return value spill temp" <System.__Canon[]>
-;  V14 tmp10        [V14,T01] (  8,  4.60)    long  ->  r13         "Inlining Arg"
+;  V10 tmp6         [V10,T20] (  4,  2   )     int  ->  r15         "Inline return value spill temp"
+;  V11 tmp7         [V11,T07] (  3,  3   )     int  ->  r15         "Inlining Arg"
+;  V12 tmp8         [V12,T08] (  3,  3   )     int  ->  rcx         "Inlining Arg"
+;  V13 tmp9         [V13,T17] (  4,  2   )     ref  ->  r13         class-hnd "Inline return value spill temp" <System.__Canon[]>
+;  V14 tmp10        [V14,T04] (  6,  3.40)    long  ->  rsi         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.__Canon[]>
-;  V17 tmp13        [V17,T14] (  5,  2.50)     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.__Canon[]>
+;  V16 tmp12        [V16,T05] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V17 tmp13        [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V18 tmp14        [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V19 tmp15        [V19    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[System.__Canon]>
+;* V19 tmp15        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp16        [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V21 tmp17        [V21    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V22 tmp18        [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V23 tmp19        [V23    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
-;* V24 tmp20        [V24    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V25 tmp21        [V25,T16] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
-;  V26 tmp22        [V26,T24] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V27 tmp23        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;* V28 tmp24        [V28    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V29 tmp25        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V30 tmp26        [V30    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V31 tmp27        [V31    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V32 tmp28        [V32    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V33 tmp29        [V33,T04] (  4,  4   )    long  ->  rdx         "Inlining Arg"
-;* V34 tmp30        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp31        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
-;  V36 tmp32        [V36,T20] (  4,  2   )   byref  ->  r14         "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V37 tmp33        [V37,T05] (  6,  3   )     int  ->  r15         "field V07._length (fldOffset=0x8)" P-INDEP
-;* V38 tmp34        [V38    ] (  0,  0   )   byref  ->  zero-ref    "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V39 tmp35        [V39    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
-;  V40 tmp36        [V40,T29] (  3,  1.50)   byref  ->  rdi         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;  V41 tmp37        [V41,T30] (  2,  1   )     int  ->  rax         "field V23._length (fldOffset=0x8)" P-INDEP
-;* V42 tmp38        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V43 tmp39        [V43    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x8)" P-INDEP
-;  V44 tmp40        [V44,T28] (  2,  2   )    long  ->  rdi         "argument with side effect"
-;  V45 tmp41        [V45,T17] (  3,  2.20)    long  ->  rdi         "argument with side effect"
-;  V46 cse0         [V46,T21] (  4,  2   )     ref  ->  rcx         "CSE #01: moderate"
-;  V47 cse1         [V47,T23] (  4,  2   )     int  ->  rax         "CSE #02: moderate"
-;  V48 rat0         [V48,T18] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V49 rat1         [V49,T08] (  3,  2.80)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  V50 rat2         [V50,T25] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V51 rat3         [V51,T09] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V52 rat4         [V52,T26] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V53 rat5         [V53,T10] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V54 rat6         [V54,T27] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V55 rat7         [V55,T11] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V56 rat8         [V56,T12] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V57 rat9         [V57,T13] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V21 tmp17        [V21,T06] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V22 tmp18        [V22    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;* V23 tmp19        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V24 tmp20        [V24,T03] (  4,  4   )    long  ->  rdx         "Inlining Arg"
+;* V25 tmp21        [V25    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V26 tmp22        [V26    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
+;  V27 tmp23        [V27,T18] (  4,  2   )   byref  ->  r14         "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V28 tmp24        [V28,T13] (  5,  2.50)     int  ->  r15         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V29 tmp25        [V29,T25] (  2,  2   )    long  ->  rdi         "argument with side effect"
+;  V30 tmp26        [V30,T15] (  3,  2.20)    long  ->  rdi         "argument with side effect"
+;  V31 cse0         [V31,T19] (  4,  2   )     ref  ->  rcx         "CSE #01: moderate"
+;  V32 cse1         [V32,T21] (  4,  2   )     int  ->  rax         "CSE #02: moderate"
+;  V33 rat0         [V33,T16] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V34 rat1         [V34,T09] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V35 rat2         [V35,T22] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V36 rat3         [V36,T10] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V37 rat4         [V37,T23] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V38 rat5         [V38,T11] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V39 rat6         [V39,T24] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V40 rat7         [V40,T12] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M25240_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
+       sub      rsp, 16
        lea      rbp, [rsp+0x30]
-       mov      qword ptr [rbp-0x30], rdi
+       mov      qword ptr [rbp-0x28], rdi
        mov      rbx, rdi
-						;; size=23 bbWeight=1 PerfScore 8.75
+						;; size=24 bbWeight=1 PerfScore 7.00
 G_M25240_IG02:
        mov      eax, dword ptr [rbx+0x20]
        test     eax, eax
        jne      SHORT G_M25240_IG04
 						;; size=7 bbWeight=1 PerfScore 3.25
 G_M25240_IG03:
        mov      dword ptr [rbx+0x20], -1
        xor      eax, eax
        mov      dword ptr [rbx+0x30], eax
        jmp      SHORT G_M25240_IG05
 						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M25240_IG04:
        cmp      eax, 1
-       jne      G_M25240_IG22
+       jne      G_M25240_IG21
        mov      dword ptr [rbx+0x20], -1
 						;; size=16 bbWeight=0.50 PerfScore 1.12
 G_M25240_IG05:
        mov      eax, dword ptr [rbx+0x30]
        mov      rcx, gword ptr [rbx+0x10]
        cmp      eax, dword ptr [rcx+0x08]
-       jge      G_M25240_IG22
+       jge      G_M25240_IG21
        mov      rdx, rcx
        mov      edi, eax
        mov      r15d, dword ptr [rbx+0x28]
        mov      ecx, dword ptr [rcx+0x08]
        sub      ecx, eax
        cmp      r15d, ecx
        cmovg    r15d, ecx
        test     rdx, rdx
        je       SHORT G_M25240_IG06
        mov      eax, edi
        mov      ecx, r15d
        add      rax, rcx
        mov      ecx, dword ptr [rdx+0x08]
        cmp      rax, rcx
-       ja       G_M25240_IG27
+       ja       G_M25240_IG23
        lea      r14, bword ptr [rdx+8*rdi+0x10]
        jmp      SHORT G_M25240_IG07
 						;; size=69 bbWeight=0.50 PerfScore 10.38
 G_M25240_IG06:
        or       edi, r15d
-       jne      G_M25240_IG27
+       jne      G_M25240_IG23
        xor      r14, r14
        xor      r15d, r15d
 						;; size=15 bbWeight=0.50 PerfScore 0.88
 G_M25240_IG07:
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi]
-       mov      r13, qword ptr [rsi+0x10]
-       test     r13, r13
+       mov      rsi, qword ptr [rsi+0x10]
+       test     rsi, rsi
        je       SHORT G_M25240_IG13
 						;; size=19 bbWeight=0.50 PerfScore 4.62
 G_M25240_IG08:
        test     r15d, r15d
        jne      G_M25240_IG14
-       mov      rdi, qword ptr [r13+0x30]
+       mov      rdi, qword ptr [rsi+0x30]
        mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x28]
+       mov      rdi, qword ptr [rdi+0x20]
        test     rdi, rdi
-       je       G_M25240_IG20
+       je       G_M25240_IG19
 						;; size=29 bbWeight=0.50 PerfScore 4.25
 G_M25240_IG09:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rsi, qword ptr [rsi+0x10]
        test     rsi, rsi
-       je       G_M25240_IG21
+       je       G_M25240_IG20
 						;; size=17 bbWeight=0.50 PerfScore 2.62
 G_M25240_IG10:
        mov      rdi, rsi
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       mov      r12, gword ptr [rax]
+       mov      r13, gword ptr [rax]
 						;; size=18 bbWeight=0.50 PerfScore 2.75
 G_M25240_IG11:
-       mov      edi, dword ptr [r12+0x08]
+       mov      edi, dword ptr [r13+0x08]
        add      dword ptr [rbx+0x30], edi
        lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, r12
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [rbx+0x20], 1
        mov      eax, 1
-						;; size=32 bbWeight=0.50 PerfScore 4.00
+						;; size=31 bbWeight=0.50 PerfScore 4.00
 G_M25240_IG12:
-       add      rsp, 8
+       add      rsp, 16
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M25240_IG13:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      r13, rax
+       mov      rsi, rax
        jmp      G_M25240_IG08
 						;; size=30 bbWeight=0.10 PerfScore 0.58
 G_M25240_IG14:
-       mov      rdi, qword ptr [r13+0x30]
+       mov      rdi, qword ptr [rsi+0x30]
        mov      rdi, qword ptr [rdi]
        mov      rdi, qword ptr [rdi+0x18]
        test     rdi, rdi
-       je       G_M25240_IG24
-						;; size=20 bbWeight=0.50 PerfScore 3.62
+       je       SHORT G_M25240_IG16
+						;; size=16 bbWeight=0.50 PerfScore 3.62
 G_M25240_IG15:
        mov      esi, r15d
        call     CORINFO_HELP_NEWARR_1_PTR
-       mov      r12, rax
-       mov      rdi, qword ptr [r13+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x20]
-       test     rdi, rdi
-       je       G_M25240_IG25
-						;; size=31 bbWeight=0.50 PerfScore 4.38
-G_M25240_IG16:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x18]
-       test     rax, rax
-       je       G_M25240_IG26
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M25240_IG17:
-       cmp      qword ptr [r12], rax
-       jne      G_M25240_IG28
-       lea      rdi, bword ptr [r12+0x10]
-       mov      eax, dword ptr [r12+0x08]
-       cmp      r15d, eax
-       jg       G_M25240_IG30
+       mov      r13, rax
+       lea      rdi, bword ptr [r13+0x10]
        mov      edx, r15d
        shl      rdx, 3
        cmp      rdx, 0x4000
-       jbe      SHORT G_M25240_IG18
-       mov      rsi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       jmp      SHORT G_M25240_IG19
-						;; size=62 bbWeight=0.50 PerfScore 7.12
-G_M25240_IG18:
+       ja       SHORT G_M25240_IG17
        mov      rsi, r14
        call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
        mov      rax, 0xD1FFAB1E      ; global ptr
        cmp      dword ptr [rax], 0
-       jne      G_M25240_IG29
-						;; size=27 bbWeight=0.50 PerfScore 2.25
-G_M25240_IG19:
+       je       SHORT G_M25240_IG18
+       jmp      G_M25240_IG24
+						;; size=59 bbWeight=0.50 PerfScore 5.25
+G_M25240_IG16:
+       mov      rdi, rsi
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rdi, rax
+       jmp      SHORT G_M25240_IG15
+						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M25240_IG17:
+       mov      rsi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+						;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M25240_IG18:
        jmp      G_M25240_IG11
 						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M25240_IG20:
-       mov      rdi, r13
+G_M25240_IG19:
+       mov      rdi, rsi
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
        jmp      G_M25240_IG09
 						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M25240_IG21:
+G_M25240_IG20:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rsi, rax
        jmp      G_M25240_IG10
 						;; size=30 bbWeight=0.10 PerfScore 0.58
-G_M25240_IG22:
+G_M25240_IG21:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25240_IG23:
-       add      rsp, 8
+G_M25240_IG22:
+       add      rsp, 16
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M25240_IG24:
-       mov      rdi, r13
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-       jmp      G_M25240_IG15
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M25240_IG25:
-       mov      rdi, r13
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-       jmp      G_M25240_IG16
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M25240_IG26:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      G_M25240_IG17
-						;; size=27 bbWeight=0.10 PerfScore 0.55
-G_M25240_IG27:
+						;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M25240_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M25240_IG28:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M25240_IG29:
+G_M25240_IG24:
        call     CORINFO_HELP_POLL_GC
-       jmp      G_M25240_IG19
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M25240_IG30:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M25240_IG18
+						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 691, prolog size 20, PerfScore 74.63, instruction count 171, allocated bytes for code 691 (MethodHash=542b9d67) for method System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]:MoveNext():bool:this (FullOpts)
+; Total bytes of code 525, prolog size 21, PerfScore 60.85, instruction count 137, allocated bytes for code 525 (MethodHash=542b9d67) for method System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]:MoveNext():bool:this (FullOpts)
 ; ============================================================
```

</details>



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

