Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created October 27, 2024 05:45
Show Gist options
  • Save MihuBot/c6ad82d7b8ae9ccaee560fb5e52b7acb to your computer and use it in GitHub Desktop.
Save MihuBot/c6ad82d7b8ae9ccaee560fb5e52b7acb to your computer and use it in GitHub Desktop.

Top method improvements

-130 (-37.46 % of base) - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this
 ; Assembly listing for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  6,  4.50)     ref  ->  rbx         this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-;  V01 arg1         [V01,T02] (  3,  2.50)     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+;  V00 this         [V00,T00] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
+;  V01 arg1         [V01,T03] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+;  V03 tmp1         [V03,T01] (  4,  8   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
 ;* V04 tmp2         [V04,T10] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V06 tmp4         [V06,T03] (  4,  3.50)     ref  ->  r15         single-def
-;  V07 tmp5         [V07,T07] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V06 tmp4         [V06,T05] (  2,  2   )     ref  ->  r15         single-def
+;  V07 tmp5         [V07,T06] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
 ;* V09 tmp7         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V11 tmp9         [V11,T09] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;  V12 tmp10        [V12,T08] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V13 tmp11        [V13,T06] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V14 tmp12        [V14,T04] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V10 tmp8         [V10,T07] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V11 tmp9         [V11,T11] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V12 tmp10        [V12,T04] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V14 tmp12        [V14,T08] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V15 tmp13        [V15,T02] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V16 cse0         [V16,T09] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M19286_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=18 bbWeight=0.50 PerfScore 3.00
+						;; size=18 bbWeight=1 PerfScore 6.00
 G_M19286_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [rbx+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [rbx+0x10], rsi
-						;; size=55 bbWeight=0.50 PerfScore 3.00
+						;; size=55 bbWeight=1 PerfScore 6.00
 G_M19286_IG03:
        mov      gword ptr [rbx+0x20], rsi
        mov      rsi, r14
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
-       mov      rdi, r14
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M19286_IG05
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M19286_IG12
-						;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M19286_IG04:
-       mov      rsi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
-       mov      r15, gword ptr [rsi]
-       jmp      SHORT G_M19286_IG06
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG05:
-       movsxd   rsi, eax
+       mov      esi, 1
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r15, rax
+       mov      r8d, 1
        mov      rdi, r14
-       mov      rsi, r15
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-						;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG06:
-       test     r15, r15
-       je       G_M19286_IG14
-       cmp      dword ptr [r15+0x08], 0
-       jne      SHORT G_M19286_IG09
-						;; size=16 bbWeight=1 PerfScore 5.25
-G_M19286_IG07:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M19286_IG13
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG08:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
-       mov      rsi, gword ptr [rdi]
-       jmp      SHORT G_M19286_IG10
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG09:
+       mov      rdx, r15
+       xor      esi, esi
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
-						;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG10:
        lea      rdi, bword ptr [rbx+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=10 bbWeight=1 PerfScore 1.75
-G_M19286_IG11:
+						;; size=133 bbWeight=1 PerfScore 16.50
+G_M19286_IG04:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=1 PerfScore 3.25
-G_M19286_IG12:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M19286_IG04
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M19286_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M19286_IG08
-						;; size=17 bbWeight=0 PerfScore 0.00
-G_M19286_IG14:
-       mov      edi, 2
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
-       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
-       int3     
-						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 347, prolog size 12, PerfScore 32.00, instruction count 79, allocated bytes for code 347 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 217, prolog size 12, PerfScore 31.75, instruction count 52, allocated bytes for code 217 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; ============================================================
-129 (-24.48 % of base) - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException
 ; Assembly listing for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  4,  3.50)     ref  ->  rbx         class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
-;  V01 arg1         [V01,T02] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
-;  V02 arg2         [V02,T03] (  4,  3.50)     ref  ->  r14         class-hnd single-def <System.Exception>
+;  V00 arg0         [V00,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
+;  V01 arg1         [V01,T03] (  4,  4   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
+;  V02 arg2         [V02,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Exception>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T00] (  6,  8   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
-;  V05 tmp2         [V05,T04] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
-;  V06 tmp3         [V06,T09] (  2,  2   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+;  V04 tmp1         [V04,T00] (  6, 12   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+;  V05 tmp2         [V05,T01] (  4,  8   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+;  V06 tmp3         [V06,T06] (  2,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
 ;* V07 tmp4         [V07,T13] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V09 tmp6         [V09,T05] (  4,  3.50)     ref  ->  rbx         single-def
-;  V10 tmp7         [V10,T10] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V09 tmp6         [V09,T08] (  2,  2   )     ref  ->  rbx         single-def
+;  V10 tmp7         [V10,T09] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V11 tmp8         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V13 tmp10        [V13,T07] (  3,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V14 tmp11        [V14,T12] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;  V15 tmp12        [V15,T11] (  3,  1.50)     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V16 tmp13        [V16,T08] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V17 tmp14        [V17,T06] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V13 tmp10        [V13,T10] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V14 tmp11        [V14,T14] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V15 tmp12        [V15,T07] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V16 tmp13        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V17 tmp14        [V17,T11] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V18 tmp15        [V18,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V19 cse0         [V19,T12] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
 ;
 ; Lcl frame size = 0
 
 G_M65036_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14, rdx
 						;; size=22 bbWeight=1 PerfScore 6.25
 G_M65036_IG02:
        test     rbx, rbx
-       je       G_M65036_IG18
+       je       G_M65036_IG07
        test     r15, r15
-       je       G_M65036_IG17
+       je       G_M65036_IG06
        test     r14, r14
-       je       G_M65036_IG16
-						;; size=27 bbWeight=1 PerfScore 3.75
-G_M65036_IG03:
+       je       G_M65036_IG05
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, rbx
        mov      rsi, r15
        mov      rdx, r14
        mov      rax, 0xD1FFAB1E      ; code for System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        call     [rax]System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        mov      rbx, rax
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [r13+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [r13+0x10], rsi
-						;; size=97 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG04:
+						;; size=124 bbWeight=1 PerfScore 15.50
+G_M65036_IG03:
        mov      gword ptr [r13+0x20], rsi
        mov      rsi, r15
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
-       mov      rdi, r15
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M65036_IG06
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M65036_IG13
-						;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG05:
-       mov      rsi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
-       mov      rbx, gword ptr [rsi]
-       jmp      SHORT G_M65036_IG07
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG06:
-       movsxd   rsi, eax
+       mov      esi, 1
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      rbx, rax
+       mov      r8d, 1
        mov      rdi, r15
-       mov      rsi, rbx
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-						;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG07:
-       test     rbx, rbx
-       je       G_M65036_IG15
-       cmp      dword ptr [rbx+0x08], 0
-       jne      SHORT G_M65036_IG10
-						;; size=15 bbWeight=1 PerfScore 5.25
-G_M65036_IG08:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M65036_IG14
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG09:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
-       mov      rsi, gword ptr [rdi]
-       jmp      SHORT G_M65036_IG11
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG10:
+       mov      rdx, rbx
+       xor      esi, esi
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r15
-						;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG11:
        lea      rdi, bword ptr [r13+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, r13
-						;; size=12 bbWeight=1 PerfScore 1.75
-G_M65036_IG12:
+						;; size=135 bbWeight=1 PerfScore 16.50
+G_M65036_IG04:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M65036_IG05
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M65036_IG14:
-       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M65036_IG09
-						;; size=17 bbWeight=0 PerfScore 0.00
-G_M65036_IG15:
-       mov      edi, 2
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
-       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
-       int3     
-						;; size=18 bbWeight=0 PerfScore 0.00
-G_M65036_IG16:
+G_M65036_IG05:
        mov      edi, 0x2242
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M65036_IG17:
+G_M65036_IG06:
        mov      edi, 0x2174
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M65036_IG18:
+G_M65036_IG07:
        mov      edi, 0x2238
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 527, prolog size 13, PerfScore 42.12, instruction count 116, allocated bytes for code 527 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
+; Total bytes of code 398, prolog size 13, PerfScore 41.75, instruction count 89, allocated bytes for code 398 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; ============================================================
-76 (-41.53 % of base) - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor()
 ; Assembly listing for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 loc0         [V00    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String[]>
+;* V02 tmp1         [V02,T03] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.String[]>
 ;* V03 tmp2         [V03    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V04 tmp3         [V04    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V07 tmp6         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V08 tmp7         [V08    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
-;  V09 tmp8         [V09,T00] ( 11, 21   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
+;  V09 tmp8         [V09,T00] ( 11, 22   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
 ;* V10 tmp9         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
-;  V11 tmp10        [V11,T03] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
+;  V11 tmp10        [V11,T01] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
 ;* V12 tmp11        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
 ;* V13 tmp12        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;  V14 tmp13        [V14,T02] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
-;  V15 tmp14        [V15,T05] (  3,  1.50)     int  ->  rax         single-def "Inline stloc first use temp"
-;  V16 tmp15        [V16,T04] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;* V17 tmp16        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.value (fldOffset=0x1)" P-INDEP
-;* V19 tmp18        [V19,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
-;* V20 tmp19        [V20,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.value (fldOffset=0x1)" P-INDEP
-;* V21 tmp20        [V21,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V22 tmp21        [V22,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V23 tmp22        [V23,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp23        [V24,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.value (fldOffset=0x1)" P-INDEP
-;* V25 tmp24        [V25,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V26 tmp25        [V26,T13] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.value (fldOffset=0x1)" P-INDEP
-;* V27 tmp26        [V27,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V28 tmp27        [V28,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.value (fldOffset=0x1)" P-INDEP
-;* V29 tmp28        [V29,T16] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V30 tmp29        [V30,T17] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V31 tmp30        [V31,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V32 tmp31        [V32,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.value (fldOffset=0x1)" P-INDEP
+;  V14 tmp13        [V14,T02] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
+;* V15 tmp14        [V15,T04] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V16 tmp15        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V17 tmp16        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp18        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.value (fldOffset=0x1)" P-INDEP
+;* V20 tmp19        [V20,T05] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V21 tmp20        [V21,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.value (fldOffset=0x1)" P-INDEP
+;* V22 tmp21        [V22,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V23 tmp22        [V23,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V24 tmp23        [V24,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V25 tmp24        [V25,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.value (fldOffset=0x1)" P-INDEP
+;* V26 tmp25        [V26,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V27 tmp26        [V27,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.value (fldOffset=0x1)" P-INDEP
+;* V28 tmp27        [V28,T13] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V29 tmp28        [V29,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.value (fldOffset=0x1)" P-INDEP
+;* V30 tmp29        [V30,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V31 tmp30        [V31,T16] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V32 tmp31        [V32,T17] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V33 tmp32        [V33,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.value (fldOffset=0x1)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M20015_IG01:
        push     rbp
-       push     r15
-       push     r14
        push     rbx
        push     rax
-       lea      rbp, [rsp+0x20]
-						;; size=12 bbWeight=0.50 PerfScore 2.75
+       lea      rbp, [rsp+0x10]
+						;; size=8 bbWeight=1 PerfScore 3.50
 G_M20015_IG02:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rbx, gword ptr [rdi]
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyModel.CompilationOptions
        call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       mov      rdi, rbx
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M20015_IG03
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      rsi, gword ptr [rax]
-       jmp      SHORT G_M20015_IG04
-						;; size=58 bbWeight=0.50 PerfScore 5.25
-G_M20015_IG03:
-       movsxd   rsi, eax
-       mov      rdi, 0xD1FFAB1E      ; System.String[]
-       call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r14, rax
-       mov      rdi, rbx
-       mov      rsi, r14
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-       mov      rsi, r14
-						;; size=37 bbWeight=0.50 PerfScore 1.88
-G_M20015_IG04:
-       lea      rdi, bword ptr [r15+0x08]
+       mov      rbx, rax
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        xor      rdi, rdi
-       mov      gword ptr [r15+0x10], rdi
-						;; size=15 bbWeight=1 PerfScore 2.75
+       mov      gword ptr [rbx+0x10], rdi
+						;; size=46 bbWeight=1 PerfScore 6.50
+G_M20015_IG03:
+       mov      gword ptr [rbx+0x18], rdi
+						;; size=4 bbWeight=1 PerfScore 1.00
+G_M20015_IG04:
+       mov      dword ptr [rbx+0x30], edi
+       mov      word  ptr [rbx+0x34], 0
+						;; size=9 bbWeight=1 PerfScore 2.00
 G_M20015_IG05:
-       mov      gword ptr [r15+0x18], rdi
+       mov      gword ptr [rbx+0x20], rdi
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M20015_IG06:
-       mov      dword ptr [r15+0x30], edi
-       mov      word  ptr [r15+0x34], 0
-						;; size=11 bbWeight=1 PerfScore 2.00
+       mov      dword ptr [rbx+0x36], edi
+						;; size=3 bbWeight=1 PerfScore 1.00
 G_M20015_IG07:
-       mov      gword ptr [r15+0x20], rdi
+       mov      gword ptr [rbx+0x28], rdi
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M20015_IG08:
-       mov      dword ptr [r15+0x36], edi
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG09:
-       mov      gword ptr [r15+0x28], rdi
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG10:
-       mov      dword ptr [r15+0x3A], edi
+       mov      dword ptr [rbx+0x3A], edi
        mov      rdi, 0xD1FFAB1E      ; data for Microsoft.Extensions.DependencyModel.CompilationOptions:<Default>k__BackingField
-       mov      rsi, r15
+       mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=23 bbWeight=1 PerfScore 2.75
-G_M20015_IG11:
+						;; size=22 bbWeight=1 PerfScore 2.75
+G_M20015_IG09:
        add      rsp, 8
        pop      rbx
-       pop      r14
-       pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
+						;; size=7 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 183, prolog size 12, PerfScore 24.62, instruction count 48, allocated bytes for code 183 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
+; Total bytes of code 107, prolog size 8, PerfScore 21.00, instruction count 28, allocated bytes for code 107 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
 ; ============================================================
-54 (-4.64 % of base) - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this
 ; Assembly listing for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 29 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 31 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T05] (  4,  3   )   byref  ->  r15         this single-def
 ;  V01 arg1         [V01,T03] (  5,  3.75)     ref  ->  rsi         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.ICSharpBinder>
 ;  V02 arg2         [V02,T07] (  3,  2.50)     ref  ->  r13         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.ArgumentObject[]>
 ;  V03 arg3         [V03,T02] (  6,  4   )     ref  ->  rbx         class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
 ;  V04 arg4         [V04,T08] (  3,  2.50)     ref  ->  r12         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]>
 ;  V05 arg5         [V05,T06] (  4,  3   )   byref  ->  r14         single-def
 ;  V06 loc0         [V06,T04] ( 11,  5.50)     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder>
 ;* V07 loc1         [V07    ] (  0,  0   )     int  ->  zero-ref   
 ;* V08 loc2         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
-;  V09 loc3         [V09,T34] (  2,  1   )     ref  ->  rsi         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
+;  V09 loc3         [V09,T32] (  2,  1   )     ref  ->  rsi         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
 ;  V10 loc4         [V10,T27] (  3,  1.50)     ref  ->  r15         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType>
 ;* V11 loc5         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.BindingContext>
-;  V12 loc6         [V12,T35] (  2,  1   )     ref  ->  r15         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
+;  V12 loc6         [V12,T33] (  2,  1   )     ref  ->  r15         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
 ;  V13 loc7         [V13,T19] (  4,  2   )     ref  ->  r12         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-;  V14 loc8         [V14,T36] (  2,  1   )     ref  ->  r13         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
+;  V14 loc8         [V14,T34] (  2,  1   )     ref  ->  r13         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
 ;  V15 loc9         [V15,T28] (  3,  1.50)     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def <System.Dynamic.DynamicMetaObject[]>
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder>
-;  V18 tmp2         [V18,T12] (  3,  3   )     ref  ->  rdi         class-hnd single-def "dup spill" <System.Type[]>
+;  V18 tmp2         [V18,T11] (  3,  3   )     ref  ->  rdi         class-hnd single-def "dup spill" <System.Type[]>
 ;* V19 tmp3         [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V20 tmp4         [V20,T31] (  3,  1.50)     int  ->  [rbp-0x2C] 
-;  V21 tmp5         [V21,T13] (  3,  3   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
+;  V20 tmp4         [V20,T30] (  3,  1.50)     int  ->  [rbp-0x2C] 
+;  V21 tmp5         [V21,T12] (  3,  3   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
 ;  V22 tmp6         [V22,T20] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.String>
 ;* V23 tmp7         [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-;  V24 tmp8         [V24,T14] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V25 tmp9         [V25,T09] (  4,  4   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "dup spill" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;  V24 tmp8         [V24,T13] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V25 tmp9         [V25,T14] (  3,  3   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "dup spill" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
 ;  V26 tmp10        [V26,T15] (  3,  3   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <System.Type>
 ;  V27 tmp11        [V27,T21] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Strict ordering of exceptions for Array store" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
 ;  V28 tmp12        [V28,T00] (  7,  7   )     ref  ->  [rbp-0x80]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
 ;* V29 tmp13        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Strict ordering of exceptions for Array store" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
 ;  V30 tmp14        [V30,T26] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
 ;  V31 tmp15        [V31,T01] (  7,  7   )     ref  ->  [rbp-0x88]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
 ;* V32 tmp16        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Dynamic.DynamicMetaObject>
 ;* V33 tmp17        [V33    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp18        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.Symbol>
 ;  V35 tmp19        [V35    ] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
-;  V36 tmp20        [V36,T37] (  2,  1   )     ref  ->  rsi         class-hnd single-def "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-;  V37 tmp21        [V37,T38] (  2,  1   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;  V36 tmp20        [V36,T35] (  2,  1   )     ref  ->  rsi         class-hnd single-def "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;  V37 tmp21        [V37,T36] (  2,  1   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
 ;* V38 tmp22        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
 ;* V39 tmp23        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-;  V40 tmp24        [V40,T29] (  3,  1.50)     ref  ->  rsi         class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-;  V41 tmp25        [V41,T32] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;  V42 tmp26        [V42,T30] (  3,  1.50)     ref  ->  [rbp-0x90]  class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-;  V43 tmp27        [V43,T10] (  4,  4   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
-;  V44 tmp28        [V44    ] (  3,  3   )     ref  ->  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
-;  V45 tmp29        [V45,T16] (  3,  3   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Type>
-;  V46 tmp30        [V46    ] (  3,  3   )  struct (16) [rbp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
-;  V47 tmp31        [V47,T17] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Dynamic.CallInfo>
-;  V48 tmp32        [V48,T39] (  2,  1   )     ref  ->  rdx         single-def "field V11.<ContextForMemberLookup>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V49 tmp33        [V49    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11.<Checked>k__BackingField (fldOffset=0x8)" P-INDEP
-;  V50 tmp34        [V50,T18] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V51 tmp35        [V51,T22] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V52 tmp36        [V52,T23] (  2,  2   )     ref  ->  rbx         single-def "argument with side effect"
-;  V53 tmp37        [V53,T24] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V54 cse0         [V54,T33] (  3,  1.50)     int  ->  r12         "CSE #03: moderate"
-;  V55 rat0         [V55,T25] (  2,  2   )     ref  ->  rsi         "Spilling to split statement for tree"
-;  V56 rat1         [V56,T11] (  5,  3.75)     ref  ->  rsi         "replacement local"
-;  V57 rat2         [V57,T40] (  2,  1   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V40 tmp24        [V40,T37] (  2,  1   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;* V41 tmp25        [V41,T40] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V42 tmp26        [V42,T29] (  3,  1.50)     ref  ->  [rbp-0x90]  class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;* V43 tmp27        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;  V44 tmp28        [V44,T09] (  4,  4   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
+;  V45 tmp29        [V45    ] (  3,  3   )     ref  ->  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
+;  V46 tmp30        [V46,T16] (  3,  3   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Type>
+;  V47 tmp31        [V47    ] (  3,  3   )  struct (16) [rbp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
+;  V48 tmp32        [V48,T17] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Dynamic.CallInfo>
+;  V49 tmp33        [V49,T38] (  2,  1   )     ref  ->  rdx         single-def "field V11.<ContextForMemberLookup>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V50 tmp34        [V50    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11.<Checked>k__BackingField (fldOffset=0x8)" P-INDEP
+;  V51 tmp35        [V51,T18] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V52 tmp36        [V52,T22] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V53 tmp37        [V53,T23] (  2,  2   )     ref  ->  rbx         single-def "argument with side effect"
+;  V54 tmp38        [V54,T24] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;  V55 cse0         [V55,T31] (  3,  1.50)     int  ->  r12         "CSE #03: moderate"
+;  V56 rat0         [V56,T25] (  2,  2   )     ref  ->  rsi         "Spilling to split statement for tree"
+;  V57 rat1         [V57,T10] (  5,  3.75)     ref  ->  rsi         "replacement local"
+;  V58 rat2         [V58,T39] (  2,  1   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 120
 
 G_M27258_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 120
        lea      rbp, [rsp+0xA0]
        xor      eax, eax
        mov      qword ptr [rbp-0x58], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x50], ymm8
        mov      r15, rdi
        mov      r13, rdx
        mov      rbx, rcx
        mov      r12, r8
        mov      r14, r9
 						;; size=53 bbWeight=1 PerfScore 11.58
 G_M27258_IG02:
        test     rsi, rsi
-       je       G_M27258_IG17
+       je       G_M27258_IG15
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M27258_IG03:
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder
        cmp      qword ptr [rsi], rdi
-       jne      G_M27258_IG17
+       jne      G_M27258_IG15
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M27258_IG04:
        mov      rax, rsi
        mov      gword ptr [rbp-0x60], rax
        mov      rdi, gword ptr [rax+0x30]
        test     rdi, rdi
        je       SHORT G_M27258_IG05
        mov      ecx, dword ptr [rdi+0x08]
        mov      dword ptr [rbp-0x2C], ecx
        jmp      SHORT G_M27258_IG06
 						;; size=24 bbWeight=0.50 PerfScore 4.75
 G_M27258_IG05:
        xor      ecx, ecx
        mov      dword ptr [rbp-0x2C], ecx
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M27258_IG06:
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x70], rax
        mov      rdi, rax
        mov      rcx, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:.ctor():this
        call     [rcx]Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:.ctor():this
        mov      rdi, r15
        mov      rsi, gword ptr [rbp-0x60]
        mov      rdx, r13
        mov      rcx, r12
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateCallingObjectForCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this
        call     [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateCallingObjectForCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this
        mov      rsi, rax
        mov      r13, gword ptr [rbp-0x60]
        mov      rdi, gword ptr [r13+0x10]
        mov      rdx, gword ptr [r15]
        mov      dword ptr [rsp], 1
        test     byte  ptr [r13+0x40], 2
        setne    r9b
        movzx    r9, r9b
        mov      ecx, dword ptr [rbp-0x2C]
        mov      r8, gword ptr [rbp-0x70]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.SymbolTable:LookupMember(System.String,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol,int,Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup,ubyte,ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType
        call     [rax]Microsoft.CSharp.RuntimeBinder.SymbolTable:LookupMember(System.String,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol,int,Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup,ubyte,ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType
        mov      r15, rax
        mov      rdi, r15
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType:op_Equality(Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType,Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType):ubyte
        call     [rax]Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType:op_Equality(Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType,Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType):ubyte
        test     eax, eax
-       jne      G_M27258_IG17
+       jne      G_M27258_IG15
        mov      rdi, gword ptr [r15+0x10]
        cmp      dword ptr [rdi+0x28], 5
-       je       G_M27258_IG17
+       je       G_M27258_IG15
        mov      r15, gword ptr [r13+0x10]
        mov      r12, gword ptr [r13+0x28]
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x78], rax
        mov      rdi, gword ptr [r13+0x38]
        cmp      dword ptr [rdi+0x08], 0
-       jbe      G_M27258_IG23
+       jbe      G_M27258_IG20
        mov      rsi, gword ptr [rdi+0x10]
        lea      rdi, bword ptr [rax+0x10]
 						;; size=208 bbWeight=0.50 PerfScore 26.38
 G_M27258_IG07:
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x80], rax
        test     r15, r15
-       je       G_M27258_IG22
+       je       G_M27258_IG19
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      r15, gword ptr [rbp-0x80]
        mov      word  ptr [r15+0x18], 0
-       mov      rdi, gword ptr [rbp-0x78]
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M27258_IG09
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M27258_IG19
-						;; size=88 bbWeight=0.50 PerfScore 7.88
-G_M27258_IG08:
-       mov      rsi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]:Value
-       mov      rsi, gword ptr [rsi]
-       jmp      SHORT G_M27258_IG10
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M27258_IG09:
-       movsxd   rsi, eax
+       mov      esi, 1
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      rsi, rax
        mov      gword ptr [rbp-0x90], rsi
+       mov      r8d, 1
        mov      rdi, gword ptr [rbp-0x78]
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
+       mov      rdx, rsi
+       xor      esi, esi
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rsi, gword ptr [rbp-0x90]
-						;; size=46 bbWeight=0.50 PerfScore 3.00
-G_M27258_IG10:
        lea      rdi, bword ptr [r15+0x20]
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r15+0x28]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x40], xmm0
        lea      rdi, [rbp-0x40]
        mov      rsi, r12
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
        call     [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
        lea      rdi, bword ptr [r15+0x30]
        lea      rsi, bword ptr [rbp-0x40]
        call     CORINFO_HELP_ASSIGN_BYREF
        movsq    
        mov      rsi, r15
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder](Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder):Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
+						;; size=211 bbWeight=0.50 PerfScore 14.92
+G_M27258_IG08:
        call     [rax]Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
        mov      r15, rax
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder:ArgumentInfoArray():Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]:this
        call     [rax]Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder:ArgumentInfoArray():Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]:this
        mov      r12, rax
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo
        call     CORINFO_HELP_NEWSFAST
        xor      edi, edi
        mov      dword ptr [rax+0x10], edi
-						;; size=132 bbWeight=0.50 PerfScore 11.04
-G_M27258_IG11:
+						;; size=43 bbWeight=0.50 PerfScore 4.75
+G_M27258_IG09:
        mov      gword ptr [rax+0x08], rdi
        cmp      dword ptr [r12+0x08], 0
-       jbe      G_M27258_IG23
+       jbe      G_M27258_IG20
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      eax, dword ptr [r13+0x40]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x88], rax
        mov      r13, gword ptr [r13+0x28]
        mov      gword ptr [rbp-0x48], r12
        lea      rdi, [rbp-0x48]
        mov      esi, 1
        mov      rcx, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.BinderHelper:CreateCallInfo(byref,int):System.Dynamic.CallInfo
        call     [rcx]Microsoft.CSharp.RuntimeBinder.BinderHelper:CreateCallInfo(byref,int):System.Dynamic.CallInfo
        test     rax, rax
-       je       G_M27258_IG21
+       je       G_M27258_IG18
        mov      r12, gword ptr [rbp-0x88]
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      edi, dword ptr [rbp-0x30]
        mov      dword ptr [r12+0x28], edi
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
-       je       SHORT G_M27258_IG14
+       je       SHORT G_M27258_IG12
 						;; size=146 bbWeight=0.50 PerfScore 14.50
-G_M27258_IG12:
+G_M27258_IG10:
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
        cmp      qword ptr [rsi], rdi
-       je       SHORT G_M27258_IG14
+       je       SHORT G_M27258_IG12
 						;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M27258_IG13:
+G_M27258_IG11:
        xor      rsi, rsi
 						;; size=2 bbWeight=0.12 PerfScore 0.03
-G_M27258_IG14:
+G_M27258_IG12:
        lea      rdi, bword ptr [r12+0x18]
        call     CORINFO_HELP_ASSIGN_REF
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x58], xmm0
        lea      rdi, [rbp-0x58]
        mov      rsi, r13
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
        call     [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
        lea      rdi, bword ptr [r12+0x30]
        lea      rsi, bword ptr [rbp-0x58]
        call     CORINFO_HELP_ASSIGN_BYREF
        movsq    
        mov      rsi, r12
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder](Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder):Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
        call     [rax]Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
        mov      r13, rax
        mov      r12d, dword ptr [rbx+0x08]
        dec      r12d
        movsxd   rsi, r12d
        mov      rdi, 0xD1FFAB1E      ; System.Dynamic.DynamicMetaObject[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x68], rax
        mov      r8d, r12d
        mov      rdi, rbx
        mov      rdx, rax
        mov      esi, 1
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
        cmp      dword ptr [rbx+0x08], 0
-       jbe      G_M27258_IG23
+       jbe      G_M27258_IG20
        mov      rbx, gword ptr [rbx+0x10]
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M27258_IG20
-						;; size=175 bbWeight=0.50 PerfScore 16.79
-G_M27258_IG15:
+       je       SHORT G_M27258_IG17
+						;; size=171 bbWeight=0.50 PerfScore 16.79
+G_M27258_IG13:
        mov      rdx, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Dynamic.DynamicMetaObject]:Value
        mov      rdx, gword ptr [rdx]
        mov      rsi, rbx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
        mov      rsi, rax
        mov      rdi, r13
        mov      rdx, gword ptr [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
        mov      rsi, rax
        mov      rdi, r14
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        mov      eax, 1
 						;; size=73 bbWeight=0.50 PerfScore 9.25
+G_M27258_IG14:
+       add      rsp, 120
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M27258_IG15:
+       xor      rax, rax
+       mov      gword ptr [r14], rax
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M27258_IG16:
        add      rsp, 120
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M27258_IG17:
-       xor      rax, rax
-       mov      gword ptr [r14], rax
-						;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M27258_IG18:
-       add      rsp, 120
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M27258_IG19:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M27258_IG08
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M27258_IG20:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Dynamic.DynamicMetaObject]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M27258_IG15
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M27258_IG21:
+       jmp      SHORT G_M27258_IG13
+						;; size=17 bbWeight=0 PerfScore 0.00
+G_M27258_IG18:
        mov      edi, 0x49AD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M27258_IG22:
+G_M27258_IG19:
        mov      edi, 0x477F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M27258_IG23:
+G_M27258_IG20:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1163, prolog size 38, PerfScore 116.20, instruction count 265, allocated bytes for code 1163 (MethodHash=1ff29585) for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
+; Total bytes of code 1109, prolog size 38, PerfScore 111.82, instruction count 256, allocated bytes for code 1109 (MethodHash=1ff29585) for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
 ; ============================================================
-16 (-1.36 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 30 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T10] (  4,  3   )     ref  ->  r14         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;  V01 arg1         [V01,T01] ( 11,  7.25)     ref  ->  rbx         class-hnd single-def <System.Linq.Expressions.Expression>
 ;  V02 arg2         [V02,T05] (  5,  3.50)     int  ->  r15         single-def
 ;  V03 loc0         [V03,T06] (  9,  5   )     ref  ->  r13         class-hnd <System.Linq.Expressions.InvocationExpression>
 ;  V04 loc1         [V04,T11] (  8,  4   )     ref  ->  r14         class-hnd <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;  V05 loc2         [V05,T12] (  6,  4   )     ref  ->  r12         class-hnd <System.Linq.Expressions.LambdaExpression>
 ;* V06 loc3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V09 tmp1         [V09,T04] (  6,  6   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
-;  V10 tmp2         [V10,T14] (  6,  3   )     ref  ->  r15         single-def
+;  V10 tmp2         [V10,T19] (  5,  2.50)     ref  ->  r15         single-def
 ;  V11 tmp3         [V11,T23] (  2,  2   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-;  V12 tmp4         [V12,T15] (  3,  3   )     ref  ->  rbx         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-;  V13 tmp5         [V13,T07] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
+;  V12 tmp4         [V12,T16] (  3,  3   )     ref  ->  r14         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+;  V13 tmp5         [V13,T07] (  5,  5   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
 ;  V14 tmp6         [V14,T33] (  3,  1.50)     ref  ->  r15        
-;  V15 tmp7         [V15,T34] (  3,  1.50)     ref  ->  r14        
+;  V15 tmp7         [V15,T34] (  3,  1.50)     ref  ->  rbx        
 ;* V16 tmp8         [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
-;  V17 tmp9         [V17,T00] ( 12, 12   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V17 tmp9         [V17,T00] ( 11, 11   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;  V18 tmp10        [V18,T08] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller>
-;  V19 tmp11        [V19,T16] (  3,  3   )     ref  ->  r15         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-;  V20 tmp12        [V20,T09] (  5,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
+;  V19 tmp11        [V19,T17] (  3,  3   )     ref  ->  r15         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+;  V20 tmp12        [V20,T09] (  5,  5   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
 ;* V21 tmp13        [V21    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V22 tmp14        [V22,T30] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
-;  V23 tmp15        [V23,T31] (  2,  2   )     int  ->  r15         "Inlining Arg"
-;  V24 tmp16        [V24,T13] (  8,  3   )     int  ->  r15         "Inline stloc first use temp"
-;  V25 tmp17        [V25,T35] (  3,  1.50)     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V26 tmp18        [V26,T24] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V27 tmp19        [V27,T21] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
+;  V23 tmp15        [V23,T31] (  2,  2   )     int  ->  rax         "Inlining Arg"
+;  V24 tmp16        [V24,T13] (  8,  3   )     int  ->  [rbp-0x30]  spill-single-def "Inline stloc first use temp"
+;  V25 tmp17        [V25,T35] (  3,  1.50)     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+;  V26 tmp18        [V26,T24] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V27 tmp19        [V27,T21] (  3,  2   )     int  ->  [rbp-0x34]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V28 tmp20        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V29 tmp21        [V29,T25] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Type>
 ;* V30 tmp22        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V31 tmp23        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
-;  V32 tmp24        [V32,T32] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "Inlining Arg"
-;* V33 tmp25        [V33,T46] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V34 tmp26        [V34,T03] (  8,  6   )     int  ->  rbx         "Inlining Arg"
+;  V32 tmp24        [V32,T32] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "Inlining Arg"
+;* V33 tmp25        [V33,T44] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V34 tmp26        [V34,T03] (  8,  6   )     int  ->  r14         "Inlining Arg"
 ;* V35 tmp27        [V35    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V36 tmp28        [V36,T36] (  3,  1.50)     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V37 tmp29        [V37,T26] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V38 tmp30        [V38,T22] (  3,  2   )     int  ->  r14         ld-addr-op "Inlining Arg"
+;  V36 tmp28        [V36,T36] (  3,  1.50)     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+;  V37 tmp29        [V37,T26] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V38 tmp30        [V38,T22] (  3,  2   )     int  ->  [rbp-0x3C]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V39 tmp31        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V40 tmp32        [V40,T27] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Type>
-;  V41 tmp33        [V41,T40] (  2,  1   )     ref  ->  rax         "field V07.Node (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T43] (  2,  1   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
-;  V43 tmp35        [V43,T41] (  2,  1   )     ref  ->  rax         single-def "field V16.Node (fldOffset=0x0)" P-INDEP
-;  V44 tmp36        [V44,T44] (  2,  1   )     int  ->  rdx         "field V16.Action (fldOffset=0x8)" P-INDEP
-;  V45 tmp37        [V45,T42] (  2,  1   )     ref  ->  rax         single-def "field V21.Node (fldOffset=0x0)" P-INDEP
-;  V46 tmp38        [V46,T45] (  2,  1   )     int  ->  rdx         "field V21.Action (fldOffset=0x8)" P-INDEP
+;  V41 tmp33        [V41,T38] (  2,  1   )     ref  ->  rax         "field V07.Node (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T41] (  2,  1   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
+;  V43 tmp35        [V43,T39] (  2,  1   )     ref  ->  rax         single-def "field V16.Node (fldOffset=0x0)" P-INDEP
+;  V44 tmp36        [V44,T42] (  2,  1   )     int  ->  rdx         "field V16.Action (fldOffset=0x8)" P-INDEP
+;  V45 tmp37        [V45,T40] (  2,  1   )     ref  ->  rax         single-def "field V21.Node (fldOffset=0x0)" P-INDEP
+;  V46 tmp38        [V46,T43] (  2,  1   )     int  ->  rdx         "field V21.Action (fldOffset=0x8)" P-INDEP
 ;  V47 tmp39        [V47,T28] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V48 tmp40        [V48,T17] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V49 tmp41        [V49,T47] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V50 tmp42        [V50,T48] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V51 tmp43        [V51,T39] (  3,  1.50)  struct (16) [rbp-0x48]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V48 tmp40        [V48,T18] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V49 tmp41        [V49,T45] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V50 tmp42        [V50,T46] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V51 tmp43        [V51,T37] (  3,  1.50)  struct (16) [rbp-0x50]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V52 tmp44        [V52,T29] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V53 tmp45        [V53,T49] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V54 tmp46        [V54,T50] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V55 cse0         [V55,T19] (  4,  2   )     ref  ->  [rbp-0x68]  spill-single-def "CSE #02: moderate"
-;  V56 cse1         [V56,T20] (  4,  2   )     ref  ->  r14         "CSE #09: moderate"
-;  V57 cse2         [V57,T37] (  3,  1.50)     ref  ->  rdi         "CSE #01: conservative"
-;  V58 cse3         [V58,T38] (  3,  1.50)     ref  ->  rdi         "CSE #08: conservative"
-;  V59 rat0         [V59,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
-;  V60 rat1         [V60,T18] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
+;  V53 tmp45        [V53,T47] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V54 tmp46        [V54,T48] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V55 cse0         [V55,T14] (  6,  3   )     ref  ->  r15         "CSE #01: moderate"
+;  V56 cse1         [V56,T15] (  6,  3   )     ref  ->  rbx         "CSE #07: moderate"
+;  V57 rat0         [V57,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
+;  V58 rat1         [V58,T20] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 72
 
 G_M46656_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        xor      eax, eax
-       mov      qword ptr [rbp-0x48], rax
+       mov      qword ptr [rbp-0x50], rax
        mov      r14, rdi
        mov      rbx, rsi
        mov      r15d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M46656_IG02:
        mov      r13, rbx
        test     r13, r13
        je       SHORT G_M46656_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M46656_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.InvocationExpression
        cmp      qword ptr [r13], rdi
        je       SHORT G_M46656_IG05
 						;; size=16 bbWeight=0.50 PerfScore 2.12
 G_M46656_IG04:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r13, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M46656_IG05:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.InvocationExpression:get_LambdaOperand():System.Linq.Expressions.LambdaExpression:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Linq.Expressions.InvocationExpression:get_LambdaOperand():System.Linq.Expressions.LambdaExpression:this
        mov      r12, rax
        test     r12, r12
        jne      G_M46656_IG13
 						;; size=29 bbWeight=1 PerfScore 8.00
 G_M46656_IG06:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x48]
        call     [rax+0x20]System.Linq.Expressions.InvocationExpression:get_ArgumentCount():int:this
        inc      eax
-       mov      dword ptr [rbp-0x34], eax
+       mov      dword ptr [rbp-0x38], eax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r12+0x34], r15d
-       movsxd   rsi, dword ptr [rbp-0x34]
+       movsxd   rsi, dword ptr [rbp-0x38]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      r14, r12
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        mov      rdi, r14
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        cmp      dword ptr [r14+0x30], 3
        jne      SHORT G_M46656_IG07
        mov      rdi, gword ptr [rbx+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
        call     [rax]System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
        mov      rsi, rax
        mov      rdi, r14
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
 						;; size=172 bbWeight=0.50 PerfScore 20.75
 G_M46656_IG07:
        mov      r15, r14
        cmp      dword ptr [r14+0x30], 0
        je       G_M46656_IG10
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rdi, gword ptr [r15+0x10]
        cmp      dword ptr [rdi+0x08], 0
-       jbe      G_M46656_IG24
+       jbe      G_M46656_IG23
        mov      r12, gword ptr [rdi+0x10]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r15+0x10]
-       mov      ebx, dword ptr [rdi+0x08]
-       dec      ebx
-       js       G_M46656_IG21
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       lea      r14d, [rax-0x01]
-       cmp      r14d, ebx
+       mov      rbx, gword ptr [r15+0x10]
+       mov      r14d, dword ptr [rbx+0x08]
+       dec      r14d
+       mov      rsi, rbx
+       test     r14d, r14d
        jl       G_M46656_IG20
-       mov      r14, gword ptr [r15+0x10]
-       cmp      dword ptr [r14+0x08], ebx
+       mov      eax, dword ptr [rsi+0x08]
+       dec      eax
+       mov      dword ptr [rbp-0x3C], eax
+       cmp      eax, r14d
+       jl       G_M46656_IG19
+       cmp      dword ptr [rbx+0x08], r14d
        je       SHORT G_M46656_IG08
-       movsxd   rsi, ebx
+       movsxd   rsi, r14d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      gword ptr [rbp-0x60], rax
-       mov      rdi, r14
-       mov      r8d, ebx
+       mov      gword ptr [rbp-0x68], rax
+       mov      rdi, rbx
+       mov      r8d, r14d
        mov      rdx, rax
        mov      esi, 1
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      rbx, gword ptr [rbp-0x60]
+       mov      r14, gword ptr [rbp-0x68]
        jmp      SHORT G_M46656_IG09
-						;; size=164 bbWeight=0.50 PerfScore 23.12
+						;; size=165 bbWeight=0.50 PerfScore 21.75
 G_M46656_IG08:
-       mov      rbx, r14
+       mov      r14, rbx
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46656_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.InvocationExpressionN
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      rbx, rax
        mov      r13, gword ptr [r13+0x08]
-       lea      rdi, bword ptr [r14+0x10]
+       lea      rdi, bword ptr [rbx+0x10]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r14+0x08]
+       lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r14+0x18]
-       mov      rsi, rbx
+       lea      rdi, bword ptr [rbx+0x18]
+       mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        jmp      SHORT G_M46656_IG11
 						;; size=60 bbWeight=0.50 PerfScore 5.38
 G_M46656_IG10:
        mov      r15, r12
-       mov      r14, rbx
-						;; size=6 bbWeight=0.50 PerfScore 0.25
+						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46656_IG11:
        mov      rdi, r15
-       mov      rsi, r14
+       mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
-       mov      gword ptr [rbp-0x48], rax
-       mov      qword ptr [rbp-0x40], rdx
-       mov      rax, gword ptr [rbp-0x48]
-       mov      edx, dword ptr [rbp-0x40]
+       mov      gword ptr [rbp-0x50], rax
+       mov      qword ptr [rbp-0x48], rdx
+       mov      rax, gword ptr [rbp-0x50]
+       mov      edx, dword ptr [rbp-0x48]
 						;; size=33 bbWeight=0.50 PerfScore 3.88
 G_M46656_IG12:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M46656_IG13:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rdi, r13
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax+0x20]System.Linq.Expressions.InvocationExpression:get_ArgumentCount():int:this
        mov      dword ptr [rbp-0x2C], eax
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [rbx+0x34], r15d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [rbx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, rbx
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        cmp      dword ptr [rbx+0x30], 3
        jne      SHORT G_M46656_IG14
        mov      rdi, gword ptr [r13+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
        call     [rax]System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
        mov      rsi, rax
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
 						;; size=142 bbWeight=0.50 PerfScore 17.75
 G_M46656_IG14:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, r14
        mov      esi, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller:.ctor(int):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller:.ctor(int):this
        mov      rdi, r12
        mov      rsi, r14
        mov      rax, qword ptr [r12]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x18]System.Linq.Expressions.LambdaExpression:Accept(System.Linq.Expressions.Compiler.StackSpiller):System.Linq.Expressions.LambdaExpression:this
        mov      r12, rax
        cmp      dword ptr [rbx+0x30], 0
        jne      SHORT G_M46656_IG15
        cmp      dword ptr [r14+0x1C], 0
-       je       G_M46656_IG18
+       je       G_M46656_IG17
 						;; size=73 bbWeight=0.50 PerfScore 10.50
 G_M46656_IG15:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [rbx+0x10]
-       mov      r15d, dword ptr [rdi+0x08]
-       dec      r15d
-       inc      r15d
-       js       G_M46656_IG23
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
+       mov      r15, gword ptr [rbx+0x10]
+       mov      eax, dword ptr [r15+0x08]
+       dec      eax
+       inc      eax
        mov      dword ptr [rbp-0x30], eax
-       cmp      eax, r15d
+       mov      rsi, r15
+       test     eax, eax
        jl       G_M46656_IG22
-       mov      rax, gword ptr [rbx+0x10]
-       mov      gword ptr [rbp-0x68], rax
-       cmp      dword ptr [rax+0x08], r15d
+       mov      ecx, dword ptr [rsi+0x08]
+       mov      dword ptr [rbp-0x34], ecx
+       cmp      ecx, eax
+       jl       G_M46656_IG21
+       cmp      dword ptr [r15+0x08], eax
        je       SHORT G_M46656_IG16
-       movsxd   rsi, r15d
+       movsxd   rsi, eax
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      gword ptr [rbp-0x58], rax
-       mov      rdi, gword ptr [rbp-0x68]
-       mov      r8d, r15d
+       mov      gword ptr [rbp-0x60], rax
+       mov      rdi, r15
+       mov      r8d, dword ptr [rbp-0x30]
        mov      rdx, rax
        xor      esi, esi
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r15, gword ptr [rbp-0x58]
-       jmp      SHORT G_M46656_IG17
-						;; size=123 bbWeight=0.50 PerfScore 16.50
+       mov      r15, gword ptr [rbp-0x60]
+						;; size=114 bbWeight=0.50 PerfScore 13.75
 G_M46656_IG16:
-       mov      rax, gword ptr [rbp-0x68]
-       mov      r15, rax
-						;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M46656_IG17:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.InvocationExpressionN
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x50], rax
+       mov      gword ptr [rbp-0x58], rax
        mov      r13, gword ptr [r13+0x08]
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r12, gword ptr [rbp-0x50]
+       mov      r12, gword ptr [rbp-0x58]
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      r13, r12
 						;; size=68 bbWeight=0.50 PerfScore 5.38
-G_M46656_IG18:
+G_M46656_IG17:
        mov      rdi, rbx
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        or       edx, dword ptr [r14+0x1C]
 						;; size=22 bbWeight=0.50 PerfScore 3.38
-G_M46656_IG19:
+G_M46656_IG18:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46656_IG20:
+G_M46656_IG19:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, ebx
-       mov      edi, r14d
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
-       int3     
-						;; size=41 bbWeight=0 PerfScore 0.00
-G_M46656_IG21:
-       mov      edi, 0x4809
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      edi, ebx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       int3     
-						;; size=38 bbWeight=0 PerfScore 0.00
-G_M46656_IG22:
-       mov      edi, 0x47FD
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      esi, r15d
-       mov      edi, dword ptr [rbp-0x30]
+       mov      esi, r14d
+       mov      edi, dword ptr [rbp-0x3C]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
-G_M46656_IG23:
+G_M46656_IG20:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r15d
+       mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
-G_M46656_IG24:
+G_M46656_IG21:
+       mov      edi, 0x47FD
+       mov      rsi, 0xD1FFAB1E
+       call     CORINFO_HELP_STRCNS
+       mov      rdx, rax
+       mov      esi, dword ptr [rbp-0x30]
+       mov      edi, dword ptr [rbp-0x34]
+       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
+       call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
+       int3     
+						;; size=42 bbWeight=0 PerfScore 0.00
+G_M46656_IG22:
+       mov      edi, 0x4809
+       mov      rsi, 0xD1FFAB1E
+       call     CORINFO_HELP_STRCNS
+       mov      rsi, rax
+       mov      edi, dword ptr [rbp-0x30]
+       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+       int3     
+						;; size=39 bbWeight=0 PerfScore 0.00
+G_M46656_IG23:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1174, prolog size 25, PerfScore 133.19, instruction count 284, allocated bytes for code 1174 (MethodHash=8f1b49bf) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 1158, prolog size 25, PerfScore 128.31, instruction count 282, allocated bytes for code 1158 (MethodHash=8f1b49bf) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
-9 (-0.75 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 39 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 40 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  9, 14.50)     ref  ->  rbx         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter>
-;  V01 arg1         [V01,T28] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.Linq.Expressions.Expression>
-;  V02 loc0         [V02,T29] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Linq.Expressions.MemberExpression>
-;  V03 loc1         [V03,T18] (  6,  8.50)     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.ParameterExpression>
-;  V04 loc2         [V04,T16] (  8,  9   )     int  ->  r12        
-;  V05 loc3         [V05,T17] (  7,  9   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Linq.Expressions.Expression[]>
-;* V06 loc4         [V06,T38] (  0,  0   )     int  ->  zero-ref   
-;  V07 loc5         [V07,T01] (  9, 32   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V00 this         [V00,T08] (  9, 14.50)     ref  ->  rbx         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter>
+;  V01 arg1         [V01,T27] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.Linq.Expressions.Expression>
+;  V02 loc0         [V02,T28] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Linq.Expressions.MemberExpression>
+;  V03 loc1         [V03,T17] (  6,  8.50)     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+;  V04 loc2         [V04,T15] (  8,  9   )     int  ->  r12        
+;  V05 loc3         [V05,T16] (  7,  9   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Linq.Expressions.Expression[]>
+;* V06 loc4         [V06,T37] (  0,  0   )     int  ->  zero-ref   
+;  V07 loc5         [V07,T01] (  8, 28   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V08 loc6         [V08    ] (  0,  0   )  struct (16) zero-ref    <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T31] (  2,  4   )     ref  ->  r13         class-hnd exact single-def "non-inline candidate call" <System.Linq.Expressions.Compiler.StackSpiller>
-;  V11 tmp2         [V11,T19] (  4,  8   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
-;  V12 tmp3         [V12,T10] (  2, 16   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "impAppendStmt" <System.Reflection.MethodInfo>
+;  V10 tmp1         [V10,T30] (  2,  4   )     ref  ->  r13         class-hnd exact single-def "non-inline candidate call" <System.Linq.Expressions.Compiler.StackSpiller>
+;  V11 tmp2         [V11,T18] (  4,  8   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+;  V12 tmp3         [V12,T11] (  2, 16   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "impAppendStmt" <System.Reflection.MethodInfo>
 ;  V13 tmp4         [V13,T00] (  7, 48   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
-;  V14 tmp5         [V14,T33] (  3,  3   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "dup spill" <System.Linq.Expressions.Expression[]>
+;  V14 tmp5         [V14,T32] (  3,  3   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "dup spill" <System.Linq.Expressions.Expression[]>
 ;* V15 tmp6         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-;  V16 tmp7         [V16,T30] (  4,  4   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
-;  V17 tmp8         [V17,T34] (  2,  2   )     ref  ->  rax         class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.BlockExpression>
+;  V16 tmp7         [V16,T29] (  4,  4   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+;  V17 tmp8         [V17,T33] (  2,  2   )     ref  ->  rax         class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.BlockExpression>
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Linq.Expressions.MemberBinding>
-;  V19 tmp10        [V19,T32] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Type>
+;  V19 tmp10        [V19,T31] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Type>
 ;* V20 tmp11        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ElementInit]>
 ;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ElementInit]>
 ;* V22 tmp13        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V23 tmp14        [V23,T21] (  3,  8   )     ref  ->  [rbp-0x80]  class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V24 tmp15        [V24,T12] (  2, 16   )     int  ->  rcx         "Inlining Arg"
+;  V23 tmp14        [V23,T20] (  3,  8   )     ref  ->  [rbp-0x80]  class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+;  V24 tmp15        [V24,T13] (  2, 16   )     int  ->  rdx         "Inlining Arg"
 ;  V25 tmp16        [V25,T05] (  8, 20   )     int  ->  [rbp-0x2C]  spill-single-def "Inline stloc first use temp"
-;  V26 tmp17        [V26,T24] (  3,  6   )     ref  ->  [rbp-0x88]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V27 tmp18        [V27,T11] (  2, 16   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V28 tmp19        [V28,T09] (  3, 16   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
+;  V26 tmp17        [V26,T23] (  3,  6   )     ref  ->  [rbp-0x88]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+;  V27 tmp18        [V27,T12] (  2, 16   )     ref  ->  rsi         class-hnd "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V28 tmp19        [V28,T10] (  3, 16   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V29 tmp20        [V29    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V30 tmp21        [V30,T06] (  3, 20   )     ref  ->  [rbp-0x90]  class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
+;  V30 tmp21        [V30,T07] (  3, 20   )     ref  ->  [rbp-0x90]  class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
 ;* V31 tmp22        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V32 tmp23        [V32,T02] (  7, 28   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
-;  V33 tmp24        [V33,T25] (  3,  6   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V34 tmp25        [V34,T20] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T22] (  2,  8   )     ref  ->  [rbp-0x98]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
+;  V33 tmp24        [V33,T24] (  3,  6   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+;  V34 tmp25        [V34,T19] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T21] (  2,  8   )     ref  ->  [rbp-0x98]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
 ;  V36 tmp27        [V36,T14] (  3, 12   )     ref  ->  [rbp-0xA0]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
 ;* V37 tmp28        [V37    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V38 tmp29        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;  V39 tmp30        [V39,T35] (  2,  2   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberBinding>
-;  V40 tmp31        [V40,T36] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberExpression>
-;  V41 tmp32        [V41,T26] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
+;  V39 tmp30        [V39,T34] (  2,  2   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberBinding>
+;  V40 tmp31        [V40,T35] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberExpression>
+;  V41 tmp32        [V41,T25] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
 ;* V42 tmp33        [V42    ] (  0,  0   )     ref  ->  zero-ref    "field V08.Node (fldOffset=0x0)" P-INDEP
 ;* V43 tmp34        [V43    ] (  0,  0   )     int  ->  zero-ref    "field V08.Action (fldOffset=0x8)" P-INDEP
 ;* V44 tmp35        [V44    ] (  0,  0   )     ref  ->  zero-ref    "field V31.Node (fldOffset=0x0)" P-INDEP
 ;* V45 tmp36        [V45    ] (  0,  0   )     int  ->  zero-ref    "field V31.Action (fldOffset=0x8)" P-INDEP
 ;  V46 tmp37        [V46,T04] (  3, 24   )     ref  ->  rdi         "arr expr"
-;  V47 tmp38        [V47,T39] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V48 tmp39        [V48,T40] (  2,  0   )     ref  ->  rdx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
-;  V50 tmp41        [V50,T37] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V51 cse0         [V51,T15] (  3, 12   )     ref  ->  rdi         "CSE #01: moderate"
-;  V52 cse1         [V52,T13] (  4, 12   )     ref  ->  [rbp-0xA8]  spill-single-def "CSE #02: moderate"
-;  V53 cse2         [V53,T08] (  4, 16   )     int  ->  [rbp-0x34]  spill-single-def "CSE #05: moderate"
-;  V54 cse3         [V54,T23] (  5,  7   )     int  ->  [rbp-0x38]  spill-single-def "CSE #04: moderate"
-;  V55 rat0         [V55,T03] (  7, 25   )    long  ->  [rbp-0x40]  "Widened IV V06"
+;  V47 tmp38        [V47,T38] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V48 tmp39        [V48,T39] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V49 tmp40        [V49,T26] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
+;  V50 tmp41        [V50,T36] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;  V51 cse0         [V51,T06] (  6, 20   )     ref  ->  [rbp-0xA8]  spill-single-def "CSE #01: moderate"
+;  V52 cse1         [V52,T09] (  4, 16   )     int  ->  [rbp-0x34]  spill-single-def "CSE #04: moderate"
+;  V53 cse2         [V53,T22] (  5,  7   )     int  ->  [rbp-0x38]  spill-single-def "CSE #03: moderate"
+;  V54 rat0         [V54,T03] (  7, 25   )    long  ->  [rbp-0x40]  "Widened IV V06"
 ;
 ; Lcl frame size = 136
 
 G_M46073_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 136
        lea      rbp, [rsp+0xB0]
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=31 bbWeight=1 PerfScore 7.25
 G_M46073_IG02:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+BindingRewriter:RequireNoValueProperty():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+BindingRewriter:RequireNoValueProperty():this
        mov      rsi, gword ptr [rbx+0x08]
        mov      rsi, gword ptr [rsi+0x08]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
        call     [rax]System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
        mov      r14, rax
        mov      r13, gword ptr [rbx+0x10]
        mov      rdi, r14
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Linq.Expressions.Expression:get_Type():System.Type:this
        mov      rsi, rax
        mov      rdi, gword ptr [r13+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+TempMaker:Temp(System.Type):System.Linq.Expressions.ParameterExpression:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+TempMaker:Temp(System.Type):System.Linq.Expressions.ParameterExpression:this
        mov      r13, rax
        mov      rdi, gword ptr [rbx+0x20]
        mov      rdi, gword ptr [rdi+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
        call     [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
        mov      r12d, eax
        lea      esi, [r12+0x02]
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x48], rax
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.AssignBinaryExpression
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x58], rax
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbp-0x58]
        lea      rdi, bword ptr [rax+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      r14, gword ptr [rbp-0x48]
        mov      eax, dword ptr [r14+0x08]
        mov      dword ptr [rbp-0x38], eax
        test     eax, eax
        je       G_M46073_IG20
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, gword ptr [rbp-0x58]
        call     CORINFO_HELP_ASSIGN_REF
        xor      eax, eax
        test     r12d, r12d
        jle      G_M46073_IG11
 						;; size=223 bbWeight=1 PerfScore 55.75
 G_M46073_IG03:
        mov      rdi, gword ptr [rbx+0x28]
        cmp      eax, dword ptr [rdi+0x08]
        jae      G_M46073_IG20
        mov      rcx, gword ptr [rdi+8*rax+0x10]
        mov      gword ptr [rbp-0x50], rcx
        mov      rdi, gword ptr [rbx+0x20]
        mov      rdi, gword ptr [rdi+0x08]
        mov      qword ptr [rbp-0x40], rax
        mov      esi, eax
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
        call     [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
        mov      rax, gword ptr [rax+0x08]
        mov      gword ptr [rbp-0x60], rax
        mov      rcx, gword ptr [rbp-0x50]
        cmp      byte  ptr [rcx], cl
        mov      rdi, rcx
        mov      rdx, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rdx]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rax, gword ptr [rbp-0x50]
-       mov      rdi, gword ptr [rax+0x10]
-       mov      ecx, dword ptr [rdi+0x08]
-       dec      ecx
-       inc      ecx
-       mov      dword ptr [rbp-0x2C], ecx
-       test     ecx, ecx
+       mov      rcx, gword ptr [rax+0x10]
+       mov      gword ptr [rbp-0xA8], rcx
+       mov      edx, dword ptr [rcx+0x08]
+       dec      edx
+       inc      edx
+       mov      dword ptr [rbp-0x2C], edx
+       mov      rsi, rcx
+       test     edx, edx
        jl       G_M46073_IG19
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       mov      dword ptr [rbp-0x30], eax
-       mov      ecx, dword ptr [rbp-0x2C]
-       cmp      eax, ecx
+       mov      r8d, dword ptr [rsi+0x08]
+       mov      dword ptr [rbp-0x30], r8d
+       cmp      r8d, edx
        jl       G_M46073_IG18
-       mov      rax, gword ptr [rbp-0x50]
-       mov      rdx, gword ptr [rax+0x10]
-       mov      gword ptr [rbp-0xA8], rdx
-       cmp      dword ptr [rdx+0x08], ecx
+       cmp      dword ptr [rcx+0x08], edx
        je       SHORT G_M46073_IG05
-						;; size=145 bbWeight=4 PerfScore 204.00
+						;; size=136 bbWeight=4 PerfScore 181.00
 G_M46073_IG04:
-       movsxd   rsi, ecx
+       movsxd   rsi, edx
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x88], rax
        mov      rdi, gword ptr [rbp-0xA8]
        mov      r8d, dword ptr [rbp-0x2C]
        mov      rdx, rax
        xor      esi, esi
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rax, gword ptr [rbp-0x88]
        mov      gword ptr [rbp-0x80], rax
        jmp      SHORT G_M46073_IG06
 						;; size=69 bbWeight=2 PerfScore 25.00
 G_M46073_IG05:
-       mov      rdx, gword ptr [rbp-0xA8]
-       mov      gword ptr [rbp-0x80], rdx
+       mov      rcx, gword ptr [rbp-0xA8]
+       mov      gword ptr [rbp-0x80], rcx
 						;; size=11 bbWeight=2 PerfScore 4.00
 G_M46073_IG06:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.InstanceMethodCallExpressionN
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x68], rax
        lea      rdi, bword ptr [rax+0x08]
        mov      rsi, gword ptr [rbp-0x60]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbp-0x68]
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbp-0x68]
        lea      rdi, bword ptr [rax+0x18]
        mov      rsi, gword ptr [rbp-0x80]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbp-0x68]
        mov      gword ptr [rbp-0x90], rax
        mov      rdi, gword ptr [rbp-0x50]
        mov      rdx, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rdx]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rax, gword ptr [rbp-0x50]
        cmp      dword ptr [rax+0x30], 3
        mov      rcx, gword ptr [rbp-0x90]
        jne      G_M46073_IG10
 						;; size=113 bbWeight=4 PerfScore 93.00
 G_M46073_IG07:
        mov      rdi, gword ptr [rax+0x18]
        inc      dword ptr [rdi+0x14]
        mov      rcx, gword ptr [rdi+0x08]
        mov      edx, dword ptr [rdi+0x10]
        cmp      dword ptr [rcx+0x08], edx
        ja       SHORT G_M46073_IG08
        mov      rsi, gword ptr [rbp-0x68]
        mov      rcx, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        call     [rcx]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        jmp      SHORT G_M46073_IG09
 						;; size=37 bbWeight=2 PerfScore 38.50
 G_M46073_IG08:
        lea      esi, [rdx+0x01]
        mov      dword ptr [rdi+0x10], esi
        movsxd   rsi, edx
        mov      rdi, rcx
        mov      rdx, gword ptr [rbp-0x68]
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rcx]CORINFO_HELP_ARRADDR_ST
 						;; size=28 bbWeight=2 PerfScore 12.50
 G_M46073_IG09:
        mov      rdi, gword ptr [rbp-0x50]
        mov      rax, gword ptr [rdi+0x18]
        mov      gword ptr [rbp-0x98], rax
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.SpilledExpressionBlock
        call     CORINFO_HELP_NEWSFAST
        mov      rcx, rax
        mov      gword ptr [rbp-0xA0], rcx
        lea      rdi, bword ptr [rcx+0x08]
        mov      rsi, gword ptr [rbp-0x98]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rcx, gword ptr [rbp-0xA0]
 						;; size=63 bbWeight=2 PerfScore 20.00
 G_M46073_IG10:
        mov      rax, qword ptr [rbp-0x40]
        inc      eax
        mov      dword ptr [rbp-0x34], eax
        cmp      eax, dword ptr [rbp-0x38]
        jae      G_M46073_IG20
        mov      edi, eax
        lea      rdi, bword ptr [r14+8*rdi+0x10]
        mov      rsi, rcx
        call     CORINFO_HELP_ASSIGN_REF
        mov      eax, dword ptr [rbp-0x34]
        mov      rdi, rax
        cmp      edi, r12d
        mov      rax, rdi
        jl       G_M46073_IG03
 						;; size=51 bbWeight=4 PerfScore 42.00
 G_M46073_IG11:
        mov      rdi, r13
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Linq.Expressions.Expression:get_Type():System.Type:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x78]
        call     [rax+0x08]System.Type:IsValueTypeImpl():ubyte:this
        test     eax, eax
        jne      SHORT G_M46073_IG13
 						;; size=31 bbWeight=1 PerfScore 15.75
 G_M46073_IG12:
        lea      edi, [r12+0x01]
        cmp      edi, dword ptr [rbp-0x38]
        jae      G_M46073_IG20
        inc      r12d
        mov      edi, r12d
        lea      rdi, bword ptr [r14+8*rdi+0x10]
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        call     CORINFO_HELP_ASSIGN_REF
        jmp      G_M46073_IG15
 						;; size=48 bbWeight=0.50 PerfScore 5.12
 G_M46073_IG13:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x70], rax
        mov      rbx, gword ptr [rbx+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.AssignBinaryExpression
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x78], rax
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r15
        mov      rcx, 0xD1FFAB1E      ; code for System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
        call     [rcx]System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
        mov      rbx, gword ptr [rbp-0x78]
        lea      rdi, bword ptr [rbx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      r15, gword ptr [rbp-0x70]
        lea      rdi, bword ptr [r15+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       SHORT G_M46073_IG17
 						;; size=125 bbWeight=0.50 PerfScore 11.88
 G_M46073_IG14:
        mov      rsi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:<Empty>k__BackingField
        mov      rsi, gword ptr [rsi]
        mov      rdx, r15
        mov      rdi, 0xD1FFAB1E      ; 'System.Void'
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Block(System.Type,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.BlockExpression
        call     [rax]System.Linq.Expressions.Expression:Block(System.Type,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.BlockExpression
        lea      edi, [r12+0x01]
        cmp      edi, dword ptr [rbp-0x38]
        jae      G_M46073_IG20
        lea      edi, [r12+0x01]
        lea      rdi, bword ptr [r14+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=70 bbWeight=0.50 PerfScore 6.12
 G_M46073_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.SpilledExpressionBlock
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, rbx
 						;; size=33 bbWeight=1 PerfScore 3.50
 G_M46073_IG16:
        add      rsp, 136
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M46073_IG17:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M46073_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M46073_IG18:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      esi, dword ptr [rbp-0x2C]
        mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M46073_IG19:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      edi, dword ptr [rbp-0x2C]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 G_M46073_IG20:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1203, prolog size 25, PerfScore 548.62, instruction count 275, allocated bytes for code 1203 (MethodHash=f4a44c06) for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 1194, prolog size 25, PerfScore 525.62, instruction count 272, allocated bytes for code 1194 (MethodHash=f4a44c06) for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
 ; ============================================================
-7 (-2.39 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  6,  5.50)     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V00 this         [V00,T02] (  5,  4.50)     ref  ->  r14         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;  V01 arg1         [V01,T00] (  7,  5.50)     int  ->  rbx         single-def
-;  V02 arg2         [V02,T02] (  6,  5   )     int  ->  r14        
-;  V03 loc0         [V03,T03] (  8,  5   )     int  ->  r14        
-;  V04 loc1         [V04,T07] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+;  V02 arg2         [V02,T01] (  6,  5   )     int  ->  r15        
+;  V03 loc0         [V03,T03] (  8,  5   )     int  ->  r15        
+;  V04 loc1         [V04,T07] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  2,  4   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V07 tmp2         [V07,T04] (  3,  4   )     int  ->  r13         ld-addr-op "Inlining Arg"
+;  V06 tmp1         [V06,T06] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V07 tmp2         [V07,T05] (  3,  4   )     int  ->  r14         ld-addr-op "Inlining Arg"
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V09 tmp4         [V09,T08] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V10 tmp5         [V10,T09] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V11 tmp6         [V11,T10] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V12 cse0         [V12,T06] (  4,  3   )     ref  ->  r13         "CSE #02: aggressive"
+;  V12 cse0         [V12,T04] (  7,  5   )     ref  ->  r13         multi-def "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M14820_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
-       mov      r15, rdi
+       mov      r14, rdi
        mov      ebx, esi
-       mov      r14d, edx
+       mov      r15d, edx
 						;; size=21 bbWeight=1 PerfScore 6.25
 G_M14820_IG02:
-       mov      rdi, r15
+       mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       test     r14d, r14d
+       test     r15d, r15d
        jge      SHORT G_M14820_IG04
 						;; size=20 bbWeight=1 PerfScore 4.75
 G_M14820_IG03:
-       mov      rdi, gword ptr [r15+0x10]
-       add      r14d, dword ptr [rdi+0x08]
+       mov      r13, gword ptr [r14+0x10]
+       add      r15d, dword ptr [r13+0x08]
 						;; size=8 bbWeight=0.50 PerfScore 2.50
 G_M14820_IG04:
-       sub      r14d, ebx
-       inc      r14d
-       mov      rdi, gword ptr [r15+0x10]
-       test     r14d, r14d
+       sub      r15d, ebx
+       inc      r15d
+       mov      r13, gword ptr [r14+0x10]
+       mov      rsi, r13
+       test     r15d, r15d
        jl       G_M14820_IG11
        test     ebx, ebx
        jl       G_M14820_IG10
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       mov      r13d, eax
-       sub      r13d, ebx
-       cmp      r13d, r14d
+       mov      r14d, dword ptr [rsi+0x08]
+       sub      r14d, ebx
+       cmp      r14d, r15d
        jl       SHORT G_M14820_IG09
-       mov      r13, gword ptr [r15+0x10]
-       cmp      dword ptr [r13+0x08], r14d
+       cmp      dword ptr [r13+0x08], r15d
        je       SHORT G_M14820_IG07
-						;; size=55 bbWeight=1 PerfScore 16.75
+						;; size=48 bbWeight=1 PerfScore 12.75
 G_M14820_IG05:
-       movsxd   rsi, r14d
+       movsxd   rsi, r15d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r15, rax
+       mov      r14, rax
        mov      rdi, r13
        mov      esi, ebx
-       mov      rdx, r15
-       mov      r8d, r14d
+       mov      rdx, r14
+       mov      r8d, r15d
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      rax, r15
+       mov      rax, r14
 						;; size=49 bbWeight=0.50 PerfScore 3.25
 G_M14820_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M14820_IG07:
        mov      rax, r13
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M14820_IG08:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M14820_IG09:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r14d
-       mov      edi, r13d
+       mov      esi, r15d
+       mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M14820_IG10:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      edi, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=38 bbWeight=0 PerfScore 0.00
 G_M14820_IG11:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r14d
+       mov      edi, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 293, prolog size 13, PerfScore 37.12, instruction count 82, allocated bytes for code 293 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 286, prolog size 13, PerfScore 33.12, instruction count 80, allocated bytes for code 286 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
 ; ============================================================
-6 (-3.64 % of base) - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type
 ; Assembly listing for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  6,  6   )     ref  ->  rbx         class-hnd single-def <System.Type[]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M54830_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=1 PerfScore 3.75
 G_M54830_IG02:
        test     rbx, rbx
        je       SHORT G_M54830_IG05
-       mov      rdi, rbx
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
+       cmp      dword ptr [rbx+0x08], 0
        je       SHORT G_M54830_IG04
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.Type](System.Collections.Generic.IList`1[System.Type],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'typeArgs'
        mov      rax, 0xD1FFAB1E      ; code for System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
        call     [rax]System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
-						;; size=65 bbWeight=1 PerfScore 8.25
+						;; size=59 bbWeight=1 PerfScore 9.75
 G_M54830_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M54830_IG04:
        mov      edi, 0x30FF
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
        call     [rax]System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
        mov      rdi, rax
        call     CORINFO_HELP_THROW
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
 G_M54830_IG05:
        mov      edi, 0x30FF
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 165, prolog size 8, PerfScore 15.25, instruction count 38, allocated bytes for code 165 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
+; Total bytes of code 159, prolog size 8, PerfScore 16.75, instruction count 36, allocated bytes for code 159 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
 ; ============================================================
-5 (-0.52 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 25 single block inlinees; 13 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T07] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
-;  V01 arg1         [V01,T01] ( 13, 10.25)     ref  ->  rbx         class-hnd <System.Linq.Expressions.Expression>
+;  V01 arg1         [V01,T00] ( 13, 10.25)     ref  ->  rbx         class-hnd <System.Linq.Expressions.Expression>
 ;  V02 arg2         [V02,T08] (  3,  3   )     int  ->  r14         single-def
-;  V03 loc0         [V03,T16] (  4,  2.50)     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
-;  V04 loc1         [V04,T00] ( 19, 12.50)     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V03 loc0         [V03,T18] (  4,  2.50)     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
+;  V04 loc1         [V04,T01] ( 17, 11.50)     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T02] (  5, 10   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V08 tmp3         [V08,T22] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
-;  V09 tmp4         [V09,T10] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.MethodCallExpressionN>
+;  V09 tmp4         [V09,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.MethodCallExpressionN>
 ;  V10 tmp5         [V10,T23] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
 ;  V11 tmp6         [V11,T24] (  2,  2   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-;  V12 tmp7         [V12,T06] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
+;  V12 tmp7         [V12,T06] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
 ;  V13 tmp8         [V13,T12] (  2,  4   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
 ;  V14 tmp9         [V14,T25] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V15 tmp10        [V15,T36] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T30] (  3,  1.50)     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V17 tmp12        [V17,T04] (  8,  6   )     int  ->  r14         "Inlining Arg"
+;* V15 tmp10        [V15,T34] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V16 tmp11        [V16,T30] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+;  V17 tmp12        [V17,T04] (  8,  6   )     int  ->  r13         "Inlining Arg"
 ;* V18 tmp13        [V18    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V19 tmp14        [V19,T31] (  3,  1.50)     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V20 tmp15        [V20,T26] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V21 tmp16        [V21,T20] (  3,  2   )     int  ->  r13         ld-addr-op "Inlining Arg"
+;  V20 tmp15        [V20,T26] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V21 tmp16        [V21,T20] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V22 tmp17        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V23 tmp18        [V23,T32] (  3,  1.50)     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V24 tmp19        [V24,T05] (  8,  6   )     int  ->  r13         "Inlining Arg"
+;  V24 tmp19        [V24,T05] (  8,  6   )     int  ->  r15         "Inlining Arg"
 ;* V25 tmp20        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V26 tmp21        [V26,T33] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V27 tmp22        [V27,T27] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V28 tmp23        [V28,T21] (  3,  2   )     int  ->  r15         ld-addr-op "Inlining Arg"
+;  V27 tmp22        [V27,T27] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V28 tmp23        [V28,T21] (  3,  2   )     int  ->  r14         ld-addr-op "Inlining Arg"
 ;* V29 tmp24        [V29    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V30 tmp25        [V30,T28] (  2,  2   )     ref  ->  rax         single-def "field V07.Node (fldOffset=0x0)" P-INDEP
 ;  V31 tmp26        [V31,T29] (  2,  2   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
 ;  V32 tmp27        [V32,T11] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
-;  V33 tmp28        [V33,T13] (  3,  3   )     ref  ->  rsi         single-def "arr expr"
-;  V34 tmp29        [V34,T37] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V35 tmp30        [V35,T38] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V36 tmp31        [V36,T14] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V37 tmp32        [V37,T39] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V38 tmp33        [V38,T40] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V39 tmp34        [V39,T15] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V33 tmp28        [V33,T15] (  3,  3   )     ref  ->  rsi         single-def "arr expr"
+;  V34 tmp29        [V34,T35] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V35 tmp30        [V35,T36] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V36 tmp31        [V36,T16] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V37 tmp32        [V37,T37] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V38 tmp33        [V38,T38] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V39 tmp34        [V39,T17] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V40 cse0         [V40,T09] (  5,  4   )    long  ->  [rbp-0x48]  spill-single-def "CSE #02: aggressive"
-;  V41 cse1         [V41,T18] (  4,  2   )     ref  ->  r13         "CSE #04: moderate"
-;  V42 cse2         [V42,T19] (  4,  2   )     ref  ->  r15         "CSE #08: moderate"
-;  V43 cse3         [V43,T34] (  3,  1.50)     ref  ->  rdi         "CSE #03: conservative"
-;  V44 cse4         [V44,T35] (  3,  1.50)     ref  ->  rdi         "CSE #07: conservative"
-;  V45 rat0         [V45,T03] (  5,  7.50)     ref  ->  r13         "replacement local"
-;  V46 rat1         [V46,T17] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
+;  V41 cse1         [V41,T13] (  6,  3   )     ref  ->  r14         "CSE #03: moderate"
+;  V42 cse2         [V42,T14] (  6,  3   )     ref  ->  r13         "CSE #06: moderate"
+;  V43 rat0         [V43,T03] (  5,  7.50)     ref  ->  r13         "replacement local"
+;  V44 rat1         [V44,T19] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 40
 
 G_M59517_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
        mov      r15, rdi
        mov      rbx, rsi
        mov      r14d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M59517_IG02:
        mov      r13, rbx
        test     r13, r13
        je       SHORT G_M59517_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M59517_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.MethodCallExpression
        cmp      qword ptr [r13], rdi
        je       SHORT G_M59517_IG05
 						;; size=16 bbWeight=0.50 PerfScore 2.12
 G_M59517_IG04:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r13, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M59517_IG05:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x48]
        mov      qword ptr [rbp-0x48], rax
        call     [rax+0x38]System.Linq.Expressions.MethodCallExpression:get_ArgumentCount():int:this
        inc      eax
        mov      dword ptr [rbp-0x2C], eax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r12+0x34], r14d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, rbx
        mov      r15, qword ptr [rbp-0x48]
        call     [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
        mov      rsi, rax
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        cmp      dword ptr [r12+0x30], 3
        jne      SHORT G_M59517_IG09
 						;; size=145 bbWeight=1 PerfScore 35.50
 G_M59517_IG06:
        mov      rdi, rbx
        call     [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        test     eax, eax
        je       SHORT G_M59517_IG08
        cmp      gword ptr [r12+0x20], 0
        jne      SHORT G_M59517_IG07
        mov      rsi, gword ptr [r12+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=70 bbWeight=0.50 PerfScore 9.50
 G_M59517_IG07:
        mov      rsi, gword ptr [r12+0x20]
        cmp      dword ptr [rsi+0x08], 0
        jbe      G_M59517_IG22
        mov      byte  ptr [rsi+0x10], 1
 						;; size=19 bbWeight=0.50 PerfScore 3.50
 G_M59517_IG08:
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r12
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
 						;; size=24 bbWeight=0.50 PerfScore 2.88
 G_M59517_IG09:
        cmp      dword ptr [r12+0x30], 0
        je       G_M59517_IG16
 						;; size=12 bbWeight=1 PerfScore 4.00
 G_M59517_IG10:
        mov      rdi, r13
        call     [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
        test     rax, rax
        jne      G_M59517_IG13
        mov      rbx, gword ptr [r13+0x08]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r12+0x10]
-       mov      r13d, dword ptr [rdi+0x08]
-       dec      r13d
-       js       G_M59517_IG19
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       lea      r15d, [rax-0x01]
-       cmp      r15d, r13d
+       mov      r13, gword ptr [r12+0x10]
+       mov      r15d, dword ptr [r13+0x08]
+       dec      r15d
+       mov      rsi, r13
+       test     r15d, r15d
+       jl       G_M59517_IG19
+       mov      r14d, dword ptr [rsi+0x08]
+       dec      r14d
+       cmp      r14d, r15d
        jl       G_M59517_IG18
-       mov      r15, gword ptr [r12+0x10]
-       cmp      dword ptr [r15+0x08], r13d
+       cmp      dword ptr [r13+0x08], r15d
        je       SHORT G_M59517_IG11
-       movsxd   rsi, r13d
+       movsxd   rsi, r15d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
-       mov      rdi, r15
-       mov      r8d, r13d
+       mov      rdi, r13
+       mov      r8d, r15d
        mov      rdx, r14
        mov      esi, 1
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        jmp      SHORT G_M59517_IG12
-						;; size=135 bbWeight=0.50 PerfScore 17.62
+						;; size=132 bbWeight=0.50 PerfScore 15.75
 G_M59517_IG11:
-       mov      r14, r15
+       mov      r14, r13
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M59517_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.MethodCallExpressionN
        call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x08]
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x10]
+       lea      rdi, bword ptr [r15+0x10]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, r13
+       mov      rbx, r15
        jmp      G_M59517_IG16
 						;; size=50 bbWeight=0.50 PerfScore 3.62
 G_M59517_IG13:
        mov      rbx, gword ptr [r13+0x08]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rdi, gword ptr [r12+0x10]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M59517_IG22
        mov      r15, gword ptr [rdi+0x10]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r12+0x10]
-       mov      r14d, dword ptr [rdi+0x08]
-       dec      r14d
-       js       G_M59517_IG21
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       lea      r13d, [rax-0x01]
-       cmp      r13d, r14d
+       mov      r14, gword ptr [r12+0x10]
+       mov      r13d, dword ptr [r14+0x08]
+       dec      r13d
+       mov      rsi, r14
+       test     r13d, r13d
+       jl       G_M59517_IG21
+       mov      eax, dword ptr [rsi+0x08]
+       dec      eax
+       mov      dword ptr [rbp-0x30], eax
+       cmp      eax, r13d
        jl       G_M59517_IG20
-       mov      r13, gword ptr [r12+0x10]
-       cmp      dword ptr [r13+0x08], r14d
+       cmp      dword ptr [r14+0x08], r13d
        je       SHORT G_M59517_IG14
-       movsxd   rsi, r14d
+       movsxd   rsi, r13d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x50], rax
-       mov      rdi, r13
-       mov      r8d, r14d
+       mov      rdi, r14
+       mov      r8d, r13d
        mov      rdx, rax
        mov      esi, 1
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r14, gword ptr [rbp-0x50]
+       mov      r13, gword ptr [rbp-0x50]
        jmp      SHORT G_M59517_IG15
-						;; size=159 bbWeight=0.50 PerfScore 22.00
+						;; size=157 bbWeight=0.50 PerfScore 20.62
 G_M59517_IG14:
-       mov      r14, r13
+       mov      r13, r14
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M59517_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.InstanceMethodCallExpressionN
        call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x08]
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x10]
+       lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x18]
-       mov      rsi, r14
+       lea      rdi, bword ptr [r14+0x18]
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, r13
+       mov      rbx, r14
 						;; size=57 bbWeight=0.50 PerfScore 3.50
 G_M59517_IG16:
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        mov      gword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x38], rdx
        mov      rax, gword ptr [rbp-0x40]
        mov      edx, dword ptr [rbp-0x38]
 						;; size=33 bbWeight=1 PerfScore 7.75
 G_M59517_IG17:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M59517_IG18:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r13d
-       mov      edi, r15d
+       mov      esi, r15d
+       mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M59517_IG19:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r13d
+       mov      edi, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 G_M59517_IG20:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r14d
-       mov      edi, r13d
+       mov      esi, r13d
+       mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M59517_IG21:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r14d
+       mov      edi, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 G_M59517_IG22:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 969, prolog size 25, PerfScore 127.69, instruction count 229, allocated bytes for code 969 (MethodHash=e8441782) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 964, prolog size 25, PerfScore 124.44, instruction count 230, allocated bytes for code 964 (MethodHash=e8441782) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
-4 (-0.61 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 20 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] (  3,  3   )     ref  ->  r14         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;  V01 arg1         [V01,T01] ( 10,  8.75)     ref  ->  rbx         class-hnd <System.Linq.Expressions.Expression>
 ;  V02 arg2         [V02,T03] (  5,  5   )     int  ->  r15        
 ;  V03 loc0         [V03,T17] (  3,  2   )     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.NewArrayExpression>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] ( 10, 17   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V06 tmp1         [V06,T00] (  9, 16   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V08 tmp3         [V08,T21] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V09 tmp4         [V09,T11] (  3,  3   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Type>
-;  V10 tmp5         [V10,T05] (  4,  4   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]>
+;  V09 tmp4         [V09,T12] (  3,  3   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Type>
+;  V10 tmp5         [V10,T05] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;  V11 tmp6         [V11,T08] (  2,  4   )     ref  ->  [rbp-0x50]  class-hnd spill-single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;  V12 tmp7         [V12,T09] (  2,  4   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
-;  V13 tmp8         [V13,T15] (  4,  2   )     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V14 tmp9         [V14,T22] (  2,  2   )     int  ->  r13         "Inlining Arg"
-;  V15 tmp10        [V15,T10] (  8,  3   )     int  ->  r13         "Inline stloc first use temp"
+;  V13 tmp8         [V13,T16] (  4,  2   )     ref  ->  r12         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+;  V14 tmp9         [V14,T22] (  2,  2   )     int  ->  r12         "Inlining Arg"
+;  V15 tmp10        [V15,T10] (  8,  3   )     int  ->  r12         "Inline stloc first use temp"
 ;  V16 tmp11        [V16,T24] (  3,  1.50)     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V17 tmp12        [V17,T19] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V18 tmp13        [V18,T18] (  3,  2   )     int  ->  r12         ld-addr-op "Inlining Arg"
+;  V17 tmp12        [V17,T19] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V18 tmp13        [V18,T18] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V19 tmp14        [V19    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V20 tmp15        [V20,T25] (  3,  1.50)     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.Linq.Expressions.NewArrayExpression>
 ;  V21 tmp16        [V21,T06] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewArrayBoundsExpression>
 ;  V22 tmp17        [V22,T07] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewArrayInitExpression>
 ;  V23 tmp18        [V23,T20] (  2,  2   )     ref  ->  rax         single-def "field V07.Node (fldOffset=0x0)" P-INDEP
 ;  V24 tmp19        [V24,T23] (  2,  2   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
-;  V25 tmp20        [V25,T27] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V26 tmp21        [V26,T28] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V27 tmp22        [V27,T12] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-;  V28 cse0         [V28,T13] (  3,  2.50)    long  ->  r12         "CSE #02: moderate"
-;  V29 cse1         [V29,T16] (  4,  2   )     ref  ->  r12         "CSE #04: moderate"
-;  V30 cse2         [V30,T26] (  3,  1.50)     ref  ->  rdi         "CSE #03: conservative"
-;  V31 rat0         [V31,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
-;  V32 rat1         [V32,T14] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
+;  V25 tmp20        [V25,T26] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V26 tmp21        [V26,T27] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V27 tmp22        [V27,T13] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V28 cse0         [V28,T14] (  3,  2.50)    long  ->  r12         "CSE #02: moderate"
+;  V29 cse1         [V29,T11] (  6,  3   )     ref  ->  r13         "CSE #03: moderate"
+;  V30 rat0         [V30,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
+;  V31 rat1         [V31,T15] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 56
 
 G_M11077_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 56
        lea      rbp, [rsp+0x60]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
        mov      r14, rdi
        mov      rbx, rsi
        mov      r15d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M11077_IG02:
        mov      r13, rbx
        test     r13, r13
        je       SHORT G_M11077_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M11077_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.NewArrayExpression
        cmp      qword ptr [r13], rdi
        je       SHORT G_M11077_IG05
 						;; size=16 bbWeight=0.50 PerfScore 2.12
 G_M11077_IG04:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r13, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M11077_IG05:
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      r12, qword ptr [rax+0x40]
        call     [r12+0x20]System.Linq.Expressions.Expression:get_NodeType():int:this
        mov      edi, 1
        cmp      eax, 32
        cmove    r15d, edi
        mov      rax, gword ptr [rbx+0x10]
        mov      gword ptr [rbp-0x50], rax
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x48], rax
        mov      rdi, gword ptr [rbp-0x50]
        mov      rdi, gword ptr [rdi+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
        call     [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
        mov      dword ptr [rbp-0x2C], eax
        mov      rcx, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [rcx+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      r14, gword ptr [rbp-0x48]
        mov      dword ptr [r14+0x34], r15d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):this
        cmp      dword ptr [r14+0x30], 0
        je       G_M11077_IG10
 						;; size=163 bbWeight=1 PerfScore 40.75
 G_M11077_IG06:
        mov      rdi, r13
        call     [r12+0x20]System.Linq.Expressions.Expression:get_NodeType():int:this
        mov      ebx, eax
        mov      r15, gword ptr [r13+0x08]
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r14+0x10]
-       mov      r13d, dword ptr [rdi+0x08]
-       dec      r13d
-       inc      r13d
-       js       G_M11077_IG14
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       mov      r12d, eax
-       cmp      r12d, r13d
+       mov      r13, gword ptr [r14+0x10]
+       mov      r12d, dword ptr [r13+0x08]
+       dec      r12d
+       inc      r12d
+       mov      rsi, r13
+       test     r12d, r12d
+       jl       G_M11077_IG14
+       mov      eax, dword ptr [rsi+0x08]
+       mov      dword ptr [rbp-0x30], eax
+       cmp      eax, r12d
        jl       G_M11077_IG13
-       mov      r12, gword ptr [r14+0x10]
-       cmp      dword ptr [r12+0x08], r13d
+       cmp      dword ptr [r13+0x08], r12d
        je       SHORT G_M11077_IG07
-       movsxd   rsi, r13d
+       movsxd   rsi, r12d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x58], rax
-       mov      rdi, r12
-       mov      r8d, r13d
+       mov      rdi, r13
+       mov      r8d, r12d
        mov      rdx, rax
        xor      esi, esi
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r13, gword ptr [rbp-0x58]
+       mov      r12, gword ptr [rbp-0x58]
        jmp      SHORT G_M11077_IG08
-						;; size=133 bbWeight=0.50 PerfScore 18.00
+						;; size=130 bbWeight=0.50 PerfScore 16.62
 G_M11077_IG07:
-       mov      r13, r12
+       mov      r12, r13
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M11077_IG08:
        mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]
        call     CORINFO_HELP_NEWSFAST
-       mov      r12, rax
-       test     r13, r13
+       mov      r13, rax
+       test     r12, r12
        je       G_M11077_IG12
-       lea      rdi, bword ptr [r12+0x08]
-       mov      rsi, r13
+       lea      rdi, bword ptr [r13+0x08]
+       mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        cmp      ebx, 32
        je       SHORT G_M11077_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.NewArrayBoundsExpression
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x10]
-       mov      rsi, r12
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        jmp      SHORT G_M11077_IG10
-						;; size=89 bbWeight=0.50 PerfScore 6.38
+						;; size=88 bbWeight=0.50 PerfScore 6.38
 G_M11077_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.NewArrayInitExpression
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x10]
-       mov      rsi, r12
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=42 bbWeight=0.50 PerfScore 2.50
 G_M11077_IG10:
        mov      rdi, r14
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        mov      gword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x38], rdx
        mov      rax, gword ptr [rbp-0x40]
        mov      edx, dword ptr [rbp-0x38]
 						;; size=33 bbWeight=1 PerfScore 7.75
 G_M11077_IG11:
        add      rsp, 56
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M11077_IG12:
        mov      edi, 20
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M11077_IG13:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r13d
-       mov      edi, r12d
+       mov      esi, r12d
+       mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M11077_IG14:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r13d
+       mov      edi, r12d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 653, prolog size 25, PerfScore 93.06, instruction count 158, allocated bytes for code 653 (MethodHash=6dc2d4ba) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 649, prolog size 25, PerfScore 91.69, instruction count 158, allocated bytes for code 649 (MethodHash=6dc2d4ba) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
-3 (-0.55 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;  V01 arg1         [V01,T01] (  8,  6.25)     ref  ->  rbx         class-hnd single-def <System.Linq.Expressions.Expression>
 ;  V02 arg2         [V02,T05] (  3,  3   )     int  ->  r14         single-def
 ;  V03 loc0         [V03,T12] (  3,  2   )     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.NewExpression>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] ( 12, 20   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V06 tmp1         [V06,T00] ( 11, 19   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V08 tmp3         [V08,T15] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Reflection.ConstructorInfo>
-;  V09 tmp4         [V09,T08] (  3,  3   )     ref  ->  r15         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-;  V10 tmp5         [V10,T03] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewExpression>
+;  V09 tmp4         [V09,T09] (  3,  3   )     ref  ->  r14         class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+;  V10 tmp5         [V10,T03] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewExpression>
 ;* V11 tmp6         [V11    ] (  0,  0   )     ref  ->  zero-ref   
-;  V12 tmp7         [V12,T13] (  3,  2   )     ref  ->  r14        
+;  V12 tmp7         [V12,T13] (  3,  2   )     ref  ->  r15        
 ;* V13 tmp8         [V13    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V14 tmp9         [V14,T06] (  2,  4   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
-;  V15 tmp10        [V15,T19] (  2,  2   )     int  ->  r15         "Inlining Arg"
-;  V16 tmp11        [V16,T07] (  8,  3   )     int  ->  r15         "Inline stloc first use temp"
+;  V15 tmp10        [V15,T19] (  2,  2   )     int  ->  r14         "Inlining Arg"
+;  V16 tmp11        [V16,T07] (  8,  3   )     int  ->  r14         "Inline stloc first use temp"
 ;  V17 tmp12        [V17,T21] (  3,  1.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V18 tmp13        [V18,T16] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V19 tmp14        [V19,T14] (  3,  2   )     int  ->  r14         ld-addr-op "Inlining Arg"
+;  V18 tmp13        [V18,T16] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V19 tmp14        [V19,T14] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V21 tmp16        [V21,T17] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.MemberInfo]>
 ;  V22 tmp17        [V22,T18] (  2,  2   )     ref  ->  rax         single-def "field V13.Node (fldOffset=0x0)" P-INDEP
 ;  V23 tmp18        [V23,T20] (  2,  2   )     int  ->  rdx         "field V13.Action (fldOffset=0x8)" P-INDEP
-;  V24 tmp19        [V24,T23] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V25 tmp20        [V25,T24] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V26 tmp21        [V26,T09] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-;  V27 cse0         [V27,T11] (  4,  2   )     ref  ->  r14         "CSE #02: moderate"
-;  V28 cse1         [V28,T22] (  3,  1.50)     ref  ->  rdi         "CSE #01: moderate"
-;  V29 rat0         [V29,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
-;  V30 rat1         [V30,T10] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
+;  V24 tmp19        [V24,T22] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V25 tmp20        [V25,T23] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V26 tmp21        [V26,T10] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V27 cse0         [V27,T08] (  6,  3   )     ref  ->  r15         "CSE #01: moderate"
+;  V28 rat0         [V28,T02] (  5,  7.50)     ref  ->  r13         "replacement local"
+;  V29 rat1         [V29,T11] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 40
 
 G_M42396_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
        mov      r15, rdi
        mov      rbx, rsi
        mov      r14d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M42396_IG02:
        mov      r13, rbx
        test     r13, r13
        je       SHORT G_M42396_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M42396_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.NewExpression
        cmp      qword ptr [r13], rdi
        je       SHORT G_M42396_IG05
 						;; size=16 bbWeight=0.50 PerfScore 2.12
 G_M42396_IG04:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r13, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M42396_IG05:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, gword ptr [rbx+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        call     [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        mov      dword ptr [rbp-0x2C], eax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r12+0x34], r14d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        cmp      dword ptr [r12+0x30], 3
        jne      SHORT G_M42396_IG07
 						;; size=114 bbWeight=1 PerfScore 24.25
 G_M42396_IG06:
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r12
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
 						;; size=21 bbWeight=0.50 PerfScore 2.88
 G_M42396_IG07:
        cmp      dword ptr [r12+0x30], 0
        je       G_M42396_IG11
 						;; size=12 bbWeight=1 PerfScore 4.00
 G_M42396_IG08:
        mov      rbx, gword ptr [r13+0x10]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r12+0x10]
-       mov      r15d, dword ptr [rdi+0x08]
-       dec      r15d
-       inc      r15d
-       js       G_M42396_IG15
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       mov      r14d, eax
-       cmp      r14d, r15d
+       mov      r15, gword ptr [r12+0x10]
+       mov      r14d, dword ptr [r15+0x08]
+       dec      r14d
+       inc      r14d
+       mov      rsi, r15
+       test     r14d, r14d
+       jl       G_M42396_IG15
+       mov      eax, dword ptr [rsi+0x08]
+       mov      dword ptr [rbp-0x30], eax
+       cmp      eax, r14d
        jl       G_M42396_IG14
-       mov      r14, gword ptr [r12+0x10]
-       cmp      dword ptr [r14+0x08], r15d
+       cmp      dword ptr [r15+0x08], r14d
        je       SHORT G_M42396_IG09
-       movsxd   rsi, r15d
+       movsxd   rsi, r14d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x48], rax
-       mov      rdi, r14
-       mov      r8d, r15d
+       mov      rdi, r15
+       mov      r8d, r14d
        mov      rdx, rax
        xor      esi, esi
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r15, gword ptr [rbp-0x48]
+       mov      r14, gword ptr [rbp-0x48]
        jmp      SHORT G_M42396_IG10
-						;; size=124 bbWeight=0.50 PerfScore 16.25
+						;; size=121 bbWeight=0.50 PerfScore 14.88
 G_M42396_IG09:
-       mov      r15, r14
+       mov      r14, r15
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M42396_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.NewExpression
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      r15, rax
        mov      r13, gword ptr [r13+0x18]
-       lea      rdi, bword ptr [r14+0x10]
+       lea      rdi, bword ptr [r15+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r14+0x08]
-       mov      rsi, r15
+       lea      rdi, bword ptr [r15+0x08]
+       mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r14+0x18]
+       lea      rdi, bword ptr [r15+0x18]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        jmp      SHORT G_M42396_IG12
 						;; size=60 bbWeight=0.50 PerfScore 5.38
 G_M42396_IG11:
-       mov      r14, rbx
+       mov      r15, rbx
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M42396_IG12:
        mov      rdi, r12
-       mov      rsi, r14
+       mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        mov      gword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x38], rdx
        mov      rax, gword ptr [rbp-0x40]
        mov      edx, dword ptr [rbp-0x38]
 						;; size=33 bbWeight=1 PerfScore 7.75
 G_M42396_IG13:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M42396_IG14:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r15d
-       mov      edi, r14d
+       mov      esi, r14d
+       mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M42396_IG15:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r15d
+       mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 542, prolog size 25, PerfScore 78.31, instruction count 132, allocated bytes for code 542 (MethodHash=1c085a63) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 539, prolog size 25, PerfScore 76.94, instruction count 132, allocated bytes for code 539 (MethodHash=1c085a63) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
-2 (-0.26 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 20 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T07] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;  V01 arg1         [V01,T02] (  6,  5.50)     ref  ->  rbx         class-hnd <System.Linq.Expressions.BinaryExpression>
 ;  V02 arg2         [V02,T08] (  3,  3   )     int  ->  r14         single-def
 ;  V03 loc0         [V03,T05] (  6,  5   )     ref  ->  r13         class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
-;  V04 loc1         [V04,T00] ( 18, 12.50)     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V04 loc1         [V04,T00] ( 17, 12   )     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T01] (  5, 10   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V08 tmp3         [V08,T20] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
 ;  V09 tmp4         [V09,T21] (  2,  2   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Reflection.PropertyInfo>
-;  V10 tmp5         [V10,T06] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
-;  V11 tmp6         [V11,T09] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+;  V10 tmp5         [V10,T06] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
+;  V11 tmp6         [V11,T09] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
 ;  V12 tmp7         [V12,T11] (  2,  4   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
 ;  V13 tmp8         [V13,T22] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V14 tmp9         [V14,T31] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V15 tmp10        [V15,T27] (  3,  1.50)     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V16 tmp11        [V16,T04] (  8,  6   )     int  ->  r14         "Inlining Arg"
+;* V14 tmp9         [V14,T30] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V15 tmp10        [V15,T27] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+;  V16 tmp11        [V16,T04] (  8,  6   )     int  ->  r13         "Inlining Arg"
 ;* V17 tmp12        [V17    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V18 tmp13        [V18,T28] (  3,  1.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V19 tmp14        [V19,T23] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V20 tmp15        [V20,T18] (  3,  2   )     int  ->  r13         ld-addr-op "Inlining Arg"
+;  V19 tmp14        [V19,T23] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V20 tmp15        [V20,T18] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V22 tmp17        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V23 tmp18        [V23,T15] (  3,  3   )     int  ->  r15         "Inlining Arg"
+;  V23 tmp18        [V23,T16] (  3,  3   )     int  ->  r15         "Inlining Arg"
 ;  V24 tmp19        [V24,T24] (  2,  2   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
 ;  V25 tmp20        [V25,T25] (  2,  2   )     ref  ->  rax         single-def "field V07.Node (fldOffset=0x0)" P-INDEP
 ;  V26 tmp21        [V26,T26] (  2,  2   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
-;  V27 tmp22        [V27,T12] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V28 tmp23        [V28,T13] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V29 tmp24        [V29,T32] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V30 tmp25        [V30,T33] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V31 tmp26        [V31,T14] (  3,  3   )     ref  ->  rbx         single-def "arr expr"
-;  V32 tmp27        [V32,T16] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-;  V33 cse0         [V33,T17] (  4,  2   )     ref  ->  r13         "CSE #02: moderate"
-;  V34 cse1         [V34,T29] (  3,  1.50)     ref  ->  rdi         "CSE #01: moderate"
-;  V35 cse2         [V35,T30] (  3,  1.50)     ref  ->  rbx         "CSE #04: moderate"
-;  V36 rat0         [V36,T10] (  3,  4   )     ref  ->  rsi         "Spilling to split statement for tree"
-;  V37 rat1         [V37,T03] (  4,  7   )     ref  ->  r13         "replacement local"
-;  V38 rat2         [V38,T19] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V27 tmp22        [V27,T13] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V28 tmp23        [V28,T14] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V29 tmp24        [V29,T31] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V30 tmp25        [V30,T32] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V31 tmp26        [V31,T15] (  3,  3   )     ref  ->  rbx         single-def "arr expr"
+;  V32 tmp27        [V32,T17] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V33 cse0         [V33,T12] (  6,  3   )     ref  ->  r14         "CSE #01: moderate"
+;  V34 cse1         [V34,T29] (  3,  1.50)     ref  ->  rbx         "CSE #03: moderate"
+;  V35 rat0         [V35,T10] (  3,  4   )     ref  ->  rsi         "Spilling to split statement for tree"
+;  V36 rat1         [V36,T03] (  4,  7   )     ref  ->  r13         "replacement local"
+;  V37 rat2         [V37,T19] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 40
 
 G_M54480_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
        mov      r15, rdi
        mov      rbx, rsi
        mov      r14d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M54480_IG02:
        mov      rsi, gword ptr [rbx+0x10]
        mov      r13, rsi
        test     r13, r13
        je       SHORT G_M54480_IG04
 						;; size=12 bbWeight=1 PerfScore 3.50
 G_M54480_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.IndexExpression
        cmp      qword ptr [r13], rdi
        jne      G_M54480_IG15
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M54480_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, gword ptr [r13+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        call     [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        add      eax, 2
        mov      dword ptr [rbp-0x2C], eax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r12+0x34], r14d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [r13+0x10]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        mov      rdi, r12
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        cmp      dword ptr [r12+0x30], 3
        jne      SHORT G_M54480_IG07
 						;; size=155 bbWeight=1 PerfScore 35.50
 G_M54480_IG05:
        mov      rdi, gword ptr [r13+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        test     eax, eax
        je       SHORT G_M54480_IG07
        cmp      gword ptr [r12+0x20], 0
        jne      SHORT G_M54480_IG06
        mov      rsi, gword ptr [r12+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=64 bbWeight=0.50 PerfScore 8.75
 G_M54480_IG06:
        mov      rdi, gword ptr [r12+0x20]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M54480_IG16
        mov      byte  ptr [rdi+0x10], 1
 						;; size=19 bbWeight=0.50 PerfScore 3.50
 G_M54480_IG07:
        cmp      dword ptr [r12+0x30], 0
        je       G_M54480_IG11
 						;; size=12 bbWeight=1 PerfScore 4.00
 G_M54480_IG08:
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rdi, gword ptr [r12+0x10]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M54480_IG16
        mov      rbx, gword ptr [rdi+0x10]
        mov      r15, gword ptr [r13+0x18]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r12+0x10]
-       mov      r14d, dword ptr [rdi+0x08]
-       add      r14d, -2
-       js       G_M54480_IG14
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       lea      r13d, [rax-0x01]
-       cmp      r13d, r14d
+       mov      r14, gword ptr [r12+0x10]
+       mov      r13d, dword ptr [r14+0x08]
+       add      r13d, -2
+       mov      rsi, r14
+       test     r13d, r13d
+       jl       G_M54480_IG14
+       mov      eax, dword ptr [rsi+0x08]
+       dec      eax
+       mov      dword ptr [rbp-0x30], eax
+       cmp      eax, r13d
        jl       G_M54480_IG13
-       mov      r13, gword ptr [r12+0x10]
-       cmp      dword ptr [r13+0x08], r14d
+       cmp      dword ptr [r14+0x08], r13d
        je       SHORT G_M54480_IG09
-       movsxd   rsi, r14d
+       movsxd   rsi, r13d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x48], rax
-       mov      rdi, r13
-       mov      r8d, r14d
+       mov      rdi, r14
+       mov      r8d, r13d
        mov      rdx, rax
        mov      esi, 1
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r14, gword ptr [rbp-0x48]
+       mov      r13, gword ptr [rbp-0x48]
        jmp      SHORT G_M54480_IG10
-						;; size=160 bbWeight=0.50 PerfScore 22.00
+						;; size=158 bbWeight=0.50 PerfScore 20.62
 G_M54480_IG09:
-       mov      r14, r13
+       mov      r13, r14
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M54480_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.IndexExpression
        call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x10]
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x18]
+       lea      rdi, bword ptr [r14+0x18]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, r14
+       lea      rdi, bword ptr [r14+0x08]
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rbx, gword ptr [r12+0x10]
        mov      r15d, dword ptr [rbx+0x08]
        dec      r15d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.AssignBinaryExpression
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      r13, rax
        cmp      r15d, dword ptr [rbx+0x08]
        jae      G_M54480_IG16
        mov      edi, r15d
        mov      rbx, gword ptr [rbx+8*rdi+0x10]
-       lea      rdi, bword ptr [r14+0x10]
-       mov      rsi, r13
+       lea      rdi, bword ptr [r13+0x10]
+       mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r14+0x08]
+       lea      rdi, bword ptr [r13+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, r14
+       mov      rbx, r13
 						;; size=144 bbWeight=0.50 PerfScore 13.00
 G_M54480_IG11:
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        mov      gword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x38], rdx
        mov      rax, gword ptr [rbp-0x40]
        mov      edx, dword ptr [rbp-0x38]
 						;; size=33 bbWeight=1 PerfScore 7.75
 G_M54480_IG12:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M54480_IG13:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r14d
-       mov      edi, r13d
+       mov      esi, r13d
+       mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M54480_IG14:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r14d
+       mov      edi, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 G_M54480_IG15:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M54480_IG16:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 771, prolog size 25, PerfScore 113.25, instruction count 179, allocated bytes for code 771 (MethodHash=8a7f2b2f) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 769, prolog size 25, PerfScore 111.88, instruction count 180, allocated bytes for code 769 (MethodHash=8a7f2b2f) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
-2 (-0.30 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
 ;  V01 arg1         [V01,T01] ( 10,  8   )     ref  ->  rbx         class-hnd <System.Linq.Expressions.Expression>
 ;  V02 arg2         [V02,T07] (  3,  3   )     int  ->  r14         single-def
-;  V03 loc0         [V03,T24] (  2,  1.50)     ref  ->  r13         class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
-;  V04 loc1         [V04,T00] ( 15, 10.50)     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V03 loc0         [V03,T23] (  2,  1.50)     ref  ->  r13         class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
+;  V04 loc1         [V04,T00] ( 14, 10   )     ref  ->  r12         class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T02] (  5, 10   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
 ;  V08 tmp3         [V08,T15] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
 ;  V09 tmp4         [V09,T16] (  2,  2   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Reflection.PropertyInfo>
-;  V10 tmp5         [V10,T05] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
+;  V10 tmp5         [V10,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
 ;  V11 tmp6         [V11,T08] (  2,  4   )     int  ->  [rbp-0x2C]  spill-single-def "Inlining Arg"
 ;  V12 tmp7         [V12,T17] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V13 tmp8         [V13,T25] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V14 tmp9         [V14,T21] (  3,  1.50)     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-;  V15 tmp10        [V15,T04] (  8,  6   )     int  ->  r14         "Inlining Arg"
+;* V13 tmp8         [V13,T24] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V14 tmp9         [V14,T21] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+;  V15 tmp10        [V15,T04] (  8,  6   )     int  ->  r13         "Inlining Arg"
 ;* V16 tmp11        [V16    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V17 tmp12        [V17,T22] (  3,  1.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-;  V18 tmp13        [V18,T18] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V19 tmp14        [V19,T13] (  3,  2   )     int  ->  r13         ld-addr-op "Inlining Arg"
+;  V18 tmp13        [V18,T18] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V19 tmp14        [V19,T13] (  3,  2   )     int  ->  [rbp-0x30]  ld-addr-op spill-single-def "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V22 tmp17        [V22,T19] (  2,  2   )     ref  ->  rax         single-def "field V07.Node (fldOffset=0x0)" P-INDEP
 ;  V23 tmp18        [V23,T20] (  2,  2   )     int  ->  rdx         "field V07.Action (fldOffset=0x8)" P-INDEP
-;  V24 tmp19        [V24,T09] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V25 tmp20        [V25,T10] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
-;  V26 tmp21        [V26,T26] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V27 tmp22        [V27,T27] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V28 tmp23        [V28,T11] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-;  V29 cse0         [V29,T12] (  4,  2   )     ref  ->  r13         "CSE #02: moderate"
-;  V30 cse1         [V30,T23] (  3,  1.50)     ref  ->  rdi         "CSE #01: moderate"
-;  V31 rat0         [V31,T03] (  4,  7   )     ref  ->  r13         "replacement local"
-;  V32 rat1         [V32,T14] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V24 tmp19        [V24,T10] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V25 tmp20        [V25,T11] (  3,  3   )     ref  ->  rdi         single-def "arr expr"
+;  V26 tmp21        [V26,T25] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V27 tmp22        [V27,T26] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V28 tmp23        [V28,T12] (  3,  3   )  struct (16) [rbp-0x40]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+;  V29 cse0         [V29,T09] (  6,  3   )     ref  ->  r14         "CSE #01: moderate"
+;  V30 rat0         [V30,T03] (  4,  7   )     ref  ->  r13         "replacement local"
+;  V31 rat1         [V31,T14] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 40
 
 G_M56350_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
        mov      r15, rdi
        mov      rbx, rsi
        mov      r14d, edx
 						;; size=34 bbWeight=1 PerfScore 8.75
 G_M56350_IG02:
        mov      r13, rbx
        test     r13, r13
        je       SHORT G_M56350_IG04
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M56350_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.IndexExpression
        cmp      qword ptr [r13], rdi
        jne      G_M56350_IG15
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M56350_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, gword ptr [rbx+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        call     [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
        inc      eax
        mov      dword ptr [rbp-0x2C], eax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r12+0x34], r14d
        movsxd   rsi, dword ptr [rbp-0x2C]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
        cmp      dword ptr [r12+0x30], 3
        jne      SHORT G_M56350_IG07
 						;; size=135 bbWeight=1 PerfScore 30.00
 G_M56350_IG05:
        mov      rdi, gword ptr [rbx+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
        test     eax, eax
        je       SHORT G_M56350_IG07
        cmp      gword ptr [r12+0x20], 0
        jne      SHORT G_M56350_IG06
        mov      rsi, gword ptr [r12+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=64 bbWeight=0.50 PerfScore 8.75
 G_M56350_IG06:
        mov      rdi, gword ptr [r12+0x20]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M56350_IG16
        mov      byte  ptr [rdi+0x10], 1
 						;; size=19 bbWeight=0.50 PerfScore 3.50
 G_M56350_IG07:
        cmp      dword ptr [r12+0x30], 0
        je       G_M56350_IG11
 						;; size=12 bbWeight=1 PerfScore 4.00
 G_M56350_IG08:
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        mov      rdi, gword ptr [r12+0x10]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M56350_IG16
        mov      rbx, gword ptr [rdi+0x10]
        mov      r15, gword ptr [r13+0x18]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       mov      rdi, gword ptr [r12+0x10]
-       mov      r14d, dword ptr [rdi+0x08]
-       dec      r14d
-       js       G_M56350_IG14
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       lea      r13d, [rax-0x01]
-       cmp      r13d, r14d
+       mov      r14, gword ptr [r12+0x10]
+       mov      r13d, dword ptr [r14+0x08]
+       dec      r13d
+       mov      rsi, r14
+       test     r13d, r13d
+       jl       G_M56350_IG14
+       mov      eax, dword ptr [rsi+0x08]
+       dec      eax
+       mov      dword ptr [rbp-0x30], eax
+       cmp      eax, r13d
        jl       G_M56350_IG13
-       mov      r13, gword ptr [r12+0x10]
-       cmp      dword ptr [r13+0x08], r14d
+       cmp      dword ptr [r14+0x08], r13d
        je       SHORT G_M56350_IG09
-       movsxd   rsi, r14d
+       movsxd   rsi, r13d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      gword ptr [rbp-0x48], rax
-       mov      rdi, r13
-       mov      r8d, r14d
+       mov      rdi, r14
+       mov      r8d, r13d
        mov      rdx, rax
        mov      esi, 1
        xor      ecx, ecx
        mov      r9, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r14, gword ptr [rbp-0x48]
+       mov      r13, gword ptr [rbp-0x48]
        jmp      SHORT G_M56350_IG10
-						;; size=159 bbWeight=0.50 PerfScore 22.00
+						;; size=157 bbWeight=0.50 PerfScore 20.62
 G_M56350_IG09:
-       mov      r14, r13
+       mov      r13, r14
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M56350_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.IndexExpression
        call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x10]
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x18]
+       lea      rdi, bword ptr [r14+0x18]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, r14
+       lea      rdi, bword ptr [r14+0x08]
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, r13
+       mov      rbx, r14
 						;; size=57 bbWeight=0.50 PerfScore 3.50
 G_M56350_IG11:
        mov      rdi, r12
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
        mov      gword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x38], rdx
        mov      rax, gword ptr [rbp-0x40]
        mov      edx, dword ptr [rbp-0x38]
 						;; size=33 bbWeight=1 PerfScore 7.75
 G_M56350_IG12:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M56350_IG13:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r14d
-       mov      edi, r13d
+       mov      esi, r13d
+       mov      edi, dword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M56350_IG14:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r14d
+       mov      edi, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 G_M56350_IG15:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
 G_M56350_IG16:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 662, prolog size 25, PerfScore 96.25, instruction count 156, allocated bytes for code 662 (MethodHash=831323e1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 660, prolog size 25, PerfScore 94.88, instruction count 157, allocated bytes for code 660 (MethodHash=831323e1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
 ; ============================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment