## Top method improvements

<details>
<summary>-294 (-42.55 % 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; 1 single block inlinees; 4 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        
-;* V02 loc1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.__Canon[]>
+;  V01 loc0         [V01,T10] (  3,  2.50)     int  ->  rax        
+;* V02 loc1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact 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[]>
+;  V05 tmp1         [V05,T01] (  4,  4   )     ref  ->  rdx         class-hnd single-def "impAppendStmt" <System.__Canon[]>
 ;  V06 tmp2         [V06,T03] (  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"
+;  V10 tmp6         [V10,T15] (  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"
-;* 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[]>
-;* 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]>
-;* 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"
+;* V13 tmp9         [V13    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V14 tmp10        [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V15 tmp11        [V15,T02] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V16 tmp12        [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V17 tmp13        [V17,T05] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V18 tmp14        [V18    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;* V19 tmp15        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V20 tmp16        [V20,T04] (  4,  4   )    long  ->  rdx         "Inlining Arg"
+;* V21 tmp17        [V21    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
+;  V23 tmp19        [V23,T13] (  4,  2   )   byref  ->  r14         "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V24 tmp20        [V24,T20] (  3,  1.50)     int  ->  r15         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V25 tmp21        [V25,T11] (  3,  2.20)    long  ->  rdi         "argument with side effect"
+;  V26 tmp22        [V26,T19] (  2,  2   )    long  ->  rdi         "argument with side effect"
+;  V27 cse0         [V27,T14] (  4,  2   )     ref  ->  rcx         "CSE #01: moderate"
+;  V28 cse1         [V28,T16] (  4,  2   )     int  ->  rax         "CSE #02: moderate"
+;  V29 cse2         [V29,T21] (  3,  1.50)    long  ->  r15         "CSE #04: moderate"
+;  V30 rat0         [V30,T12] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V31 rat1         [V31,T17] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V32 rat2         [V32,T08] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V33 rat3         [V33,T18] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V34 rat4         [V34,T09] (  3,  2.80)    long  ->  rax         "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_IG17
        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_IG17
        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_IG19
        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_IG19
        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
-       je       SHORT G_M25240_IG13
+       mov      rax, qword ptr [rsi+0x10]
+       test     rax, rax
+       je       SHORT G_M25240_IG12
 						;; 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 [rdi]
-       mov      rdi, qword ptr [rdi+0x28]
-       test     rdi, rdi
-       je       G_M25240_IG20
-						;; size=29 bbWeight=0.50 PerfScore 4.25
+       mov      rdi, rax
+						;; size=3 bbWeight=0.40 PerfScore 0.10
 G_M25240_IG09:
-       mov      rsi, qword ptr [rdi+0x18]
-       mov      rsi, qword ptr [rsi+0x10]
-       test     rsi, rsi
-       je       G_M25240_IG21
-						;; 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]
-						;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M25240_IG11:
-       mov      edi, dword ptr [r12+0x08]
-       add      dword ptr [rbx+0x30], edi
-       lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, r12
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      dword ptr [rbx+0x20], 1
-       mov      eax, 1
-						;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M25240_IG12:
-       add      rsp, 8
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-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
-       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 [rdi]
-       mov      rdi, qword ptr [rdi+0x18]
-       test     rdi, rdi
-       je       G_M25240_IG24
-						;; size=20 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      edx, r15d
-       shl      rdx, 3
+       je       SHORT G_M25240_IG13
+						;; size=16 bbWeight=0.50 PerfScore 3.62
+G_M25240_IG10:
+       mov      rdi, rax
+						;; size=3 bbWeight=0.40 PerfScore 0.10
+G_M25240_IG11:
+       mov      r15d, r15d
+       mov      rsi, r15
+       call     CORINFO_HELP_NEWARR_1_PTR
+       mov      r13, rax
+       lea      rdi, bword ptr [r13+0x10]
+       lea      rdx, [8*r15]
        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_IG14
        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:
-       jmp      G_M25240_IG11
-						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M25240_IG20:
-       mov      rdi, r13
+       je       SHORT G_M25240_IG15
+       jmp      G_M25240_IG20
+						;; size=63 bbWeight=0.50 PerfScore 5.25
+G_M25240_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      G_M25240_IG09
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M25240_IG21:
+       jmp      SHORT G_M25240_IG09
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M25240_IG13:
        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:
-       xor      eax, eax
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25240_IG23:
-       add      rsp, 8
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rdi, rax
+       jmp      SHORT G_M25240_IG11
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M25240_IG14:
+       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_IG15:
+       mov      edi, dword ptr [r13+0x08]
+       add      dword ptr [rbx+0x30], edi
+       lea      rdi, bword ptr [rbx+0x08]
+       mov      rsi, r13
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      dword ptr [rbx+0x20], 1
+       mov      eax, 1
+						;; size=31 bbWeight=0.50 PerfScore 4.00
+G_M25240_IG16:
+       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_IG17:
+       xor      eax, eax
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M25240_IG18:
+       add      rsp, 16
+       pop      rbx
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M25240_IG19:
        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_IG20:
        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_IG15
+						;; 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 397, prolog size 21, PerfScore 49.22, instruction count 111, allocated bytes for code 397 (MethodHash=542b9d67) for method System.Linq.Enumerable+<ArrayChunkIterator>d__39`1[System.__Canon]:MoveNext():bool:this (FullOpts)
 ; ============================================================
```

</details>


<details>
<summary>-282 (-55.19 % of base) - System.SpanDebugView`1[System.__Canon]:.ctor(System.ReadOnlySpan`1[System.__Canon]):this</summary>

```diff
 ; Assembly listing for method System.SpanDebugView`1[System.__Canon]:.ctor(System.ReadOnlySpan`1[System.__Canon]):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; 4 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rbx         this class-hnd single-def <System.SpanDebugView`1[System.__Canon]>
 ;* V01 arg1         [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,T15] (  3,  2   )     ref  ->  r12         class-hnd "Inline return value spill temp" <System.__Canon[]>
-;  V05 tmp3         [V05,T01] (  8,  5.60)    long  ->  r13         "Inlining Arg"
-;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.__Canon[]>
-;  V08 tmp6         [V08,T12] (  5,  2.50)     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.__Canon[]>
-;* V09 tmp7         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V10 tmp8         [V10    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[System.__Canon]>
-;* V11 tmp9         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V12 tmp10        [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V14 tmp12        [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
-;* V15 tmp13        [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V16 tmp14        [V16,T13] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
-;  V17 tmp15        [V17,T16] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;* V19 tmp17        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V20 tmp18        [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V21 tmp19        [V21    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V22 tmp20        [V22    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;* V23 tmp21        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V24 tmp22        [V24,T05] (  4,  4   )    long  ->  rdx         "Inlining Arg"
-;  V25 tmp23        [V25,T06] (  3,  2   )   byref  ->  r14         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V26 tmp24        [V26,T03] (  5,  3.50)     int  ->  r15         single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V27 tmp25        [V27    ] (  0,  0   )   byref  ->  zero-ref    "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp26        [V28    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
-;  V29 tmp27        [V29,T21] (  3,  1.50)   byref  ->  rdi         single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;  V30 tmp28        [V30,T22] (  2,  1   )     int  ->  rax         "field V14._length (fldOffset=0x8)" P-INDEP
-;* V31 tmp29        [V31    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp30        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
-;  V33 tmp31        [V33,T20] (  2,  2   )    long  ->  rdi         "argument with side effect"
-;  V34 tmp32        [V34,T14] (  3,  2.20)    long  ->  rdi         "argument with side effect"
-;  V35 rat0         [V35,T04] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V36 rat1         [V36,T02] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  V37 rat2         [V37,T17] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V38 rat3         [V38,T07] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V39 rat4         [V39,T18] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V40 rat5         [V40,T08] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V41 rat6         [V41,T19] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V42 rat7         [V42,T09] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V43 rat8         [V43,T10] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V44 rat9         [V44,T11] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V05 tmp3         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V06 tmp4         [V06,T02] (  3,  6   )     ref  ->  r13         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V08 tmp6         [V08,T08] (  3,  4   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V09 tmp7         [V09    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V11 tmp9         [V11,T01] (  4,  6   )    long  ->  rdx         "Inlining Arg"
+;  V12 tmp10        [V12,T09] (  3,  2   )   byref  ->  r14         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;  V13 tmp11        [V13,T05] (  3,  3   )     int  ->  r15         single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;  V14 tmp12        [V14,T06] (  3,  4.40)    long  ->  rdi         "argument with side effect"
+;  V15 tmp13        [V15,T12] (  2,  4   )    long  ->  rdi         "argument with side effect"
+;  V16 rat0         [V16,T07] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V17 rat1         [V17,T10] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V18 rat2         [V18,T03] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V19 rat3         [V19,T11] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V20 rat4         [V20,T04] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M9251_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_M9251_IG02:
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi]
-       mov      r13, qword ptr [rsi+0x18]
-       test     r13, r13
-       je       SHORT G_M9251_IG09
+       mov      rax, qword ptr [rsi+0x18]
+       test     rax, rax
+       je       SHORT G_M9251_IG08
 						;; size=19 bbWeight=1 PerfScore 9.25
 G_M9251_IG03:
-       test     r15d, r15d
-       jne      SHORT G_M9251_IG10
-						;; size=5 bbWeight=1 PerfScore 1.25
+       mov      rdi, rax
+						;; size=3 bbWeight=0.80 PerfScore 0.20
 G_M9251_IG04:
-       mov      rdi, qword ptr [r13+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x20]
-       test     rdi, rdi
-       je       G_M9251_IG16
-						;; size=20 bbWeight=0.50 PerfScore 3.62
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi]
+       mov      rax, qword ptr [rsi+0x10]
+       test     rax, rax
+       je       SHORT G_M9251_IG09
+						;; size=16 bbWeight=1 PerfScore 7.25
 G_M9251_IG05:
-       mov      rsi, qword ptr [rdi+0x18]
-       mov      rsi, qword ptr [rsi+0x10]
-       test     rsi, rsi
-       je       G_M9251_IG17
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+       mov      rdi, rax
+						;; size=3 bbWeight=0.80 PerfScore 0.20
 G_M9251_IG06:
-       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]
-						;; size=18 bbWeight=0.50 PerfScore 2.75
+       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
+       ja       SHORT G_M9251_IG10
+						;; size=31 bbWeight=1 PerfScore 4.00
 G_M9251_IG07:
+       mov      rsi, r14
+       call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
+       mov      rax, 0xD1FFAB1E      ; global ptr
+       cmp      dword ptr [rax], 0
+       je       SHORT G_M9251_IG12
+       jmp      SHORT G_M9251_IG11
+						;; size=25 bbWeight=0.50 PerfScore 3.25
+G_M9251_IG08:
+       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_M9251_IG04
+						;; size=27 bbWeight=0.20 PerfScore 1.15
+G_M9251_IG09:
+       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_M9251_IG06
+						;; size=27 bbWeight=0.20 PerfScore 1.15
+G_M9251_IG10:
+       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_M9251_IG12
+						;; size=17 bbWeight=0.50 PerfScore 2.75
+G_M9251_IG11:
+       call     CORINFO_HELP_POLL_GC
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M9251_IG12:
        lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, r12
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        nop      
 						;; size=13 bbWeight=1 PerfScore 2.00
-G_M9251_IG08:
-       add      rsp, 8
+G_M9251_IG13:
+       add      rsp, 16
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M9251_IG09:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      r13, rax
-       jmp      SHORT G_M9251_IG03
-						;; size=27 bbWeight=0.20 PerfScore 1.15
-G_M9251_IG10:
-       mov      rdi, qword ptr [r13+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x10]
-       test     rdi, rdi
-       je       G_M9251_IG18
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M9251_IG11:
-       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_M9251_IG19
-						;; size=31 bbWeight=0.50 PerfScore 4.38
-G_M9251_IG12:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       G_M9251_IG20
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M9251_IG13:
-       cmp      qword ptr [r12], rax
-       jne      G_M9251_IG21
-       lea      rdi, bword ptr [r12+0x10]
-       mov      eax, dword ptr [r12+0x08]
-       cmp      r15d, eax
-       jg       G_M9251_IG22
-       mov      edx, r15d
-       shl      rdx, 3
-       cmp      rdx, 0x4000
-       jbe      SHORT G_M9251_IG14
-       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_M9251_IG15
-						;; size=62 bbWeight=0.50 PerfScore 7.12
-G_M9251_IG14:
-       mov      rsi, r14
-       call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M9251_IG15
-       call     CORINFO_HELP_POLL_GC
-						;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M9251_IG15:
-       jmp      G_M9251_IG07
-						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M9251_IG16:
-       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_M9251_IG05
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M9251_IG17:
-       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_M9251_IG06
-						;; size=30 bbWeight=0.10 PerfScore 0.58
-G_M9251_IG18:
-       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_M9251_IG11
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M9251_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_M9251_IG12
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M9251_IG20:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      G_M9251_IG13
-						;; size=27 bbWeight=0.10 PerfScore 0.55
-G_M9251_IG21:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M9251_IG22:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=1 PerfScore 3.75
 
-; Total bytes of code 511, prolog size 20, PerfScore 61.57, instruction count 122, allocated bytes for code 511 (MethodHash=f3b1dbdc) for method System.SpanDebugView`1[System.__Canon]:.ctor(System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 229, prolog size 21, PerfScore 42.95, instruction count 64, allocated bytes for code 229 (MethodHash=f3b1dbdc) for method System.SpanDebugView`1[System.__Canon]:.ctor(System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
 ; ============================================================
```

</details>


<details>
<summary>-263 (-62.32 % of base) - System.ReadOnlySpan`1[System.__Canon]:ToArray():System.__Canon[]:this</summary>

```diff
 ; Assembly listing for method System.ReadOnlySpan`1[System.__Canon]:ToArray():System.__Canon[]: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; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  4,  3.50)   byref  ->  r15         this single-def
-;  V01 TypeCtx      [V01,T00] (  9,  4.80)    long  ->  rbx         single-def
-;  V02 loc0         [V02,T12] (  4,  2   )     ref  ->  r13         class-hnd exact single-def <System.__Canon[]>
-;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.__Canon[]>
-;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[System.__Canon]>
-;* V08 tmp5         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V09 tmp6         [V09    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V10 tmp7         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V11 tmp8         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
-;* V12 tmp9         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V13 tmp10        [V13,T10] (  4,  2.20)    long  ->  rdi         "Inlining Arg"
-;  V14 tmp11        [V14,T13] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V15 tmp12        [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;* V16 tmp13        [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V17 tmp14        [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V18 tmp15        [V18    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
-;  V19 tmp16        [V19,T04] (  3,  3   )   byref  ->  rsi         single-def "Inlining Arg"
-;* V20 tmp17        [V20    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V21 tmp18        [V21,T02] (  4,  4   )    long  ->  rdx         "Inlining Arg"
-;* V22 tmp19        [V22    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp20        [V23    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
-;  V24 tmp21        [V24,T18] (  3,  1.50)   byref  ->  rdi         single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp22        [V25,T19] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp23        [V26    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp24        [V27    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V28 tmp25        [V28,T17] (  2,  2   )    long  ->  rdi         "argument with side effect"
-;  V29 tmp26        [V29,T11] (  3,  2.20)    long  ->  rdi         "argument with side effect"
-;  V30 cse0         [V30,T03] (  4,  3   )     int  ->  r14         "CSE #01: aggressive"
-;  V31 rat0         [V31,T14] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V32 rat1         [V32,T05] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V33 rat2         [V33,T15] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V34 rat3         [V34,T06] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V35 rat4         [V35,T16] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V36 rat5         [V36,T07] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V37 rat6         [V37,T08] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V38 rat7         [V38,T09] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V00 this         [V00,T01] (  4,  4   )   byref  ->  rbx         this single-def
+;  V01 TypeCtx      [V01,T00] (  5,  4.20)    long  ->  rsi         single-def
+;# 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,T03] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewArr temp" <System.__Canon[]>
+;* V05 tmp3         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V06 tmp4         [V06,T05] (  3,  4   )   byref  ->  rdi         single-def "Inlining Arg"
+;  V07 tmp5         [V07,T06] (  3,  4   )   byref  ->  rsi         single-def "Inlining Arg"
+;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V09 tmp7         [V09,T02] (  4,  6   )    long  ->  rdx         "Inlining Arg"
+;  V10 tmp8         [V10,T08] (  2,  4   )    long  ->  rdi         "argument with side effect"
+;  V11 cse0         [V11,T09] (  3,  3   )    long  ->  r15         "CSE #02: aggressive"
+;  V12 rat0         [V12,T07] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V13 rat1         [V13,T04] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M1365_IG01:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x30]
-       mov      qword ptr [rbp-0x28], rsi
-       mov      r15, rdi
-       mov      rbx, rsi
-						;; size=27 bbWeight=1 PerfScore 7.25
+       push     rax
+       lea      rbp, [rsp+0x20]
+       mov      qword ptr [rbp-0x20], rsi
+       mov      rbx, rdi
+						;; size=19 bbWeight=1 PerfScore 6.75
 G_M1365_IG02:
-       mov      r14d, dword ptr [r15+0x08]
-       test     r14d, r14d
-       je       G_M1365_IG10
-						;; size=13 bbWeight=1 PerfScore 3.25
-G_M1365_IG03:
-       mov      rdi, qword ptr [rbx+0x30]
+       mov      rdi, qword ptr [rsi+0x30]
        mov      rdi, qword ptr [rdi]
        mov      rdi, qword ptr [rdi+0x10]
        test     rdi, rdi
-       je       G_M1365_IG16
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M1365_IG04:
-       movsxd   rsi, r14d
+       je       SHORT G_M1365_IG05
+						;; size=16 bbWeight=1 PerfScore 7.25
+G_M1365_IG03:
+       movsxd   r15, dword ptr [rbx+0x08]
+       mov      rsi, r15
        call     CORINFO_HELP_NEWARR_1_PTR
-       mov      r13, rax
-       mov      rdi, qword ptr [rbx+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x18]
-       test     rdi, rdi
-       je       G_M1365_IG17
-						;; size=31 bbWeight=0.50 PerfScore 4.38
-G_M1365_IG05:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       G_M1365_IG18
-						;; size=20 bbWeight=0.50 PerfScore 3.62
-G_M1365_IG06:
-       cmp      qword ptr [r13], rax
-       jne      G_M1365_IG19
-       lea      rdi, bword ptr [r13+0x10]
-       mov      rsi, bword ptr [r15]
-       mov      edx, r14d
-       shl      rdx, 3
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
+       mov      rsi, bword ptr [rbx]
+       lea      rdx, [8*r15]
        cmp      rdx, 0x4000
-       jbe      SHORT G_M1365_IG07
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
-       jmp      SHORT G_M1365_IG08
-						;; size=47 bbWeight=0.50 PerfScore 6.38
-G_M1365_IG07:
+       ja       SHORT G_M1365_IG06
+						;; size=39 bbWeight=1 PerfScore 7.75
+G_M1365_IG04:
        call     System.Buffer:BulkMoveWithWriteBarrierInternal(byref,byref,nuint)
        mov      rax, 0xD1FFAB1E      ; global ptr
        cmp      dword ptr [rax], 0
        je       SHORT G_M1365_IG08
-       call     CORINFO_HELP_POLL_GC
-						;; size=25 bbWeight=0.50 PerfScore 2.62
-G_M1365_IG08:
-       mov      rax, r13
-						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M1365_IG09:
-       add      rsp, 16
-       pop      rbx
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M1365_IG10:
-       mov      rdi, qword ptr [rbx+0x30]
-       mov      rdi, qword ptr [rdi]
-       mov      rdi, qword ptr [rdi+0x20]
-       test     rdi, rdi
-       je       SHORT G_M1365_IG14
-						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M1365_IG11:
-       mov      rsi, qword ptr [rdi+0x18]
-       mov      rsi, qword ptr [rsi+0x10]
-       test     rsi, rsi
-       je       SHORT G_M1365_IG15
-						;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M1365_IG12:
+       jmp      SHORT G_M1365_IG07
+						;; size=22 bbWeight=0.50 PerfScore 3.12
+G_M1365_IG05:
        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]
-						;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M1365_IG13:
-       add      rsp, 16
+       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_M1365_IG03
+						;; size=30 bbWeight=0.20 PerfScore 1.20
+G_M1365_IG06:
+       mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       call     [rax]System.Buffer:BulkMoveWithWriteBarrierBatch(byref,byref,nuint)
+       jmp      SHORT G_M1365_IG08
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M1365_IG07:
+       call     CORINFO_HELP_POLL_GC
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M1365_IG08:
+       mov      rax, r14
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M1365_IG09:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M1365_IG14:
-       mov      rdi, rbx
-       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_M1365_IG11
-						;; size=30 bbWeight=0.10 PerfScore 0.60
-G_M1365_IG15:
-       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_M1365_IG12
-						;; size=27 bbWeight=0.10 PerfScore 0.58
-G_M1365_IG16:
-       mov      rdi, rbx
-       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_M1365_IG04
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M1365_IG17:
-       mov      rdi, rbx
-       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_M1365_IG05
-						;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M1365_IG18:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      G_M1365_IG06
-						;; size=27 bbWeight=0.10 PerfScore 0.55
-G_M1365_IG19:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+						;; size=11 bbWeight=1 PerfScore 3.25
 
-; Total bytes of code 422, prolog size 21, PerfScore 46.92, instruction count 105, allocated bytes for code 422 (MethodHash=0342faaa) for method System.ReadOnlySpan`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
+; Total bytes of code 159, prolog size 16, PerfScore 32.70, instruction count 44, allocated bytes for code 159 (MethodHash=0342faaa) for method System.ReadOnlySpan`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
 ; ============================================================
```

</details>



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

