Skip to content

Instantly share code, notes, and snippets.

@amanasifkhalid
Created March 14, 2024 02:25
Show Gist options
  • Save amanasifkhalid/7549ccefe15522b1b3eed6a497ec89e9 to your computer and use it in GitHub Desktop.
Save amanasifkhalid/7549ccefe15522b1b3eed6a497ec89e9 to your computer and use it in GitHub Desktop.
#99730 diffs

Diffs are based on 2,564,417 contexts (1,007,474 MinOpts, 1,556,943 FullOpts).

MISSED contexts: base: 447 (0.02%), diff: 476 (0.02%)

Overall (-180,912 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet.run.windows.x64.checked.mch 52,204,894 -32,024 -8.65%
benchmarks.run.windows.x64.checked.mch 8,796,073 -3,776 -3.62%
benchmarks.run_pgo.windows.x64.checked.mch 33,511,827 -5,887 -9.58%
benchmarks.run_tiered.windows.x64.checked.mch 12,469,177 -1,927 -4.88%
coreclr_tests.run.windows.x64.checked.mch 402,635,518 -14,352 -2.27%
libraries.crossgen2.windows.x64.checked.mch 45,117,703 -6,130 -1.44%
libraries.pmi.windows.x64.checked.mch 62,176,676 -17,666 -3.37%
libraries_tests.run.windows.x64.Release.mch 283,466,158 -60,411 -6.18%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 137,234,766 -26,389 -0.85%
realworld.run.windows.x64.checked.mch 13,455,455 -7,866 -2.16%
smoke_tests.nativeaot.windows.x64.checked.mch 5,099,711 -4,484 -2.60%
FullOpts (-180,912 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet.run.windows.x64.checked.mch 32,289,777 -32,024 -8.65%
benchmarks.run.windows.x64.checked.mch 8,795,713 -3,776 -3.62%
benchmarks.run_pgo.windows.x64.checked.mch 19,962,751 -5,887 -9.58%
benchmarks.run_tiered.windows.x64.checked.mch 3,217,764 -1,927 -4.88%
coreclr_tests.run.windows.x64.checked.mch 122,150,331 -14,352 -2.27%
libraries.crossgen2.windows.x64.checked.mch 45,116,516 -6,130 -1.44%
libraries.pmi.windows.x64.checked.mch 62,063,182 -17,666 -3.37%
libraries_tests.run.windows.x64.Release.mch 107,372,992 -60,411 -6.18%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,394,892 -26,389 -0.85%
realworld.run.windows.x64.checked.mch 13,049,814 -7,866 -2.16%
smoke_tests.nativeaot.windows.x64.checked.mch 5,098,764 -4,484 -2.60%
Example diffs
aspnet.run.windows.x64.checked.mch
-5 (-20.00%) : 45859.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        sub      rsp, 40
 						;; size=4 bbWeight=1 PerfScore 0.25
 G_M54891_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M54891_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-30 (-18.40%) : 8862.dasm - System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
@@ -31,22 +31,22 @@ G_M22329_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rsi]
        test     rsi, rsi
        je       SHORT G_M22329_IG06
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rsi, gword ptr [rsi+0x30]
-						;; size=28 bbWeight=1 PerfScore 6.50
+						;; size=23 bbWeight=1 PerfScore 6.50
 G_M22329_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
        jne      SHORT G_M22329_IG09
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M22329_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M22329_IG05:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -61,34 +61,34 @@ G_M22329_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
 						;; size=4 bbWeight=0 PerfScore 0.00
 G_M22329_IG07:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M22329_IG04
-						;; size=17 bbWeight=0 PerfScore 0.00
+						;; size=12 bbWeight=0 PerfScore 0.00
 G_M22329_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M22329_IG04
-						;; size=17 bbWeight=0 PerfScore 0.00
+						;; size=12 bbWeight=0 PerfScore 0.00
 G_M22329_IG09:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx rsi]
        test     byte  ptr [rsi+0x34], 8
        jne      SHORT G_M22329_IG07
        test     byte  ptr [rbx+0x34], 4
        je       SHORT G_M22329_IG08
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
-						;; size=48 bbWeight=0 PerfScore 0.00
+						;; size=38 bbWeight=0 PerfScore 0.00
 G_M22329_IG10:        ; bbWeight=0, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -97,7 +97,7 @@ G_M22329_IG10:        ; bbWeight=0, epilog, nogc, extend
        ; gcr arg pop 0
 						;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 163, prolog size 9, PerfScore 14.00, instruction count 41, allocated bytes for code 163 (MethodHash=059da8c6) for method System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
+; Total bytes of code 133, prolog size 9, PerfScore 14.00, instruction count 41, allocated bytes for code 133 (MethodHash=059da8c6) for method System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-30 (-17.86%) : 83838.dasm - System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
@@ -43,21 +43,21 @@ G_M450_IG03:        ; bbWeight=0.92, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
        jne      SHORT G_M450_IG08
 						;; size=7 bbWeight=0.92 PerfScore 3.68
 G_M450_IG04:        ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-						;; size=15 bbWeight=0.46 PerfScore 0.57
+						;; size=10 bbWeight=0.46 PerfScore 0.57
 G_M450_IG05:        ; bbWeight=0.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
        jne      SHORT G_M450_IG09
 						;; size=5 bbWeight=0.97 PerfScore 1.22
 G_M450_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M450_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -66,35 +66,35 @@ G_M450_IG07:        ; bbWeight=1, epilog, nogc, extend
 						;; size=7 bbWeight=1 PerfScore 2.25
 G_M450_IG08:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M450_IG11
-						;; size=17 bbWeight=0.46 PerfScore 1.49
+						;; size=12 bbWeight=0.46 PerfScore 1.49
 G_M450_IG09:        ; bbWeight=0.23, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        cmp      gword ptr [rbx+0x10], 0
        jne      SHORT G_M450_IG11
 						;; size=7 bbWeight=0.23 PerfScore 0.94
 G_M450_IG10:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M450_IG06
-						;; size=17 bbWeight=0.12 PerfScore 0.38
+						;; size=12 bbWeight=0.12 PerfScore 0.38
 G_M450_IG11:        ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
-						;; size=36 bbWeight=0.05 PerfScore 0.14
+						;; size=26 bbWeight=0.05 PerfScore 0.14
 G_M450_IG12:        ; bbWeight=0.05, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -103,7 +103,7 @@ G_M450_IG12:        ; bbWeight=0.05, epilog, nogc, extend
        ; gcr arg pop 0
 						;; size=12 bbWeight=0.05 PerfScore 0.15
 
-; Total bytes of code 168, prolog size 12, PerfScore 18.07, instruction count 41, allocated bytes for code 168 (MethodHash=8cedfe3d) for method System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
+; Total bytes of code 138, prolog size 12, PerfScore 18.07, instruction count 41, allocated bytes for code 138 (MethodHash=8cedfe3d) for method System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 108609.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 136928
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 136928
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 114658.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 129856
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 129856
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 119749.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 137632
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 137632
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
benchmarks.run.windows.x64.checked.mch
-9 (-6.98%) : 7635.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
        xor      r11d, r11d
        xor      ebx, ebx
        test     ecx, ecx
-       jle      SHORT G_M18424_IG12
+       jle      SHORT G_M18424_IG10
 						;; size=28 bbWeight=1 PerfScore 13.75
 G_M18424_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
        cmp      r11d, r8d
-       jae      SHORT G_M18424_IG07
+       jae      SHORT G_M18424_IG09
        lea      esi, [r11+0x01]
        mov      r11d, r11d
        movzx    rdi, byte  ptr [r9+rbx]
        mov      byte  ptr [rax+r11], dil
        inc      ebx
        cmp      ebx, ecx
-       jl       SHORT G_M18424_IG11
+       jl       SHORT G_M18424_IG08
 						;; size=27 bbWeight=4 PerfScore 26.00
 G_M18424_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        ; byrRegs -[r9]
        xor      ecx, ecx
        test     edx, edx
-       jle      SHORT G_M18424_IG10
+       jle      SHORT G_M18424_IG06
 						;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        cmp      esi, r8d
-       jae      SHORT G_M18424_IG09
+       jae      SHORT G_M18424_IG06
        mov      r9d, esi
        lea      esi, [r9+0x01]
        movzx    r11, byte  ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
        cmp      ecx, edx
        jl       SHORT G_M18424_IG05
 						;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rax r10]
-       mov      r11d, esi
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, r11d
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, esi
+						;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
        ; byrRegs +[rax r9-r10]
        mov      r11d, esi
        jmp      SHORT G_M18424_IG03
 						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
-       ; byrRegs -[r9]
+G_M18424_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rax r9-r10]
+       mov      esi, r11d
+       jmp      SHORT G_M18424_IG06
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+       ; byrRegs +[rax r10]
        mov      esi, r11d
        jmp      SHORT G_M18424_IG04
 						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-29 (-5.56%) : 18344.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
@@ -44,10 +44,10 @@
 ;* V33 tmp26        [V33    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp27        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.MethodDefinitionHandle>
 ;* V35 tmp28        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Reflection.Metadata.MethodDefinitionHandle>
-;  V36 tmp29        [V36,T21] (  2,  2   )     int  ->   r8         single-def "Inline stloc first use temp"
+;  V36 tmp29        [V36,T21] (  2,  2   )     int  ->  rax         single-def "Inline stloc first use temp"
 ;* V37 tmp30        [V37    ] (  0,  0   )  ushort  ->  zero-ref    "Inline return value spill temp"
-;  V38 tmp31        [V38,T07] (  3,  6   )   byref  ->  r10         single-def "Inlining Arg"
-;  V39 tmp32        [V39,T09] (  3,  6   )     int  ->   r8         "Inlining Arg"
+;  V38 tmp31        [V38,T07] (  3,  6   )   byref  ->   r8         single-def "Inlining Arg"
+;  V39 tmp32        [V39,T09] (  3,  6   )     int  ->  rax         "Inlining Arg"
 ;* V40 tmp33        [V40    ] (  0,  0   )  ushort  ->  zero-ref    "Inline stloc first use temp"
 ;  V41 tmp34        [V41,T17] (  2,  2   )     int  ->  rsi         single-def "field V01._rowId (fldOffset=0x0)" P-INDEP
 ;  V42 tmp35        [V42,T04] (  5,  5   )     int  ->  [rbp+0x20]  EH-live single-def "field V02._rowId (fldOffset=0x0)" P-INDEP
@@ -61,7 +61,7 @@
 ;  V50 tmp43        [V50,T22] (  2,  2   )     int  ->  r14         single-def "field V22._rowId (fldOffset=0x0)" P-INDEP
 ;* V51 tmp44        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "field V23._rowId (fldOffset=0x0)" P-INDEP
 ;* V52 tmp45        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V30._rowId (fldOffset=0x0)" P-INDEP
-;  V53 tmp46        [V53,T23] (  2,  2   )     int  ->   r8         single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
+;  V53 tmp46        [V53,T23] (  2,  2   )     int  ->  rax         single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
 ;* V54 tmp47        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "field V35._rowId (fldOffset=0x0)" P-INDEP
 ;  V55 PSPSym       [V55,T24] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
 ;  V56 cse0         [V56,T19] (  3,  3   )     int  ->  rcx         "CSE #17: moderate"
@@ -114,8 +114,7 @@ G_M29476_IG04:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        mov      r14d, eax
-       mov      eax, dword ptr [rbp+0x20]
-						;; size=20 bbWeight=1 PerfScore 5.75
+						;; size=17 bbWeight=1 PerfScore 4.75
 G_M29476_IG05:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        mov      ecx, r14d
        shr      ecx, 24
@@ -133,57 +132,57 @@ G_M29476_IG05:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
        add      r14d, dword ptr [rdi+0x10]
        mov      edx, r14d
        add      rdx, 2
-       movsxd   r8, dword ptr [rcx+0x08]
-       cmp      rdx, r8
+       movsxd   rax, dword ptr [rcx+0x08]
+       cmp      rdx, rax
        ja       G_M29476_IG09
        mov      rcx, qword ptr [rcx]
        ; byrRegs -[rcx]
        movsxd   rdx, r14d
        movzx    rdi, word  ptr [rcx+rdx]
        ; byrRegs -[rdi]
-       jmp      G_M29476_IG07
-						;; size=78 bbWeight=1 PerfScore 23.50
-G_M29476_IG06:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M29476_IG07
+						;; size=75 bbWeight=1 PerfScore 23.50
+G_M29476_IG06:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rdi]
        lea      rdx, bword ptr [rdi+0x1B8]
        ; byrRegs +[rdx]
-       mov      r8d, r14d
-       and      r8d, 0xD1FFAB1E
-       dec      r8d
-       imul     r8d, dword ptr [rdx+0x20]
-       lea      r10, bword ptr [rdx+0x28]
-       ; byrRegs +[r10]
-       add      r8d, dword ptr [rdx+0x10]
-       mov      edx, r8d
+       mov      eax, r14d
+       and      eax, 0xD1FFAB1E
+       dec      eax
+       imul     eax, dword ptr [rdx+0x20]
+       lea      r8, bword ptr [rdx+0x28]
+       ; byrRegs +[r8]
+       add      eax, dword ptr [rdx+0x10]
+       mov      edx, eax
        ; byrRegs -[rdx]
        add      rdx, 2
-       movsxd   r9, dword ptr [r10+0x08]
-       cmp      rdx, r9
-       ja       G_M29476_IG09
-       mov      rdx, qword ptr [r10]
-       movsxd   r8, r8d
-       movzx    rdx, word  ptr [rdx+r8]
-       mov      r8d, ecx
-       and      r8d, 15
-       mov      r10d, edx
-       ; byrRegs -[r10]
-       and      r10d, -8
-       or       r10d, 1
-       cmp      r8d, 6
-       cmove    edx, r10d
-       mov      r8d, edx
-       or       r8d, 0x400
-       test     cl, 16
-       cmovne   edx, r8d
+       movsxd   r10, dword ptr [r8+0x08]
+       cmp      rdx, r10
+       ja       SHORT G_M29476_IG09
+       mov      rdx, qword ptr [r8]
+       cdqe     
+       movzx    rdx, word  ptr [rdx+rax]
+       mov      eax, ecx
+       and      eax, 15
        mov      r8d, edx
+       ; byrRegs -[r8]
        and      r8d, -8
-       or       r8d, 6
+       or       r8d, 1
+       cmp      eax, 6
+       cmove    edx, r8d
+       mov      eax, edx
+       or       eax, 0x400
+       test     cl, 16
+       cmovne   edx, eax
+       mov      eax, edx
+       and      eax, -8
+       or       eax, 6
        test     cl, 32
-       cmovne   edx, r8d
+       cmovne   edx, eax
        mov      edi, edx
        ; gcrRegs -[rdi]
        or       edi, 128
-						;; size=133 bbWeight=1 PerfScore 24.25
+						;; size=110 bbWeight=1 PerfScore 24.25
 G_M29476_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     dil, 64
        jne      SHORT G_M29476_IG10
@@ -307,7 +306,7 @@ G_M29476_IG22:        ; bbWeight=0, funclet epilog, nogc, extend
 RWD00  	dq	006200740056005Fh, 007000610047006Ch
 
 
-; Total bytes of code 522, prolog size 34, PerfScore 120.75, instruction count 163, allocated bytes for code 522 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
+; Total bytes of code 493, prolog size 34, PerfScore 119.75, instruction count 162, allocated bytes for code 493 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
-22 (-5.25%) : 3161.dasm - System.Random:AssertInRange(double) (FullOpts)
@@ -64,12 +64,12 @@ G_M126_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      ecx, ecx
        vucomisd xmm1, xmm0
        seta     cl
-       vmovsd   xmm0, qword ptr [rsp+0x60]
        jmp      SHORT G_M126_IG05
-						;; size=31 bbWeight=0.50 PerfScore 6.12
+						;; size=25 bbWeight=0.50 PerfScore 4.62
 G_M126_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      ecx, ecx
-						;; size=2 bbWeight=0.50 PerfScore 0.12
+       vmovsd   qword ptr [rsp+0x60], xmm0
+						;; size=8 bbWeight=0.50 PerfScore 0.62
 G_M126_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        movzx    rbx, cl
        test     ebx, ebx
@@ -83,7 +83,6 @@ G_M126_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 						;; size=6 bbWeight=0.50 PerfScore 1.25
 G_M126_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
-       vmovsd   qword ptr [rsp+0x60], xmm0
        mov      rcx, 0xD1FFAB1E      ; System.Text.StringBuilder
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -103,8 +102,7 @@ G_M126_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        mov      edi, 1
-       vmovsd   xmm0, qword ptr [rsp+0x60]
-						;; size=74 bbWeight=0.50 PerfScore 5.00
+						;; size=62 bbWeight=0.50 PerfScore 3.00
 G_M126_IG08:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        mov      gword ptr [rsp+0x28], rsi
        xor      rcx, rcx
@@ -130,24 +128,22 @@ G_M126_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      r8, bword ptr [r8+2*rax+0x10]
        ; gcrRegs -[r8]
        ; byrRegs +[r8]
-       vmovdqu  ymm1, ymmword ptr [rdx]
-       vmovdqu  ymmword ptr [r8], ymm1
+       vmovdqu  ymm0, ymmword ptr [rdx]
+       vmovdqu  ymmword ptr [r8], ymm0
        mov      dword ptr [rcx+0x18], r10d
        jmp      SHORT G_M126_IG11
 						;; size=54 bbWeight=0.50 PerfScore 10.50
 G_M126_IG10:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
        ; byrRegs -[r8]
-       vmovsd   qword ptr [rsp+0x60], xmm0
        mov      r8d, 16
        call     [<unknown method>]
        ; gcrRegs -[rcx]
        ; byrRegs -[rdx]
        ; gcr arg pop 0
-       vmovsd   xmm0, qword ptr [rsp+0x60]
-						;; size=24 bbWeight=0.50 PerfScore 3.62
+						;; size=12 bbWeight=0.50 PerfScore 1.62
 G_M126_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        lea      rcx, [rsp+0x28]
-       vmovaps  xmm1, xmm0
+       vmovsd   xmm1, qword ptr [rsp+0x60]
        call     [<unknown method>]
        ; gcr arg pop 0
        mov      rcx, gword ptr [rsp+0x28]
@@ -170,7 +166,7 @@ G_M126_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      qword ptr [r8+0x04], r9
        mov      dword ptr [rcx+0x18], r10d
        jmp      SHORT G_M126_IG13
-						;; size=74 bbWeight=0.50 PerfScore 11.88
+						;; size=76 bbWeight=0.50 PerfScore 13.25
 G_M126_IG12:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
        ; byrRegs -[r8]
        mov      r8d, 6
@@ -226,7 +222,7 @@ G_M126_IG19:        ; bbWeight=1, epilog, nogc, extend
 RWD00  	dq	3FF0000000000000h	;            1
 
 
-; Total bytes of code 419, prolog size 24, PerfScore 69.50, instruction count 101, allocated bytes for code 419 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (FullOpts)
+; Total bytes of code 397, prolog size 24, PerfScore 65.88, instruction count 97, allocated bytes for code 397 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+12.50%) : 21648.dasm - System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
@@ -33,24 +33,27 @@ G_M50325_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ; gcrRegs -[rax rcx]
        xor      rax, rax
        ; byrRegs +[rax]
+       mov      rcx, rax
+       ; byrRegs +[rcx]
        jmp      SHORT G_M50325_IG05
-						;; size=4 bbWeight=0.50 PerfScore 1.12
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M50325_IG04:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rax]
-       ; byrRegs -[rax]
+       ; byrRegs -[rax rcx]
        lea      rcx, bword ptr [rax+0x10]
        ; byrRegs +[rcx]
        mov      eax, dword ptr [rax+0x08]
        ; gcrRegs -[rax]
+						;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M50325_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        mov      rax, rcx
        ; byrRegs +[rax]
-						;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M50325_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, epilog, nogc
-       ; byrRegs -[rcx]
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M50325_IG06:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 24, prolog size 0, PerfScore 6.75, instruction count 9, allocated bytes for code 24 (MethodHash=31d03b6a) for method System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 7.00, instruction count 10, allocated bytes for code 27 (MethodHash=31d03b6a) for method System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+9 (+16.36%) : 3252.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
@@ -16,8 +16,8 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V07 tmp6         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->   r8         "Inlining Arg"
-;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->  rcx         single-def "Inlining Arg"
+;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->  rdx         "Inlining Arg"
+;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->   r8         single-def "Inlining Arg"
 ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp10        [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M12223_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      r8d, r8d
+       mov      rax, rcx
+       ; byrRegs +[rax]
+       mov      ecx, r8d
+       ; byrRegs -[rcx]
+       mov      r8, rax
+       ; byrRegs +[r8]
        jmp      SHORT G_M12223_IG05
-						;; size=7 bbWeight=0.50 PerfScore 1.25
+						;; size=16 bbWeight=0.50 PerfScore 1.62
 G_M12223_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax r8]
        lea      r8, bword ptr [rcx+0x10]
        ; byrRegs +[r8]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
-       mov      eax, ecx
+						;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M12223_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+       mov      edx, ecx
        mov      rcx, r8
        ; byrRegs +[rcx]
-       mov      r8d, eax
+       mov      r8d, edx
        ; byrRegs -[r8]
-						;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M12223_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        xor      edx, edx
        call     [<unknown method>]
        ; byrRegs -[rcx]
        ; gcr arg pop 0
        shr      eax, 31
-						;; size=11 bbWeight=1 PerfScore 3.75
+						;; size=19 bbWeight=1 PerfScore 4.50
 G_M12223_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=bc02d040) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=bc02d040) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+9 (+16.36%) : 10728.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
@@ -16,8 +16,8 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V07 tmp6         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->   r8         "Inlining Arg"
-;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->  rcx         single-def "Inlining Arg"
+;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->  rdx         "Inlining Arg"
+;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->   r8         single-def "Inlining Arg"
 ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp10        [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M38377_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      r8d, r8d
+       mov      rax, rcx
+       ; byrRegs +[rax]
+       mov      ecx, r8d
+       ; byrRegs -[rcx]
+       mov      r8, rax
+       ; byrRegs +[r8]
        jmp      SHORT G_M38377_IG05
-						;; size=7 bbWeight=0.50 PerfScore 1.25
+						;; size=16 bbWeight=0.50 PerfScore 1.62
 G_M38377_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax r8]
        lea      r8, bword ptr [rcx+0x10]
        ; byrRegs +[r8]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
-       mov      eax, ecx
+						;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M38377_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+       mov      edx, ecx
        mov      rcx, r8
        ; byrRegs +[rcx]
-       mov      r8d, eax
+       mov      r8d, edx
        ; byrRegs -[r8]
-						;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M38377_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        xor      edx, edx
        call     [<unknown method>]
        ; byrRegs -[rcx]
        ; gcr arg pop 0
        shr      eax, 31
-						;; size=11 bbWeight=1 PerfScore 3.75
+						;; size=19 bbWeight=1 PerfScore 4.50
 G_M38377_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=9a9e6a16) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=9a9e6a16) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-21 (-8.61%) : 84154.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
@@ -9,29 +9,30 @@
 ; 4 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  3   )   byref  ->  rcx         this single-def
-;  V01 TypeCtx      [V01,T02] (  4,  3.31)    long  ->  rdx         single-def
-;  V02 arg1         [V02,T00] (  9, 11.97)     ref  ->  rbx         class-hnd single-def <System.__Canon>
-;  V03 loc0         [V03,T04] (  4,  2.55)     ref  ->  rsi         class-hnd exact single-def <<unknown class>>
+;  V00 this         [V00,T02] (  3,  3   )   byref  ->  rcx         this single-def
+;  V01 TypeCtx      [V01,T01] (  4,  3.31)    long  ->  rdx         single-def
+;  V02 arg1         [V02,T00] (  9,  5.21)     ref  ->  rbx         class-hnd single-def <System.__Canon>
+;  V03 loc0         [V03,T03] (  4,  2.55)     ref  ->  rsi         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T05] (  6,  1.86)     int  ->  rax        
-;  V05 loc2         [V05,T14] (  3,  0.93)     ref  ->  rdi         class-hnd single-def <<unknown class>>
-;  V06 loc3         [V06,T08] ( 10,  1.41)     int  ->  r14        
+;  V05 loc2         [V05,T15] (  3,  0.93)     ref  ->  rdi         class-hnd single-def <<unknown class>>
+;  V06 loc3         [V06,T09] ( 10,  1.41)     int  ->  r14        
 ;* V07 loc4         [V07    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd <System.__Canon>
-;  V08 loc5         [V08,T09] (  6,  1.10)     ref  ->  rcx         class-hnd <System.__Canon>
+;  V08 loc5         [V08,T10] (  6,  1.10)     ref  ->  rcx         class-hnd <System.__Canon>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T06] (  4,  0.48)     int  ->  rax         "guarded devirt return temp"
-;  V11 tmp2         [V11,T01] (  5,  8.69)     ref  ->  rcx         class-hnd exact "guarded devirt this exact temp" <System.String>
+;  V10 tmp1         [V10,T07] (  4,  0.48)     int  ->  rax         "guarded devirt return temp"
+;  V11 tmp2         [V11,T06] (  4,  1.69)     ref  ->  rcx         class-hnd exact "guarded devirt this exact temp" <System.String>
 ;* V12 tmp3         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.String>
-;* V13 tmp4         [V13,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.String>
-;  V14 tmp5         [V14,T12] (  2,  0.97)   byref  ->  rax         "impAppendStmt"
+;* V13 tmp4         [V13,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.String>
+;  V14 tmp5         [V14,T13] (  2,  0.97)   byref  ->  rcx         "impAppendStmt"
 ;* V15 tmp6         [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp7         [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp8         [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V18 tmp9         [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp10        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V20 tmp11        [V20,T07] (  3,  1.45)     ref  ->  rax         single-def "arr expr"
-;  V21 cse0         [V21,T13] (  5,  0.93)     int  ->  rbp         "CSE #01: conservative"
-;  V22 cse1         [V22,T11] (  3,  0.97)    long  ->   r8         "CSE #02: conservative"
+;  V20 tmp11        [V20,T08] (  3,  1.45)     ref  ->  rax         single-def "arr expr"
+;  V21 cse0         [V21,T14] (  5,  0.93)     int  ->  rbp         "CSE #01: conservative"
+;  V22 cse1         [V22,T04] (  3,  2.17)     int  ->   r8         "CSE #04: aggressive"
+;  V23 cse2         [V23,T12] (  3,  0.97)    long  ->   r8         "CSE #02: conservative"
 ;
 ; Lcl frame size = 48
 
@@ -51,7 +52,7 @@ G_M33817_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx},
        mov      rsi, gword ptr [rcx]
        ; gcrRegs +[rsi]
        test     rsi, rsi
-       jne      SHORT G_M33817_IG09
+       jne      SHORT G_M33817_IG05
 						;; size=8 bbWeight=1 PerfScore 3.25
 G_M33817_IG03:        ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
@@ -68,48 +69,8 @@ G_M33817_IG04:        ; bbWeight=0.69, epilog, nogc, extend
        pop      r14
        ret      
 						;; size=11 bbWeight=0.69 PerfScore 2.59
-G_M33817_IG05:        ; bbWeight=7.72, gcVars=0000000000000000 {}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax] +[rcx rbx rsi rdi]
-       mov      r8d, dword ptr [rcx+0x08]
-       cmp      r8d, dword ptr [rbx+0x08]
-       jne      G_M33817_IG18
-						;; size=14 bbWeight=7.72 PerfScore 46.34
-G_M33817_IG06:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
-       lea      rax, bword ptr [rcx+0x0C]
-       ; byrRegs +[rax]
-       mov      r8d, dword ptr [rcx+0x08]
-       add      r8d, r8d
-       lea      rdx, bword ptr [rbx+0x0C]
-       ; byrRegs +[rdx]
-       mov      rcx, rax
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       call     [<unknown method>]
-       ; byrRegs -[rax rcx rdx]
-       ; gcr arg pop 0
-       test     eax, eax
-       je       G_M33817_IG18
-						;; size=32 bbWeight=0.24 PerfScore 1.87
-G_M33817_IG07:        ; bbWeight=0.24, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx rdi]
-       mov      rax, gword ptr [rsi+0x10]
-       ; gcrRegs +[rax]
-       cmp      r14d, dword ptr [rax+0x08]
-       jae      SHORT G_M33817_IG16
-       mov      ecx, r14d
-       mov      rax, gword ptr [rax+8*rcx+0x10]
-						;; size=18 bbWeight=0.24 PerfScore 1.99
-G_M33817_IG08:        ; bbWeight=0.24, epilog, nogc, extend
-       add      rsp, 48
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=0.24 PerfScore 0.91
-G_M33817_IG09:        ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax] +[rbx]
+G_M33817_IG05:        ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rbx rsi]
        mov      rcx, rdx
        mov      rdx, rbx
        ; gcrRegs +[rdx]
@@ -127,41 +88,74 @@ G_M33817_IG09:        ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=004
        idiv     edx:eax, ebp
        mov      r14d, edx
 						;; size=34 bbWeight=0.31 PerfScore 10.63
-G_M33817_IG10:        ; bbWeight=0.31, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG06:        ; bbWeight=0.31, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        cmp      r14d, ebp
-       jae      SHORT G_M33817_IG16
+       jae      SHORT G_M33817_IG15
        mov      r8d, r14d
        mov      rcx, gword ptr [rdi+8*r8+0x10]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M33817_IG03
-						;; size=22 bbWeight=0.31 PerfScore 1.47
-G_M33817_IG11:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       je       SHORT G_M33817_IG03
+						;; size=18 bbWeight=0.31 PerfScore 1.47
+G_M33817_IG07:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      r8, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [rcx], r8
-       jne      SHORT G_M33817_IG17
+       jne      SHORT G_M33817_IG16
 						;; size=15 bbWeight=0.24 PerfScore 1.03
-G_M33817_IG12:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG08:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        cmp      rcx, rbx
-       je       SHORT G_M33817_IG07
+       je       SHORT G_M33817_IG13
 						;; size=5 bbWeight=0.24 PerfScore 0.30
-G_M33817_IG13:        ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG09:        ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
-       je       SHORT G_M33817_IG18
+       je       SHORT G_M33817_IG17
 						;; size=5 bbWeight=0.97 PerfScore 1.21
-G_M33817_IG14:        ; bbWeight=0.48, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG10:        ; bbWeight=0.48, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        cmp      qword ptr [rbx], r8
-       jne      SHORT G_M33817_IG18
+       jne      SHORT G_M33817_IG17
 						;; size=5 bbWeight=0.48 PerfScore 1.93
-G_M33817_IG15:        ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
-       jmp      G_M33817_IG05
-						;; size=5 bbWeight=0.97 PerfScore 1.93
-G_M33817_IG16:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rcx rbx rsi rdi]
+G_M33817_IG11:        ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       mov      r8d, dword ptr [rcx+0x08]
+       cmp      r8d, dword ptr [rbx+0x08]
+       jne      SHORT G_M33817_IG17
+						;; size=10 bbWeight=0.97 PerfScore 5.79
+G_M33817_IG12:        ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       add      rcx, 12
+       ; gcrRegs -[rcx]
+       ; byrRegs +[rcx]
+       add      r8d, r8d
+       lea      rdx, bword ptr [rbx+0x0C]
+       ; byrRegs +[rdx]
+       call     [<unknown method>]
+       ; byrRegs -[rcx rdx]
+       ; gcr arg pop 0
+       test     eax, eax
+       je       SHORT G_M33817_IG17
+						;; size=21 bbWeight=0.24 PerfScore 1.27
+G_M33817_IG13:        ; bbWeight=0.24, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx rdi]
+       mov      rax, gword ptr [rsi+0x10]
+       ; gcrRegs +[rax]
+       cmp      r14d, dword ptr [rax+0x08]
+       jae      SHORT G_M33817_IG15
+       mov      ecx, r14d
+       mov      rax, gword ptr [rax+8*rcx+0x10]
+						;; size=18 bbWeight=0.24 PerfScore 1.99
+G_M33817_IG14:        ; bbWeight=0.24, epilog, nogc, extend
+       add      rsp, 48
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=0.24 PerfScore 0.91
+G_M33817_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax rsi]
        call     CORINFO_HELP_RNGCHKFAIL
        ; gcr arg pop 0
 						;; size=5 bbWeight=0 PerfScore 0.00
-G_M33817_IG17:        ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M33817_IG16:        ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx rbx rsi rdi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
@@ -171,17 +165,17 @@ G_M33817_IG17:        ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       jne      G_M33817_IG07
-						;; size=21 bbWeight=0 PerfScore 0.00
-G_M33817_IG18:        ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       jne      SHORT G_M33817_IG13
+						;; size=17 bbWeight=0 PerfScore 0.00
+G_M33817_IG17:        ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        inc      r14d
        cmp      ebp, r14d
-       jg       SHORT G_M33817_IG10
+       jg       G_M33817_IG06
        sub      r14d, ebp
-       jmp      SHORT G_M33817_IG10
-						;; size=13 bbWeight=0 PerfScore 0.00
+       jmp      G_M33817_IG06
+						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 244, prolog size 18, PerfScore 82.12, instruction count 82, allocated bytes for code 244 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
+; Total bytes of code 223, prolog size 18, PerfScore 39.03, instruction count 79, allocated bytes for code 223 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
 ; ============================================================
 
 Unwind Info:
-42 (-6.48%) : 50385.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -10,15 +10,15 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,   0   )     ref  ->  zero-ref    this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-;  V01 arg1         [V01,T06] ( 12, 249.72)     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
+;  V01 arg1         [V01,T06] ( 12, 249.79)     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
 ;  V02 arg2         [V02,T02] ( 15, 599.90)     ref  ->  rbx         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T10] (  5,   4   )     int  ->   r9         single-def
-;  V04 arg4         [V04,T11] (  1,   1   )     int  ->  [rsp+0x80]  single-def
-;  V05 loc0         [V05,T07] ( 11, 247.56)     int  ->  rdi        
-;  V06 loc1         [V06,T08] ( 13,  12.41)     int  ->  rax        
+;  V03 arg3         [V03,T11] (  5,   4   )     int  ->   r9         single-def
+;  V04 arg4         [V04,T12] (  1,   1   )     int  ->  [rsp+0x80]  single-def
+;  V05 loc0         [V05,T07] ( 11, 247.63)     int  ->  rdi        
+;  V06 loc1         [V06,T09] ( 13,  12.45)     int  ->  rax        
 ;  V07 loc2         [V07,T01] ( 13, 967.85)     int  ->  rbp        
 ;  V08 OutArgs      [V08    ] (  1,   1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T12] (  6,   0   )     int  ->  r15         "guarded devirt return temp"
+;  V09 tmp1         [V09,T08] (  6,   0   )     int  ->  r15         "guarded devirt return temp"
 ;  V10 tmp2         [V10,T00] ( 18,1910.06)     ref  ->  r14         "guarded devirt arg temp"
 ;* V11 tmp3         [V11    ] (  0,   0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.String>
 ;* V12 tmp4         [V12    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.String>
@@ -27,7 +27,7 @@
 ;  V15 tmp7         [V15,T14] (  6,   0   )   byref  ->  rdx         "spilling arg"
 ;  V16 tmp8         [V16,T15] (  6,   0   )    long  ->   r8         "spilling arg"
 ;  V17 tmp9         [V17,T16] (  6,   0   )     int  ->  r15         "Grabbing temp for Qmark"
-;  V18 cse0         [V18,T09] (  3,   7.21)     ref  ->  r14         "CSE #10: aggressive"
+;  V18 cse0         [V18,T10] (  3,   7.21)     ref  ->  r14         "CSE #10: aggressive"
 ;  V19 cse1         [V19,T03] (  3, 713.55)     ref  ->  r14         "CSE #03: aggressive"
 ;  V20 cse2         [V20,T04] (  6, 596.90)    long  ->  rax         multi-def "CSE #04: aggressive"
 ;  V21 rat0         [V21,T17] (  3,   0   )   byref  ->  rcx         "ReplaceWithLclVar is creating a new local variable"
@@ -56,52 +56,54 @@ G_M28111_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        mov      edi, r9d
        add      edi, dword ptr [rsp+0x80]
        test     rbx, rbx
-       jne      SHORT G_M28111_IG11
+       jne      SHORT G_M28111_IG12
 						;; size=15 bbWeight=1 PerfScore 3.50
 G_M28111_IG03:        ; bbWeight=0.52, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        mov      eax, r9d
        cmp      eax, edi
-       jge      G_M28111_IG36
+       jge      G_M28111_IG27
 						;; size=11 bbWeight=0.52 PerfScore 0.78
-G_M28111_IG04:        ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG04:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       je       SHORT G_M28111_IG08
+       je       SHORT G_M28111_IG09
+						;; size=5 bbWeight=0.47 PerfScore 0.59
+G_M28111_IG05:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        mov      r9d, eax
        or       r9d, edi
-       jl       SHORT G_M28111_IG08
+       jl       SHORT G_M28111_IG09
        cmp      dword ptr [rsi+0x08], edi
-       jl       SHORT G_M28111_IG08
-						;; size=18 bbWeight=0.43 PerfScore 2.90
-G_M28111_IG05:        ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       jl       SHORT G_M28111_IG09
+						;; size=13 bbWeight=0.47 PerfScore 2.57
+G_M28111_IG06:        ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        mov      ecx, eax
        cmp      gword ptr [rsi+8*rcx+0x10], 0
-       je       SHORT G_M28111_IG10
+       je       SHORT G_M28111_IG11
 						;; size=10 bbWeight=2.44 PerfScore 10.36
-G_M28111_IG06:        ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07:        ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        inc      eax
        cmp      eax, edi
-       jl       SHORT G_M28111_IG05
+       jl       SHORT G_M28111_IG06
 						;; size=6 bbWeight=2.71 PerfScore 4.06
-G_M28111_IG07:        ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG08:        ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
-       jmp      G_M28111_IG36
-						;; size=5 bbWeight=0.27 PerfScore 0.55
-G_M28111_IG08:        ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M28111_IG27
+						;; size=5 bbWeight=0.27 PerfScore 0.54
+G_M28111_IG09:        ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rsi]
        cmp      eax, dword ptr [rsi+0x08]
-       jae      G_M28111_IG40
+       jae      G_M28111_IG31
        mov      ecx, eax
        cmp      gword ptr [rsi+8*rcx+0x10], 0
-       je       SHORT G_M28111_IG10
+       je       SHORT G_M28111_IG11
 						;; size=19 bbWeight=0.02 PerfScore 0.20
-G_M28111_IG09:        ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10:        ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        inc      eax
        cmp      eax, edi
-       jl       SHORT G_M28111_IG08
-       jmp      G_M28111_IG36
+       jl       SHORT G_M28111_IG09
+       jmp      G_M28111_IG27
 						;; size=11 bbWeight=0.03 PerfScore 0.10
-G_M28111_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M28111_IG11:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rsi]
        add      rsp, 40
        pop      rbx
@@ -112,209 +114,95 @@ G_M28111_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        pop      r15
        ret      
 						;; size=13 bbWeight=0.25 PerfScore 1.05
-G_M28111_IG11:        ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG12:        ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
        mov      ebp, r9d
        cmp      ebp, edi
-       jge      G_M28111_IG36
+       jge      G_M28111_IG27
 						;; size=11 bbWeight=0.48 PerfScore 0.72
-G_M28111_IG12:        ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28111_IG13:        ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       je       G_M28111_IG25
+       je       SHORT G_M28111_IG21
        mov      eax, ebp
        or       eax, edi
-       jl       G_M28111_IG25
+       jl       SHORT G_M28111_IG21
        cmp      dword ptr [rsi+0x08], edi
-       jl       G_M28111_IG25
-						;; size=28 bbWeight=0.48 PerfScore 3.23
-G_M28111_IG13:        ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       jl       SHORT G_M28111_IG21
+						;; size=16 bbWeight=0.48 PerfScore 3.24
+G_M28111_IG14:        ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      eax, ebp
        mov      r14, gword ptr [rsi+8*rax+0x10]
        ; gcrRegs +[r14]
        test     r14, r14
-       je       G_M28111_IG23
-						;; size=16 bbWeight=238.59 PerfScore 835.07
-G_M28111_IG14:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       je       SHORT G_M28111_IG19
+						;; size=12 bbWeight=238.59 PerfScore 835.07
+G_M28111_IG15:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
        mov      rax, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [r14], rax
-       jne      G_M28111_IG21
+       jne      G_M28111_IG35
 						;; size=19 bbWeight=236.37 PerfScore 1004.57
-G_M28111_IG15:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+G_M28111_IG16:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        cmp      r14, rbx
-       je       G_M28111_IG38
-						;; size=9 bbWeight=236.37 PerfScore 295.46
-G_M28111_IG16:        ; bbWeight=118.19, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       je       SHORT G_M28111_IG29
+						;; size=5 bbWeight=236.37 PerfScore 295.46
+G_M28111_IG17:        ; bbWeight=118.19, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        cmp      qword ptr [rbx], rax
-       jne      G_M28111_IG23
-						;; size=9 bbWeight=118.19 PerfScore 472.74
-G_M28111_IG17:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       jne      SHORT G_M28111_IG19
+						;; size=5 bbWeight=118.19 PerfScore 472.74
+G_M28111_IG18:        ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      eax, dword ptr [r14+0x08]
        cmp      eax, dword ptr [rbx+0x08]
-       jne      G_M28111_IG23
-						;; size=13 bbWeight=236.37 PerfScore 1418.22
-G_M28111_IG18:        ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      ecx, 1
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       mov      ecx, 1
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       mov      ecx, dword ptr [r14+0x08]
-       cmp      ecx, dword ptr [rbx+0x08]
-       sete     cl
-       movzx    rcx, cl
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       lea      rcx, bword ptr [r14+0x0C]
-       ; byrRegs +[rcx]
-       lea      rdx, bword ptr [rbx+0x0C]
-       ; byrRegs +[rdx]
-       mov      r8d, dword ptr [r14+0x08]
-       add      r8d, r8d
-       cmp      r8, 28
-       jne      SHORT G_M28111_IG19
-       vmovups  xmm0, xmmword ptr [rcx]
-       vmovups  xmm1, xmmword ptr [rcx+0x0C]
-       vmovups  xmm2, xmmword ptr [rdx]
-       vpxor    xmm1, xmm1, xmmword ptr [rdx+0x0C]
-       vpternlogq xmm0, xmm2, xmm1, -66
-       vptest   xmm0, xmm0
-       sete     r15b
-       movzx    r15, r15b
-       jmp      SHORT G_M28111_IG20
-						;; size=102 bbWeight=0 PerfScore 0.00
-G_M28111_IG19:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0006 {rcx rdx}, byref
+       je       SHORT G_M28111_IG32
+						;; size=9 bbWeight=236.37 PerfScore 1418.22
+G_M28111_IG19:        ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
-       call     [<unknown method>]
-       ; byrRegs -[rcx rdx]
-       ; gcr arg pop 0
-       mov      r15d, eax
-						;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG20:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M28111_IG22
-						;; size=2 bbWeight=0 PerfScore 0.00
-G_M28111_IG21:        ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[r14]
-       mov      rcx, r14
-       ; gcrRegs +[rcx]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       mov      rax, qword ptr [r14]
-       mov      rax, qword ptr [rax+0x48]
-       call     [rax+0x10]<unknown method>
-       ; gcrRegs -[rcx rdx r14]
-       ; gcr arg pop 0
-       mov      r15d, eax
-						;; size=19 bbWeight=0 PerfScore 0.00
-G_M28111_IG22:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       test     r15d, r15d
-       jne      G_M28111_IG38
-						;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG23:        ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      ebp
        cmp      ebp, edi
-       jl       G_M28111_IG13
-						;; size=10 bbWeight=238.59 PerfScore 357.89
-G_M28111_IG24:        ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jl       SHORT G_M28111_IG14
+						;; size=6 bbWeight=238.59 PerfScore 357.89
+G_M28111_IG20:        ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
-       jmp      G_M28111_IG36
-						;; size=5 bbWeight=0.51 PerfScore 1.03
-G_M28111_IG25:        ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M28111_IG27
+						;; size=2 bbWeight=0.51 PerfScore 1.03
+G_M28111_IG21:        ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx rsi]
        cmp      ebp, dword ptr [rsi+0x08]
-       jae      G_M28111_IG40
...
-42 (-6.48%) : 94785.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -10,15 +10,15 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,   0   )     ref  ->  zero-ref    this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-;  V01 arg1         [V01,T06] ( 12, 250.12)     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
+;  V01 arg1         [V01,T06] ( 12, 250.20)     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
 ;  V02 arg2         [V02,T02] ( 15, 598.89)     ref  ->  rbx         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T10] (  5,   4   )     int  ->   r9         single-def
-;  V04 arg4         [V04,T11] (  1,   1   )     int  ->  [rsp+0x80]  single-def
-;  V05 loc0         [V05,T07] ( 11, 247.96)     int  ->  rdi        
-;  V06 loc1         [V06,T08] ( 13,  12.41)     int  ->  rax        
+;  V03 arg3         [V03,T11] (  5,   4   )     int  ->   r9         single-def
+;  V04 arg4         [V04,T12] (  1,   1   )     int  ->  [rsp+0x80]  single-def
+;  V05 loc0         [V05,T07] ( 11, 248.04)     int  ->  rdi        
+;  V06 loc1         [V06,T09] ( 13,  12.45)     int  ->  rax        
 ;  V07 loc2         [V07,T01] ( 13, 969.47)     int  ->  rbp        
 ;  V08 OutArgs      [V08    ] (  1,   1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T12] (  6,   0   )     int  ->  r15         "guarded devirt return temp"
+;  V09 tmp1         [V09,T08] (  6,   0   )     int  ->  r15         "guarded devirt return temp"
 ;  V10 tmp2         [V10,T00] ( 18,1906.83)     ref  ->  r14         "guarded devirt arg temp"
 ;* V11 tmp3         [V11    ] (  0,   0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.String>
 ;* V12 tmp4         [V12    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.String>
@@ -27,7 +27,7 @@
 ;  V15 tmp7         [V15,T14] (  6,   0   )   byref  ->  rdx         "spilling arg"
 ;  V16 tmp8         [V16,T15] (  6,   0   )    long  ->   r8         "spilling arg"
 ;  V17 tmp9         [V17,T16] (  6,   0   )     int  ->  r15         "Grabbing temp for Qmark"
-;  V18 cse0         [V18,T09] (  3,   7.21)     ref  ->  r14         "CSE #10: aggressive"
+;  V18 cse0         [V18,T10] (  3,   7.21)     ref  ->  r14         "CSE #10: aggressive"
 ;  V19 cse1         [V19,T03] (  3, 713.95)     ref  ->  r14         "CSE #03: aggressive"
 ;  V20 cse2         [V20,T04] (  6, 595.89)    long  ->  rax         multi-def "CSE #04: aggressive"
 ;  V21 rat0         [V21,T17] (  3,   0   )   byref  ->  rcx         "ReplaceWithLclVar is creating a new local variable"
@@ -56,52 +56,54 @@ G_M28111_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        mov      edi, r9d
        add      edi, dword ptr [rsp+0x80]
        test     rbx, rbx
-       jne      SHORT G_M28111_IG11
+       jne      SHORT G_M28111_IG12
 						;; size=15 bbWeight=1 PerfScore 3.50
 G_M28111_IG03:        ; bbWeight=0.52, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        mov      eax, r9d
        cmp      eax, edi
-       jge      G_M28111_IG34
+       jge      G_M28111_IG25
 						;; size=11 bbWeight=0.52 PerfScore 0.78
-G_M28111_IG04:        ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG04:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       je       SHORT G_M28111_IG08
+       je       SHORT G_M28111_IG09
+						;; size=5 bbWeight=0.47 PerfScore 0.59
+G_M28111_IG05:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        mov      r9d, eax
        or       r9d, edi
-       jl       SHORT G_M28111_IG08
+       jl       SHORT G_M28111_IG09
        cmp      dword ptr [rsi+0x08], edi
-       jl       SHORT G_M28111_IG08
-						;; size=18 bbWeight=0.43 PerfScore 2.90
-G_M28111_IG05:        ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       jl       SHORT G_M28111_IG09
+						;; size=13 bbWeight=0.47 PerfScore 2.57
+G_M28111_IG06:        ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        mov      ecx, eax
        cmp      gword ptr [rsi+8*rcx+0x10], 0
-       je       SHORT G_M28111_IG10
+       je       SHORT G_M28111_IG11
 						;; size=10 bbWeight=2.44 PerfScore 10.36
-G_M28111_IG06:        ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07:        ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        inc      eax
        cmp      eax, edi
-       jl       SHORT G_M28111_IG05
+       jl       SHORT G_M28111_IG06
 						;; size=6 bbWeight=2.71 PerfScore 4.06
-G_M28111_IG07:        ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG08:        ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
-       jmp      G_M28111_IG34
-						;; size=5 bbWeight=0.27 PerfScore 0.55
-G_M28111_IG08:        ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M28111_IG25
+						;; size=5 bbWeight=0.27 PerfScore 0.54
+G_M28111_IG09:        ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rsi]
        cmp      eax, dword ptr [rsi+0x08]
-       jae      G_M28111_IG38
+       jae      G_M28111_IG29
        mov      ecx, eax
        cmp      gword ptr [rsi+8*rcx+0x10], 0
-       je       SHORT G_M28111_IG10
+       je       SHORT G_M28111_IG11
 						;; size=19 bbWeight=0.02 PerfScore 0.20
-G_M28111_IG09:        ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10:        ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
        inc      eax
        cmp      eax, edi
-       jl       SHORT G_M28111_IG08
-       jmp      G_M28111_IG34
+       jl       SHORT G_M28111_IG09
+       jmp      G_M28111_IG25
 						;; size=11 bbWeight=0.03 PerfScore 0.10
-G_M28111_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M28111_IG11:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rsi]
        add      rsp, 40
        pop      rbx
@@ -112,205 +114,91 @@ G_M28111_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        pop      r15
        ret      
 						;; size=13 bbWeight=0.25 PerfScore 1.05
-G_M28111_IG11:        ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG12:        ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
        mov      ebp, r9d
        cmp      ebp, edi
-       jge      G_M28111_IG34
+       jge      G_M28111_IG25
 						;; size=11 bbWeight=0.48 PerfScore 0.72
-G_M28111_IG12:        ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28111_IG13:        ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       je       G_M28111_IG24
+       je       SHORT G_M28111_IG20
        mov      eax, ebp
        or       eax, edi
-       jl       G_M28111_IG24
+       jl       SHORT G_M28111_IG20
        cmp      dword ptr [rsi+0x08], edi
-       jl       G_M28111_IG24
-						;; size=28 bbWeight=0.48 PerfScore 3.23
-G_M28111_IG13:        ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       jl       SHORT G_M28111_IG20
+						;; size=16 bbWeight=0.48 PerfScore 3.24
+G_M28111_IG14:        ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      eax, ebp
        mov      r14, gword ptr [rsi+8*rax+0x10]
        ; gcrRegs +[r14]
        test     r14, r14
-       je       G_M28111_IG22
-						;; size=16 bbWeight=238.99 PerfScore 836.47
-G_M28111_IG14:        ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       je       SHORT G_M28111_IG18
+						;; size=12 bbWeight=238.99 PerfScore 836.47
+G_M28111_IG15:        ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [r14], rax
-       jne      G_M28111_IG20
+       jne      G_M28111_IG33
        cmp      r14, rbx
-       je       G_M28111_IG36
-						;; size=28 bbWeight=235.97 PerfScore 1297.84
-G_M28111_IG15:        ; bbWeight=117.99, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       je       SHORT G_M28111_IG27
+						;; size=24 bbWeight=235.97 PerfScore 1297.84
+G_M28111_IG16:        ; bbWeight=117.99, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        cmp      qword ptr [rbx], rax
-       jne      G_M28111_IG22
-						;; size=9 bbWeight=117.99 PerfScore 471.94
-G_M28111_IG16:        ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+       jne      SHORT G_M28111_IG18
+						;; size=5 bbWeight=117.99 PerfScore 471.94
+G_M28111_IG17:        ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      eax, dword ptr [r14+0x08]
        cmp      eax, dword ptr [rbx+0x08]
-       jne      G_M28111_IG22
-						;; size=13 bbWeight=235.97 PerfScore 1415.82
-G_M28111_IG17:        ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      ecx, 1
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       mov      ecx, 1
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       mov      ecx, dword ptr [r14+0x08]
-       cmp      ecx, dword ptr [rbx+0x08]
-       sete     cl
-       movzx    rcx, cl
-       call     [System.Diagnostics.Debug:Assert(ubyte)]
-       ; gcr arg pop 0
-       lea      rcx, bword ptr [r14+0x0C]
-       ; byrRegs +[rcx]
-       lea      rdx, bword ptr [rbx+0x0C]
-       ; byrRegs +[rdx]
-       mov      r8d, dword ptr [r14+0x08]
-       add      r8d, r8d
-       cmp      r8, 28
-       jne      SHORT G_M28111_IG18
-       vmovups  xmm0, xmmword ptr [rcx]
-       vmovups  xmm1, xmmword ptr [rcx+0x0C]
-       vmovups  xmm2, xmmword ptr [rdx]
-       vpxor    xmm1, xmm1, xmmword ptr [rdx+0x0C]
-       vpternlogq xmm0, xmm2, xmm1, -66
-       vptest   xmm0, xmm0
-       sete     r15b
-       movzx    r15, r15b
-       jmp      SHORT G_M28111_IG19
-						;; size=102 bbWeight=0 PerfScore 0.00
-G_M28111_IG18:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0006 {rcx rdx}, byref
+       je       SHORT G_M28111_IG30
+						;; size=9 bbWeight=235.97 PerfScore 1415.82
+G_M28111_IG18:        ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
-       call     [<unknown method>]
-       ; byrRegs -[rcx rdx]
-       ; gcr arg pop 0
-       mov      r15d, eax
-						;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG19:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M28111_IG21
-						;; size=2 bbWeight=0 PerfScore 0.00
-G_M28111_IG20:        ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[r14]
-       mov      rcx, r14
-       ; gcrRegs +[rcx]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       mov      rax, qword ptr [r14]
-       mov      rax, qword ptr [rax+0x48]
-       call     [rax+0x10]<unknown method>
-       ; gcrRegs -[rcx rdx r14]
-       ; gcr arg pop 0
-       mov      r15d, eax
-						;; size=19 bbWeight=0 PerfScore 0.00
-G_M28111_IG21:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       test     r15d, r15d
-       jne      G_M28111_IG36
-						;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG22:        ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      ebp
        cmp      ebp, edi
-       jl       G_M28111_IG13
-						;; size=10 bbWeight=238.99 PerfScore 358.49
-G_M28111_IG23:        ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jl       SHORT G_M28111_IG14
+						;; size=6 bbWeight=238.99 PerfScore 358.49
+G_M28111_IG19:        ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
-       jmp      G_M28111_IG34
-						;; size=5 bbWeight=0.52 PerfScore 1.03
-G_M28111_IG24:        ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M28111_IG25
+						;; size=2 bbWeight=0.52 PerfScore 1.03
+G_M28111_IG20:        ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx rsi]
        cmp      ebp, dword ptr [rsi+0x08]
-       jae      G_M28111_IG38
+       jae      SHORT G_M28111_IG29
        mov      eax, ebp
        mov      r14, gword ptr [rsi+8*rax+0x10]
...
+19 (+5.96%) : 62442.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this (Tier1)
@@ -9,27 +9,27 @@
 ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  8,  3.25)     ref  ->  rsi         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
+;  V00 this         [V00,T01] (  8,  3.50)     ref  ->  rsi         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
 ;  V01 arg1         [V01,T00] ( 12,  5.50)     ref  ->  rbx         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V02 arg2         [V02,T02] (  7,  2.25)     int  ->  rdi         single-def
-;  V03 loc0         [V03,T05] (  2,  0.25)     ref  ->  rcx         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
+;  V02 arg2         [V02,T02] (  7,  2.50)     int  ->  rdi         single-def
+;  V03 loc0         [V03,T04] (  2,  0.50)     ref  ->  rcx         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
-;  V06 tmp2         [V06,T03] (  3,  1.75)   ubyte  ->  rax         "Inline return value spill temp"
-;  V07 tmp3         [V07,T04] (  8,  1.37)     ref  ->  rbp         class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+;  V06 tmp2         [V06,T09] (  3,  0   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V07 tmp3         [V07,T03] (  8,  1.37)     ref  ->  rbp         class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;* V10 tmp6         [V10,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V11 tmp7         [V11,T07] (  3,  0.50)   ubyte  ->  r14         single-def "Inline stloc first use temp"
-;  V12 tmp8         [V12,T08] (  4,  0.25)     int  ->  rax         "guarded devirt return temp"
+;* V10 tmp6         [V10,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V11 tmp7         [V11,T06] (  3,  0.50)   ubyte  ->  r14         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T07] (  4,  0.25)     int  ->  rax         "guarded devirt return temp"
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-;  V14 tmp10        [V14,T06] (  4,  0.50)     ref  ->  rdx         "guarded devirt return temp"
+;  V14 tmp10        [V14,T05] (  4,  0.50)     ref  ->  rdx         "guarded devirt return temp"
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
 ;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;
 ; Lcl frame size = 32
 
-G_M42150_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M42150_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r14
        push     rdi
        push     rsi
@@ -42,58 +42,33 @@ G_M42150_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        ; gcrRegs +[rbx]
        mov      edi, r8d
 						;; size=19 bbWeight=1 PerfScore 6.00
-G_M42150_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        test     rbx, rbx
-       jne      SHORT G_M42150_IG06
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M42150_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       jne      G_M42150_IG12
+						;; size=9 bbWeight=1 PerfScore 1.25
+G_M42150_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        cmp      rbx, rsi
-       jne      SHORT G_M42150_IG08
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M42150_IG04:        ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx rsi]
-       mov      eax, 1
-						;; size=5 bbWeight=0.75 PerfScore 0.19
-G_M42150_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
-       add      rsp, 32
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=1 PerfScore 3.75
-G_M42150_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
-       cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M42150_IG03
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M42150_IG07:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       mov      rcx, rbx
-       ; gcrRegs +[rcx]
-       jmp      G_M42150_IG20
-						;; size=8 bbWeight=0.25 PerfScore 0.56
-G_M42150_IG08:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rcx]
+       je       G_M42150_IG17
+						;; size=9 bbWeight=1 PerfScore 1.25
+G_M42150_IG04:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
-       je       SHORT G_M42150_IG14
+       je       G_M42150_IG10
        test     dil, 2
-       je       SHORT G_M42150_IG10
-						;; size=11 bbWeight=0.25 PerfScore 0.62
-G_M42150_IG09:        ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       je       SHORT G_M42150_IG06
+						;; size=15 bbWeight=0.25 PerfScore 0.62
+G_M42150_IG05:        ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
        cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M42150_IG15
+       jne      G_M42150_IG15
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        call     [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      eax, 4
-       je       SHORT G_M42150_IG16
-						;; size=29 bbWeight=0.12 PerfScore 1.09
-G_M42150_IG10:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       je       G_M42150_IG16
+						;; size=37 bbWeight=0.12 PerfScore 1.09
+G_M42150_IG06:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
@@ -103,19 +78,19 @@ G_M42150_IG10:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        mov      rbp, rax
        ; gcrRegs +[rbp]
        test     rbp, rbp
-       je       SHORT G_M42150_IG14
+       je       SHORT G_M42150_IG10
        cmp      byte  ptr [rsi], sil
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
        cmp      qword ptr [rbp], rcx
-       jne      SHORT G_M42150_IG12
+       jne      SHORT G_M42150_IG08
 						;; size=45 bbWeight=0.25 PerfScore 2.56
-G_M42150_IG11:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG07:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M42150_IG13
+       jmp      SHORT G_M42150_IG09
 						;; size=5 bbWeight=0.12 PerfScore 0.28
-G_M42150_IG12:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M42150_IG08:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx]
        mov      rcx, rbp
        ; gcrRegs +[rcx]
@@ -127,21 +102,52 @@ G_M42150_IG12:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000
        mov      rdx, rax
        ; gcrRegs +[rdx]
 						;; size=19 bbWeight=0.12 PerfScore 0.94
-G_M42150_IG13:        ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG09:        ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        xor      r14d, r14d
        cmp      rbp, rdx
        sete     r14b
        test     r14b, 1
-       je       SHORT G_M42150_IG17
+       je       SHORT G_M42150_IG18
 						;; size=16 bbWeight=0.25 PerfScore 0.69
-G_M42150_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42150_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx rbp rsi]
        xor      eax, eax
-       jmp      G_M42150_IG05
-						;; size=7 bbWeight=0 PerfScore 0.00
-G_M42150_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M42150_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+       add      rsp, 32
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=0 PerfScore 0.00
+G_M42150_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
+       cmp      qword ptr [rbx], rcx
+       jne      G_M42150_IG03
+						;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M42150_IG13:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       mov      rdx, rsi
+       ; gcrRegs +[rdx]
+       mov      r8d, edi
+						;; size=9 bbWeight=0.25 PerfScore 0.19
+G_M42150_IG14:        ; bbWeight=0.25, epilog, nogc, extend
+       add      rsp, 32
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this]
+       ; gcr arg pop 0
+						;; size=16 bbWeight=0.25 PerfScore 1.19
+G_M42150_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rcx rdx]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        mov      rax, qword ptr [rbx]
@@ -150,23 +156,27 @@ G_M42150_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      eax, 4
-       jne      SHORT G_M42150_IG10
-						;; size=21 bbWeight=0 PerfScore 0.00
+       jne      G_M42150_IG06
+						;; size=25 bbWeight=0 PerfScore 0.00
 G_M42150_IG16:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      ecx, dword ptr [rsi+0x88]
        and      ecx, 63
        cmp      ecx, 1
-       je       G_M42150_IG04
-       jmp      G_M42150_IG10
-						;; size=23 bbWeight=0 PerfScore 0.00
-G_M42150_IG17:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx] +[rdx rbp]
-       or       r14d, 1
-       je       SHORT G_M42150_IG18
-       test     dil, 29
-       je       SHORT G_M42150_IG14
-						;; size=12 bbWeight=0 PerfScore 0.00
+       jne      G_M42150_IG06
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M42150_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx rsi]
+       mov      eax, 1
+       jmp      SHORT G_M42150_IG11
+						;; size=7 bbWeight=0 PerfScore 0.00
 G_M42150_IG18:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rdx rbp rsi]
+       or       r14d, 1
+       je       SHORT G_M42150_IG19
+       test     dil, 29
+       je       SHORT G_M42150_IG10
+						;; size=12 bbWeight=0 PerfScore 0.00
+G_M42150_IG19:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      r8d, edi
@@ -174,14 +184,14 @@ G_M42150_IG18:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M42150_IG14
+       je       G_M42150_IG10
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
        mov      r8d, edi
-						;; size=25 bbWeight=0 PerfScore 0.00
-G_M42150_IG19:        ; bbWeight=0, epilog, nogc, extend
+						;; size=29 bbWeight=0 PerfScore 0.00
...
+9 (+6.62%) : 43013.dasm - Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
@@ -60,16 +60,22 @@ G_M3175_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        jmp      SHORT G_M3175_IG04
 						;; size=45 bbWeight=1 PerfScore 9.00
 G_M3175_IG03:        ; bbWeight=99.99, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref
-       add      eax, edx
-						;; size=2 bbWeight=99.99 PerfScore 25.00
+       add      eax, r8d
+       mov      ebx, edx
+       mov      edx, r8d
+       mov      r8d, ebx
+						;; size=11 bbWeight=99.99 PerfScore 99.99
 G_M3175_IG04:        ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        cmp      r11d, r8d
        jg       SHORT G_M3175_IG06
 						;; size=5 bbWeight=100 PerfScore 125.00
 G_M3175_IG05:        ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        xor      ebx, ebx
+       mov      ebp, edx
+       mov      edx, r8d
+       mov      r8d, ebp
        jmp      SHORT G_M3175_IG07
-						;; size=4 bbWeight=400 PerfScore 900.00
+						;; size=12 bbWeight=400 PerfScore 1200.00
 G_M3175_IG06:        ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        lea      edx, [r8+0x01]
        cmp      r8d, r11d
@@ -80,10 +86,7 @@ G_M3175_IG06:        ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10},
        jae      SHORT G_M3175_IG09
        mov      r8d, dword ptr [r10+4*r8]
        mov      ebx, 1
-       mov      ebp, edx
-       mov      edx, r8d
-       mov      r8d, ebp
-						;; size=39 bbWeight=400 PerfScore 3300.00
+						;; size=31 bbWeight=400 PerfScore 3000.00
 G_M3175_IG07:        ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        test     ebx, ebx
        je       SHORT G_M3175_IG10
@@ -107,7 +110,7 @@ G_M3175_IG11:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=10 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 136, prolog size 19, PerfScore 4687.23, instruction count 36, allocated bytes for code 136 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
+; Total bytes of code 145, prolog size 19, PerfScore 4762.22, instruction count 39, allocated bytes for code 145 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:
+22 (+7.07%) : 59224.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this (Tier1)
@@ -9,26 +9,26 @@
 ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  8,  3.25)     ref  ->  rsi         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
+;  V00 this         [V00,T01] (  8,  3.50)     ref  ->  rsi         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
 ;  V01 arg1         [V01,T00] ( 12,  5.50)     ref  ->  rbx         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V02 arg2         [V02,T02] (  7,  2.25)     int  ->  rdi         single-def
-;  V03 loc0         [V03,T05] (  2,  0.25)     ref  ->  rcx         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
+;  V02 arg2         [V02,T02] (  7,  2.50)     int  ->  rdi         single-def
+;  V03 loc0         [V03,T04] (  2,  0.50)     ref  ->  rcx         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
-;  V06 tmp2         [V06,T03] (  3,  1.75)   ubyte  ->  rax         "Inline return value spill temp"
-;  V07 tmp3         [V07,T04] (  8,  1.37)     ref  ->  rbp         class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+;  V06 tmp2         [V06,T09] (  3,  0   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V07 tmp3         [V07,T03] (  8,  1.37)     ref  ->  rbp         class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;* V10 tmp6         [V10,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V11 tmp7         [V11,T07] (  3,  0.50)   ubyte  ->  r14         single-def "Inline stloc first use temp"
-;  V12 tmp8         [V12,T08] (  4,  0.25)     int  ->  rax         "guarded devirt return temp"
+;* V10 tmp6         [V10,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V11 tmp7         [V11,T06] (  3,  0.50)   ubyte  ->  r14         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T07] (  4,  0.25)     int  ->  rax         "guarded devirt return temp"
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-;  V14 tmp10        [V14,T06] (  4,  0.50)     ref  ->  rdx         "guarded devirt return temp"
+;  V14 tmp10        [V14,T05] (  4,  0.50)     ref  ->  rdx         "guarded devirt return temp"
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
 ;
 ; Lcl frame size = 32
 
-G_M30635_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M30635_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r14
        push     rdi
        push     rsi
@@ -41,58 +41,33 @@ G_M30635_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        ; gcrRegs +[rbx]
        mov      edi, r8d
 						;; size=19 bbWeight=1 PerfScore 6.00
-G_M30635_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        test     rbx, rbx
-       jne      SHORT G_M30635_IG06
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M30635_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       jne      G_M30635_IG12
+						;; size=9 bbWeight=1 PerfScore 1.25
+G_M30635_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        cmp      rbx, rsi
-       jne      SHORT G_M30635_IG08
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M30635_IG04:        ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx rsi]
-       mov      eax, 1
-						;; size=5 bbWeight=0.75 PerfScore 0.19
-G_M30635_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
-       add      rsp, 32
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=1 PerfScore 3.75
-G_M30635_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
-       cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M30635_IG03
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M30635_IG07:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       mov      rcx, rbx
-       ; gcrRegs +[rcx]
-       jmp      G_M30635_IG20
-						;; size=8 bbWeight=0.25 PerfScore 0.56
-G_M30635_IG08:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rcx]
+       je       G_M30635_IG17
+						;; size=9 bbWeight=1 PerfScore 1.25
+G_M30635_IG04:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
-       je       SHORT G_M30635_IG14
+       je       G_M30635_IG10
        test     dil, 2
-       je       SHORT G_M30635_IG10
-						;; size=11 bbWeight=0.25 PerfScore 0.62
-G_M30635_IG09:        ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       je       SHORT G_M30635_IG06
+						;; size=15 bbWeight=0.25 PerfScore 0.62
+G_M30635_IG05:        ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
        cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M30635_IG15
+       jne      G_M30635_IG15
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        call     [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      eax, 4
-       je       SHORT G_M30635_IG16
-						;; size=29 bbWeight=0.12 PerfScore 1.09
-G_M30635_IG10:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       je       G_M30635_IG16
+						;; size=37 bbWeight=0.12 PerfScore 1.09
+G_M30635_IG06:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
@@ -102,19 +77,19 @@ G_M30635_IG10:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        mov      rbp, rax
        ; gcrRegs +[rbp]
        test     rbp, rbp
-       je       SHORT G_M30635_IG14
+       je       SHORT G_M30635_IG10
        cmp      byte  ptr [rsi], sil
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
        cmp      qword ptr [rbp], rcx
-       jne      SHORT G_M30635_IG12
+       jne      SHORT G_M30635_IG08
 						;; size=45 bbWeight=0.25 PerfScore 2.56
-G_M30635_IG11:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG07:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M30635_IG13
+       jmp      SHORT G_M30635_IG09
 						;; size=5 bbWeight=0.12 PerfScore 0.28
-G_M30635_IG12:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M30635_IG08:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx]
        mov      rcx, rbp
        ; gcrRegs +[rcx]
@@ -126,21 +101,52 @@ G_M30635_IG12:        ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000
        mov      rdx, rax
        ; gcrRegs +[rdx]
 						;; size=19 bbWeight=0.12 PerfScore 0.94
-G_M30635_IG13:        ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG09:        ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        xor      r14d, r14d
        cmp      rbp, rdx
        sete     r14b
        test     r14b, 1
-       je       SHORT G_M30635_IG17
+       je       SHORT G_M30635_IG18
 						;; size=16 bbWeight=0.25 PerfScore 0.69
-G_M30635_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30635_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx rbp rsi]
        xor      eax, eax
-       jmp      G_M30635_IG05
-						;; size=7 bbWeight=0 PerfScore 0.00
-G_M30635_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M30635_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+       add      rsp, 32
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=0 PerfScore 0.00
+G_M30635_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
+       cmp      qword ptr [rbx], rcx
+       jne      G_M30635_IG03
+						;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M30635_IG13:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       mov      rdx, rsi
+       ; gcrRegs +[rdx]
+       mov      r8d, edi
+						;; size=9 bbWeight=0.25 PerfScore 0.19
+G_M30635_IG14:        ; bbWeight=0.25, epilog, nogc, extend
+       add      rsp, 32
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this]
+       ; gcr arg pop 0
+						;; size=16 bbWeight=0.25 PerfScore 1.19
+G_M30635_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rcx rdx]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        mov      rax, qword ptr [rbx]
@@ -149,21 +155,25 @@ G_M30635_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      eax, 4
-       jne      SHORT G_M30635_IG10
-						;; size=21 bbWeight=0 PerfScore 0.00
-G_M30635_IG16:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       jne      G_M30635_IG06
+						;; size=25 bbWeight=0 PerfScore 0.00
+G_M30635_IG16:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        cmp      byte  ptr [rsi+0x84], 1
-       je       G_M30635_IG04
-       jmp      SHORT G_M30635_IG10
-						;; size=15 bbWeight=0 PerfScore 0.00
-G_M30635_IG17:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx] +[rdx rbp]
-       or       r14d, 1
-       je       SHORT G_M30635_IG18
-       test     dil, 29
-       je       SHORT G_M30635_IG14
-						;; size=12 bbWeight=0 PerfScore 0.00
+       jne      G_M30635_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
+G_M30635_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx rsi]
+       mov      eax, 1
+       jmp      SHORT G_M30635_IG11
+						;; size=7 bbWeight=0 PerfScore 0.00
 G_M30635_IG18:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rdx rbp rsi]
+       or       r14d, 1
+       je       SHORT G_M30635_IG19
+       test     dil, 29
+       je       SHORT G_M30635_IG10
+						;; size=12 bbWeight=0 PerfScore 0.00
+G_M30635_IG19:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      r8d, edi
@@ -171,14 +181,14 @@ G_M30635_IG18:        ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M30635_IG14
+       je       G_M30635_IG10
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
        mov      r8d, edi
-						;; size=25 bbWeight=0 PerfScore 0.00
-G_M30635_IG19:        ; bbWeight=0, epilog, nogc, extend
+						;; size=29 bbWeight=0 PerfScore 0.00
+G_M30635_IG20:        ; bbWeight=0, epilog, nogc, extend
        add      rsp, 32
...
benchmarks.run_tiered.windows.x64.checked.mch
-29 (-5.56%) : 38173.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
@@ -44,10 +44,10 @@
 ;* V33 tmp26        [V33    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp27        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.MethodDefinitionHandle>
 ;* V35 tmp28        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Reflection.Metadata.MethodDefinitionHandle>
-;  V36 tmp29        [V36,T21] (  2,  2   )     int  ->   r8         single-def "Inline stloc first use temp"
+;  V36 tmp29        [V36,T21] (  2,  2   )     int  ->  rax         single-def "Inline stloc first use temp"
 ;* V37 tmp30        [V37    ] (  0,  0   )  ushort  ->  zero-ref    "Inline return value spill temp"
-;  V38 tmp31        [V38,T07] (  3,  6   )   byref  ->  r10         single-def "Inlining Arg"
-;  V39 tmp32        [V39,T09] (  3,  6   )     int  ->   r8         "Inlining Arg"
+;  V38 tmp31        [V38,T07] (  3,  6   )   byref  ->   r8         single-def "Inlining Arg"
+;  V39 tmp32        [V39,T09] (  3,  6   )     int  ->  rax         "Inlining Arg"
 ;* V40 tmp33        [V40    ] (  0,  0   )  ushort  ->  zero-ref    "Inline stloc first use temp"
 ;  V41 tmp34        [V41,T17] (  2,  2   )     int  ->  rsi         single-def "field V01._rowId (fldOffset=0x0)" P-INDEP
 ;  V42 tmp35        [V42,T04] (  5,  5   )     int  ->  [rbp+0x20]  EH-live single-def "field V02._rowId (fldOffset=0x0)" P-INDEP
@@ -61,7 +61,7 @@
 ;  V50 tmp43        [V50,T22] (  2,  2   )     int  ->  r14         single-def "field V22._rowId (fldOffset=0x0)" P-INDEP
 ;* V51 tmp44        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "field V23._rowId (fldOffset=0x0)" P-INDEP
 ;* V52 tmp45        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V30._rowId (fldOffset=0x0)" P-INDEP
-;  V53 tmp46        [V53,T23] (  2,  2   )     int  ->   r8         single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
+;  V53 tmp46        [V53,T23] (  2,  2   )     int  ->  rax         single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
 ;* V54 tmp47        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "field V35._rowId (fldOffset=0x0)" P-INDEP
 ;  V55 PSPSym       [V55,T24] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
 ;  V56 cse0         [V56,T19] (  3,  3   )     int  ->  rcx         "CSE #17: moderate"
@@ -114,8 +114,7 @@ G_M29476_IG04:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        mov      r14d, eax
-       mov      eax, dword ptr [rbp+0x20]
-						;; size=20 bbWeight=1 PerfScore 5.75
+						;; size=17 bbWeight=1 PerfScore 4.75
 G_M29476_IG05:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        mov      ecx, r14d
        shr      ecx, 24
@@ -133,57 +132,57 @@ G_M29476_IG05:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
        add      r14d, dword ptr [rdi+0x10]
        mov      edx, r14d
        add      rdx, 2
-       movsxd   r8, dword ptr [rcx+0x08]
-       cmp      rdx, r8
+       movsxd   rax, dword ptr [rcx+0x08]
+       cmp      rdx, rax
        ja       G_M29476_IG09
        mov      rcx, qword ptr [rcx]
        ; byrRegs -[rcx]
        movsxd   rdx, r14d
        movzx    rdi, word  ptr [rcx+rdx]
        ; byrRegs -[rdi]
-       jmp      G_M29476_IG07
-						;; size=78 bbWeight=1 PerfScore 23.50
-G_M29476_IG06:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M29476_IG07
+						;; size=75 bbWeight=1 PerfScore 23.50
+G_M29476_IG06:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rdi]
        lea      rdx, bword ptr [rdi+0x1B8]
        ; byrRegs +[rdx]
-       mov      r8d, r14d
-       and      r8d, 0xD1FFAB1E
-       dec      r8d
-       imul     r8d, dword ptr [rdx+0x20]
-       lea      r10, bword ptr [rdx+0x28]
-       ; byrRegs +[r10]
-       add      r8d, dword ptr [rdx+0x10]
-       mov      edx, r8d
+       mov      eax, r14d
+       and      eax, 0xD1FFAB1E
+       dec      eax
+       imul     eax, dword ptr [rdx+0x20]
+       lea      r8, bword ptr [rdx+0x28]
+       ; byrRegs +[r8]
+       add      eax, dword ptr [rdx+0x10]
+       mov      edx, eax
        ; byrRegs -[rdx]
        add      rdx, 2
-       movsxd   r9, dword ptr [r10+0x08]
-       cmp      rdx, r9
-       ja       G_M29476_IG09
-       mov      rdx, qword ptr [r10]
-       movsxd   r8, r8d
-       movzx    rdx, word  ptr [rdx+r8]
-       mov      r8d, ecx
-       and      r8d, 15
-       mov      r10d, edx
-       ; byrRegs -[r10]
-       and      r10d, -8
-       or       r10d, 1
-       cmp      r8d, 6
-       cmove    edx, r10d
-       mov      r8d, edx
-       or       r8d, 0x400
-       test     cl, 16
-       cmovne   edx, r8d
+       movsxd   r10, dword ptr [r8+0x08]
+       cmp      rdx, r10
+       ja       SHORT G_M29476_IG09
+       mov      rdx, qword ptr [r8]
+       cdqe     
+       movzx    rdx, word  ptr [rdx+rax]
+       mov      eax, ecx
+       and      eax, 15
        mov      r8d, edx
+       ; byrRegs -[r8]
        and      r8d, -8
-       or       r8d, 6
+       or       r8d, 1
+       cmp      eax, 6
+       cmove    edx, r8d
+       mov      eax, edx
+       or       eax, 0x400
+       test     cl, 16
+       cmovne   edx, eax
+       mov      eax, edx
+       and      eax, -8
+       or       eax, 6
        test     cl, 32
-       cmovne   edx, r8d
+       cmovne   edx, eax
        mov      edi, edx
        ; gcrRegs -[rdi]
        or       edi, 128
-						;; size=133 bbWeight=1 PerfScore 24.25
+						;; size=110 bbWeight=1 PerfScore 24.25
 G_M29476_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     dil, 64
        jne      SHORT G_M29476_IG10
@@ -307,7 +306,7 @@ G_M29476_IG22:        ; bbWeight=0, funclet epilog, nogc, extend
 RWD00  	dq	006200740056005Fh, 007000610047006Ch
 
 
-; Total bytes of code 522, prolog size 34, PerfScore 120.75, instruction count 163, allocated bytes for code 522 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
+; Total bytes of code 493, prolog size 34, PerfScore 119.75, instruction count 162, allocated bytes for code 493 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
-22 (-5.25%) : 52075.dasm - System.Random:AssertInRange(double) (Tier1)
@@ -64,12 +64,12 @@ G_M126_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      ecx, ecx
        vucomisd xmm1, xmm0
        seta     cl
-       vmovsd   xmm0, qword ptr [rsp+0x60]
        jmp      SHORT G_M126_IG05
-						;; size=31 bbWeight=0.50 PerfScore 6.12
+						;; size=25 bbWeight=0.50 PerfScore 4.62
 G_M126_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      ecx, ecx
-						;; size=2 bbWeight=0.50 PerfScore 0.12
+       vmovsd   qword ptr [rsp+0x60], xmm0
+						;; size=8 bbWeight=0.50 PerfScore 0.62
 G_M126_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        movzx    rbx, cl
        test     ebx, ebx
@@ -83,7 +83,6 @@ G_M126_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
 						;; size=6 bbWeight=0.50 PerfScore 1.25
 G_M126_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
-       vmovsd   qword ptr [rsp+0x60], xmm0
        mov      rcx, 0xD1FFAB1E      ; System.Text.StringBuilder
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -103,8 +102,7 @@ G_M126_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        mov      edi, 1
-       vmovsd   xmm0, qword ptr [rsp+0x60]
-						;; size=74 bbWeight=0.50 PerfScore 5.00
+						;; size=62 bbWeight=0.50 PerfScore 3.00
 G_M126_IG08:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        mov      gword ptr [rsp+0x28], rsi
        xor      rcx, rcx
@@ -130,24 +128,22 @@ G_M126_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      r8, bword ptr [r8+2*rax+0x10]
        ; gcrRegs -[r8]
        ; byrRegs +[r8]
-       vmovdqu  ymm1, ymmword ptr [rdx]
-       vmovdqu  ymmword ptr [r8], ymm1
+       vmovdqu  ymm0, ymmword ptr [rdx]
+       vmovdqu  ymmword ptr [r8], ymm0
        mov      dword ptr [rcx+0x18], r10d
        jmp      SHORT G_M126_IG11
 						;; size=54 bbWeight=0.50 PerfScore 10.50
 G_M126_IG10:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
        ; byrRegs -[r8]
-       vmovsd   qword ptr [rsp+0x60], xmm0
        mov      r8d, 16
        call     [<unknown method>]
        ; gcrRegs -[rcx]
        ; byrRegs -[rdx]
        ; gcr arg pop 0
-       vmovsd   xmm0, qword ptr [rsp+0x60]
-						;; size=24 bbWeight=0.50 PerfScore 3.62
+						;; size=12 bbWeight=0.50 PerfScore 1.62
 G_M126_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        lea      rcx, [rsp+0x28]
-       vmovaps  xmm1, xmm0
+       vmovsd   xmm1, qword ptr [rsp+0x60]
        call     [<unknown method>]
        ; gcr arg pop 0
        mov      rcx, gword ptr [rsp+0x28]
@@ -170,7 +166,7 @@ G_M126_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      qword ptr [r8+0x04], r9
        mov      dword ptr [rcx+0x18], r10d
        jmp      SHORT G_M126_IG13
-						;; size=74 bbWeight=0.50 PerfScore 11.88
+						;; size=76 bbWeight=0.50 PerfScore 13.25
 G_M126_IG12:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
        ; byrRegs -[r8]
        mov      r8d, 6
@@ -226,7 +222,7 @@ G_M126_IG19:        ; bbWeight=1, epilog, nogc, extend
 RWD00  	dq	3FF0000000000000h	;            1
 
 
-; Total bytes of code 419, prolog size 24, PerfScore 69.50, instruction count 101, allocated bytes for code 419 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (Tier1)
+; Total bytes of code 397, prolog size 24, PerfScore 65.88, instruction count 97, allocated bytes for code 397 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (Tier1)
 ; ============================================================
 
 Unwind Info:
-15 (-5.15%) : 42057.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
@@ -89,10 +89,13 @@ G_M11176_IG03:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
        ; byrRegs -[rcx]
        xor      r8, r8
        ; gcrRegs +[r8]
+       mov      gword ptr [rsp+0x28], r8
+       ; GC ptr vars +{V09}
        jmp      SHORT G_M11176_IG05
-						;; size=5 bbWeight=0.50 PerfScore 1.12
+						;; size=10 bbWeight=0.50 PerfScore 1.62
 G_M11176_IG04:        ; bbWeight=0.50, gcrefRegs=E0ED {rax rdx rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r8] +[rax rdx]
+       ; GC ptr vars -{V09}
        mov      rcx, rax
        ; gcrRegs +[rcx]
        mov      rax, qword ptr [rax]
@@ -103,27 +106,19 @@ G_M11176_IG04:        ; bbWeight=0.50, gcrefRegs=E0ED {rax rdx rbx rbp rsi rdi r
        ; gcr arg pop 0
        mov      gword ptr [rsp+0x28], rax
        ; GC ptr vars +{V09}
-       mov      r8, gword ptr [rsp+0x28]
-       ; gcrRegs +[r8]
-						;; size=23 bbWeight=0.50 PerfScore 4.62
-G_M11176_IG05:        ; bbWeight=1, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+						;; size=18 bbWeight=0.50 PerfScore 4.12
+G_M11176_IG05:        ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax]
-       ; GC ptr vars -{V09}
        cmp      byte  ptr [rsp+0xB0], 0
-       jne      SHORT G_M11176_IG10
+       jne      SHORT G_M11176_IG08
 						;; size=10 bbWeight=1 PerfScore 3.00
-G_M11176_IG06:        ; bbWeight=0.50, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11176_IG06:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       je       SHORT G_M11176_IG09
+       je       SHORT G_M11176_IG07
        test     byte  ptr [rsi+0x10], 1
-       jne      SHORT G_M11176_IG10
+       jne      SHORT G_M11176_IG08
 						;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M11176_IG07:        ; bbWeight=0.25, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
-       mov      gword ptr [rsp+0x28], r8
-       ; GC ptr vars +{V09}
-						;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M11176_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[r8]
+G_M11176_IG07:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdx, r14
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
@@ -131,24 +126,13 @@ G_M11176_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V09}, gcrefRegs=
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
        mov      dword ptr [rsp+0x34], eax
-       jmp      SHORT G_M11176_IG11
+       jmp      SHORT G_M11176_IG09
 						;; size=25 bbWeight=0.50 PerfScore 3.25
-G_M11176_IG09:        ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[r8]
-       ; GC ptr vars -{V09}
-       mov      gword ptr [rsp+0x28], r8
-       ; GC ptr vars +{V09}
-       jmp      SHORT G_M11176_IG08
-						;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M11176_IG10:        ; bbWeight=0.50, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
-       ; GC ptr vars -{V09}
-       mov      eax, 1
-       mov      gword ptr [rsp+0x28], r8
-       ; GC ptr vars +{V09}
-       mov      dword ptr [rsp+0x34], eax
-						;; size=14 bbWeight=0.50 PerfScore 1.12
-G_M11176_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[r8]
+G_M11176_IG08:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+       mov      r8d, 1
+       mov      dword ptr [rsp+0x34], r8d
+						;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M11176_IG09:        ; bbWeight=1, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      byte  ptr [rbx+0x12], 22
        lea      rcx, bword ptr [rbx+0x08]
        ; byrRegs +[rcx]
@@ -158,12 +142,12 @@ G_M11176_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E
        ; gcrRegs -[rdx rdi]
        ; byrRegs -[rcx]
        cmp      byte  ptr [rsp+0x34], 0
-       je       SHORT G_M11176_IG13
+       je       SHORT G_M11176_IG11
 						;; size=23 bbWeight=1 PerfScore 5.75
-G_M11176_IG12:        ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M11176_IG10:        ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      word  ptr [rbx+0x10], 1
 						;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M11176_IG13:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M11176_IG11:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rbx+0x18]
        ; byrRegs +[rcx]
        mov      rdx, gword ptr [rsp+0x28]
@@ -209,7 +193,7 @@ G_M11176_IG13:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, by
        ; byrRegs -[rcx]
        mov      byte  ptr [rbx+0x48], r12b
 						;; size=78 bbWeight=1 PerfScore 12.25
-G_M11176_IG14:        ; bbWeight=1, epilog, nogc, extend
+G_M11176_IG12:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -222,7 +206,7 @@ G_M11176_IG14:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 291, prolog size 16, PerfScore 59.50, instruction count 83, allocated bytes for code 291 (MethodHash=5d24d457) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
+; Total bytes of code 276, prolog size 16, PerfScore 58.00, instruction count 79, allocated bytes for code 276 (MethodHash=5d24d457) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
 ; ============================================================
 
 Unwind Info:
+9 (+6.72%) : 29668.dasm - Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
@@ -59,16 +59,22 @@ G_M3175_IG02:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        jmp      SHORT G_M3175_IG04
 						;; size=45 bbWeight=0.01 PerfScore 0.09
 G_M3175_IG03:        ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref
-       add      eax, edx
-						;; size=2 bbWeight=2 PerfScore 0.50
+       add      eax, r8d
+       mov      ebx, edx
+       mov      edx, r8d
+       mov      r8d, ebx
+						;; size=11 bbWeight=2 PerfScore 2.00
 G_M3175_IG04:        ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        cmp      r11d, r8d
        jg       SHORT G_M3175_IG06
 						;; size=5 bbWeight=8 PerfScore 10.00
 G_M3175_IG05:        ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        xor      ebx, ebx
+       mov      ebp, edx
+       mov      edx, r8d
+       mov      r8d, ebp
        jmp      SHORT G_M3175_IG07
-						;; size=4 bbWeight=2 PerfScore 4.50
+						;; size=12 bbWeight=2 PerfScore 6.00
 G_M3175_IG06:        ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        lea      edx, [r8+0x01]
        cmp      r8d, r11d
@@ -79,10 +85,7 @@ G_M3175_IG06:        ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, b
        jae      SHORT G_M3175_IG09
        mov      r8d, dword ptr [r10+4*r8]
        mov      ebx, 1
-       mov      ebp, edx
-       mov      edx, r8d
-       mov      r8d, ebp
-						;; size=39 bbWeight=2 PerfScore 16.50
+						;; size=31 bbWeight=2 PerfScore 15.00
 G_M3175_IG07:        ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
        test     ebx, ebx
        jne      SHORT G_M3175_IG03
@@ -101,7 +104,7 @@ G_M3175_IG09:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 134, prolog size 19, PerfScore 43.87, instruction count 35, allocated bytes for code 134 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
+; Total bytes of code 143, prolog size 19, PerfScore 45.37, instruction count 38, allocated bytes for code 143 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:
+3 (+7.14%) : 17382.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
@@ -32,35 +32,36 @@ G_M32531_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      edx, edx
+       mov      rax, rcx
+       ; byrRegs +[rax]
        jmp      SHORT G_M32531_IG05
-						;; size=6 bbWeight=0.50 PerfScore 1.25
+						;; size=9 bbWeight=0.50 PerfScore 1.38
 G_M32531_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax rcx]
        lea      rdx, bword ptr [rcx+0x10]
        ; byrRegs +[rdx]
        mov      rax, rdx
        ; byrRegs +[rax]
        mov      edx, dword ptr [rcx+0x08]
        ; byrRegs -[rdx]
-       mov      rcx, rax
+						;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M32531_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
        ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-						;; size=13 bbWeight=0.50 PerfScore 1.50
-G_M32531_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
-       ; byrRegs -[rax]
        mov      edx, edx
+       mov      rcx, rax
+       ; byrRegs +[rcx]
        call     [<unknown method>]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax rcx]
        ; gcr arg pop 0
        nop      
-						;; size=9 bbWeight=1 PerfScore 3.50
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M32531_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 42, prolog size 4, PerfScore 9.00, instruction count 15, allocated bytes for code 42 (MethodHash=f17780ec) for method System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
+; Total bytes of code 45, prolog size 4, PerfScore 9.25, instruction count 16, allocated bytes for code 45 (MethodHash=f17780ec) for method System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
 ; ============================================================
 
 Unwind Info:
+9 (+16.36%) : 45694.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
@@ -16,8 +16,8 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V07 tmp6         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->   r8         "Inlining Arg"
-;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->  rcx         single-def "Inlining Arg"
+;  V08 tmp7         [V08,T03] (  2,  4   )     int  ->  rdx         "Inlining Arg"
+;  V09 tmp8         [V09,T02] (  2,  4   )   byref  ->   r8         single-def "Inlining Arg"
 ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp10        [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M10944_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      r8d, r8d
+       mov      rax, rcx
+       ; byrRegs +[rax]
+       mov      ecx, r8d
+       ; byrRegs -[rcx]
+       mov      r8, rax
+       ; byrRegs +[r8]
        jmp      SHORT G_M10944_IG05
-						;; size=7 bbWeight=0.50 PerfScore 1.25
+						;; size=16 bbWeight=0.50 PerfScore 1.62
 G_M10944_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax r8]
        lea      r8, bword ptr [rcx+0x10]
        ; byrRegs +[r8]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
-       mov      eax, ecx
+						;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M10944_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+       mov      edx, ecx
        mov      rcx, r8
        ; byrRegs +[rcx]
-       mov      r8d, eax
+       mov      r8d, edx
        ; byrRegs -[r8]
-						;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M10944_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        xor      edx, edx
        call     [<unknown method>]
        ; byrRegs -[rcx]
        ; gcr arg pop 0
        shr      eax, 31
-						;; size=11 bbWeight=1 PerfScore 3.75
+						;; size=19 bbWeight=1 PerfScore 4.50
 G_M10944_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=c0f6d53f) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=c0f6d53f) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-5 (-20.00%) : 311880.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        sub      rsp, 40
 						;; size=4 bbWeight=1 PerfScore 0.25
 G_M54891_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M54891_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-25 (-19.08%) : 313003.dasm - System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
@@ -28,27 +28,27 @@ G_M29451_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M29451_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M29451_IG04:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M29451_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M29451_IG03
-						;; size=17 bbWeight=0 PerfScore 0.00
+						;; size=12 bbWeight=0 PerfScore 0.00
 G_M29451_IG06:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
-       mov      rdx, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_CLASSPROFILE32
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
@@ -61,15 +61,15 @@ G_M29451_IG06:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcr arg pop 0
        test     eax, eax
        je       SHORT G_M29451_IG05
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, gword ptr [rbx+0x18]
        ; gcrRegs +[rcx]
-						;; size=69 bbWeight=0 PerfScore 0.00
+						;; size=54 bbWeight=0 PerfScore 0.00
 G_M29451_IG07:        ; bbWeight=0, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
@@ -77,7 +77,7 @@ G_M29451_IG07:        ; bbWeight=0, epilog, nogc, extend
        ; gcr arg pop 0
 						;; size=11 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 131, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 131 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
+; Total bytes of code 106, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 106 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-33 (-19.08%) : 313007.dasm - System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
@@ -50,16 +50,16 @@ G_M54328_IG04:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
 						;; size=13 bbWeight=1.00 PerfScore 5.23
 G_M54328_IG05:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, gword ptr [rbx+0x18]
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
-						;; size=36 bbWeight=1.00 PerfScore 7.47
+						;; size=26 bbWeight=1.00 PerfScore 7.47
 G_M54328_IG06:        ; bbWeight=1.00, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -69,31 +69,31 @@ G_M54328_IG06:        ; bbWeight=1.00, epilog, nogc, extend
 						;; size=12 bbWeight=1.00 PerfScore 3.24
 G_M54328_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rcx rbx]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M54328_IG09
-						;; size=17 bbWeight=0.50 PerfScore 1.62
+						;; size=12 bbWeight=0.50 PerfScore 1.62
 G_M54328_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-						;; size=15 bbWeight=0.50 PerfScore 0.62
+						;; size=10 bbWeight=0.50 PerfScore 0.62
 G_M54328_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M54328_IG10:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
        ret      
 						;; size=7 bbWeight=1 PerfScore 2.25
-G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, rsi
@@ -101,10 +101,10 @@ G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
        call     [System.Threading.ThreadPoolBoundHandle:Dispose():this]
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
-       jmp      G_M54328_IG05
-						;; size=29 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M54328_IG05
+						;; size=21 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 173, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 173 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
+; Total bytes of code 140, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 140 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+15 (+6.33%) : 246551.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
@@ -9,24 +9,24 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] (  5,  3.50)     ref  ->  rsi         this class-hnd single-def <System.Xml.NameTable>
-;  V01 arg1         [V01,T01] ( 10, 20.64)     ref  ->  rbx         class-hnd single-def <System.String>
+;  V01 arg1         [V01,T02] (  7,  7   )     ref  ->  rbx         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
-;  V03 loc1         [V03,T05] (  4,  5.50)     int  ->  rdi        
-;  V04 loc2         [V04,T02] (  8, 19.61)     ref  ->  rbp         class-hnd <<unknown class>>
+;  V03 loc1         [V03,T05] (  4,  5.50)     int  ->  r14        
+;  V04 loc2         [V04,T00] (  8, 19.61)     ref  ->  r15         class-hnd <<unknown class>>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V08 tmp3         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V10 tmp5         [V10,T10] (  2,  2   )     int  ->  rdx         "Inlining Arg"
-;  V11 tmp6         [V11,T09] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
+;  V10 tmp5         [V10,T13] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;  V11 tmp6         [V11,T12] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
 ;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp9         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V16 tmp11        [V16    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V17 tmp12        [V17,T06] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V18 tmp13        [V18,T00] (  6, 42.28)     ref  ->   r8         class-hnd exact "Inlining Arg" <System.String>
+;  V18 tmp13        [V18,T01] (  5, 18.78)     ref  ->  rcx         class-hnd exact "Inlining Arg" <System.String>
 ;  V19 tmp14        [V19,T03] (  2,  8   )   byref  ->  rcx         "impAppendStmt"
 ;* V20 tmp15        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -35,23 +35,28 @@
 ;* V24 tmp19        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V25 tmp20        [V25    ] (  0,  0   )   byref  ->  zero-ref    "field V06._reference (fldOffset=0x0)" P-INDEP
 ;* V26 tmp21        [V26    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
-;  V27 tmp22        [V27,T11] (  2,  1   )   byref  ->  rcx         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V28 tmp23        [V28,T14] (  2,  1   )     int  ->  rdx         "field V07._length (fldOffset=0x8)" P-INDEP
-;  V29 tmp24        [V29,T12] (  2,  1   )   byref  ->  rcx         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V30 tmp25        [V30,T15] (  2,  1   )     int  ->  rdx         "field V08._length (fldOffset=0x8)" P-INDEP
+;  V27 tmp22        [V27,T14] (  2,  1   )   byref  ->  rcx         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V28 tmp23        [V28,T17] (  2,  1   )     int  ->  rdx         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V29 tmp24        [V29,T15] (  2,  1   )   byref  ->  rcx         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V30 tmp25        [V30,T18] (  2,  1   )     int  ->  rdx         "field V08._length (fldOffset=0x8)" P-INDEP
 ;* V31 tmp26        [V31    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
 ;* V32 tmp27        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
 ;* V33 tmp28        [V33    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V36 tmp31        [V36    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
-;  V37 tmp32        [V37,T07] (  3,  3   )     ref  ->  rax         single-def "arr expr"
-;  V38 tmp33        [V38,T08] (  3,  3   )     int  ->   r8         "index expr"
-;  V39 cse0         [V39,T13] (  2,  1   )     ref  ->  rax         "CSE #02: aggressive"
+;  V37 tmp32        [V37,T09] (  3,  3   )     ref  ->  rax         single-def "arr expr"
+;  V38 tmp33        [V38,T11] (  3,  3   )     int  ->   r8         "index expr"
+;  V39 cse0         [V39,T16] (  2,  1   )     ref  ->  rax         "CSE #02: aggressive"
+;  V40 cse1         [V40,T10] (  3,  3   )   byref  ->  rbp         "CSE #04: aggressive"
+;  V41 cse2         [V41,T07] (  3,  4.78)     int  ->   r8         "CSE #03: aggressive"
+;  V42 cse3         [V42,T08] (  4,  3.89)     int  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 40
 
 G_M51747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+       push     r15
+       push     r14
        push     rdi
        push     rsi
        push     rbp
@@ -61,13 +66,14 @@ G_M51747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rsi]
        mov      rbx, rdx
        ; gcrRegs +[rbx]
-						;; size=14 bbWeight=1 PerfScore 4.75
+						;; size=18 bbWeight=1 PerfScore 6.75
 G_M51747_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
        je       G_M51747_IG16
-       cmp      dword ptr [rbx+0x08], 0
+       mov      edi, dword ptr [rbx+0x08]
+       test     edi, edi
        jne      SHORT G_M51747_IG05
-						;; size=15 bbWeight=1 PerfScore 5.25
+						;; size=16 bbWeight=1 PerfScore 4.50
 G_M51747_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
        mov      rax, 0xD1FFAB1E
@@ -79,74 +85,78 @@ G_M51747_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rbp
        pop      rsi
        pop      rdi
+       pop      r14
+       pop      r15
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.62
+						;; size=13 bbWeight=0.50 PerfScore 2.12
 G_M51747_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax] +[rbx rsi]
-       lea      rcx, bword ptr [rbx+0x0C]
+       lea      rbp, bword ptr [rbx+0x0C]
+       ; byrRegs +[rbp]
+       mov      rcx, rbp
        ; byrRegs +[rcx]
-       mov      edx, dword ptr [rbx+0x08]
+       mov      edx, edi
        add      edx, edx
        mov      r8d, 0xD1FFAB1E
        mov      r9d, 0xD1FFAB1E
        call     [<unknown method>]
        ; byrRegs -[rcx]
        ; gcr arg pop 0
-       mov      edi, eax
+       mov      r14d, eax
        mov      rax, gword ptr [rsi+0x08]
        ; gcrRegs +[rax]
-       mov      r8d, edi
+       mov      r8d, r14d
        and      r8d, dword ptr [rsi+0x14]
        cmp      r8d, dword ptr [rax+0x08]
        jae      SHORT G_M51747_IG15
-       mov      rbp, gword ptr [rax+8*r8+0x10]
-       ; gcrRegs +[rbp]
-       test     rbp, rbp
+       mov      r15, gword ptr [rax+8*r8+0x10]
+       ; gcrRegs +[r15]
+       test     r15, r15
        je       SHORT G_M51747_IG11
-						;; size=56 bbWeight=0.50 PerfScore 9.50
-G_M51747_IG06:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=59 bbWeight=0.50 PerfScore 8.75
+G_M51747_IG06:        ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
        ; gcrRegs -[rax]
-       cmp      dword ptr [rbp+0x18], edi
+       cmp      dword ptr [r15+0x18], r14d
        jne      SHORT G_M51747_IG10
-						;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       mov      r8, gword ptr [rbp+0x08]
-       ; gcrRegs +[r8]
-       cmp      byte  ptr [r8], r8b
-       cmp      r8, rbx
+						;; size=6 bbWeight=4 PerfScore 16.00
+G_M51747_IG07:        ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+       mov      rcx, gword ptr [r15+0x08]
+       ; gcrRegs +[rcx]
+       cmp      byte  ptr [rcx], cl
+       cmp      rcx, rbx
        je       SHORT G_M51747_IG13
-						;; size=12 bbWeight=2 PerfScore 12.50
-G_M51747_IG08:        ; bbWeight=11.14, gcrefRegs=0168 {rbx rbp rsi r8}, byrefRegs=0000 {}, byref, isz
-       mov      edx, dword ptr [r8+0x08]
-       cmp      edx, dword ptr [rbx+0x08]
+						;; size=11 bbWeight=2 PerfScore 12.50
+G_M51747_IG08:        ; bbWeight=1.39, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+       mov      r8d, dword ptr [rcx+0x08]
+       cmp      r8d, edi
        jne      SHORT G_M51747_IG10
-						;; size=9 bbWeight=11.14 PerfScore 66.83
-G_M51747_IG09:        ; bbWeight=2, gcrefRegs=0168 {rbx rbp rsi r8}, byrefRegs=0000 {}, byref, isz
-       lea      rcx, bword ptr [r8+0x0C]
+						;; size=9 bbWeight=1.39 PerfScore 4.52
+G_M51747_IG09:        ; bbWeight=2, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+       add      rcx, 12
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
-       mov      r8d, dword ptr [r8+0x08]
-       ; gcrRegs -[r8]
        add      r8d, r8d
-       lea      rdx, bword ptr [rbx+0x0C]
+       mov      rdx, rbp
        ; byrRegs +[rdx]
        call     [<unknown method>]
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
        jne      SHORT G_M51747_IG13
-						;; size=25 bbWeight=2 PerfScore 15.00
-G_M51747_IG10:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       mov      rbp, gword ptr [rbp+0x10]
-       test     rbp, rbp
+						;; size=20 bbWeight=2 PerfScore 10.00
+G_M51747_IG10:        ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+       mov      r15, gword ptr [r15+0x10]
+       test     r15, r15
        jne      SHORT G_M51747_IG06
 						;; size=9 bbWeight=4 PerfScore 13.00
 G_M51747_IG11:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbp]
+       ; gcrRegs -[r15]
+       ; byrRegs -[rbp]
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
-       mov      r8d, edi
+       mov      r8d, r14d
        call     [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
        ; gcrRegs -[rcx rdx rbx rsi] +[rax]
        ; gcr arg pop 0
@@ -158,11 +168,13 @@ G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rbp
        pop      rsi
        pop      rdi
+       pop      r14
+       pop      r15
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M51747_IG13:        ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax] +[rbp]
-       mov      rax, gword ptr [rbp+0x08]
+						;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M51747_IG13:        ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[r15]
+       mov      rax, gword ptr [r15+0x08]
        ; gcrRegs +[rax]
 						;; size=4 bbWeight=0.61 PerfScore 1.22
 G_M51747_IG14:        ; bbWeight=0.61, epilog, nogc, extend
@@ -171,10 +183,12 @@ G_M51747_IG14:        ; bbWeight=0.61, epilog, nogc, extend
        pop      rbp
        pop      rsi
        pop      rdi
+       pop      r14
+       pop      r15
        ret      
-						;; size=9 bbWeight=0.61 PerfScore 1.98
+						;; size=13 bbWeight=0.61 PerfScore 2.58
 G_M51747_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax rbp]
+       ; gcrRegs -[rax r15]
        call     CORINFO_HELP_RNGCHKFAIL
        ; gcr arg pop 0
 						;; size=5 bbWeight=0 PerfScore 0.00
@@ -192,7 +206,7 @@ G_M51747_IG16:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=30 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 237, prolog size 14, PerfScore 151.39, instruction count 77, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 252, prolog size 18, PerfScore 86.20, instruction count 86, allocated bytes for code 252 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -200,13 +214,15 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x08
-  CountOfUnwindCodes: 5
+  SizeOfProlog      : 0x0C
+  CountOfUnwindCodes: 7
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
...
+14 (+8.00%) : 448605.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
@@ -10,32 +10,33 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  9,  6.95)     ref  ->  rbx         class-hnd single-def <System.Object>
-;  V01 arg1         [V01,T01] (  7,  5.47)     ref  ->  rsi         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T01] (  7,  5.96)     ref  ->  rsi         class-hnd single-def <System.Object>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T06] (  3,  1.98)     int  ->  rax         "guarded devirt return temp"
+;  V03 tmp1         [V03,T06] (  3,  2.88)     int  ->  rbp         "guarded devirt return temp"
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.String>
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.String>
-;  V06 tmp4         [V06,T03] (  4,  3.45)     ref  ->  rsi         class-hnd exact "Inline stloc first use temp" <System.String>
-;  V07 tmp5         [V07,T02] (  2,  3.96)   byref  ->  rcx         single-def "impAppendStmt"
+;  V06 tmp4         [V06,T02] (  4,  3.94)     ref  ->  rsi         class-hnd exact "Inline stloc first use temp" <System.String>
+;  V07 tmp5         [V07,T03] (  2,  3.96)   byref  ->  rcx         single-def "impAppendStmt"
 ;  V08 cse0         [V08,T04] (  4,  3.94)     int  ->  rdi         "CSE #02: aggressive"
 ;  V09 cse1         [V09,T05] (  3,  2.97)    long  ->  rcx         "CSE #01: moderate"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 40
 
-G_M12969_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12969_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
+       push     rbp
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 40
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
-						;; size=13 bbWeight=1 PerfScore 3.75
-G_M12969_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=14 bbWeight=1 PerfScore 4.75
+G_M12969_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        cmp      rbx, rsi
-       je       SHORT G_M12969_IG12
-						;; size=5 bbWeight=1 PerfScore 1.25
+       je       G_M12969_IG12
+						;; size=9 bbWeight=1 PerfScore 1.25
 G_M12969_IG03:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
        je       SHORT G_M12969_IG06
@@ -45,31 +46,45 @@ G_M12969_IG04:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        je       SHORT G_M12969_IG06
        mov      rcx, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M12969_IG15
-       cmp      qword ptr [rsi], rcx
        jne      SHORT G_M12969_IG14
+       cmp      qword ptr [rsi], rcx
+       jne      SHORT G_M12969_IG10
 						;; size=25 bbWeight=0.99 PerfScore 9.39
-G_M12969_IG05:        ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M12969_IG08
-						;; size=2 bbWeight=0.49 PerfScore 0.98
+G_M12969_IG05:        ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      edi, dword ptr [rbx+0x08]
+       cmp      edi, dword ptr [rsi+0x08]
+       je       SHORT G_M12969_IG11
+       jmp      SHORT G_M12969_IG10
+						;; size=10 bbWeight=0.98 PerfScore 7.87
 G_M12969_IG06:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
        xor      eax, eax
 						;; size=2 bbWeight=0.00 PerfScore 0.00
 G_M12969_IG07:        ; bbWeight=0.00, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 40
        pop      rbx
+       pop      rbp
        pop      rsi
        pop      rdi
        ret      
-						;; size=8 bbWeight=0.00 PerfScore 0.01
-G_M12969_IG08:        ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+						;; size=9 bbWeight=0.00 PerfScore 0.01
+G_M12969_IG08:        ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       movzx    rax, bpl
+						;; size=4 bbWeight=0.99 PerfScore 0.25
+G_M12969_IG09:        ; bbWeight=0.99, epilog, nogc, extend
+       add      rsp, 40
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       ret      
+						;; size=9 bbWeight=0.99 PerfScore 3.21
+G_M12969_IG10:        ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+       xor      ebp, ebp
+       jmp      SHORT G_M12969_IG08
+						;; size=4 bbWeight=0.90 PerfScore 2.03
+G_M12969_IG11:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx rsi]
-       mov      edi, dword ptr [rbx+0x08]
-       cmp      edi, dword ptr [rsi+0x08]
-       jne      SHORT G_M12969_IG14
-						;; size=8 bbWeight=0.98 PerfScore 5.90
-G_M12969_IG09:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      ecx, 1
        call     [System.Diagnostics.Debug:Assert(ubyte)]
        ; gcr arg pop 0
@@ -91,32 +106,21 @@ G_M12969_IG09:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcrRegs -[rbx rsi]
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
-						;; size=55 bbWeight=0.99 PerfScore 18.05
-G_M12969_IG10:        ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=0.99 PerfScore 0.25
-G_M12969_IG11:        ; bbWeight=0.99, epilog, nogc, extend
-       add      rsp, 32
-       pop      rbx
-       pop      rsi
-       pop      rdi
-       ret      
-						;; size=8 bbWeight=0.99 PerfScore 2.72
-G_M12969_IG12:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       mov      ebp, eax
+       jmp      SHORT G_M12969_IG08
+						;; size=59 bbWeight=0.99 PerfScore 20.27
+G_M12969_IG12:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, 1
 						;; size=5 bbWeight=0.01 PerfScore 0.00
 G_M12969_IG13:        ; bbWeight=0.01, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 40
        pop      rbx
+       pop      rbp
        pop      rsi
        pop      rdi
        ret      
-						;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M12969_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       xor      eax, eax
-       jmp      SHORT G_M12969_IG10
-						;; size=4 bbWeight=0 PerfScore 0.00
-G_M12969_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+						;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M12969_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -125,15 +129,16 @@ G_M12969_IG15:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x48]
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M12969_IG16:        ; bbWeight=0, epilog, nogc, extend
-       add      rsp, 32
+G_M12969_IG15:        ; bbWeight=0, epilog, nogc, extend
+       add      rsp, 40
        pop      rbx
+       pop      rbp
        pop      rsi
        pop      rdi
        tail.jmp [rax+0x10]<unknown method>
-						;; size=11 bbWeight=0 PerfScore 0.00
+						;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 175, prolog size 13, PerfScore 43.57, instruction count 63, allocated bytes for code 175 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 189, prolog size 14, PerfScore 50.31, instruction count 70, allocated bytes for code 189 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -141,12 +146,13 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x08
+  CountOfUnwindCodes: 5
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+5 (+16.13%) : 338480.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 40
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 40
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-9 (-6.98%) : 22491.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -54,28 +54,28 @@ G_M18424_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
        xor      r11d, r11d
        xor      ebx, ebx
        test     ecx, ecx
-       jle      SHORT G_M18424_IG12
+       jle      SHORT G_M18424_IG10
 						;; size=28 bbWeight=1 PerfScore 13.75
 G_M18424_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
        cmp      r11d, r8d
-       jae      SHORT G_M18424_IG07
+       jae      SHORT G_M18424_IG09
        lea      esi, [r11+0x01]
        mov      r11d, r11d
        movzx    rdi, byte  ptr [r9+rbx]
        mov      byte  ptr [rax+r11], dil
        inc      ebx
        cmp      ebx, ecx
-       jl       SHORT G_M18424_IG11
+       jl       SHORT G_M18424_IG08
 						;; size=27 bbWeight=4 PerfScore 26.00
 G_M18424_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        ; byrRegs -[r9]
        xor      ecx, ecx
        test     edx, edx
-       jle      SHORT G_M18424_IG10
+       jle      SHORT G_M18424_IG06
 						;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        cmp      esi, r8d
-       jae      SHORT G_M18424_IG09
+       jae      SHORT G_M18424_IG06
        mov      r9d, esi
        lea      esi, [r9+0x01]
        movzx    r11, byte  ptr [r10+rcx]
@@ -84,40 +84,34 @@ G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
        cmp      ecx, edx
        jl       SHORT G_M18424_IG05
 						;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rax r10]
-       mov      r11d, esi
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, r11d
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, esi
+						;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
        ; byrRegs +[rax r9-r10]
        mov      r11d, esi
        jmp      SHORT G_M18424_IG03
 						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
-       ; byrRegs -[r9]
+G_M18424_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rax r9-r10]
+       mov      esi, r11d
+       jmp      SHORT G_M18424_IG06
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+       ; byrRegs +[rax r10]
        mov      esi, r11d
        jmp      SHORT G_M18424_IG04
 						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-31 (-6.31%) : 148669.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
@@ -75,8 +75,10 @@ G_M61432_IG03:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {ra
 						;; size=23 bbWeight=1 PerfScore 7.25
 G_M61432_IG04:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
        xor      r9d, r9d
+       mov      dword ptr [rsp+0x44], r9d
+       mov      bword ptr [rsp+0xD8], rax
        jmp      G_M61432_IG10
-						;; size=8 bbWeight=0.50 PerfScore 1.12
+						;; size=21 bbWeight=0.50 PerfScore 2.12
 G_M61432_IG05:        ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
        mov      rcx, gword ptr [rdi+r10]
        ; gcrRegs +[rcx]
@@ -146,28 +148,20 @@ G_M61432_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
        xor      ecx, ecx
        mov      r10, qword ptr [rsp+0x38]
        mov      dword ptr [rdi+r10+0x08], ecx
-       mov      rax, bword ptr [rsp+0xD8]
-       ; byrRegs +[rax]
-       mov      r9d, dword ptr [rsp+0x44]
-       mov      r10, qword ptr [rsp+0x38]
-						;; size=94 bbWeight=0.50 PerfScore 10.00
-G_M61432_IG10:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref, isz
+						;; size=76 bbWeight=0.50 PerfScore 8.50
+G_M61432_IG10:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6000 {r13 r14}, byref, isz
        lea      ecx, [4*r12]
        cmp      ecx, esi
        jge      SHORT G_M61432_IG11
        mov      esi, ecx
        mov      byte  ptr [r13], 0
-       mov      dword ptr [rsp+0x44], r9d
-       mov      bword ptr [rsp+0xD8], rax
        jmp      SHORT G_M61432_IG12
-						;; size=34 bbWeight=0.50 PerfScore 3.50
-G_M61432_IG11:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
+						;; size=21 bbWeight=0.50 PerfScore 2.50
+G_M61432_IG11:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6000 {r13 r14}, byref
        mov      byte  ptr [r13], 1
-       mov      dword ptr [rsp+0x44], r9d
-       mov      bword ptr [rsp+0xD8], rax
-						;; size=18 bbWeight=0.50 PerfScore 1.50
+						;; size=5 bbWeight=0.50 PerfScore 0.50
 G_M61432_IG12:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
-       ; byrRegs -[rax r13]
+       ; byrRegs -[r13]
        add      dword ptr [r14], esi
        mov      r14, gword ptr [rsp+0xB0]
        ; gcrRegs +[r14]
@@ -250,7 +244,7 @@ G_M61432_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 491, prolog size 68, PerfScore 169.31, instruction count 138, allocated bytes for code 491 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 460, prolog size 68, PerfScore 166.81, instruction count 133, allocated bytes for code 460 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-17 (-5.78%) : 92967.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
@@ -91,10 +91,13 @@ G_M39738_IG03:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r
        ; byrRegs -[rax]
        xor      rax, rax
        ; gcrRegs +[rax]
+       mov      gword ptr [rsp+0x28], rax
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M39738_IG05
-						;; size=4 bbWeight=0.50 PerfScore 1.12
+						;; size=9 bbWeight=0.50 PerfScore 1.62
 G_M39738_IG04:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
+       ; GC ptr vars -{V10}
        mov      rcx, r12
        ; gcrRegs +[rcx]
        mov      rdx, r13
@@ -105,25 +108,19 @@ G_M39738_IG04:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r
        ; gcr arg pop 0
        mov      gword ptr [rsp+0x28], rax
        ; GC ptr vars +{V10}
-       mov      rax, gword ptr [rsp+0x28]
-						;; size=26 bbWeight=0.50 PerfScore 3.00
-G_M39738_IG05:        ; bbWeight=1, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; GC ptr vars -{V10}
-       cmp      byte  ptr [rsp+0xA8], 0
-       jne      SHORT G_M39738_IG10
-						;; size=10 bbWeight=1 PerfScore 3.00
-G_M39738_IG06:        ; bbWeight=0.50, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       test     rsi, rsi
-       je       SHORT G_M39738_IG09
-       test     byte  ptr [rsi+0x10], 1
-       jne      SHORT G_M39738_IG10
-						;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M39738_IG07:        ; bbWeight=0.25, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
-						;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M39738_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+						;; size=21 bbWeight=0.50 PerfScore 2.50
+G_M39738_IG05:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax]
+       cmp      byte  ptr [rsp+0xA8], 0
+       jne      SHORT G_M39738_IG08
+						;; size=10 bbWeight=1 PerfScore 3.00
+G_M39738_IG06:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+       test     rsi, rsi
+       je       SHORT G_M39738_IG07
+       test     byte  ptr [rsi+0x10], 1
+       jne      SHORT G_M39738_IG08
+						;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M39738_IG07:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rcx, qword ptr [(reloc)]      ; <unknown method>
        mov      rdx, r15
        ; gcrRegs +[rdx]
@@ -131,24 +128,13 @@ G_M39738_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
        mov      dword ptr [rsp+0x34], eax
-       jmp      SHORT G_M39738_IG11
+       jmp      SHORT G_M39738_IG09
 						;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M39738_IG09:        ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rax]
-       ; GC ptr vars -{V10}
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
-       jmp      SHORT G_M39738_IG08
-						;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M39738_IG10:        ; bbWeight=0.50, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
-       ; GC ptr vars -{V10}
+G_M39738_IG08:        ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      r8d, 1
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
        mov      dword ptr [rsp+0x34], r8d
-						;; size=16 bbWeight=0.50 PerfScore 1.12
-G_M39738_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax]
+						;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M39738_IG09:        ; bbWeight=1, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      byte  ptr [rbx+0x12], 22
        lea      rcx, bword ptr [rbx+0x08]
        ; byrRegs +[rcx]
@@ -158,12 +144,12 @@ G_M39738_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F06
        ; gcrRegs -[rdx rbp]
        ; byrRegs -[rcx]
        cmp      byte  ptr [rsp+0x34], 0
-       je       SHORT G_M39738_IG13
+       je       SHORT G_M39738_IG11
 						;; size=24 bbWeight=1 PerfScore 7.75
-G_M39738_IG12:        ; bbWeight=0.50, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG10:        ; bbWeight=0.50, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      word  ptr [rbx+0x10], 1
 						;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M39738_IG13:        ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG11:        ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rbx+0x18]
        ; byrRegs +[rcx]
        mov      rdx, gword ptr [rsp+0x28]
@@ -209,7 +195,7 @@ G_M39738_IG13:        ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, by
        ; byrRegs -[rcx]
        mov      byte  ptr [rbx+0x48], dil
 						;; size=84 bbWeight=1 PerfScore 24.25
-G_M39738_IG14:        ; bbWeight=1, epilog, nogc, extend
+G_M39738_IG12:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -222,7 +208,7 @@ G_M39738_IG14:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 294, prolog size 16, PerfScore 76.25, instruction count 82, allocated bytes for code 294 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
+; Total bytes of code 277, prolog size 16, PerfScore 74.75, instruction count 78, allocated bytes for code 277 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+12 (+12.77%) : 17957.dasm - System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
 ;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    "field V01._array (fldOffset=0x0)" P-INDEP
 ;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V01._offset (fldOffset=0x8)" P-INDEP
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V01._count (fldOffset=0xc)" P-INDEP
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  registers   "field V05._object (fldOffset=0x0)" P-INDEP
+;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  [rsp+0x28]  "field V05._object (fldOffset=0x0)" P-INDEP
 ;  V11 tmp9         [V11,T06] (  3,  2   )     int  ->  rsi         "field V05._index (fldOffset=0x8)" P-INDEP
 ;  V12 tmp10        [V12,T07] (  3,  2   )     int  ->  rdi         "field V05._length (fldOffset=0xc)" P-INDEP
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M30733_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
        mov      rbx, rcx
        ; byrRegs +[rbx]
 						;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M30733_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
        ; gcrRegs +[rdx]
        xor      esi, esi
        xor      edi, edi
+       mov      gword ptr [rsp+0x28], rdx
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M30733_IG05
-						;; size=12 bbWeight=0.50 PerfScore 2.00
+						;; size=17 bbWeight=0.50 PerfScore 2.50
 G_M30733_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdx] +[rcx]
+       ; GC ptr vars -{V10}
        mov      r8d, eax
        mov      r10d, edx
        add      r8, r10
        mov      r10d, dword ptr [rcx+0x08]
        cmp      r8, r10
        ja       SHORT G_M30733_IG07
+       mov      gword ptr [rsp+0x28], rcx
+       ; GC ptr vars +{V10}
        mov      esi, eax
        mov      edi, edx
-       mov      rdx, rcx
-       ; gcrRegs +[rdx]
-						;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M30733_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+						;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M30733_IG05:        ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
        ; gcrRegs -[rcx]
+       mov      rdx, gword ptr [rsp+0x28]
+       ; gcrRegs +[rdx]
        mov      rcx, rbx
        ; byrRegs +[rcx]
+       ; GC ptr vars -{V10}
        call     [CORINFO_HELP_CHECKED_ASSIGN_REF]
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M30733_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
        mov      dword ptr [rbx+0x0C], edi
        mov      rax, rbx
        ; byrRegs +[rax]
-						;; size=18 bbWeight=1 PerfScore 5.50
+						;; size=23 bbWeight=1 PerfScore 6.50
 G_M30733_IG06:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
@@ -93,7 +99,7 @@ G_M30733_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=7a5b87f2) for method System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=7a5b87f2) for method System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+12 (+12.77%) : 19893.dasm - System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
 ;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    "field V01._array (fldOffset=0x0)" P-INDEP
 ;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V01._offset (fldOffset=0x8)" P-INDEP
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V01._count (fldOffset=0xc)" P-INDEP
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  registers   "field V05._object (fldOffset=0x0)" P-INDEP
+;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  [rsp+0x28]  "field V05._object (fldOffset=0x0)" P-INDEP
 ;  V11 tmp9         [V11,T06] (  3,  2   )     int  ->  rsi         "field V05._index (fldOffset=0x8)" P-INDEP
 ;  V12 tmp10        [V12,T07] (  3,  2   )     int  ->  rdi         "field V05._length (fldOffset=0xc)" P-INDEP
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M52618_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
        mov      rbx, rcx
        ; byrRegs +[rbx]
 						;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M52618_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
        ; gcrRegs +[rdx]
        xor      esi, esi
        xor      edi, edi
+       mov      gword ptr [rsp+0x28], rdx
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M52618_IG05
-						;; size=12 bbWeight=0.50 PerfScore 2.00
+						;; size=17 bbWeight=0.50 PerfScore 2.50
 G_M52618_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdx] +[rcx]
+       ; GC ptr vars -{V10}
        mov      r8d, eax
        mov      r10d, edx
        add      r8, r10
        mov      r10d, dword ptr [rcx+0x08]
        cmp      r8, r10
        ja       SHORT G_M52618_IG07
+       mov      gword ptr [rsp+0x28], rcx
+       ; GC ptr vars +{V10}
        mov      esi, eax
        mov      edi, edx
-       mov      rdx, rcx
-       ; gcrRegs +[rdx]
-						;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M52618_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+						;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M52618_IG05:        ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
        ; gcrRegs -[rcx]
+       mov      rdx, gword ptr [rsp+0x28]
+       ; gcrRegs +[rdx]
        mov      rcx, rbx
        ; byrRegs +[rcx]
+       ; GC ptr vars -{V10}
        call     [CORINFO_HELP_CHECKED_ASSIGN_REF]
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M52618_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
        mov      dword ptr [rbx+0x0C], edi
        mov      rax, rbx
        ; byrRegs +[rax]
-						;; size=18 bbWeight=1 PerfScore 5.50
+						;; size=23 bbWeight=1 PerfScore 6.50
 G_M52618_IG06:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
@@ -93,7 +99,7 @@ G_M52618_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=3cd73275) for method System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=3cd73275) for method System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+12 (+12.77%) : 17977.dasm - System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
 ;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    "field V01._array (fldOffset=0x0)" P-INDEP
 ;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V01._offset (fldOffset=0x8)" P-INDEP
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V01._count (fldOffset=0xc)" P-INDEP
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  registers   "field V05._object (fldOffset=0x0)" P-INDEP
+;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  [rsp+0x28]  "field V05._object (fldOffset=0x0)" P-INDEP
 ;  V11 tmp9         [V11,T06] (  3,  2   )     int  ->  rsi         "field V05._index (fldOffset=0x8)" P-INDEP
 ;  V12 tmp10        [V12,T07] (  3,  2   )     int  ->  rdi         "field V05._length (fldOffset=0xc)" P-INDEP
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M50509_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
        mov      rbx, rcx
        ; byrRegs +[rbx]
 						;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M50509_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
        ; gcrRegs +[rdx]
        xor      esi, esi
        xor      edi, edi
+       mov      gword ptr [rsp+0x28], rdx
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M50509_IG05
-						;; size=12 bbWeight=0.50 PerfScore 2.00
+						;; size=17 bbWeight=0.50 PerfScore 2.50
 G_M50509_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdx] +[rcx]
+       ; GC ptr vars -{V10}
        mov      r8d, eax
        mov      r10d, edx
        add      r8, r10
        mov      r10d, dword ptr [rcx+0x08]
        cmp      r8, r10
        ja       SHORT G_M50509_IG07
+       mov      gword ptr [rsp+0x28], rcx
+       ; GC ptr vars +{V10}
        mov      esi, eax
        mov      edi, edx
-       mov      rdx, rcx
-       ; gcrRegs +[rdx]
-						;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M50509_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+						;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M50509_IG05:        ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
        ; gcrRegs -[rcx]
+       mov      rdx, gword ptr [rsp+0x28]
+       ; gcrRegs +[rdx]
        mov      rcx, rbx
        ; byrRegs +[rcx]
+       ; GC ptr vars -{V10}
        call     [CORINFO_HELP_CHECKED_ASSIGN_REF]
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M50509_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
        mov      dword ptr [rbx+0x0C], edi
        mov      rax, rbx
        ; byrRegs +[rax]
-						;; size=18 bbWeight=1 PerfScore 5.50
+						;; size=23 bbWeight=1 PerfScore 6.50
 G_M50509_IG06:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
@@ -93,7 +99,7 @@ G_M50509_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=d7323ab2) for method System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=d7323ab2) for method System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
libraries.pmi.windows.x64.checked.mch
-43 (-15.93%) : 297660.dasm - System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
@@ -19,8 +19,8 @@
 ;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V09 tmp8         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V11 tmp10        [V11,T07] (  4,  0.86)   ubyte  ->  rax         "Inline return value spill temp"
-;  V12 tmp11        [V12,T02] (  6,  4.53)     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V11 tmp10        [V11,T07] (  4,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V12 tmp11        [V12,T02] (  6,  4.53)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V13 tmp12        [V13,T04] (  5,  3.81)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V14 tmp13        [V14,T08] (  2,  0.83)   byref  ->  rcx         single-def "impAppendStmt"
 ;* V15 tmp14        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -28,17 +28,17 @@
 ;* V17 tmp16        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp18        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V20 cse0         [V20,T09] (  0,  0   )    long  ->  zero-ref    "CSE #03: moderate"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 40
 
 G_M34460_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 40
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-						;; size=10 bbWeight=1 PerfScore 3.50
+						;; size=9 bbWeight=1 PerfScore 2.50
 G_M34460_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      eax, dword ptr [rbx+0x7C]
        and      eax, 0x1800
@@ -50,12 +50,11 @@ G_M34460_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M34460_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=0.50 PerfScore 1.38
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M34460_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx]
        mov      rsi, gword ptr [rbx+0x20]
@@ -63,14 +62,14 @@ G_M34460_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
        test     byte  ptr [(reloc)], 1      ; global ptr
        je       G_M34460_IG18
 						;; size=17 bbWeight=0.50 PerfScore 3.00
-G_M34460_IG06:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M34460_IG06:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rdx, gword ptr [rax]
        ; gcrRegs +[rdx]
        cmp      byte  ptr [rsi], sil
        cmp      rsi, rdx
-       je       G_M34460_IG16
-						;; size=25 bbWeight=0.50 PerfScore 3.25
+       je       SHORT G_M34460_IG16
+						;; size=21 bbWeight=0.50 PerfScore 3.25
 G_M34460_IG07:        ; bbWeight=0.35, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
        je       SHORT G_M34460_IG09
@@ -94,37 +93,39 @@ G_M34460_IG08:        ; bbWeight=0.50, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0
        jne      SHORT G_M34460_IG16
 						;; size=25 bbWeight=0.50 PerfScore 3.62
 G_M34460_IG09:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, gword ptr [rbx+0x20]
-       ; gcrRegs +[rdi]
-       test     byte  ptr [(reloc)], 1      ; global ptr
-       je       SHORT G_M34460_IG19
-						;; size=13 bbWeight=0.50 PerfScore 3.00
-G_M34460_IG10:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx]
-       mov      r8, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
-       mov      rdx, gword ptr [r8]
+       mov      r8, gword ptr [rbx+0x20]
+       ; gcrRegs +[r8]
+       mov      rdx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
+       mov      rdx, gword ptr [rdx]
        ; gcrRegs +[rdx]
-       cmp      byte  ptr [rdi], dil
-       cmp      rdi, rdx
+       cmp      byte  ptr [r8], r8b
+       cmp      r8, rdx
        je       SHORT G_M34460_IG15
-						;; size=21 bbWeight=0.50 PerfScore 3.25
-G_M34460_IG11:        ; bbWeight=0.35, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+						;; size=25 bbWeight=0.50 PerfScore 4.25
+G_M34460_IG10:        ; bbWeight=0.35, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx]
        test     rdx, rdx
-       je       SHORT G_M34460_IG20
-       mov      r8d, dword ptr [rdi+0x08]
-       cmp      r8d, dword ptr [rdx+0x08]
-       jne      SHORT G_M34460_IG20
-						;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M34460_IG12:        ; bbWeight=0.21, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
-       lea      rcx, bword ptr [rdi+0x0C]
+       je       SHORT G_M34460_IG11
+       mov      eax, dword ptr [r8+0x08]
+       cmp      eax, dword ptr [rdx+0x08]
+       je       SHORT G_M34460_IG12
+						;; size=14 bbWeight=0.35 PerfScore 2.52
+G_M34460_IG11:        ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdx r8]
+       xor      eax, eax
+       jmp      SHORT G_M34460_IG13
+						;; size=4 bbWeight=0.14 PerfScore 0.31
+G_M34460_IG12:        ; bbWeight=0.21, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
+       ; gcrRegs +[rdx r8]
+       lea      rcx, bword ptr [r8+0x0C]
        ; byrRegs +[rcx]
-       mov      r8d, dword ptr [rdi+0x08]
+       mov      r8d, dword ptr [r8+0x08]
+       ; gcrRegs -[r8]
        add      r8d, r8d
        add      rdx, 12
        ; gcrRegs -[rdx]
        ; byrRegs +[rdx]
        call     [<unknown method>]
-       ; gcrRegs -[rdi]
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
 						;; size=21 bbWeight=0.21 PerfScore 1.25
@@ -132,12 +133,11 @@ G_M34460_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        nop      
 						;; size=1 bbWeight=0.50 PerfScore 0.12
 G_M34460_IG14:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=0.50 PerfScore 1.38
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M34460_IG15:        ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      eax, 1
        jmp      SHORT G_M34460_IG13
@@ -146,12 +146,11 @@ G_M34460_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M34460_IG17:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=0.50 PerfScore 1.38
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M34460_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi]
        mov      rcx, 0xD1FFAB1E
@@ -160,21 +159,8 @@ G_M34460_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
        ; gcr arg pop 0
        jmp      G_M34460_IG06
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M34460_IG19:        ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx rsi] +[rdi]
-       mov      rcx, 0xD1FFAB1E
-       mov      edx, 0x720
-       call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       ; gcr arg pop 0
-       jmp      G_M34460_IG10
-						;; size=25 bbWeight=0 PerfScore 0.00
-G_M34460_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rdi]
-       xor      eax, eax
-       jmp      SHORT G_M34460_IG13
-						;; size=4 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 270, prolog size 7, PerfScore 34.26, instruction count 77, allocated bytes for code 270 (MethodHash=03217963) for method System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
+; Total bytes of code 227, prolog size 6, PerfScore 30.83, instruction count 67, allocated bytes for code 227 (MethodHash=03217963) for method System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -182,12 +168,11 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x06
+  CountOfUnwindCodes: 3
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-38 (-10.03%) : 38.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
@@ -15,7 +15,7 @@
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct (32) zero-ref    "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-;  V07 tmp3         [V07,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V07 tmp3         [V07,T10] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V08 tmp4         [V08,T01] (  6,  5.70)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V09 tmp5         [V09,T04] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V10 tmp6         [V10,T07] (  2,  2   )   byref  ->  rcx         single-def "impAppendStmt"
@@ -24,7 +24,7 @@
 ;* V13 tmp9         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp10        [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp12        [V16,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V16 tmp12        [V16,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V17 tmp13        [V17,T02] (  6,  5.70)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V18 tmp14        [V18,T05] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V19 tmp15        [V19,T08] (  2,  2   )   byref  ->  rcx         single-def "impAppendStmt"
@@ -39,15 +39,15 @@
 ;* V28 tmp24        [V28    ] (  0,  0   )     ref  ->  zero-ref    "field V00._culture (fldOffset=0x8)" P-INDEP
 ;* V29 tmp25        [V29    ] (  0,  0   )     int  ->  zero-ref    "field V00._options (fldOffset=0x10)" P-INDEP
 ;* V30 tmp26        [V30    ] (  0,  0   )    long  ->  zero-ref    "field V00._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V31 tmp27        [V31,T13] (  2,  1   )     ref  ->  rdx         single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
-;  V32 tmp28        [V32,T14] (  2,  1   )     ref  ->  rsi         single-def "field V06._culture (fldOffset=0x8)" P-INDEP
-;  V33 tmp29        [V33,T15] (  2,  1   )     int  ->  rbp         "field V06._options (fldOffset=0x10)" P-INDEP
-;  V34 tmp30        [V34,T16] (  2,  1   )    long  ->  r14         "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V35 tmp31        [V35,T17] (  2,  1   )    long  ->  rcx         "field V25._ticks (fldOffset=0x0)" P-INDEP
+;  V31 tmp27        [V31,T12] (  2,  1   )     ref  ->  rdx         single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
+;  V32 tmp28        [V32,T13] (  2,  1   )     ref  ->  rsi         single-def "field V06._culture (fldOffset=0x8)" P-INDEP
+;  V33 tmp29        [V33,T14] (  2,  1   )     int  ->  rbp         "field V06._options (fldOffset=0x10)" P-INDEP
+;  V34 tmp30        [V34,T15] (  2,  1   )    long  ->  r14         "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
+;  V35 tmp31        [V35,T16] (  2,  1   )    long  ->  rax         "field V25._ticks (fldOffset=0x0)" P-INDEP
 ;* V36 tmp32        [V36    ] (  0,  0   )    long  ->  zero-ref    "field V26._ticks (fldOffset=0x0)" P-INDEP
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct (32) zero-ref    "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
 ;  V38 tmp34        [V38,T09] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;* V39 cse0         [V39,T10] (  0,  0   )    long  ->  zero-ref    multi-def "CSE #04: aggressive"
+;* V39 cse0         [V39,T17] (  0,  0   )    long  ->  zero-ref    "CSE #04: aggressive"
 ;
 ; Lcl frame size = 48
 
@@ -73,7 +73,7 @@ G_M3825_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
        mov      rdi, gword ptr [r8]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M3825_IG13
+       je       G_M3825_IG12
 						;; size=22 bbWeight=1 PerfScore 3.50
 G_M3825_IG04:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
        mov      rdx, gword ptr [rdi+0x18]
@@ -90,10 +90,10 @@ G_M3825_IG04:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}
 						;; size=26 bbWeight=0.50 PerfScore 7.12
 G_M3825_IG05:        ; bbWeight=0.35, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        test     rdx, rdx
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
        mov      ecx, dword ptr [r8+0x08]
        cmp      ecx, dword ptr [rdx+0x08]
-       jne      SHORT G_M3825_IG12
+       jne      SHORT G_M3825_IG11
 						;; size=14 bbWeight=0.35 PerfScore 2.52
 G_M3825_IG06:        ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        lea      rcx, bword ptr [r8+0x0C]
@@ -108,7 +108,7 @@ G_M3825_IG06:        ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
 						;; size=25 bbWeight=0.50 PerfScore 3.62
 G_M3825_IG07:        ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
        mov      r8, gword ptr [rbx+0x08]
@@ -122,10 +122,10 @@ G_M3825_IG07:        ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
 G_M3825_IG08:        ; bbWeight=0.35, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rsi]
        test     rdx, rdx
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
        mov      ecx, dword ptr [r8+0x08]
        cmp      ecx, dword ptr [rdx+0x08]
-       jne      SHORT G_M3825_IG12
+       jne      SHORT G_M3825_IG11
 						;; size=14 bbWeight=0.35 PerfScore 2.52
 G_M3825_IG09:        ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        lea      rcx, bword ptr [r8+0x0C]
@@ -140,36 +140,20 @@ G_M3825_IG09:        ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=000
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
 						;; size=25 bbWeight=0.50 PerfScore 3.62
 G_M3825_IG10:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
        cmp      dword ptr [rbx+0x10], ebp
-       jne      SHORT G_M3825_IG12
-       mov      rcx, qword ptr [rbx+0x18]
-       cmp      rcx, r14
-       jne      SHORT G_M3825_IG12
-       mov      rax, gword ptr [rdi+0x08]
-       ; gcrRegs +[rax]
-						;; size=18 bbWeight=0.50 PerfScore 4.62
-G_M3825_IG11:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 48
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M3825_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref
-       ; gcrRegs -[rax]
+       jne      SHORT G_M3825_IG11
+       mov      rax, qword ptr [rbx+0x18]
+       cmp      rax, r14
+       je       SHORT G_M3825_IG14
+						;; size=14 bbWeight=0.50 PerfScore 3.62
+G_M3825_IG11:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
        mov      rsi, qword ptr [rdi+0x10]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M3825_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdi]
-       test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M3825_IG19
-						;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M3825_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
        cmp      dword ptr [(reloc)], 0      ; data for <unknown class>:<unknown field>
        je       SHORT G_M3825_IG16
        mov      rcx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
@@ -199,6 +183,20 @@ G_M3825_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
        ; gcrRegs +[rax]
        mov      rax, gword ptr [rax+0x08]
 						;; size=83 bbWeight=0.50 PerfScore 10.88
+G_M3825_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 48
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M3825_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rdi]
+       mov      rax, gword ptr [rdi+0x08]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M3825_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 48
        pop      rbx
@@ -209,7 +207,7 @@ G_M3825_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.88
 G_M3825_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax]
+       ; gcrRegs -[rax rdi]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -231,15 +229,8 @@ G_M3825_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        ; gcr arg pop 0
        jmp      G_M3825_IG03
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M3825_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
-       mov      rcx, 0xD1FFAB1E
-       mov      edx, 40
-       call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       ; gcr arg pop 0
-       jmp      G_M3825_IG14
-						;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 379, prolog size 17, PerfScore 61.42, instruction count 110, allocated bytes for code 379 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
+; Total bytes of code 341, prolog size 17, PerfScore 59.42, instruction count 104, allocated bytes for code 341 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
 ; ============================================================
 
 Unwind Info:
-42 (-7.81%) : 301081.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
@@ -10,13 +10,13 @@
 ;
 ;  V00 this         [V00,T00] ( 14,  8.50)     ref  ->  rbx         this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
 ;  V01 arg1         [V01,T01] (  5,  4   )     ref  ->  rsi         class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
-;  V02 loc0         [V02,T05] (  6,  3.50)    long  ->  r14         ld-addr-op
+;  V02 loc0         [V02,T07] (  6,  3.50)    long  ->  r14         ld-addr-op
 ;  V03 loc1         [V03,T08] (  5,  3.85)     ref  ->  rdi         class-hnd exact single-def <System.String>
 ;  V04 loc2         [V04,T02] ( 11,  5.85)     ref  ->  rbp         class-hnd exact single-def <System.String>
 ;  V05 loc3         [V05    ] (  4,  2   )   ubyte  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T10] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V08 tmp2         [V08,T07] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.String>
+;  V08 tmp2         [V08,T06] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.String>
 ;  V09 tmp3         [V09,T09] (  4,  3.50)     ref  ->  rdi        
 ;  V10 tmp4         [V10,T22] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V11 tmp5         [V11,T03] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
@@ -36,17 +36,18 @@
 ;* V25 tmp19        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp20        [V26,T24] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V27 tmp21        [V27,T11] (  3,  3   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <<unknown class>>
-;  V28 tmp22        [V28,T16] (  3,  1.50)   byref  ->  rax         single-def "Inline stloc first use temp"
-;  V29 tmp23        [V29,T19] (  3,  1.50)    long  ->  r14         "Inline return value spill temp"
-;  V30 tmp24        [V30,T06] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V31 tmp25        [V31,T20] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
+;  V28 tmp22        [V28,T21] (  3,  1.50)   byref  ->  rax         single-def "Inline stloc first use temp"
+;  V29 tmp23        [V29,T18] (  3,  1.50)    long  ->  r14         "Inline return value spill temp"
+;  V30 tmp24        [V30,T05] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V31 tmp25        [V31,T19] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
 ;  V32 tmp26        [V32,T12] (  3,  3   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V33 tmp27        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp28        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V35 tmp29        [V35,T13] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
-;  V36 cse0         [V36,T21] (  3,  1.50)     int  ->   r8         "CSE #07: moderate"
-;  V37 cse1         [V37,T17] (  3,  1.50)     ref  ->  rcx         "CSE #08: moderate"
-;  V38 cse2         [V38,T18] (  3,  1.50)     ref  ->  rdx         multi-def "CSE #02: moderate"
+;* V36 cse0         [V36,T25] (  0,  0   )    long  ->  zero-ref    "CSE #03: moderate"
+;  V37 cse1         [V37,T20] (  3,  1.50)     int  ->   r8         "CSE #07: moderate"
+;  V38 cse2         [V38,T16] (  3,  1.50)     ref  ->  rcx         "CSE #08: moderate"
+;  V39 cse3         [V39,T17] (  3,  1.50)     ref  ->  rdx         multi-def "CSE #02: moderate"
 ;
 ; Lcl frame size = 48
 
@@ -112,12 +113,12 @@ G_M17396_IG06:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
 G_M17396_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rbp rsi rdi]
        xor      r14d, r14d
-       jmp      G_M17396_IG18
+       jmp      G_M17396_IG20
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M17396_IG08:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rbx rbp rsi rdi]
        test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M17396_IG23
+       je       G_M17396_IG22
 						;; size=13 bbWeight=0.50 PerfScore 2.00
 G_M17396_IG09:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      r8, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
@@ -148,25 +149,21 @@ G_M17396_IG11:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
        test     eax, eax
        jne      SHORT G_M17396_IG07
 						;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG12:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
-       test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M17396_IG24
-						;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M17396_IG13:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG12:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      r8, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rdx, gword ptr [r8]
        ; gcrRegs +[rdx]
        cmp      rbp, rdx
        je       SHORT G_M17396_IG07
 						;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M17396_IG14:        ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG13:        ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
-       je       SHORT G_M17396_IG16
+       je       SHORT G_M17396_IG15
        mov      r8d, dword ptr [rbp+0x08]
        cmp      r8d, dword ptr [rdx+0x08]
-       jne      SHORT G_M17396_IG16
+       jne      SHORT G_M17396_IG15
 						;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG14:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rbp+0x0C]
        ; byrRegs +[rcx]
        mov      r8d, dword ptr [rbp+0x08]
@@ -180,7 +177,7 @@ G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
        test     eax, eax
        jne      G_M17396_IG07
 						;; size=29 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbx+0x68]
        ; gcrRegs +[rcx]
        cmp      byte  ptr [rcx], cl
@@ -191,41 +188,14 @@ G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        ; byrRegs +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       je       SHORT G_M17396_IG20
+       je       SHORT G_M17396_IG16
        mov      r14, qword ptr [rax]
        xor      edx, edx
        mov      dword ptr [rsp+0x28], edx
-						;; size=29 bbWeight=0.50 PerfScore 6.38
-G_M17396_IG17:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+       jmp      G_M17396_IG19
+						;; size=34 bbWeight=0.50 PerfScore 7.38
+G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; byrRegs -[rax]
-       movzx    rcx, byte  ptr [rsp+0x28]
-       mov      dword ptr [rsp+0x20], ecx
-       mov      rcx, gword ptr [rbx+0x20]
-       ; gcrRegs +[rcx]
-       mov      rdx, gword ptr [rsi+0x10]
-       ; gcrRegs +[rdx]
-       mov      r8, rbp
-       ; gcrRegs +[r8]
-       mov      r9d, r14d
-       cmp      dword ptr [rcx], ecx
-       call     [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
-       ; gcrRegs -[rcx rdx rbx rbp rsi r8]
-       ; gcr arg pop 0
-						;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M17396_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rax, r14
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M17396_IG19:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 48
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=1 PerfScore 3.75
-G_M17396_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rbx rbp rsi]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E
@@ -236,14 +206,14 @@ G_M17396_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=006
        mov      r14, rax
        ; gcrRegs +[r14]
        cmp      r14, gword ptr [rbx+0x58]
-       jne      SHORT G_M17396_IG21
+       jne      SHORT G_M17396_IG17
        xor      ecx, ecx
        mov      dword ptr [rsp+0x28], ecx
        mov      r14, qword ptr [rbx+0x80]
        ; gcrRegs -[r14]
-       jmp      SHORT G_M17396_IG22
+       jmp      SHORT G_M17396_IG18
 						;; size=43 bbWeight=0.50 PerfScore 6.50
-G_M17396_IG21:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M17396_IG17:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax] +[r14]
        mov      rcx, gword ptr [rbx+0x10]
        ; gcrRegs +[rcx]
@@ -270,7 +240,7 @@ G_M17396_IG21:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRe
        mov      qword ptr [rbx+0x80], rdi
        mov      r14, rdi
 						;; size=68 bbWeight=0.50 PerfScore 8.62
-G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG18:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbx+0x68]
        ; gcrRegs +[rcx]
        cmp      byte  ptr [rcx], cl
@@ -282,7 +252,7 @@ G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       jne      G_M17396_IG17
+       jne      SHORT G_M17396_IG19
        mov      rdx, 0xD1FFAB1E
        ; gcrRegs +[rdx]
        mov      rcx, rdx
@@ -290,26 +260,44 @@ G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       jmp      G_M17396_IG17
-						;; size=56 bbWeight=0.50 PerfScore 7.75
-G_M17396_IG23:        ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[rdi]
+						;; size=47 bbWeight=0.50 PerfScore 6.75
+G_M17396_IG19:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+       movzx    rcx, byte  ptr [rsp+0x28]
+       mov      dword ptr [rsp+0x20], ecx
+       mov      rcx, gword ptr [rbx+0x20]
+       ; gcrRegs +[rcx]
+       mov      rdx, gword ptr [rsi+0x10]
+       ; gcrRegs +[rdx]
+       mov      r8, rbp
+       ; gcrRegs +[r8]
+       mov      r9d, r14d
+       cmp      dword ptr [rcx], ecx
+       call     [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
+       ; gcrRegs -[rcx rdx rbx rbp rsi r8]
+       ; gcr arg pop 0
+						;; size=31 bbWeight=0.50 PerfScore 6.25
+G_M17396_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       mov      rax, r14
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M17396_IG21:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 48
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=1 PerfScore 3.75
+G_M17396_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx rbp rsi rdi]
        mov      rcx, 0xD1FFAB1E
        mov      edx, 60
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
        ; gcr arg pop 0
        jmp      G_M17396_IG09
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M17396_IG24:        ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
-       mov      rcx, 0xD1FFAB1E
-       mov      edx, 60
-       call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       ; gcr arg pop 0
-       jmp      G_M17396_IG13
-						;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 538, prolog size 10, PerfScore 83.17, instruction count 137, allocated bytes for code 538 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
+; Total bytes of code 496, prolog size 10, PerfScore 81.17, instruction count 131, allocated bytes for code 496 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+15 (+13.76%) : 34842.dasm - Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
@@ -39,28 +39,28 @@ G_M23522_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        xor      r9d, r9d
        mov      edx, dword ptr [rax+0x08]
        test     edx, edx
-       jle      SHORT G_M23522_IG04
+       jle      SHORT G_M23522_IG08
 						;; size=34 bbWeight=1 PerfScore 5.50
 G_M23522_IG03:        ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
        movsxd   r8, r9d
        movzx    r8, byte  ptr [rcx+r8]
        test     r8d, r8d
-       je       SHORT G_M23522_IG04
+       je       SHORT G_M23522_IG07
        lea      r10d, [r9+0x01]
        mov      r9d, r9d
        mov      byte  ptr [rax+r9+0x10], r8b
        cmp      edx, r10d
-       mov      r9d, r10d
-       jg       SHORT G_M23522_IG03
-						;; size=33 bbWeight=4 PerfScore 27.00
+       jg       SHORT G_M23522_IG06
+						;; size=30 bbWeight=4 PerfScore 26.00
 G_M23522_IG04:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      rcx, gword ptr [rcx]
        ; gcrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
+       mov      r9d, r10d
        xor      r8d, r8d
-						;; size=19 bbWeight=1 PerfScore 2.75
+						;; size=22 bbWeight=1 PerfScore 3.00
 G_M23522_IG05:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -68,8 +68,21 @@ G_M23522_IG05:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [<unknown method>]
        ; gcr arg pop 0
 						;; size=12 bbWeight=1 PerfScore 3.25
+G_M23522_IG06:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rcx rdx]
+       mov      r9d, r10d
+       jmp      SHORT G_M23522_IG03
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M23522_IG07:        ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+       mov      r10d, r9d
+       jmp      SHORT G_M23522_IG04
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M23522_IG08:        ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+       mov      r10d, r9d
+       jmp      SHORT G_M23522_IG04
+						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 109, prolog size 11, PerfScore 41.25, instruction count 32, allocated bytes for code 109 (MethodHash=ab49a41d) for method Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
+; Total bytes of code 124, prolog size 11, PerfScore 50.62, instruction count 38, allocated bytes for code 124 (MethodHash=ab49a41d) for method Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
+9 (+14.29%) : 151473.dasm - Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
@@ -41,7 +41,7 @@
 ;* V30 tmp29        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
 ;* V31 tmp30        [V31    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
 ;* V32 tmp31        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
-;  V33 tmp32        [V33,T04] (  2,  2   )   byref  ->   r8         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V33 tmp32        [V33,T04] (  2,  2   )   byref  ->   r9         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V34 tmp33        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;* V35 tmp34        [V35    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V36 tmp35        [V36    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,37 +67,43 @@ G_M56823_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      edx, edx
+       mov      r8d, edx
+       mov      rdx, rcx
+       ; byrRegs +[rdx]
        jmp      SHORT G_M56823_IG05
-						;; size=6 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 1.50
 G_M56823_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rcx rdx]
        lea      rdx, bword ptr [rcx+0x0C]
        ; byrRegs +[rdx]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
        mov      r8d, ecx
+						;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M56823_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+       mov      r9, 0xD1FFAB1E
+       ; byrRegs +[r9]
        mov      rcx, rdx
        ; byrRegs +[rcx]
        mov      edx, r8d
        ; byrRegs -[rdx]
-						;; size=16 bbWeight=0.50 PerfScore 1.62
-G_M56823_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
-       mov      r8, 0xD1FFAB1E
+       mov      r8, r9
        ; byrRegs +[r8]
        mov      r9d, 2
+       ; byrRegs -[r9]
        call     [<unknown method>]
        ; byrRegs -[rcx r8]
        ; gcr arg pop 0
        not      eax
        shr      eax, 31
-						;; size=27 bbWeight=1 PerfScore 4.25
+						;; size=36 bbWeight=1 PerfScore 5.00
 G_M56823_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 63, prolog size 4, PerfScore 9.88, instruction count 18, allocated bytes for code 63 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
+; Total bytes of code 72, prolog size 4, PerfScore 10.62, instruction count 21, allocated bytes for code 72 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
+9 (+14.29%) : 192170.dasm - Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
@@ -41,7 +41,7 @@
 ;* V30 tmp29        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
 ;* V31 tmp30        [V31    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
 ;* V32 tmp31        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
-;  V33 tmp32        [V33,T04] (  2,  2   )   byref  ->   r8         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V33 tmp32        [V33,T04] (  2,  2   )   byref  ->   r9         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V34 tmp33        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;* V35 tmp34        [V35    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V36 tmp35        [V36    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,37 +67,43 @@ G_M56823_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        xor      rcx, rcx
        ; byrRegs +[rcx]
        xor      edx, edx
+       mov      r8d, edx
+       mov      rdx, rcx
+       ; byrRegs +[rdx]
        jmp      SHORT G_M56823_IG05
-						;; size=6 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 1.50
 G_M56823_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rcx rdx]
        lea      rdx, bword ptr [rcx+0x0C]
        ; byrRegs +[rdx]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
        mov      r8d, ecx
+						;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M56823_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+       mov      r9, 0xD1FFAB1E
+       ; byrRegs +[r9]
        mov      rcx, rdx
        ; byrRegs +[rcx]
        mov      edx, r8d
        ; byrRegs -[rdx]
-						;; size=16 bbWeight=0.50 PerfScore 1.62
-G_M56823_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
-       mov      r8, 0xD1FFAB1E
+       mov      r8, r9
        ; byrRegs +[r8]
        mov      r9d, 2
+       ; byrRegs -[r9]
        call     [<unknown method>]
        ; byrRegs -[rcx r8]
        ; gcr arg pop 0
        not      eax
        shr      eax, 31
-						;; size=27 bbWeight=1 PerfScore 4.25
+						;; size=36 bbWeight=1 PerfScore 5.00
 G_M56823_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 63, prolog size 4, PerfScore 9.88, instruction count 18, allocated bytes for code 63 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
+; Total bytes of code 72, prolog size 4, PerfScore 10.62, instruction count 21, allocated bytes for code 72 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-5 (-20.00%) : 22417.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        sub      rsp, 40
 						;; size=4 bbWeight=1 PerfScore 0.25
 G_M54891_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M54891_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-25 (-19.08%) : 3870.dasm - System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
@@ -28,27 +28,27 @@ G_M29451_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M29451_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M29451_IG04:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M29451_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M29451_IG03
-						;; size=17 bbWeight=0 PerfScore 0.00
+						;; size=12 bbWeight=0 PerfScore 0.00
 G_M29451_IG06:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
-       mov      rdx, 0xD1FFAB1E
+       mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_CLASSPROFILE32
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
@@ -61,15 +61,15 @@ G_M29451_IG06:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcr arg pop 0
        test     eax, eax
        je       SHORT G_M29451_IG05
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, gword ptr [rbx+0x18]
        ; gcrRegs +[rcx]
-						;; size=69 bbWeight=0 PerfScore 0.00
+						;; size=54 bbWeight=0 PerfScore 0.00
 G_M29451_IG07:        ; bbWeight=0, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
@@ -77,7 +77,7 @@ G_M29451_IG07:        ; bbWeight=0, epilog, nogc, extend
        ; gcr arg pop 0
 						;; size=11 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 131, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 131 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
+; Total bytes of code 106, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 106 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
-33 (-19.08%) : 3871.dasm - System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
@@ -50,16 +50,16 @@ G_M54328_IG04:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
 						;; size=13 bbWeight=1.00 PerfScore 5.23
 G_M54328_IG05:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, gword ptr [rbx+0x18]
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
-						;; size=36 bbWeight=1.00 PerfScore 7.47
+						;; size=26 bbWeight=1.00 PerfScore 7.47
 G_M54328_IG06:        ; bbWeight=1.00, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
@@ -69,31 +69,31 @@ G_M54328_IG06:        ; bbWeight=1.00, epilog, nogc, extend
 						;; size=12 bbWeight=1.00 PerfScore 3.24
 G_M54328_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rcx rbx]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        jmp      SHORT G_M54328_IG09
-						;; size=17 bbWeight=0.50 PerfScore 1.62
+						;; size=12 bbWeight=0.50 PerfScore 1.62
 G_M54328_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
-						;; size=15 bbWeight=0.50 PerfScore 0.62
+						;; size=10 bbWeight=0.50 PerfScore 0.62
 G_M54328_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        nop      
-						;; size=16 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 1.50
 G_M54328_IG10:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
        ret      
 						;; size=7 bbWeight=1 PerfScore 2.25
-G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[rbx rsi]
-       mov      rcx, 0xD1FFAB1E
+       mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
        ; gcr arg pop 0
        mov      rcx, rsi
@@ -101,10 +101,10 @@ G_M54328_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
        call     [System.Threading.ThreadPoolBoundHandle:Dispose():this]
        ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
-       jmp      G_M54328_IG05
-						;; size=29 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M54328_IG05
+						;; size=21 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 173, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 173 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
+; Total bytes of code 140, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 140 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 318510.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 509630.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 654
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 654
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
+5 (+16.13%) : 327311.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
 ; optimized using Dynamic PGO
 ; rsp based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 68
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 68
 ; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rcx         this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
 ;  V01 arg1         [V01,T01] (  3,  3   )   ubyte  ->  rdx         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T04] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V05 cse0         [V05,T03] (  3,  3   )     ref  ->  rax         "CSE #01: aggressive"
+;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V04 tmp2         [V04,T02] (  3,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;
 ; Lcl frame size = 0
 
@@ -24,34 +23,41 @@ G_M57887_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rcx+0x18]
        ; gcrRegs +[rax]
-       mov      rcx, rax
-       test     rcx, rcx
-       je       SHORT G_M57887_IG05
-       test     dl, dl
+       test     rax, rax
        je       SHORT G_M57887_IG04
-						;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       ; gcrRegs -[rcx]
-       ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx]
-       mov      ecx, dword ptr [rcx+0x5C]
-       ; gcrRegs -[rcx]
-       and      ecx, 7
-       cmp      ecx, 6
-       je       SHORT G_M57887_IG03
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       test     dl, dl
+       je       SHORT G_M57887_IG08
+						;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
+       jmp      SHORT G_M57887_IG06
+						;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rcx]
+       mov      rax, gword ptr [rcx+0x18]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
+       ret      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      eax, dword ptr [rax+0x5C]
+       ; gcrRegs -[rax]
+       and      eax, 7
+       cmp      eax, 6
+       jne      SHORT G_M57887_IG04
+       jmp      SHORT G_M57887_IG06
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-14 (-11.02%) : 23742.dasm - Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
@@ -25,13 +25,13 @@ G_M51452_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M51452_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        movzx    rcx, cx
        cmp      ecx, 97
-       jge      SHORT G_M51452_IG08
+       jge      SHORT G_M51452_IG07
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M51452_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      ecx, 65
        jge      SHORT G_M51452_IG04
        cmp      ecx, 48
-       jl       SHORT G_M51452_IG11
+       jl       SHORT G_M51452_IG10
        xor      ebx, ebx
        cmp      ecx, 57
        setle    bl
@@ -39,54 +39,51 @@ G_M51452_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=20 bbWeight=0.50 PerfScore 3.00
 G_M51452_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      ecx, 90
-       jle      SHORT G_M51452_IG05
+       jle      SHORT G_M51452_IG13
        cmp      ecx, 95
-       jne      SHORT G_M51452_IG06
+       je       SHORT G_M51452_IG13
 						;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M51452_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      ebx, 1
-       jmp      SHORT G_M51452_IG07
-						;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M51452_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51452_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      ebx, ebx
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51452_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51452_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        jmp      SHORT G_M51452_IG14
 						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51452_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51452_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      ecx, 122
-       jg       SHORT G_M51452_IG10
+       jg       SHORT G_M51452_IG09
        mov      eax, 1
 						;; size=10 bbWeight=0.50 PerfScore 0.75
-G_M51452_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51452_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        ret      
 						;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51452_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51452_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      ecx, 127
-       jg       SHORT G_M51452_IG13
+       jg       SHORT G_M51452_IG12
 						;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M51452_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51452_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51452_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51452_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        ret      
 						;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51452_IG13:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51452_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
        ; gcr arg pop 0
        cmp      eax, 18
-       ja       SHORT G_M51452_IG06
-       mov      eax, eax
-       lea      rcx, [reloc @RWD00]
-       mov      ecx, dword ptr [rcx+4*rax]
-       lea      rdx, G_M51452_IG02
-       add      rcx, rdx
-       jmp      rcx
-						;; size=35 bbWeight=0.50 PerfScore 5.12
+       ja       SHORT G_M51452_IG05
+       mov      ecx, 0xD1FFAB1E
+       bt       ecx, eax
+       jae      SHORT G_M51452_IG05
+						;; size=21 bbWeight=0.50 PerfScore 3.00
+G_M51452_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       mov      ebx, 1
+       jmp      SHORT G_M51452_IG06
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M51452_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        movzx    rax, bl
 						;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -95,28 +92,8 @@ G_M51452_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rbx
        ret      
 						;; size=6 bbWeight=0.50 PerfScore 0.88
-RWD00  	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG06 - G_M51452_IG02
-       	dd	G_M51452_IG05 - G_M51452_IG02
 
-
-; Total bytes of code 127, prolog size 5, PerfScore 18.62, instruction count 46, allocated bytes for code 127 (MethodHash=d5933703) for method Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
+; Total bytes of code 113, prolog size 5, PerfScore 16.50, instruction count 43, allocated bytes for code 113 (MethodHash=d5933703) for method Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
-38 (-10.03%) : 34918.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
@@ -15,7 +15,7 @@
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct (32) zero-ref    "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-;  V07 tmp3         [V07,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V07 tmp3         [V07,T10] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V08 tmp4         [V08,T01] (  6,  5.70)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V09 tmp5         [V09,T04] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V10 tmp6         [V10,T07] (  2,  2   )   byref  ->  rcx         single-def "impAppendStmt"
@@ -24,7 +24,7 @@
 ;* V13 tmp9         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp10        [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp12        [V16,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V16 tmp12        [V16,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V17 tmp13        [V17,T02] (  6,  5.70)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V18 tmp14        [V18,T05] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V19 tmp15        [V19,T08] (  2,  2   )   byref  ->  rcx         single-def "impAppendStmt"
@@ -39,15 +39,15 @@
 ;* V28 tmp24        [V28    ] (  0,  0   )     ref  ->  zero-ref    "field V00._culture (fldOffset=0x8)" P-INDEP
 ;* V29 tmp25        [V29    ] (  0,  0   )     int  ->  zero-ref    "field V00._options (fldOffset=0x10)" P-INDEP
 ;* V30 tmp26        [V30    ] (  0,  0   )    long  ->  zero-ref    "field V00._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V31 tmp27        [V31,T13] (  2,  1   )     ref  ->  rdx         single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
-;  V32 tmp28        [V32,T14] (  2,  1   )     ref  ->  rsi         single-def "field V06._culture (fldOffset=0x8)" P-INDEP
-;  V33 tmp29        [V33,T15] (  2,  1   )     int  ->  rbp         "field V06._options (fldOffset=0x10)" P-INDEP
-;  V34 tmp30        [V34,T16] (  2,  1   )    long  ->  r14         "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V35 tmp31        [V35,T17] (  2,  1   )    long  ->  rcx         "field V25._ticks (fldOffset=0x0)" P-INDEP
+;  V31 tmp27        [V31,T12] (  2,  1   )     ref  ->  rdx         single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
+;  V32 tmp28        [V32,T13] (  2,  1   )     ref  ->  rsi         single-def "field V06._culture (fldOffset=0x8)" P-INDEP
+;  V33 tmp29        [V33,T14] (  2,  1   )     int  ->  rbp         "field V06._options (fldOffset=0x10)" P-INDEP
+;  V34 tmp30        [V34,T15] (  2,  1   )    long  ->  r14         "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
+;  V35 tmp31        [V35,T16] (  2,  1   )    long  ->  rax         "field V25._ticks (fldOffset=0x0)" P-INDEP
 ;* V36 tmp32        [V36    ] (  0,  0   )    long  ->  zero-ref    "field V26._ticks (fldOffset=0x0)" P-INDEP
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct (32) zero-ref    "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
 ;  V38 tmp34        [V38,T09] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;* V39 cse0         [V39,T10] (  0,  0   )    long  ->  zero-ref    multi-def "CSE #04: aggressive"
+;* V39 cse0         [V39,T17] (  0,  0   )    long  ->  zero-ref    "CSE #04: aggressive"
 ;
 ; Lcl frame size = 48
 
@@ -73,7 +73,7 @@ G_M3825_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
        mov      rdi, gword ptr [r8]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M3825_IG13
+       je       G_M3825_IG12
 						;; size=22 bbWeight=1 PerfScore 3.50
 G_M3825_IG04:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
        mov      rdx, gword ptr [rdi+0x18]
@@ -90,10 +90,10 @@ G_M3825_IG04:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}
 						;; size=26 bbWeight=0.50 PerfScore 7.12
 G_M3825_IG05:        ; bbWeight=0.35, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        test     rdx, rdx
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
        mov      ecx, dword ptr [r8+0x08]
        cmp      ecx, dword ptr [rdx+0x08]
-       jne      SHORT G_M3825_IG12
+       jne      SHORT G_M3825_IG11
 						;; size=14 bbWeight=0.35 PerfScore 2.52
 G_M3825_IG06:        ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        lea      rcx, bword ptr [r8+0x0C]
@@ -108,7 +108,7 @@ G_M3825_IG06:        ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
 						;; size=25 bbWeight=0.50 PerfScore 3.62
 G_M3825_IG07:        ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
        mov      r8, gword ptr [rbx+0x08]
@@ -122,10 +122,10 @@ G_M3825_IG07:        ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
 G_M3825_IG08:        ; bbWeight=0.35, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rsi]
        test     rdx, rdx
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
        mov      ecx, dword ptr [r8+0x08]
        cmp      ecx, dword ptr [rdx+0x08]
-       jne      SHORT G_M3825_IG12
+       jne      SHORT G_M3825_IG11
 						;; size=14 bbWeight=0.35 PerfScore 2.52
 G_M3825_IG09:        ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
        lea      rcx, bword ptr [r8+0x0C]
@@ -140,36 +140,20 @@ G_M3825_IG09:        ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=000
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M3825_IG12
+       je       SHORT G_M3825_IG11
 						;; size=25 bbWeight=0.50 PerfScore 3.62
 G_M3825_IG10:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
        cmp      dword ptr [rbx+0x10], ebp
-       jne      SHORT G_M3825_IG12
-       mov      rcx, qword ptr [rbx+0x18]
-       cmp      rcx, r14
-       jne      SHORT G_M3825_IG12
-       mov      rax, gword ptr [rdi+0x08]
-       ; gcrRegs +[rax]
-						;; size=18 bbWeight=0.50 PerfScore 4.62
-G_M3825_IG11:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 48
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M3825_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref
-       ; gcrRegs -[rax]
+       jne      SHORT G_M3825_IG11
+       mov      rax, qword ptr [rbx+0x18]
+       cmp      rax, r14
+       je       SHORT G_M3825_IG14
+						;; size=14 bbWeight=0.50 PerfScore 3.62
+G_M3825_IG11:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
        mov      rsi, qword ptr [rdi+0x10]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M3825_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdi]
-       test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M3825_IG19
-						;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M3825_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
        cmp      dword ptr [(reloc)], 0      ; data for <unknown class>:<unknown field>
        je       SHORT G_M3825_IG16
        mov      rcx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
@@ -199,6 +183,20 @@ G_M3825_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
        ; gcrRegs +[rax]
        mov      rax, gword ptr [rax+0x08]
 						;; size=83 bbWeight=0.50 PerfScore 10.88
+G_M3825_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 48
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M3825_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rdi]
+       mov      rax, gword ptr [rdi+0x08]
+       ; gcrRegs +[rax]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M3825_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 48
        pop      rbx
@@ -209,7 +207,7 @@ G_M3825_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.88
 G_M3825_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax]
+       ; gcrRegs -[rax rdi]
        xor      rax, rax
        ; gcrRegs +[rax]
 						;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -231,15 +229,8 @@ G_M3825_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        ; gcr arg pop 0
        jmp      G_M3825_IG03
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M3825_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
-       mov      rcx, 0xD1FFAB1E
-       mov      edx, 40
-       call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       ; gcr arg pop 0
-       jmp      G_M3825_IG14
-						;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 379, prolog size 17, PerfScore 61.42, instruction count 110, allocated bytes for code 379 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
+; Total bytes of code 341, prolog size 17, PerfScore 59.42, instruction count 104, allocated bytes for code 341 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
 ; ============================================================
 
 Unwind Info:
-42 (-7.81%) : 40049.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
@@ -10,13 +10,13 @@
 ;
 ;  V00 this         [V00,T00] ( 14,  8.50)     ref  ->  rbx         this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
 ;  V01 arg1         [V01,T01] (  5,  4   )     ref  ->  rsi         class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
-;  V02 loc0         [V02,T05] (  6,  3.50)    long  ->  r14         ld-addr-op
+;  V02 loc0         [V02,T07] (  6,  3.50)    long  ->  r14         ld-addr-op
 ;  V03 loc1         [V03,T08] (  5,  3.85)     ref  ->  rdi         class-hnd exact single-def <System.String>
 ;  V04 loc2         [V04,T02] ( 11,  5.85)     ref  ->  rbp         class-hnd exact single-def <System.String>
 ;  V05 loc3         [V05    ] (  4,  2   )   ubyte  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T10] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V08 tmp2         [V08,T07] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.String>
+;  V08 tmp2         [V08,T06] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.String>
 ;  V09 tmp3         [V09,T09] (  4,  3.50)     ref  ->  rdi        
 ;  V10 tmp4         [V10,T22] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V11 tmp5         [V11,T03] (  5,  4.39)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
@@ -36,17 +36,18 @@
 ;* V25 tmp19        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp20        [V26,T24] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V27 tmp21        [V27,T11] (  3,  3   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <<unknown class>>
-;  V28 tmp22        [V28,T16] (  3,  1.50)   byref  ->  rax         single-def "Inline stloc first use temp"
-;  V29 tmp23        [V29,T19] (  3,  1.50)    long  ->  r14         "Inline return value spill temp"
-;  V30 tmp24        [V30,T06] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V31 tmp25        [V31,T20] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
+;  V28 tmp22        [V28,T21] (  3,  1.50)   byref  ->  rax         single-def "Inline stloc first use temp"
+;  V29 tmp23        [V29,T18] (  3,  1.50)    long  ->  r14         "Inline return value spill temp"
+;  V30 tmp24        [V30,T05] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V31 tmp25        [V31,T19] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
 ;  V32 tmp26        [V32,T12] (  3,  3   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V33 tmp27        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp28        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V35 tmp29        [V35,T13] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
-;  V36 cse0         [V36,T21] (  3,  1.50)     int  ->   r8         "CSE #07: moderate"
-;  V37 cse1         [V37,T17] (  3,  1.50)     ref  ->  rcx         "CSE #08: moderate"
-;  V38 cse2         [V38,T18] (  3,  1.50)     ref  ->  rdx         multi-def "CSE #02: moderate"
+;* V36 cse0         [V36,T25] (  0,  0   )    long  ->  zero-ref    "CSE #03: moderate"
+;  V37 cse1         [V37,T20] (  3,  1.50)     int  ->   r8         "CSE #07: moderate"
+;  V38 cse2         [V38,T16] (  3,  1.50)     ref  ->  rcx         "CSE #08: moderate"
+;  V39 cse3         [V39,T17] (  3,  1.50)     ref  ->  rdx         multi-def "CSE #02: moderate"
 ;
 ; Lcl frame size = 48
 
@@ -112,12 +113,12 @@ G_M17396_IG06:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
 G_M17396_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rbp rsi rdi]
        xor      r14d, r14d
-       jmp      G_M17396_IG18
+       jmp      G_M17396_IG20
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M17396_IG08:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rbx rbp rsi rdi]
        test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M17396_IG23
+       je       G_M17396_IG22
 						;; size=13 bbWeight=0.50 PerfScore 2.00
 G_M17396_IG09:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      r8, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
@@ -148,25 +149,21 @@ G_M17396_IG11:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
        test     eax, eax
        jne      SHORT G_M17396_IG07
 						;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG12:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
-       test     byte  ptr [(reloc)], 1      ; global ptr
-       je       G_M17396_IG24
-						;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M17396_IG13:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG12:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      r8, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rdx, gword ptr [r8]
        ; gcrRegs +[rdx]
        cmp      rbp, rdx
        je       SHORT G_M17396_IG07
 						;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M17396_IG14:        ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG13:        ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
-       je       SHORT G_M17396_IG16
+       je       SHORT G_M17396_IG15
        mov      r8d, dword ptr [rbp+0x08]
        cmp      r8d, dword ptr [rdx+0x08]
-       jne      SHORT G_M17396_IG16
+       jne      SHORT G_M17396_IG15
 						;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG14:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rbp+0x0C]
        ; byrRegs +[rcx]
        mov      r8d, dword ptr [rbp+0x08]
@@ -180,7 +177,7 @@ G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
        test     eax, eax
        jne      G_M17396_IG07
 						;; size=29 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG15:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbx+0x68]
        ; gcrRegs +[rcx]
        cmp      byte  ptr [rcx], cl
@@ -191,41 +188,14 @@ G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        ; byrRegs +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       je       SHORT G_M17396_IG20
+       je       SHORT G_M17396_IG16
        mov      r14, qword ptr [rax]
        xor      edx, edx
        mov      dword ptr [rsp+0x28], edx
-						;; size=29 bbWeight=0.50 PerfScore 6.38
-G_M17396_IG17:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+       jmp      G_M17396_IG19
+						;; size=34 bbWeight=0.50 PerfScore 7.38
+G_M17396_IG16:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; byrRegs -[rax]
-       movzx    rcx, byte  ptr [rsp+0x28]
-       mov      dword ptr [rsp+0x20], ecx
-       mov      rcx, gword ptr [rbx+0x20]
-       ; gcrRegs +[rcx]
-       mov      rdx, gword ptr [rsi+0x10]
-       ; gcrRegs +[rdx]
-       mov      r8, rbp
-       ; gcrRegs +[r8]
-       mov      r9d, r14d
-       cmp      dword ptr [rcx], ecx
-       call     [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
-       ; gcrRegs -[rcx rdx rbx rbp rsi r8]
-       ; gcr arg pop 0
-						;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M17396_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rax, r14
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M17396_IG19:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 48
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-						;; size=11 bbWeight=1 PerfScore 3.75
-G_M17396_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rbx rbp rsi]
        mov      rdx, rbp
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E
@@ -236,14 +206,14 @@ G_M17396_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=006
        mov      r14, rax
        ; gcrRegs +[r14]
        cmp      r14, gword ptr [rbx+0x58]
-       jne      SHORT G_M17396_IG21
+       jne      SHORT G_M17396_IG17
        xor      ecx, ecx
        mov      dword ptr [rsp+0x28], ecx
        mov      r14, qword ptr [rbx+0x80]
        ; gcrRegs -[r14]
-       jmp      SHORT G_M17396_IG22
+       jmp      SHORT G_M17396_IG18
 						;; size=43 bbWeight=0.50 PerfScore 6.50
-G_M17396_IG21:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M17396_IG17:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax] +[r14]
        mov      rcx, gword ptr [rbx+0x10]
        ; gcrRegs +[rcx]
@@ -270,7 +240,7 @@ G_M17396_IG21:        ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRe
        mov      qword ptr [rbx+0x80], rdi
        mov      r14, rdi
 						;; size=68 bbWeight=0.50 PerfScore 8.62
-G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG18:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbx+0x68]
        ; gcrRegs +[rcx]
        cmp      byte  ptr [rcx], cl
@@ -282,7 +252,7 @@ G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       jne      G_M17396_IG17
+       jne      SHORT G_M17396_IG19
        mov      rdx, 0xD1FFAB1E
        ; gcrRegs +[rdx]
        mov      rcx, rdx
@@ -290,26 +260,44 @@ G_M17396_IG22:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       jmp      G_M17396_IG17
-						;; size=56 bbWeight=0.50 PerfScore 7.75
-G_M17396_IG23:        ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[rdi]
+						;; size=47 bbWeight=0.50 PerfScore 6.75
+G_M17396_IG19:        ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+       movzx    rcx, byte  ptr [rsp+0x28]
+       mov      dword ptr [rsp+0x20], ecx
+       mov      rcx, gword ptr [rbx+0x20]
+       ; gcrRegs +[rcx]
+       mov      rdx, gword ptr [rsi+0x10]
+       ; gcrRegs +[rdx]
+       mov      r8, rbp
+       ; gcrRegs +[r8]
+       mov      r9d, r14d
+       cmp      dword ptr [rcx], ecx
+       call     [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
+       ; gcrRegs -[rcx rdx rbx rbp rsi r8]
+       ; gcr arg pop 0
+						;; size=31 bbWeight=0.50 PerfScore 6.25
+G_M17396_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       mov      rax, r14
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M17396_IG21:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 48
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+						;; size=11 bbWeight=1 PerfScore 3.75
+G_M17396_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx rbp rsi rdi]
        mov      rcx, 0xD1FFAB1E
        mov      edx, 60
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
        ; gcr arg pop 0
        jmp      G_M17396_IG09
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M17396_IG24:        ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
-       mov      rcx, 0xD1FFAB1E
-       mov      edx, 60
-       call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       ; gcr arg pop 0
-       jmp      G_M17396_IG13
-						;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 538, prolog size 10, PerfScore 83.17, instruction count 137, allocated bytes for code 538 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
+; Total bytes of code 496, prolog size 10, PerfScore 81.17, instruction count 131, allocated bytes for code 496 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+24 (+12.44%) : 281591.dasm - System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  5, 11   )     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.GroupCollection>
-;  V01 arg1         [V01,T04] (  6,  6.03)     ref  ->  rsi         class-hnd single-def <System.Text.RegularExpressions.Group>
+;  V01 arg1         [V01,T04] (  6,  6.00)     ref  ->  rsi         class-hnd single-def <System.Text.RegularExpressions.Group>
 ;  V02 loc0         [V02,T01] (  6, 17.50)     int  ->  rdi        
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T02] (  2, 16   )     ref  ->  rbp         class-hnd exact "impAppendStmt" <<unknown class>>
@@ -18,8 +18,7 @@
 ;  V07 tmp4         [V07,T07] (  3,  3.99)     int  ->  rbp         "guarded devirt return temp"
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-;* V10 cse0         [V10,T08] (  0,  0   )    long  ->  zero-ref    hoist "CSE #01: aggressive"
-;  V11 cse1         [V11,T05] (  3,  5.27)    long  ->   r8         "CSE #02: aggressive"
+;  V10 cse0         [V10,T05] (  3,  5.27)    long  ->   r8         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 40
 
@@ -40,7 +39,7 @@ G_M29311_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0x50]
        cmp      dword ptr [rcx+0x08], 0
-       jle      G_M29311_IG14
+       jle      G_M29311_IG13
 						;; size=20 bbWeight=1 PerfScore 8.25
 G_M29311_IG03:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
@@ -50,6 +49,10 @@ G_M29311_IG03:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
 						;; size=20 bbWeight=0.25 PerfScore 0.38
 G_M29311_IG04:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, 0xD1FFAB1E
+       mov      edx, 299
+       call     CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+       ; gcr arg pop 0
        mov      rcx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rbp, gword ptr [rcx]
        ; gcrRegs +[rbp]
@@ -62,11 +65,11 @@ G_M29311_IG04:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        cmp      byte  ptr [rbp], bpl
        test     rax, rax
        je       SHORT G_M29311_IG10
-						;; size=33 bbWeight=4 PerfScore 40.00
+						;; size=53 bbWeight=4 PerfScore 46.00
 G_M29311_IG05:        ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbp]
        test     rsi, rsi
-       je       SHORT G_M29311_IG13
+       je       SHORT G_M29311_IG12
 						;; size=5 bbWeight=2.00 PerfScore 2.49
 G_M29311_IG06:        ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      r8, qword ptr [rax]
@@ -94,34 +97,30 @@ G_M29311_IG08:        ; bbWeight=1.28, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0
 						;; size=15 bbWeight=1.28 PerfScore 7.34
 G_M29311_IG09:        ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        movzx    rax, bpl
-       jmp      SHORT G_M29311_IG12
+       jmp      SHORT G_M29311_IG11
 						;; size=6 bbWeight=2.00 PerfScore 4.49
-G_M29311_IG10:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M29311_IG10:        ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       jne      SHORT G_M29311_IG13
-						;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M29311_IG11:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx rsi]
-       jmp      SHORT G_M29311_IG16
-						;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M29311_IG12:        ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rbx rsi]
+       jne      SHORT G_M29311_IG12
+       jmp      SHORT G_M29311_IG15
+						;; size=7 bbWeight=0.00 PerfScore 0.02
+G_M29311_IG11:        ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     eax, eax
-       jne      SHORT G_M29311_IG16
+       jne      SHORT G_M29311_IG15
 						;; size=4 bbWeight=2 PerfScore 2.50
-G_M29311_IG13:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M29311_IG12:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      edi
        mov      rax, gword ptr [rbx+0x08]
        ; gcrRegs +[rax]
        mov      rax, gword ptr [rax+0x50]
        cmp      dword ptr [rax+0x08], edi
-       jg       SHORT G_M29311_IG04
-						;; size=15 bbWeight=4 PerfScore 33.00
-G_M29311_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jg       G_M29311_IG04
+						;; size=19 bbWeight=4 PerfScore 33.00
+G_M29311_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rbx rsi]
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29311_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M29311_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -129,10 +128,10 @@ G_M29311_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rdi
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M29311_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29311_IG15:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        mov      eax, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29311_IG17:        ; bbWeight=0.50, epilog, nogc, extend
+G_M29311_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -141,7 +140,7 @@ G_M29311_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 193, prolog size 8, PerfScore 116.25, instruction count 64, allocated bytes for code 193 (MethodHash=9ff88d80) for method System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
+; Total bytes of code 217, prolog size 8, PerfScore 122.21, instruction count 67, allocated bytes for code 217 (MethodHash=9ff88d80) for method System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+12 (+12.90%) : 153026.dasm - System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
@@ -18,18 +18,18 @@
 ;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    "field V01._array (fldOffset=0x0)" P-INDEP
 ;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V01._offset (fldOffset=0x8)" P-INDEP
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V01._count (fldOffset=0xc)" P-INDEP
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  registers   "field V05._object (fldOffset=0x0)" P-INDEP
+;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  [rsp+0x28]  "field V05._object (fldOffset=0x0)" P-INDEP
 ;  V11 tmp9         [V11,T06] (  3,  2   )     int  ->  rsi         "field V05._index (fldOffset=0x8)" P-INDEP
 ;  V12 tmp10        [V12,T07] (  3,  2   )     int  ->  rdi         "field V05._length (fldOffset=0xc)" P-INDEP
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ArraySegment`1[long]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M28568_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
        mov      rbx, rcx
        ; byrRegs +[rbx]
 						;; size=10 bbWeight=1 PerfScore 3.50
@@ -51,25 +51,31 @@ G_M28568_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
        ; gcrRegs +[rdx]
        xor      esi, esi
        xor      edi, edi
+       mov      gword ptr [rsp+0x28], rdx
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M28568_IG05
-						;; size=12 bbWeight=0.50 PerfScore 2.00
+						;; size=17 bbWeight=0.50 PerfScore 2.50
 G_M28568_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
        ; gcrRegs -[rdx] +[rcx]
+       ; GC ptr vars -{V10}
        mov      r8d, eax
        mov      r10d, edx
        add      r8, r10
        mov      r10d, dword ptr [rcx+0x08]
        cmp      r8, r10
        ja       SHORT G_M28568_IG07
+       mov      gword ptr [rsp+0x28], rcx
+       ; GC ptr vars +{V10}
        mov      esi, eax
        mov      edi, edx
-       mov      rdx, rcx
-       ; gcrRegs +[rdx]
-						;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M28568_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+						;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M28568_IG05:        ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
        ; gcrRegs -[rcx]
+       mov      rdx, gword ptr [rsp+0x28]
+       ; gcrRegs +[rdx]
        mov      rcx, rbx
        ; byrRegs +[rcx]
+       ; GC ptr vars -{V10}
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
@@ -77,9 +83,9 @@ G_M28568_IG05:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
        mov      dword ptr [rbx+0x0C], edi
        mov      rax, rbx
        ; byrRegs +[rax]
-						;; size=17 bbWeight=1 PerfScore 3.50
+						;; size=22 bbWeight=1 PerfScore 4.50
 G_M28568_IG06:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
@@ -92,7 +98,7 @@ G_M28568_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 93, prolog size 7, PerfScore 21.38, instruction count 37, allocated bytes for code 93 (MethodHash=69379067) for method System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
+; Total bytes of code 105, prolog size 7, PerfScore 23.25, instruction count 39, allocated bytes for code 105 (MethodHash=69379067) for method System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -105,7 +111,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+24 (+13.11%) : 288290.dasm - System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  5, 11   )     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.CaptureCollection>
-;  V01 arg1         [V01,T04] (  6,  6.03)     ref  ->  rsi         class-hnd single-def <System.Text.RegularExpressions.Capture>
+;  V01 arg1         [V01,T04] (  6,  6.00)     ref  ->  rsi         class-hnd single-def <System.Text.RegularExpressions.Capture>
 ;  V02 loc0         [V02,T01] (  6, 17.50)     int  ->  rdi        
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T02] (  2, 16   )     ref  ->  rbp         class-hnd exact "impAppendStmt" <<unknown class>>
@@ -18,8 +18,7 @@
 ;  V07 tmp4         [V07,T07] (  3,  3.99)     int  ->  rbp         "guarded devirt return temp"
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-;* V10 cse0         [V10,T08] (  0,  0   )    long  ->  zero-ref    hoist "CSE #01: aggressive"
-;  V11 cse1         [V11,T05] (  3,  5.27)    long  ->   r8         "CSE #02: aggressive"
+;  V10 cse0         [V10,T05] (  3,  5.27)    long  ->   r8         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 40
 
@@ -37,7 +36,7 @@ G_M6948_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
 G_M6948_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        xor      edi, edi
        cmp      dword ptr [rbx+0x18], 0
-       jle      G_M6948_IG14
+       jle      G_M6948_IG13
 						;; size=12 bbWeight=1 PerfScore 4.25
 G_M6948_IG03:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E
@@ -46,6 +45,10 @@ G_M6948_IG03:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
        ; gcr arg pop 0
 						;; size=20 bbWeight=0.25 PerfScore 0.38
 G_M6948_IG04:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, 0xD1FFAB1E
+       mov      edx, 856
+       call     CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+       ; gcr arg pop 0
        mov      rcx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rbp, gword ptr [rcx]
        ; gcrRegs +[rbp]
@@ -59,11 +62,11 @@ G_M6948_IG04:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        cmp      byte  ptr [rbp], bpl
        test     rax, rax
        je       SHORT G_M6948_IG10
-						;; size=39 bbWeight=4 PerfScore 41.00
+						;; size=59 bbWeight=4 PerfScore 47.00
 G_M6948_IG05:        ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbp]
        test     rsi, rsi
-       je       SHORT G_M6948_IG13
+       je       SHORT G_M6948_IG12
 						;; size=5 bbWeight=2.00 PerfScore 2.49
 G_M6948_IG06:        ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      r8, qword ptr [rax]
@@ -91,31 +94,27 @@ G_M6948_IG08:        ; bbWeight=1.28, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=00
 						;; size=15 bbWeight=1.28 PerfScore 7.34
 G_M6948_IG09:        ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        movzx    rax, bpl
-       jmp      SHORT G_M6948_IG12
+       jmp      SHORT G_M6948_IG11
 						;; size=6 bbWeight=2.00 PerfScore 4.49
-G_M6948_IG10:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M6948_IG10:        ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rsi, rsi
-       jne      SHORT G_M6948_IG13
-						;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M6948_IG11:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx rsi]
-       jmp      SHORT G_M6948_IG16
-						;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M6948_IG12:        ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rbx rsi]
+       jne      SHORT G_M6948_IG12
+       jmp      SHORT G_M6948_IG15
+						;; size=7 bbWeight=0.00 PerfScore 0.02
+G_M6948_IG11:        ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     eax, eax
-       jne      SHORT G_M6948_IG16
+       jne      SHORT G_M6948_IG15
 						;; size=4 bbWeight=2 PerfScore 2.50
-G_M6948_IG13:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M6948_IG12:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      edi
        cmp      edi, dword ptr [rbx+0x18]
-       jl       SHORT G_M6948_IG04
-						;; size=7 bbWeight=4 PerfScore 17.00
-G_M6948_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       jl       G_M6948_IG04
+						;; size=11 bbWeight=4 PerfScore 17.00
+G_M6948_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx rsi]
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M6948_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M6948_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -123,10 +122,10 @@ G_M6948_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rdi
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M6948_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6948_IG15:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        mov      eax, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6948_IG17:        ; bbWeight=0.50, epilog, nogc, extend
+G_M6948_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -135,7 +134,7 @@ G_M6948_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 183, prolog size 8, PerfScore 97.25, instruction count 61, allocated bytes for code 183 (MethodHash=b502e4db) for method System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
+; Total bytes of code 207, prolog size 8, PerfScore 103.21, instruction count 64, allocated bytes for code 207 (MethodHash=b502e4db) for method System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
realworld.run.windows.x64.checked.mch
-9 (-6.98%) : 16025.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
        xor      r11d, r11d
        xor      ebx, ebx
        test     ecx, ecx
-       jle      SHORT G_M18424_IG12
+       jle      SHORT G_M18424_IG10
 						;; size=28 bbWeight=1 PerfScore 13.75
 G_M18424_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
        cmp      r11d, r8d
-       jae      SHORT G_M18424_IG07
+       jae      SHORT G_M18424_IG09
        lea      esi, [r11+0x01]
        mov      r11d, r11d
        movzx    rdi, byte  ptr [r9+rbx]
        mov      byte  ptr [rax+r11], dil
        inc      ebx
        cmp      ebx, ecx
-       jl       SHORT G_M18424_IG11
+       jl       SHORT G_M18424_IG08
 						;; size=27 bbWeight=4 PerfScore 26.00
 G_M18424_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        ; byrRegs -[r9]
        xor      ecx, ecx
        test     edx, edx
-       jle      SHORT G_M18424_IG10
+       jle      SHORT G_M18424_IG06
 						;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        cmp      esi, r8d
-       jae      SHORT G_M18424_IG09
+       jae      SHORT G_M18424_IG06
        mov      r9d, esi
        lea      esi, [r9+0x01]
        movzx    r11, byte  ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
        cmp      ecx, edx
        jl       SHORT G_M18424_IG05
 						;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rax r10]
-       mov      r11d, esi
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, r11d
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, esi
+						;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
        ; byrRegs +[rax r9-r10]
        mov      r11d, esi
        jmp      SHORT G_M18424_IG03
 						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
-       ; byrRegs -[r9]
+G_M18424_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rax r9-r10]
+       mov      esi, r11d
+       jmp      SHORT G_M18424_IG06
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+       ; byrRegs +[rax r10]
        mov      esi, r11d
        jmp      SHORT G_M18424_IG04
 						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-27 (-6.21%) : 25746.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -144,10 +144,13 @@ G_M64745_IG08:        ; bbWeight=0.50, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
        ; gcrRegs -[r8]
        xor      rax, rax
        ; gcrRegs +[rax]
+       mov      gword ptr [rbp-0x40], rax
+       ; GC ptr vars +{V25}
        jmp      SHORT G_M64745_IG10
-						;; size=4 bbWeight=0.50 PerfScore 1.12
+						;; size=8 bbWeight=0.50 PerfScore 1.62
 G_M64745_IG09:        ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax] +[r8]
+       ; GC ptr vars -{V25}
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, 0xD1FFAB1E      ; <unknown method>
@@ -155,74 +158,60 @@ G_M64745_IG09:        ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r1
        ; gcrRegs -[rcx r8] +[rax]
        mov      gword ptr [rbp-0x40], rax
        ; GC ptr vars +{V25}
-       mov      rax, gword ptr [rbp-0x40]
-						;; size=27 bbWeight=0.50 PerfScore 2.75
-G_M64745_IG10:        ; bbWeight=1, gcrefRegs=F0C9 {rax rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; GC ptr vars -{V25}
+						;; size=23 bbWeight=0.50 PerfScore 2.25
+G_M64745_IG10:        ; bbWeight=1, gcVars=0000000000000200 {V25}, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax]
        mov      r8, gword ptr [rbx+0x58]
        ; gcrRegs +[r8]
        test     r8, r8
        jne      SHORT G_M64745_IG12
 						;; size=9 bbWeight=1 PerfScore 3.25
-G_M64745_IG11:        ; bbWeight=0.50, gcrefRegs=F0C9 {rax rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M64745_IG11:        ; bbWeight=0.50, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r8]
        xor      r10, r10
        ; gcrRegs +[r10]
+       mov      gword ptr [rbp-0x48], r10
+       ; GC ptr vars +{V27}
        jmp      SHORT G_M64745_IG13
-						;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M64745_IG12:        ; bbWeight=0.50, gcrefRegs=F1C9 {rax rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+						;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M64745_IG12:        ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r10] +[r8]
-       mov      gword ptr [rbp-0x40], rax
-       ; GC ptr vars +{V25}
+       ; GC ptr vars -{V27}
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, 0xD1FFAB1E      ; <unknown method>
        call     [Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:DoVisitList[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this]
-       ; gcrRegs -[rcx r8]
+       ; gcrRegs -[rcx r8] +[rax]
        mov      gword ptr [rbp-0x48], rax
        ; GC ptr vars +{V27}
-       mov      rax, gword ptr [rbp-0x40]
-       mov      r10, gword ptr [rbp-0x48]
-       ; gcrRegs +[r10]
-						;; size=35 bbWeight=0.50 PerfScore 3.75
-G_M64745_IG13:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V25 V27}
+						;; size=23 bbWeight=0.50 PerfScore 2.25
+G_M64745_IG13:        ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax]
        mov      rcx, gword ptr [rbx+0x30]
        ; gcrRegs +[rcx]
        test     rcx, rcx
        je       SHORT G_M64745_IG15
 						;; size=9 bbWeight=1 PerfScore 3.25
-G_M64745_IG14:        ; bbWeight=0.50, gcrefRegs=F4CB {rax rcx rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       mov      gword ptr [rbp-0x40], rax
-       ; GC ptr vars +{V25}
-       mov      gword ptr [rbp-0x48], r10
-       ; GC ptr vars +{V27}
+G_M64745_IG14:        ; bbWeight=0.50, gcrefRegs=F0CA {rcx rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rsi
        ; gcrRegs +[rdx]
        mov      r8, qword ptr [rcx]
        mov      r8, qword ptr [r8+0x48]
        call     [r8+0x28]<unknown method>
-       ; gcrRegs -[rcx rdx rsi r10]
-       jmp      SHORT G_M64745_IG16
-						;; size=24 bbWeight=0.50 PerfScore 5.62
-G_M64745_IG15:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=F489 {rax rbx rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs +[r10]
-       ; GC ptr vars -{V25 V27}
-       xor      rdx, rdx
-       ; gcrRegs +[rdx]
-       mov      gword ptr [rbp-0x40], rax
-       ; GC ptr vars +{V25}
-       mov      gword ptr [rbp-0x48], r10
-       ; GC ptr vars +{V27}
-       mov      rax, rdx
-						;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M64745_IG16:        ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs=F089 {rax rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rdx r10]
+       ; gcrRegs -[rcx rdx rsi] +[rax]
        mov      rdx, rax
        ; gcrRegs +[rdx]
+       jmp      SHORT G_M64745_IG16
+						;; size=19 bbWeight=0.50 PerfScore 4.75
+G_M64745_IG15:        ; bbWeight=0.50, gcrefRegs=F088 {rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rdx]
+       xor      rdx, rdx
+       ; gcrRegs +[rdx]
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M64745_IG16:        ; bbWeight=1, gcrefRegs=F08C {rdx rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundExpression
        call     CORINFO_HELP_CHKCASTCLASS
-       ; gcrRegs -[rdx]
+       ; gcrRegs -[rdx] +[rax]
        mov      rsi, gword ptr [rbp-0x48]
        ; gcrRegs +[rsi]
        mov      gword ptr [rsp+0x20], rsi
@@ -244,7 +233,7 @@ G_M64745_IG16:        ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx rbx rsi rdi r8-r9 r12-r15]
        nop      
-						;; size=75 bbWeight=1 PerfScore 15.50
+						;; size=72 bbWeight=1 PerfScore 15.25
 G_M64745_IG17:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 104
        pop      rbx
@@ -265,7 +254,7 @@ G_M64745_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
        int3     
 						;; size=9 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 435, prolog size 24, PerfScore 92.00, instruction count 116, allocated bytes for code 435 (MethodHash=d60b0316) for method Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 408, prolog size 24, PerfScore 88.75, instruction count 109, allocated bytes for code 408 (MethodHash=d60b0316) for method Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-17 (-5.69%) : 20650.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
@@ -90,10 +90,13 @@ G_M39738_IG03:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
        ; byrRegs -[rcx]
        xor      rax, rax
        ; gcrRegs +[rax]
+       mov      gword ptr [rsp+0x28], rax
+       ; GC ptr vars +{V10}
        jmp      SHORT G_M39738_IG05
-						;; size=4 bbWeight=0.50 PerfScore 1.12
+						;; size=9 bbWeight=0.50 PerfScore 1.62
 G_M39738_IG04:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
+       ; GC ptr vars -{V10}
        mov      rcx, r13
        ; gcrRegs +[rcx]
        mov      rdx, r15
@@ -105,25 +108,19 @@ G_M39738_IG04:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
        ; gcr arg pop 0
        mov      gword ptr [rsp+0x28], rax
        ; GC ptr vars +{V10}
-       mov      rax, gword ptr [rsp+0x28]
-						;; size=27 bbWeight=0.50 PerfScore 4.75
-G_M39738_IG05:        ; bbWeight=1, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; GC ptr vars -{V10}
-       cmp      byte  ptr [rsp+0xA8], 0
-       jne      SHORT G_M39738_IG10
-						;; size=10 bbWeight=1 PerfScore 3.00
-G_M39738_IG06:        ; bbWeight=0.50, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       test     rsi, rsi
-       je       SHORT G_M39738_IG09
-       test     byte  ptr [rsi+0x10], 1
-       jne      SHORT G_M39738_IG10
-						;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M39738_IG07:        ; bbWeight=0.25, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
-						;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M39738_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+						;; size=22 bbWeight=0.50 PerfScore 4.25
+G_M39738_IG05:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax]
+       cmp      byte  ptr [rsp+0xA8], 0
+       jne      SHORT G_M39738_IG08
+						;; size=10 bbWeight=1 PerfScore 3.00
+G_M39738_IG06:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+       test     rsi, rsi
+       je       SHORT G_M39738_IG07
+       test     byte  ptr [rsi+0x10], 1
+       jne      SHORT G_M39738_IG08
+						;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M39738_IG07:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdx, r14
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
@@ -131,24 +128,13 @@ G_M39738_IG08:        ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
        mov      dword ptr [rsp+0x34], eax
-       jmp      SHORT G_M39738_IG11
+       jmp      SHORT G_M39738_IG09
 						;; size=25 bbWeight=0.50 PerfScore 3.25
-G_M39738_IG09:        ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rax]
-       ; GC ptr vars -{V10}
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
-       jmp      SHORT G_M39738_IG08
-						;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M39738_IG10:        ; bbWeight=0.50, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
-       ; GC ptr vars -{V10}
+G_M39738_IG08:        ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      r8d, 1
-       mov      gword ptr [rsp+0x28], rax
-       ; GC ptr vars +{V10}
        mov      dword ptr [rsp+0x34], r8d
-						;; size=16 bbWeight=0.50 PerfScore 1.12
-G_M39738_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax]
+						;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M39738_IG09:        ; bbWeight=1, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      byte  ptr [rbx+0x12], 22
        lea      rcx, bword ptr [rbx+0x08]
        ; byrRegs +[rcx]
@@ -158,12 +144,12 @@ G_M39738_IG11:        ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E
        ; gcrRegs -[rdx rdi]
        ; byrRegs -[rcx]
        cmp      byte  ptr [rsp+0x34], 0
-       je       SHORT G_M39738_IG13
+       je       SHORT G_M39738_IG11
 						;; size=23 bbWeight=1 PerfScore 5.75
-G_M39738_IG12:        ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG10:        ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      word  ptr [rbx+0x10], 1
 						;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M39738_IG13:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG11:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rbx+0x18]
        ; byrRegs +[rcx]
        mov      rdx, gword ptr [rsp+0x28]
@@ -209,7 +195,7 @@ G_M39738_IG13:        ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, by
        ; byrRegs -[rcx]
        mov      byte  ptr [rbx+0x48], r12b
 						;; size=78 bbWeight=1 PerfScore 12.25
-G_M39738_IG14:        ; bbWeight=1, epilog, nogc, extend
+G_M39738_IG12:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -222,7 +208,7 @@ G_M39738_IG14:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 299, prolog size 16, PerfScore 62.38, instruction count 84, allocated bytes for code 299 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
+; Total bytes of code 282, prolog size 16, PerfScore 60.88, instruction count 80, allocated bytes for code 282 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+4 (+3.12%) : 7313.dasm - System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
@@ -90,22 +90,23 @@ G_M64142_IG04:        ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx
        ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
        xor      edx, edx
+       mov      rax, rcx
+       ; byrRegs +[rax]
+       mov      ecx, edx
+       ; byrRegs -[rcx]
+       mov      rdx, rax
+       ; byrRegs +[rdx]
        jmp      SHORT G_M64142_IG06
-						;; size=26 bbWeight=0.50 PerfScore 6.88
+						;; size=34 bbWeight=0.50 PerfScore 7.25
 G_M64142_IG05:        ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       ; byrRegs -[rax rdx]
        lea      rdx, bword ptr [rcx+0x10]
        ; byrRegs +[rdx]
        mov      ecx, dword ptr [rcx+0x08]
        ; gcrRegs -[rcx]
-       mov      eax, ecx
-       mov      rcx, rdx
-       ; byrRegs +[rcx]
-       mov      edx, eax
-       ; byrRegs -[rdx]
-						;; size=14 bbWeight=0.50 PerfScore 1.62
-G_M64142_IG06:        ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}, byref, isz
+						;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M64142_IG06:        ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0004 {rdx}, byref, isz
        test     r8, r8
        jne      SHORT G_M64142_IG07
        xor      rax, rax
@@ -113,25 +114,26 @@ G_M64142_IG06:        ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}
        xor      r10d, r10d
        jmp      SHORT G_M64142_IG08
 						;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M64142_IG07:        ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}, byref
+G_M64142_IG07:        ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0004 {rdx}, byref
        ; byrRegs -[rax]
        lea      rax, bword ptr [r8+0x10]
        ; byrRegs +[rax]
        mov      r10d, dword ptr [r8+0x08]
 						;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M64142_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+G_M64142_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
        ; gcrRegs -[r8]
-       cmp      edx, r10d
+       cmp      ecx, r10d
        jne      SHORT G_M64142_IG09
        mov      r8d, r10d
        shl      r8, 2
+       mov      rcx, rdx
+       ; byrRegs +[rcx]
        mov      rdx, rax
-       ; byrRegs +[rdx]
        call     [<unknown method>]
        ; byrRegs -[rax rcx rdx]
        ; gcr arg pop 0
        jmp      SHORT G_M64142_IG10
-						;; size=23 bbWeight=0.50 PerfScore 3.62
+						;; size=26 bbWeight=0.50 PerfScore 3.75
 G_M64142_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -153,7 +155,7 @@ G_M64142_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 
-; Total bytes of code 128, prolog size 4, PerfScore 20.25, instruction count 44, allocated bytes for code 128 (MethodHash=de180571) for method System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 132, prolog size 4, PerfScore 20.38, instruction count 45, allocated bytes for code 132 (MethodHash=de180571) for method System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+24 (+3.14%) : 9398.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (FullOpts)
@@ -8,79 +8,81 @@
 ; 0 inlinees with PGO data; 18 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T11] (  3,  3   )     ref  ->  rsi         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+;  V00 this         [V00,T13] (  3,  3   )     ref  ->  rsi         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
 ;  V01 arg1         [V01,T00] ( 13, 30   )   byref  ->  rbx         ld-addr-op single-def
-;  V02 arg2         [V02,T12] (  5,  3.50)   byref  ->  rdi         single-def
-;  V03 loc0         [V03,T16] (  6,  4   )     ref  ->  rbp         class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-;  V04 loc1         [V04,T15] (  4,  4.50)     ref  ->  r14         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key]>
-;  V05 loc2         [V05,T13] (  3,  5   )     int  ->  r14        
-;  V06 loc3         [V06,T05] ( 11, 25.50)     ref  ->  rbp         class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-;  V07 loc4         [V07,T14] (  3,  5   )     int  ->  r15        
-;  V08 loc5         [V08,T06] (  8, 19.50)     ref  ->  rbp         class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+;  V02 arg2         [V02,T14] (  5,  3.50)   byref  ->  rdi         single-def
+;  V03 loc0         [V03,T18] (  6,  4   )     ref  ->  rbp         class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+;  V04 loc1         [V04,T17] (  4,  4.50)     ref  ->  r14         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key]>
+;  V05 loc2         [V05,T15] (  3,  5   )     int  ->  r14        
+;  V06 loc3         [V06,T01] ( 11, 25.50)     ref  ->  rbp         class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+;  V07 loc4         [V07,T16] (  3,  5   )     int  ->  r15        
+;  V08 loc5         [V08,T02] (  8, 19.50)     ref  ->  rbp         class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;  V13 tmp4         [V13,T21] (  3,  3   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V13 tmp4         [V13,T23] (  3,  3   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V14 tmp5         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-;  V15 tmp6         [V15,T27] (  3,  1.50)     ref  ->  rcx         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;  V15 tmp6         [V15,T29] (  3,  1.50)     ref  ->  rcx         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
 ;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V18 tmp9         [V18,T29] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
+;  V18 tmp9         [V18,T31] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
 ;* V19 tmp10        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp11        [V20    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
 ;* V21 tmp12        [V21    ] (  0,  0   )  struct (32) zero-ref    "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-;* V22 tmp13        [V22,T26] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V22 tmp13        [V22,T28] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V23 tmp14        [V23,T07] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V25 tmp16        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V26 tmp17        [V26,T09] (  2,  8   )   byref  ->  rcx         "impAppendStmt"
+;  V26 tmp17        [V26,T11] (  2,  8   )   byref  ->  rcx         "impAppendStmt"
 ;  V27 tmp18        [V27,T08] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V28 tmp19        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V29 tmp20        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V30 tmp21        [V30,T10] (  2,  8   )   byref  ->  rcx         "impAppendStmt"
+;  V30 tmp21        [V30,T12] (  2,  8   )   byref  ->  rcx         "impAppendStmt"
 ;* V31 tmp22        [V31    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.TimeSpan>
 ;* V32 tmp23        [V32    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.TimeSpan>
-;  V33 tmp24        [V33,T35] (  2,  1   )     int  ->  r15         "Inline return value spill temp"
+;  V33 tmp24        [V33,T37] (  2,  1   )     int  ->  r15         "Inline return value spill temp"
 ;* V34 tmp25        [V34    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
 ;* V35 tmp26        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-;  V38 tmp29        [V38,T28] (  3,  1.50)     ref  ->   r8         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;  V38 tmp29        [V38,T30] (  3,  1.50)     ref  ->   r8         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
 ;* V39 tmp30        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp31        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V41 tmp32        [V41,T30] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
+;  V41 tmp32        [V41,T32] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
 ;* V42 tmp33        [V42    ] (  0,  0   )     ref  ->  zero-ref    "field V01._pattern (fldOffset=0x0)" P-INDEP
 ;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    "field V01._culture (fldOffset=0x8)" P-INDEP
 ;* V44 tmp35        [V44    ] (  0,  0   )     int  ->  zero-ref    "field V01._options (fldOffset=0x10)" P-INDEP
 ;* V45 tmp36        [V45    ] (  0,  0   )    long  ->  zero-ref    "field V01._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V46 tmp37        [V46,T01] (  7, 28   )     ref  ->  r15         "field V20._pattern (fldOffset=0x0)" P-INDEP
-;  V47 tmp38        [V47,T02] (  7, 28   )     ref  ->  r13         "field V20._culture (fldOffset=0x8)" P-INDEP
-;  V48 tmp39        [V48,T17] (  2,  4   )     int  ->  r12         "field V20._options (fldOffset=0x10)" P-INDEP
-;  V49 tmp40        [V49,T18] (  2,  4   )    long  ->  [rsp+0x80]  spill-single-def "field V20._matchTimeout (fldOffset=0x18)" P-INDEP
-;  V50 tmp41        [V50,T03] (  6, 26   )     ref  ->  [rsp+0x28]  spill-single-def "field V21._pattern (fldOffset=0x0)" P-INDEP
-;  V51 tmp42        [V51,T04] (  6, 26   )     ref  ->  [rsp+0x20]  spill-single-def "field V21._culture (fldOffset=0x8)" P-INDEP
-;  V52 tmp43        [V52,T19] (  2,  4   )     int  ->  [rsp+0x7C]  spill-single-def "field V21._options (fldOffset=0x10)" P-INDEP
-;  V53 tmp44        [V53,T20] (  2,  4   )    long  ->  [rsp+0x70]  spill-single-def "field V21._matchTimeout (fldOffset=0x18)" P-INDEP
+;  V46 tmp37        [V46,T05] (  5, 10   )     ref  ->  r15         "field V20._pattern (fldOffset=0x0)" P-INDEP
+;  V47 tmp38        [V47,T06] (  5, 10   )     ref  ->  r13         "field V20._culture (fldOffset=0x8)" P-INDEP
+;  V48 tmp39        [V48,T19] (  2,  4   )     int  ->  r12         "field V20._options (fldOffset=0x10)" P-INDEP
+;  V49 tmp40        [V49,T20] (  2,  4   )    long  ->  [rsp+0x90]  spill-single-def "field V20._matchTimeout (fldOffset=0x18)" P-INDEP
+;  V50 tmp41        [V50,T03] (  6, 12   )     ref  ->  [rsp+0x30]  spill-single-def "field V21._pattern (fldOffset=0x0)" P-INDEP
+;  V51 tmp42        [V51,T04] (  6, 12   )     ref  ->  [rsp+0x28]  spill-single-def "field V21._culture (fldOffset=0x8)" P-INDEP
+;  V52 tmp43        [V52,T21] (  2,  4   )     int  ->  [rsp+0x8C]  spill-single-def "field V21._options (fldOffset=0x10)" P-INDEP
+;  V53 tmp44        [V53,T22] (  2,  4   )    long  ->  [rsp+0x80]  spill-single-def "field V21._matchTimeout (fldOffset=0x18)" P-INDEP
 ;* V54 tmp45        [V54    ] (  0,  0   )    long  ->  zero-ref    "field V31._ticks (fldOffset=0x0)" P-INDEP
 ;* V55 tmp46        [V55    ] (  0,  0   )    long  ->  zero-ref    "field V32._ticks (fldOffset=0x0)" P-INDEP
-;  V56 tmp47        [V56,T33] (  2,  1   )     ref  ->  rdx         single-def "field V34._pattern (fldOffset=0x0)" P-INDEP
-;  V57 tmp48        [V57,T34] (  2,  1   )     ref  ->  rcx         single-def "field V34._culture (fldOffset=0x8)" P-INDEP
-;  V58 tmp49        [V58,T36] (  2,  1   )     int  ->  r11         "field V34._options (fldOffset=0x10)" P-INDEP
-;  V59 tmp50        [V59,T37] (  2,  1   )    long  ->  rax         "field V34._matchTimeout (fldOffset=0x18)" P-INDEP
+;  V56 tmp47        [V56,T35] (  2,  1   )     ref  ->  rdx         single-def "field V34._pattern (fldOffset=0x0)" P-INDEP
+;  V57 tmp48        [V57,T36] (  2,  1   )     ref  ->  rcx         single-def "field V34._culture (fldOffset=0x8)" P-INDEP
+;  V58 tmp49        [V58,T38] (  2,  1   )     int  ->  r11         "field V34._options (fldOffset=0x10)" P-INDEP
+;  V59 tmp50        [V59,T39] (  2,  1   )    long  ->  rax         "field V34._matchTimeout (fldOffset=0x18)" P-INDEP
 ;* V60 tmp51        [V60    ] (  0,  0   )  struct (32) zero-ref    "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
-;  V61 tmp52        [V61    ] (  7, 13   )  struct (32) [rsp+0x50]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
-;  V62 tmp53        [V62    ] (  2,  8   )  struct (32) [rsp+0x30]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
-;  V63 cse0         [V63,T31] (  3,  1.50)     int  ->  rdx         "CSE #01: moderate"
-;  V64 cse1         [V64,T32] (  3,  1.50)     int  ->  rcx         "CSE #09: moderate"
-;* V65 rat0         [V65,T24] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V66 rat1         [V66,T38] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V67 rat2         [V67,T22] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V68 rat3         [V68,T25] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V69 rat4         [V69,T39] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V70 rat5         [V70,T23] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V61 tmp52        [V61    ] (  7, 13   )  struct (32) [rsp+0x60]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+;  V62 tmp53        [V62    ] (  2,  8   )  struct (32) [rsp+0x40]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+;  V63 cse0         [V63,T33] (  3,  1.50)     int  ->  rdx         "CSE #01: moderate"
+;  V64 cse1         [V64,T34] (  3,  1.50)     int  ->  rcx         "CSE #09: moderate"
+;  V65 cse2         [V65,T09] (  4,  8   )     int  ->  [rsp+0x3C]  spill-single-def "CSE #02: aggressive"
+;  V66 cse3         [V66,T10] (  4,  8   )     int  ->  r15         "CSE #04: aggressive"
+;* V67 rat0         [V67,T26] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V68 rat1         [V68,T40] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V69 rat2         [V69,T24] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;* V70 rat3         [V70,T27] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V71 rat4         [V71,T41] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V72 rat5         [V72,T25] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 136
+; Lcl frame size = 152
 
 G_M36212_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -91,10 +93,10 @@ G_M36212_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 136
+       sub      rsp, 152
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [rsp+0x30], ymm4
-       vmovdqu  ymmword ptr [rsp+0x50], ymm4
+       vmovdqu  ymmword ptr [rsp+0x40], ymm4
+       vmovdqu  ymmword ptr [rsp+0x60], ymm4
        mov      rsi, rcx
        ; gcrRegs +[rsi]
        mov      rbx, rdx
@@ -108,7 +110,7 @@ G_M36212_IG02:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
        mov      r14, gword ptr [rbp+0x08]
        ; gcrRegs +[r14]
        test     r14, r14
-       jne      G_M36212_IG16
+       jne      G_M36212_IG12
 						;; size=17 bbWeight=1 PerfScore 5.25
 G_M36212_IG03:        ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref
        ; gcrRegs -[r14]
@@ -137,16 +139,16 @@ G_M36212_IG03:        ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088
        imul     rax, r8
        shr      rax, 32
        cmp      eax, edx
-       jae      G_M36212_IG26
+       jae      G_M36212_IG22
        mov      eax, eax
        mov      rbp, gword ptr [rcx+8*rax+0x10]
        test     rbp, rbp
-       je       G_M36212_IG22
+       je       G_M36212_IG18
 						;; size=94 bbWeight=0.50 PerfScore 14.38
 G_M36212_IG04:        ; bbWeight=4, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref
        ; gcrRegs -[rcx]
        cmp      r14d, dword ptr [rbp+0x18]
-       jne      G_M36212_IG12
+       jne      G_M36212_IG08
 						;; size=10 bbWeight=4 PerfScore 16.00
 G_M36212_IG05:        ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
        mov      r15, gword ptr [rbp+0x20]
@@ -155,127 +157,119 @@ G_M36212_IG05:        ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rb
        ; gcrRegs +[r13]
        mov      r12d, dword ptr [rbp+0x30]
        mov      rax, qword ptr [rbp+0x38]
-       mov      qword ptr [rsp+0x80], rax
+       mov      qword ptr [rsp+0x90], rax
        mov      rdx, gword ptr [rbx]
        ; gcrRegs +[rdx]
-       mov      gword ptr [rsp+0x28], rdx
+       mov      gword ptr [rsp+0x30], rdx
        ; GC ptr vars +{V50}
        mov      r8, gword ptr [rbx+0x08]
        ; gcrRegs +[r8]
-       mov      gword ptr [rsp+0x20], r8
+       mov      gword ptr [rsp+0x28], r8
        ; GC ptr vars +{V51}
        mov      r10d, dword ptr [rbx+0x10]
-       mov      dword ptr [rsp+0x7C], r10d
+       mov      dword ptr [rsp+0x8C], r10d
        mov      r9, qword ptr [rbx+0x18]
-       mov      qword ptr [rsp+0x70], r9
+       mov      qword ptr [rsp+0x80], r9
        cmp      byte  ptr [r15], r15b
        cmp      r15, rdx
-       je       SHORT G_M36212_IG08
+       je       SHORT G_M36212_IG06
        test     rdx, rdx
-       je       G_M36212_IG12
-						;; size=76 bbWeight=2 PerfScore 53.00
-G_M36212_IG06:        ; bbWeight=16, gcVars=0000000000000018 {V50 V51}, gcrefRegs=A064 {rdx rbp rsi r13 r15}, byrefRegs=0088 {rbx rdi}, gcvars, byref
-       ; gcrRegs -[r8]
-       mov      ecx, dword ptr [r15+0x08]
-       cmp      ecx, dword ptr [rdx+0x08]
-       jne      G_M36212_IG12
-						;; size=13 bbWeight=16 PerfScore 96.00
-G_M36212_IG07:        ; bbWeight=2, gcrefRegs=A060 {rbp rsi r13 r15}, byrefRegs=0088 {rbx rdi}, byref, isz
-       ; gcrRegs -[rdx]
+       je       G_M36212_IG08
+       mov      r11d, dword ptr [r15+0x08]
+       mov      dword ptr [rsp+0x3C], r11d
+       cmp      r11d, dword ptr [rdx+0x08]
+       jne      G_M36212_IG08
        mov      ecx, 1
        call     [<unknown method>]
+       ; gcrRegs -[rdx r8]
        ; gcr arg pop 0
        mov      ecx, 1
        call     [<unknown method>]
        ; gcr arg pop 0
-       mov      ecx, dword ptr [r15+0x08]
-       mov      rdx, gword ptr [rsp+0x28]
+       mov      rdx, gword ptr [rsp+0x30]
        ; gcrRegs +[rdx]
-       cmp      ecx, dword ptr [rdx+0x08]
+       mov      eax, dword ptr [rsp+0x3C]
+       xor      ecx, ecx
+       cmp      dword ptr [rdx+0x08], eax
        sete     cl
-       movzx    rcx, cl
        call     [<unknown method>]
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
        lea      rcx, bword ptr [r15+0x0C]
        ; byrRegs +[rcx]
-       mov      rdx, gword ptr [rsp+0x28]
-       ; gcrRegs +[rdx]
-       add      rdx, 12
-       ; gcrRegs -[rdx]
+       mov      r15, gword ptr [rsp+0x30]
+       lea      rdx, bword ptr [r15+0x0C]
        ; byrRegs +[rdx]
-       mov      r8d, dword ptr [r15+0x08]
-       add      r8d, r8d
+       mov      r15d, dword ptr [rsp+0x3C]
+       ; gcrRegs -[r15]
+       add      r15d, r15d
+       mov      r8d, r15d
        ; GC ptr vars -{V50}
        call     [<unknown method>]
-       ; gcrRegs -[r15]
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M36212_IG12
-						;; size=76 bbWeight=2 PerfScore 50.00
...
+23 (+3.20%) : 15001.dasm - Microsoft.ML.Internal.Utilities.ResourceManagerUtils:GetFilePath(Microsoft.ML.Runtime.IChannel,System.String,System.String,byref):System.String (FullOpts)
@@ -13,21 +13,21 @@
 ;  V02 arg2         [V02,T03] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.String>
 ;  V03 arg3         [V03,T01] (  5,  3   )   byref  ->  [rbp+0x28]  EH-live single-def
 ;  V04 loc0         [V04,T04] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def <System.String>
-;  V05 loc1         [V05,T00] (  9,  7   )     ref  ->  [rbp-0x48]  class-hnd exact EH-live spill-single-def <System.String>
+;  V05 loc1         [V05,T00] (  8,  6   )     ref  ->  [rbp-0x50]  class-hnd exact EH-live spill-single-def <System.String>
 ;* V06 loc2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
-;  V07 loc3         [V07,T07] (  5,  3   )     ref  ->  [rbp-0x50]  class-hnd exact EH-live spill-single-def <System.String>
-;  V08 loc4         [V08,T17] (  2,  1   )     ref  ->  [rbp-0x58]  class-hnd exact EH-live spill-single-def <System.String>
+;  V07 loc3         [V07,T07] (  5,  3   )     ref  ->  [rbp-0x58]  class-hnd exact EH-live spill-single-def <System.String>
+;  V08 loc4         [V08,T18] (  2,  1   )     ref  ->  [rbp-0x60]  class-hnd exact EH-live spill-single-def <System.String>
 ;* V09 loc5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <<unknown class>>
 ;* V10 loc6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <<unknown class>>
 ;  V12 OutArgs      [V12    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V13 tmp1         [V13,T08] (  3,  3   )     ref  ->  rcx        
-;  V14 tmp2         [V14,T24] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V15 tmp3         [V15,T22] (  7,  0   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <<unknown class>>
-;  V16 tmp4         [V16,T26] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
-;  V17 tmp5         [V17,T25] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V18 tmp6         [V18,T23] (  7,  0   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <<unknown class>>
-;  V19 tmp7         [V19,T27] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+;  V14 tmp2         [V14,T25] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V15 tmp3         [V15,T23] (  7,  0   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <<unknown class>>
+;  V16 tmp4         [V16,T27] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+;  V17 tmp5         [V17,T26] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V18 tmp6         [V18,T24] (  7,  0   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <<unknown class>>
+;  V19 tmp7         [V19,T28] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
 ;  V20 tmp8         [V20,T09] (  3,  3   )     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.String>
 ;* V21 tmp9         [V21    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp10        [V22    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
@@ -39,59 +39,64 @@
 ;* V28 tmp16        [V28    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V29 tmp17        [V29    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V30 tmp18        [V30    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V31 tmp19        [V31,T06] (  2,  4   )     int  ->  rax         "Inlining Arg"
+;  V31 tmp19        [V31,T06] (  2,  4   )     int  ->  r14         "Inlining Arg"
 ;  V32 tmp20        [V32,T05] (  2,  4   )   byref  ->  rcx         single-def "Inlining Arg"
 ;* V33 tmp21        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp22        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp23        [V35    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V36 tmp24        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V37 tmp25        [V37    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V38 tmp26        [V38,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V38 tmp26        [V38,T19] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V39 tmp27        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.OperatingSystem>
 ;* V40 tmp28        [V40    ] (  0,  0   )   byref  ->  zero-ref    "field V21._reference (fldOffset=0x0)" P-INDEP
 ;* V41 tmp29        [V41    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-INDEP
-;  V42 tmp30        [V42,T11] (  2,  2   )   byref  ->  rcx         "field V22._reference (fldOffset=0x0)" P-INDEP
-;  V43 tmp31        [V43,T15] (  2,  2   )     int  ->  rax         "field V22._length (fldOffset=0x8)" P-INDEP
+;  V42 tmp30        [V42,T12] (  2,  2   )   byref  ->  rcx         "field V22._reference (fldOffset=0x0)" P-INDEP
+;  V43 tmp31        [V43,T16] (  2,  2   )     int  ->  r14         "field V22._length (fldOffset=0x8)" P-INDEP
 ;* V44 tmp32        [V44    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp33        [V45    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )   byref  ->  zero-ref    "field V26._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp35        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
-;  V48 tmp36        [V48,T12] (  2,  2   )   byref  ->  rcx         single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V49 tmp37        [V49,T19] (  0,  0   )     int  ->  zero-ref    single-def "field V27._length (fldOffset=0x8)" P-INDEP
-;  V50 tmp38        [V50,T13] (  2,  2   )   byref  ->  rcx         single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-;  V51 tmp39        [V51,T16] (  2,  2   )     int  ->  rax         single-def "field V29._length (fldOffset=0x8)" P-INDEP
+;  V48 tmp36        [V48,T13] (  2,  2   )   byref  ->  rcx         single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp37        [V49,T20] (  0,  0   )     int  ->  zero-ref    single-def "field V27._length (fldOffset=0x8)" P-INDEP
+;  V50 tmp38        [V50,T14] (  2,  2   )   byref  ->  rcx         single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+;  V51 tmp39        [V51,T17] (  2,  2   )     int  ->  r14         single-def "field V29._length (fldOffset=0x8)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V30._reference (fldOffset=0x0)" P-INDEP
 ;* V53 tmp41        [V53    ] (  0,  0   )     int  ->  zero-ref    single-def "field V30._length (fldOffset=0x8)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V55 tmp43        [V55    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x8)" P-INDEP
-;  V56 tmp44        [V56,T14] (  2,  2   )   byref  ->  r14         single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp45        [V57,T20] (  0,  0   )     int  ->  zero-ref    single-def "field V36._length (fldOffset=0x8)" P-INDEP
-;  V58 tmp46        [V58    ] (  6, 12   )  struct (16) [rbp-0x30]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;  V59 tmp47        [V59    ] (  3,  6   )  struct (16) [rbp-0x40]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;  V60 PSPSym       [V60,T21] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;  V61 cse0         [V61,T10] (  3,  3   )   byref  ->  r14         "CSE #04: moderate"
+;  V56 tmp44        [V56,T15] (  2,  2   )   byref  ->  r15         single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp45        [V57,T21] (  0,  0   )     int  ->  zero-ref    single-def "field V36._length (fldOffset=0x8)" P-INDEP
+;  V58 tmp46        [V58    ] (  6, 12   )  struct (16) [rbp-0x38]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+;  V59 tmp47        [V59    ] (  3,  6   )  struct (16) [rbp-0x48]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+;  V60 PSPSym       [V60,T22] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
+;  V61 cse0         [V61,T10] (  3,  3   )   byref  ->  r15         "CSE #04: moderate"
+;  V62 cse1         [V62,T11] (  3,  3   )     int  ->  r14         "CSE #02: moderate"
 ;
-; Lcl frame size = 96
+; Lcl frame size = 104
 
 G_M21577_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
+       push     r15
        push     r14
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 96
+       sub      rsp, 104
        vzeroupper 
-       lea      rbp, [rsp+0x80]
+       lea      rbp, [rsp+0x90]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x48], rax
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [rbp-0x40], ymm4
-       mov      qword ptr [rbp-0x60], rsp
+       vmovdqa  xmmword ptr [rbp-0x40], xmm4
+       mov      qword ptr [rbp-0x30], rax
+       mov      qword ptr [rbp-0x70], rsp
        mov      bword ptr [rbp+0x28], r9
        ; GC ptr vars +{V03}
        mov      rbx, rdx
        ; gcrRegs +[rbx]
        mov      rsi, r8
        ; gcrRegs +[rsi]
-						;; size=44 bbWeight=1 PerfScore 11.58
+						;; size=56 bbWeight=1 PerfScore 14.83
 G_M21577_IG02:        ; bbWeight=1, gcVars=0000000000000002 {V03}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      rcx, 0xD1FFAB1E
        ; gcrRegs +[rcx]
@@ -106,53 +111,55 @@ G_M21577_IG02:        ; bbWeight=1, gcVars=0000000000000002 {V03}, gcrefRegs=004
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       mov      gword ptr [rbp-0x48], rdx
+       mov      gword ptr [rbp-0x50], rdx
        ; GC ptr vars +{V05}
        test     rdx, rdx
        je       G_M21577_IG12
-       cmp      dword ptr [rdx+0x08], 0
-       jne      SHORT G_M21577_IG04
-						;; size=54 bbWeight=1 PerfScore 13.50
-G_M21577_IG03:        ; bbWeight=1, gcVars=0000000000000003 {V03 V05}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+       mov      r14d, dword ptr [rdx+0x08]
+       test     r14d, r14d
+       je       SHORT G_M21577_IG03
+       mov      r15, 0xD1FFAB1E
+       ; byrRegs +[r15]
+       mov      rcx, r15
+       ; byrRegs +[rcx]
+       mov      bword ptr [rbp-0x38], rcx
+       mov      dword ptr [rbp-0x30], 15
+       lea      rcx, [rbp-0x38]
+       ; byrRegs -[rcx]
+       call     [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
        ; gcrRegs -[rax rdx]
+       ; gcr arg pop 0
+       test     eax, eax
+       je       SHORT G_M21577_IG04
+						;; size=95 bbWeight=1 PerfScore 20.00
+G_M21577_IG03:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[r15]
        mov      rcx, 0xD1FFAB1E
        ; gcrRegs +[rcx]
        jmp      SHORT G_M21577_IG05
 						;; size=12 bbWeight=1 PerfScore 2.25
-G_M21577_IG04:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M21577_IG04:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref
        ; gcrRegs -[rcx]
-       mov      r14, 0xD1FFAB1E
-       ; byrRegs +[r14]
-       mov      rcx, r14
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x30], rcx
-       mov      dword ptr [rbp-0x28], 15
-       lea      rcx, [rbp-0x30]
-       ; byrRegs -[rcx]
-       call     [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
-       ; gcr arg pop 0
-       test     eax, eax
-       jne      SHORT G_M21577_IG03
-       mov      rdx, gword ptr [rbp-0x48]
+       ; byrRegs +[r15]
+       mov      rdx, gword ptr [rbp-0x50]
        ; gcrRegs +[rdx]
        lea      rcx, bword ptr [rdx+0x0C]
        ; byrRegs +[rcx]
-       mov      eax, dword ptr [rdx+0x08]
-       mov      bword ptr [rbp-0x30], rcx
-       mov      dword ptr [rbp-0x28], eax
-       mov      bword ptr [rbp-0x40], r14
-       mov      dword ptr [rbp-0x38], 15
-       lea      rcx, [rbp-0x30]
+       mov      bword ptr [rbp-0x38], rcx
+       mov      dword ptr [rbp-0x30], r14d
+       mov      bword ptr [rbp-0x48], r15
+       mov      dword ptr [rbp-0x40], 15
+       lea      rcx, [rbp-0x38]
        ; byrRegs -[rcx]
-       lea      rdx, [rbp-0x40]
+       lea      rdx, [rbp-0x48]
        ; gcrRegs -[rdx]
        call     [<unknown method>]
        ; gcrRegs +[rax]
-       ; byrRegs -[r14]
+       ; byrRegs -[r15]
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
-						;; size=84 bbWeight=1 PerfScore 19.00
+						;; size=44 bbWeight=1 PerfScore 9.75
 G_M21577_IG05:        ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        test     rdi, rdi
@@ -170,7 +177,7 @@ G_M21577_IG06:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       mov      gword ptr [rbp-0x50], rdx
+       mov      gword ptr [rbp-0x58], rdx
        ; GC ptr vars +{V07}
        mov      rcx, rdx
        ; gcrRegs +[rcx]
@@ -178,14 +185,14 @@ G_M21577_IG06:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        call     [System.IO.Path:Combine(System.String,System.String):System.String]
        ; gcrRegs -[rcx rdx rbx]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x58], rax
+       mov      gword ptr [rbp-0x60], rax
        ; GC ptr vars +{V08}
        xor      rcx, rcx
        ; gcrRegs +[rcx]
        mov      rdx, bword ptr [rbp+0x28]
        ; byrRegs +[rdx]
        mov      gword ptr [rdx], rcx
-       mov      rcx, gword ptr [rbp-0x48]
+       mov      rcx, gword ptr [rbp-0x50]
        call     [<unknown method>]
        ; gcrRegs -[rax rcx]
        ; byrRegs -[rdx]
@@ -194,7 +201,7 @@ G_M21577_IG06:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        jne      SHORT G_M21577_IG08
 						;; size=55 bbWeight=1 PerfScore 16.50
 G_M21577_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, gword ptr [rbp-0x48]
+       mov      rcx, gword ptr [rbp-0x50]
        ; gcrRegs +[rcx]
        call     [System.IO.Directory:CreateDirectory(System.String):System.IO.DirectoryInfo]
        ; gcrRegs -[rcx] +[rax]
@@ -203,7 +210,7 @@ G_M21577_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcr arg pop 0
        cmp      dword ptr [rax+0x20], 4
        jne      SHORT G_M21577_IG08
-       mov      rcx, gword ptr [rbp-0x48]
+       mov      rcx, gword ptr [rbp-0x50]
        ; gcrRegs +[rcx]
        mov      edx, 448
        call     <unknown method>
@@ -211,9 +218,9 @@ G_M21577_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcr arg pop 0
        nop      
 						;; size=37 bbWeight=1 PerfScore 13.50
-G_M21577_IG08:        ; bbWeight=1, gcVars=0000000000020082 {V03 V07 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21577_IG08:        ; bbWeight=1, gcVars=0000000000040082 {V03 V07 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...
smoke_tests.nativeaot.windows.x64.checked.mch
-9 (-6.98%) : 25863.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
        xor      r11d, r11d
        xor      ebx, ebx
        test     ecx, ecx
-       jle      SHORT G_M18424_IG12
+       jle      SHORT G_M18424_IG10
 						;; size=28 bbWeight=1 PerfScore 13.75
 G_M18424_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
        cmp      r11d, r8d
-       jae      SHORT G_M18424_IG07
+       jae      SHORT G_M18424_IG09
        lea      esi, [r11+0x01]
        mov      r11d, r11d
        movzx    rdi, byte  ptr [r9+rbx]
        mov      byte  ptr [rax+r11], dil
        inc      ebx
        cmp      ebx, ecx
-       jl       SHORT G_M18424_IG11
+       jl       SHORT G_M18424_IG08
 						;; size=27 bbWeight=4 PerfScore 26.00
 G_M18424_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        ; byrRegs -[r9]
        xor      ecx, ecx
        test     edx, edx
-       jle      SHORT G_M18424_IG10
+       jle      SHORT G_M18424_IG06
 						;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        cmp      esi, r8d
-       jae      SHORT G_M18424_IG09
+       jae      SHORT G_M18424_IG06
        mov      r9d, esi
        lea      esi, [r9+0x01]
        movzx    r11, byte  ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
        cmp      ecx, edx
        jl       SHORT G_M18424_IG05
 						;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rax r10]
-       mov      r11d, esi
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, r11d
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, esi
+						;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
        ; byrRegs +[rax r9-r10]
        mov      r11d, esi
        jmp      SHORT G_M18424_IG03
 						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
-       ; byrRegs -[r9]
+G_M18424_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rax r9-r10]
+       mov      esi, r11d
+       jmp      SHORT G_M18424_IG06
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+       ; byrRegs +[rax r10]
        mov      esi, r11d
        jmp      SHORT G_M18424_IG04
 						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-9 (-6.98%) : 5739.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -54,28 +54,28 @@ G_M18424_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
        xor      r11d, r11d
        xor      ebx, ebx
        test     ecx, ecx
-       jle      SHORT G_M18424_IG12
+       jle      SHORT G_M18424_IG10
 						;; size=28 bbWeight=1 PerfScore 13.75
 G_M18424_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
        cmp      r11d, r8d
-       jae      SHORT G_M18424_IG07
+       jae      SHORT G_M18424_IG09
        lea      esi, [r11+0x01]
        mov      r11d, r11d
        movzx    rdi, byte  ptr [r9+rbx]
        mov      byte  ptr [rax+r11], dil
        inc      ebx
        cmp      ebx, ecx
-       jl       SHORT G_M18424_IG11
+       jl       SHORT G_M18424_IG08
 						;; size=27 bbWeight=4 PerfScore 26.00
 G_M18424_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        ; byrRegs -[r9]
        xor      ecx, ecx
        test     edx, edx
-       jle      SHORT G_M18424_IG10
+       jle      SHORT G_M18424_IG06
 						;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
        cmp      esi, r8d
-       jae      SHORT G_M18424_IG09
+       jae      SHORT G_M18424_IG06
        mov      r9d, esi
        lea      esi, [r9+0x01]
        movzx    r11, byte  ptr [r10+rcx]
@@ -84,40 +84,34 @@ G_M18424_IG05:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
        cmp      ecx, edx
        jl       SHORT G_M18424_IG05
 						;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rax r10]
-       mov      r11d, esi
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, r11d
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, esi
+						;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      r11d, esi
-       jmp      SHORT G_M18424_IG07
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
        ; byrRegs +[rax r9-r10]
        mov      r11d, esi
        jmp      SHORT G_M18424_IG03
 						;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
-       ; byrRegs -[r9]
+G_M18424_IG09:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rax r9-r10]
+       mov      esi, r11d
+       jmp      SHORT G_M18424_IG06
+						;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+       ; byrRegs +[rax r10]
        mov      esi, r11d
        jmp      SHORT G_M18424_IG04
 						;; size=5 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
-24 (-5.15%) : 6743.dasm - System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -72,7 +72,7 @@ G_M5159_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcr arg pop 0
        mov      r14d, eax
        test     r14d, r14d
-       jne      G_M5159_IG20
+       jne      G_M5159_IG17
 						;; size=23 bbWeight=1 PerfScore 3.75
 G_M5159_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, [(reloc)]      ; System.Threading.Tasks.Task+SetOnInvokeMres
@@ -113,7 +113,7 @@ G_M5159_IG07:        ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14},
 						;; size=32 bbWeight=0.50 PerfScore 2.62
 G_M5159_IG08:        ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M5159_IG14
+       je       SHORT G_M5159_IG11
        call     System.Threading.ThreadPool:NotifyThreadBlocked():ubyte
        ; gcr arg pop 0
        mov      dword ptr [rbp-0x2C], eax
@@ -132,56 +132,34 @@ G_M5159_IG09:        ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, b
 						;; size=20 bbWeight=0.50 PerfScore 1.38
 G_M5159_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      dword ptr [rbp-0x2C], 0
-       je       SHORT G_M5159_IG11
+       je       SHORT G_M5159_IG16
        call     System.Threading.ThreadPool:NotifyThreadUnblocked()
        ; gcr arg pop 0
-       mov      r15, gword ptr [rbp-0x40]
-       ; gcrRegs +[r15]
-       jmp      SHORT G_M5159_IG19
-						;; size=17 bbWeight=0.50 PerfScore 3.50
-G_M5159_IG11:        ; bbWeight=0.25, gcVars=0000000000000005 {V00 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[r15]
-       ; GC ptr vars -{V06}
-       mov      r15, gword ptr [rbp-0x40]
-       ; gcrRegs +[r15]
-       jmp      SHORT G_M5159_IG19
-						;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG12:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r15]
-       mov      r15, gword ptr [rbp-0x40]
-       ; gcrRegs +[r15]
-       jmp      SHORT G_M5159_IG19
-						;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG13:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r15]
-       mov      r15, gword ptr [rbp-0x40]
-       ; gcrRegs +[r15]
-       jmp      SHORT G_M5159_IG19
-						;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG14:        ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[r15]
-       ; GC ptr vars +{V06 V14}
+       jmp      SHORT G_M5159_IG16
+						;; size=13 bbWeight=0.50 PerfScore 3.00
+G_M5159_IG11:        ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; GC ptr vars +{V14}
        call     <unknown method>
        ; gcr arg pop 0
        mov      edi, eax
        sub      edi, esi
        cmp      dword ptr [(reloc)], 0
-       je       SHORT G_M5159_IG16
+       je       SHORT G_M5159_IG13
 						;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M5159_IG15:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     CORINFO_HELP_POLL_GC
        ; gcr arg pop 0
 						;; size=5 bbWeight=0 PerfScore 0.00
-G_M5159_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M5159_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, edi
        movsxd   rcx, ebx
        cmp      rax, rcx
-       jge      SHORT G_M5159_IG12
+       jge      SHORT G_M5159_IG16
        call     System.Threading.ThreadPool:NotifyThreadBlocked():ubyte
        ; gcr arg pop 0
        mov      dword ptr [rbp-0x30], eax
 						;; size=18 bbWeight=0.50 PerfScore 1.88
-G_M5159_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      edx, edi
        sub      ebx, edx
        mov      edx, ebx
@@ -195,31 +173,30 @@ G_M5159_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        ; gcr arg pop 0
        mov      r14d, eax
 						;; size=22 bbWeight=0.50 PerfScore 2.00
-G_M5159_IG18:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M5159_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      dword ptr [rbp-0x30], 0
-       je       SHORT G_M5159_IG13
+       je       SHORT G_M5159_IG16
        call     System.Threading.ThreadPool:NotifyThreadUnblocked()
        ; gcr arg pop 0
-       mov      r15, gword ptr [rbp-0x40]
-       ; gcrRegs +[r15]
-						;; size=15 bbWeight=0.50 PerfScore 2.50
-G_M5159_IG19:        ; bbWeight=0.50, gcVars=0000000000000005 {V00 V12}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+       nop      
+						;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M5159_IG16:        ; bbWeight=0.50, gcVars=0000000000000005 {V00 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars -{V06}
        mov      rcx, gword ptr [rbp+0x10]
        ; gcrRegs +[rcx]
        test     dword ptr [rcx+0x34], 0xD1FFAB1E
-       jne      SHORT G_M5159_IG20
-       mov      rdx, r15
+       jne      SHORT G_M5159_IG17
+       mov      rdx, gword ptr [rbp-0x40]
        ; gcrRegs +[rdx]
        ; GC ptr vars -{V00 V12}
        call     <unknown method>
-       ; gcrRegs -[rcx rdx r15]
+       ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-						;; size=21 bbWeight=0.50 PerfScore 3.12
-G_M5159_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+						;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M5159_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, r14d
 						;; size=3 bbWeight=1 PerfScore 0.25
-G_M5159_IG21:        ; bbWeight=1, epilog, nogc, extend
+G_M5159_IG18:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rsi
@@ -229,7 +206,7 @@ G_M5159_IG21:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 4.25
-G_M5159_IG22:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M5159_IG19:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
        ; GC ptr vars +{V00 V06}
        push     rbp
        push     r15
@@ -239,16 +216,16 @@ G_M5159_IG22:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=
        push     rbx
        sub      rsp, 40
 						;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG23:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG20:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      dword ptr [rbp-0x2C], 0
-       je       SHORT G_M5159_IG24
+       je       SHORT G_M5159_IG21
        call     System.Threading.ThreadPool:NotifyThreadUnblocked()
        ; gcr arg pop 0
 						;; size=11 bbWeight=0 PerfScore 0.00
-G_M5159_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG21:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG25:        ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG22:        ; bbWeight=0, funclet epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
@@ -258,7 +235,7 @@ G_M5159_IG25:        ; bbWeight=0, funclet epilog, nogc, extend
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M5159_IG26:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M5159_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
        push     rbp
        push     r15
        push     r14
@@ -267,16 +244,16 @@ G_M5159_IG26:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 40
 						;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG27:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG24:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      dword ptr [rbp-0x30], 0
-       je       SHORT G_M5159_IG28
+       je       SHORT G_M5159_IG25
        call     System.Threading.ThreadPool:NotifyThreadUnblocked()
        ; gcr arg pop 0
 						;; size=11 bbWeight=0 PerfScore 0.00
-G_M5159_IG28:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG25:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG29:        ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG26:        ; bbWeight=0, funclet epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
@@ -286,7 +263,7 @@ G_M5159_IG29:        ; bbWeight=0, funclet epilog, nogc, extend
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M5159_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M5159_IG27:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
        push     rbp
        push     r15
        push     r14
@@ -295,11 +272,11 @@ G_M5159_IG30:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 40
 						;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG31:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG28:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      rcx, gword ptr [rbp+0x10]
        ; gcrRegs +[rcx]
        test     dword ptr [rcx+0x34], 0xD1FFAB1E
-       jne      SHORT G_M5159_IG32
+       jne      SHORT G_M5159_IG29
        mov      rdx, gword ptr [rbp-0x38]
        ; gcrRegs +[rdx]
        ; GC ptr vars -{V00 V06}
@@ -307,10 +284,10 @@ G_M5159_IG31:        ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M5159_IG32:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG29:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG33:        ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG30:        ; bbWeight=0, funclet epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
@@ -321,7 +298,7 @@ G_M5159_IG33:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 466, prolog size 27, PerfScore 50.88, instruction count 165, allocated bytes for code 466 (MethodHash=c531ebd8) for method System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
+; Total bytes of code 442, prolog size 27, PerfScore 48.12, instruction count 158, allocated bytes for code 442 (MethodHash=c531ebd8) for method System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -394,6 +371,6 @@ Unwind Info:
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
 *************** EH table for System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this
 3 EH table entries, 0 duplicate clauses, 0 cloned finallys, 3 total EH entries reported to VM
-EH#0: try [G_M5159_IG09..G_M5159_IG10) handled by [G_M5159_IG22..G_M5159_IG26) (fault)
-EH#1: try [G_M5159_IG17..G_M5159_IG18) handled by [G_M5159_IG26..G_M5159_IG30) (fault)
-EH#2: try [G_M5159_IG07..G_M5159_IG19) handled by [G_M5159_IG30..END) (fault)
+EH#0: try [G_M5159_IG09..G_M5159_IG10) handled by [G_M5159_IG19..G_M5159_IG23) (fault)
+EH#1: try [G_M5159_IG14..G_M5159_IG15) handled by [G_M5159_IG23..G_M5159_IG27) (fault)
+EH#2: try [G_M5159_IG07..G_M5159_IG16) handled by [G_M5159_IG27..END) (fault)
+29 (+2.03%) : 496.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
@@ -10,7 +10,7 @@
 ;  V00 this         [V00,T15] (  7,  8   )     ref  ->  rdi         this class-hnd exact single-def <System.Text.UTF32Encoding>
 ;  V01 arg1         [V01,T05] ( 19, 22.50)    long  ->  registers  
 ;  V02 arg2         [V02,T22] (  4,  4   )     int  ->  rbp         single-def
-;  V03 arg3         [V03,T02] ( 20, 76.50)    long  ->  registers  
+;  V03 arg3         [V03,T02] ( 20, 76.50)    long  ->  [rsp+0xB8] 
 ;  V04 arg4         [V04,T33] (  2,  2   )     int  ->  r15         single-def
 ;  V05 arg5         [V05,T29] (  5,  3   )     ref  ->  r14         class-hnd exact single-def <System.Text.DecoderNLS>
 ;  V06 loc0         [V06,T20] ( 10,  6   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
@@ -156,7 +156,7 @@ G_M1603_IG10:        ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
        mov      r13, r14
        ; gcrRegs +[r13]
        test     r13, r13
-       jne      G_M1603_IG56
+       jne      G_M1603_IG57
        mov      r12, rbx
        movsxd   rcx, r15d
        lea      r15, [r12+2*rcx]
@@ -168,7 +168,7 @@ G_M1603_IG10:        ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
        xor      r8d, r8d
        xor      r10d, r10d
        test     r14, r14
-       je       SHORT G_M1603_IG14
+       je       SHORT G_M1603_IG13
 						;; size=52 bbWeight=1 PerfScore 7.00
 G_M1603_IG11:        ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
        mov      r8d, dword ptr [r14+0x34]
@@ -182,14 +182,14 @@ G_M1603_IG11:        ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
        ; gcr arg pop 0
        lea      rcx, [(reloc)]
        cmp      qword ptr [rax], rcx
-       je       G_M1603_IG18
+       je       SHORT G_M1603_IG12
        mov      gword ptr [rsp+0x30], rax
        ; GC ptr vars +{V13}
        mov      ecx, dword ptr [rax+0x2C]
        test     ecx, ecx
-       jl       SHORT G_M1603_IG13
+       jl       G_M1603_IG17
        test     ecx, ecx
-       je       SHORT G_M1603_IG12
+       je       G_M1603_IG17
        lea      rcx, gword ptr [(reloc)]
        ; gcrRegs +[rcx]
        lea      rdx, gword ptr [(reloc)]
@@ -197,32 +197,25 @@ G_M1603_IG11:        ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
        call     <unknown method>
        ; gcrRegs -[rax rcx rdx]
        ; gcr arg pop 0
-       mov      rax, gword ptr [rsp+0x30]
+       jmp      SHORT G_M1603_IG17
+						;; size=83 bbWeight=0.50 PerfScore 10.62
+G_M1603_IG12:        ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=2081 {rax rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[rax]
-       jmp      SHORT G_M1603_IG18
-						;; size=84 bbWeight=0.50 PerfScore 11.12
-G_M1603_IG12:        ; bbWeight=0.25, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      rax, gword ptr [rsp+0x30]
-       ; gcrRegs +[rax]
-       jmp      SHORT G_M1603_IG18
+       ; GC ptr vars -{V13}
+       mov      gword ptr [rsp+0x30], rax
+       ; GC ptr vars +{V13}
+       jmp      SHORT G_M1603_IG17
 						;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M1603_IG13:        ; bbWeight=0.25, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      rax, gword ptr [rsp+0x30]
-       ; gcrRegs +[rax]
-       jmp      SHORT G_M1603_IG18
-						;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M1603_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M1603_IG13:        ; bbWeight=0.50, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        ; GC ptr vars -{V13}
        mov      r14, gword ptr [rdi+0x18]
        ; gcrRegs +[r14]
        lea      rcx, [(reloc)]
        cmp      qword ptr [r14], rcx
-       jne      SHORT G_M1603_IG16
+       jne      SHORT G_M1603_IG15
 						;; size=16 bbWeight=0.50 PerfScore 3.25
-G_M1603_IG15:        ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG14:        ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
        mov      dword ptr [rsp+0x40], r10d
        mov      dword ptr [rsp+0x44], r8d
        lea      rcx, [(reloc)]      ; System.Text.DecoderReplacementFallbackBuffer
@@ -242,9 +235,9 @@ G_M1603_IG15:        ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
        ; byrRegs -[rcx]
        mov      r14, gword ptr [rsp+0x28]
        ; gcrRegs +[r14]
-       jmp      SHORT G_M1603_IG17
+       jmp      SHORT G_M1603_IG16
 						;; size=61 bbWeight=0.25 PerfScore 3.25
-G_M1603_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
+G_M1603_IG15:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[r14]
        ; GC ptr vars -{V53}
        mov      dword ptr [rsp+0x40], r10d
@@ -256,37 +249,38 @@ G_M1603_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080
        mov      r14, rax
        ; gcrRegs +[r14]
 						;; size=25 bbWeight=0.50 PerfScore 1.88
-G_M1603_IG17:        ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref
+G_M1603_IG16:        ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       mov      rax, r14
-       ; gcrRegs +[rax]
-						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M1603_IG18:        ; bbWeight=1, gcrefRegs=2081 {rax rdi r13}, byrefRegs=0000 {}, byref
+       mov      gword ptr [rsp+0x30], r14
+       ; GC ptr vars +{V13}
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M1603_IG17:        ; bbWeight=1, gcVars=0000000000004000 {V13}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[r14]
+       mov      rax, gword ptr [rsp+0x30]
+       ; gcrRegs +[rax]
        mov      r8, qword ptr [rsp+0x48]
        mov      qword ptr [rax+0x18], r8
        mov      gword ptr [rsp+0x30], rax
-       ; GC ptr vars +{V13}
        mov      qword ptr [rax+0x20], r15
        cmp      r8, rbp
-       jae      G_M1603_IG40
-						;; size=27 bbWeight=1 PerfScore 5.25
-G_M1603_IG19:        ; bbWeight=4, gcVars=0000000000004000 {V13}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
+       jae      G_M1603_IG41
+						;; size=32 bbWeight=1 PerfScore 6.25
+G_M1603_IG18:        ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        movzx    rcx, byte  ptr [rdi+0x27]
        test     ecx, ecx
-       je       SHORT G_M1603_IG21
+       je       SHORT G_M1603_IG20
 						;; size=8 bbWeight=4 PerfScore 13.00
-G_M1603_IG20:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG19:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        mov      r14d, dword ptr [rsp+0x40]
        shl      r14d, 8
        lea      rdx, [rsi+0x01]
        mov      r15, rdx
        movzx    rdx, byte  ptr [rsi]
        add      r14d, edx
-       jmp      SHORT G_M1603_IG22
+       jmp      SHORT G_M1603_IG21
 						;; size=24 bbWeight=2 PerfScore 13.00
-G_M1603_IG21:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG20:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
        mov      r14d, dword ptr [rsp+0x40]
        shr      r14d, 8
        mov      rdx, rsi
@@ -296,24 +290,24 @@ G_M1603_IG21:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
        add      r14d, edx
        mov      r15, rsi
 						;; size=28 bbWeight=2 PerfScore 10.50
-G_M1603_IG22:        ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG21:        ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
        mov      esi, dword ptr [rsp+0x44]
        inc      esi
        cmp      esi, 4
-       jl       G_M1603_IG32
+       jl       G_M1603_IG31
 						;; size=15 bbWeight=4 PerfScore 10.00
-G_M1603_IG23:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG22:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        xor      esi, esi
        cmp      r14d, 0xD1FFAB1E
-       ja       SHORT G_M1603_IG24
+       ja       SHORT G_M1603_IG23
        cmp      r14d, 0xD800
-       jb       G_M1603_IG28
+       jb       G_M1603_IG27
        cmp      r14d, 0xDFFF
-       ja       G_M1603_IG28
+       ja       G_M1603_IG27
 						;; size=37 bbWeight=2 PerfScore 8.00
-G_M1603_IG24:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG23:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        test     ecx, ecx
-       je       SHORT G_M1603_IG25
+       je       SHORT G_M1603_IG24
        lea      rcx, [(reloc)]      ; <unknown class>
        mov      edx, 4
        call     CORINFO_HELP_NEWARR_1_VC
@@ -331,9 +325,9 @@ G_M1603_IG24:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
        shr      ecx, 8
        mov      byte  ptr [rdx+0x12], cl
        mov      byte  ptr [rdx+0x13], r14b
-       jmp      SHORT G_M1603_IG26
+       jmp      SHORT G_M1603_IG25
 						;; size=57 bbWeight=2 PerfScore 23.00
-G_M1603_IG25:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG24:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rdx]
        lea      rcx, [(reloc)]      ; <unknown class>
        mov      edx, 4
@@ -353,7 +347,7 @@ G_M1603_IG25:        ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
        shr      r9d, 24
        mov      byte  ptr [rdx+0x13], r9b
 						;; size=57 bbWeight=2 PerfScore 16.50
-G_M1603_IG26:        ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG25:        ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      qword ptr [rsp+0x38], rbx
        lea      r9, [rsp+0x38]
@@ -365,21 +359,21 @@ G_M1603_IG26:        ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000
        ; gcr arg pop 0
        mov      rbx, qword ptr [rsp+0x38]
        test     eax, eax
-       je       G_M1603_IG34
+       je       G_M1603_IG33
 						;; size=36 bbWeight=2 PerfScore 12.00
-G_M1603_IG27:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG26:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        xor      r14d, r14d
-       jmp      SHORT G_M1603_IG32
+       jmp      SHORT G_M1603_IG31
 						;; size=5 bbWeight=8 PerfScore 18.00
-G_M1603_IG28:        ; bbWeight=16, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG27:        ; bbWeight=16, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        cmp      r14d, 0x10000
-       jb       SHORT G_M1603_IG30
+       jb       SHORT G_M1603_IG29
 						;; size=9 bbWeight=16 PerfScore 20.00
-G_M1603_IG29:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG28:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
        mov      rcx, qword ptr [rsp+0x50]
        lea      rdx, [rcx-0x02]
        cmp      rbx, rdx
-       jae      G_M1603_IG37
+       jae      G_M1603_IG36
        lea      rdx, [rbx+0x02]
        lea      r10d, [r14-0x00010000]
        mov      r9d, r10d
@@ -389,41 +383,41 @@ G_M1603_IG29:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
        and      r10d, 0x3FF
        add      r10d, 0xDC00
        movzx    r14, r10w
-       jmp      SHORT G_M1603_IG31
+       jmp      SHORT G_M1603_IG30
 						;; size=67 bbWeight=8 PerfScore 68.00
-G_M1603_IG30:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG29:        ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
        mov      rcx, qword ptr [rsp+0x50]
        cmp      rbx, rcx
        mov      rdx, rbx
-       jae      G_M1603_IG39
+       jae      G_M1603_IG40
 						;; size=17 bbWeight=8 PerfScore 20.00
...
+25 (+7.08%) : 5357.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
@@ -50,7 +50,7 @@ G_M8664_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=29 bbWeight=1 PerfScore 10.00
 G_M8664_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        test     rsi, rsi
-       je       G_M8664_IG17
+       je       G_M8664_IG20
        mov      edi, dword ptr [rsi+0x08]
        mov      edx, edi
        lea      rcx, [(reloc)]      ; System.Reflection.MethodBase[]
@@ -77,17 +77,18 @@ G_M8664_IG03:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        cmp      dword ptr [rsp+0x30], 0
        je       G_M8664_IG08
 						;; size=34 bbWeight=4 PerfScore 50.00
-G_M8664_IG04:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M8664_IG04:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        xor      r13d, r13d
        xor      r12d, r12d
        mov      edx, dword ptr [rbx+0x08]
        mov      dword ptr [rsp+0x24], edx
        test     edx, edx
-       jle      SHORT G_M8664_IG07
-						;; size=17 bbWeight=2 PerfScore 9.50
+       mov      ecx, r13d
+       jle      G_M8664_IG14
+						;; size=24 bbWeight=2 PerfScore 10.00
 G_M8664_IG05:        ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        cmp      r12d, dword ptr [rsp+0x30]
-       jae      G_M8664_IG16
+       jae      G_M8664_IG19
        mov      rcx, bword ptr [rsp+0x28]
        ; byrRegs +[rcx]
        mov      rcx, gword ptr [rcx+8*r12]
@@ -109,23 +110,22 @@ G_M8664_IG05:        ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M8664_IG06
+       je       SHORT G_M8664_IG13
        inc      r12d
        mov      r13d, dword ptr [rsp+0x24]
        cmp      r13d, r12d
-       jg       SHORT G_M8664_IG05
+       jg       SHORT G_M8664_IG12
 						;; size=74 bbWeight=16 PerfScore 416.00
 G_M8664_IG06:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        mov      ecx, r12d
-       mov      r13d, ecx
-						;; size=6 bbWeight=2 PerfScore 1.00
+						;; size=3 bbWeight=2 PerfScore 0.50
 G_M8664_IG07:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       cmp      dword ptr [rsp+0x24], r13d
+       cmp      r13d, ecx
        jg       SHORT G_M8664_IG08
        mov      rdx, gword ptr [rsi+8*r15+0x10]
        ; gcrRegs +[rdx]
        cmp      r14d, dword ptr [rbp+0x08]
-       jae      SHORT G_M8664_IG16
+       jae      G_M8664_IG19
        mov      ecx, r14d
        lea      rcx, bword ptr [rbp+8*rcx+0x10]
        ; byrRegs +[rcx]
@@ -133,7 +133,7 @@ G_M8664_IG07:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
        inc      r14d
-						;; size=34 bbWeight=2 PerfScore 25.00
+						;; size=36 bbWeight=2 PerfScore 21.50
 G_M8664_IG08:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        inc      r15d
        cmp      edi, r15d
@@ -142,7 +142,7 @@ G_M8664_IG08:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
 G_M8664_IG09:        ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
        test     r14d, r14d
-       jne      SHORT G_M8664_IG12
+       jne      SHORT G_M8664_IG15
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M8664_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
@@ -161,16 +161,28 @@ G_M8664_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax] +[rbp]
+G_M8664_IG12:        ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rbx rbp rsi]
+       jmp      G_M8664_IG05
+						;; size=5 bbWeight=8 PerfScore 16.00
+G_M8664_IG13:        ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       mov      r13d, dword ptr [rsp+0x24]
+       jmp      SHORT G_M8664_IG06
+						;; size=7 bbWeight=8 PerfScore 24.00
+G_M8664_IG14:        ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       mov      r13d, dword ptr [rsp+0x24]
+       jmp      SHORT G_M8664_IG07
+						;; size=7 bbWeight=1 PerfScore 3.00
+G_M8664_IG15:        ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx rsi]
        cmp      r14d, 1
-       jne      SHORT G_M8664_IG14
+       jne      SHORT G_M8664_IG17
        cmp      dword ptr [rbp+0x08], 0
-       jbe      SHORT G_M8664_IG16
+       jbe      SHORT G_M8664_IG19
        mov      rax, gword ptr [rbp+0x10]
        ; gcrRegs +[rax]
 						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M8664_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -182,7 +194,7 @@ G_M8664_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG17:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        mov      rcx, rbp
        ; gcrRegs +[rcx]
@@ -192,7 +204,7 @@ G_M8664_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020
        ; gcr arg pop 0
        nop      
 						;; size=12 bbWeight=0.50 PerfScore 0.88
-G_M8664_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG18:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -204,12 +216,12 @@ G_M8664_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG16:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG19:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        call     CORINFO_HELP_RNGCHKFAIL
        ; gcr arg pop 0
 						;; size=5 bbWeight=0 PerfScore 0.00
-G_M8664_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, gword ptr [(reloc)]
        ; gcrRegs +[rcx]
        call     System.ArgumentNullException:Throw(System.String)
@@ -218,7 +230,7 @@ G_M8664_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 353, prolog size 23, PerfScore 538.25, instruction count 115, allocated bytes for code 353 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
+; Total bytes of code 378, prolog size 23, PerfScore 577.75, instruction count 120, allocated bytes for code 378 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
 ; ============================================================
 
 Unwind Info:
+25 (+7.62%) : 10120.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
@@ -48,7 +48,7 @@ G_M8664_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=29 bbWeight=1 PerfScore 10.00
 G_M8664_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        test     rsi, rsi
-       je       G_M8664_IG17
+       je       G_M8664_IG20
        mov      edi, dword ptr [rsi+0x08]
        mov      edx, edi
        lea      rcx, [(reloc)]      ; System.Reflection.MethodBase[]
@@ -74,17 +74,18 @@ G_M8664_IG03:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        cmp      dword ptr [rsp+0x30], 0
        je       SHORT G_M8664_IG08
 						;; size=23 bbWeight=4 PerfScore 42.00
-G_M8664_IG04:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M8664_IG04:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        xor      r13d, r13d
        xor      r12d, r12d
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rsp+0x24], eax
        test     eax, eax
-       jle      SHORT G_M8664_IG07
-						;; size=17 bbWeight=2 PerfScore 9.50
+       mov      ecx, r13d
+       jle      G_M8664_IG14
+						;; size=24 bbWeight=2 PerfScore 10.00
 G_M8664_IG05:        ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        cmp      r12d, dword ptr [rsp+0x30]
-       jae      G_M8664_IG16
+       jae      G_M8664_IG19
        mov      rcx, bword ptr [rsp+0x28]
        ; byrRegs +[rcx]
        mov      rcx, gword ptr [rcx+8*r12]
@@ -104,23 +105,22 @@ G_M8664_IG05:        ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M8664_IG06
+       je       SHORT G_M8664_IG13
        inc      r12d
        mov      r13d, dword ptr [rsp+0x24]
        cmp      r13d, r12d
-       jg       SHORT G_M8664_IG05
+       jg       SHORT G_M8664_IG12
 						;; size=60 bbWeight=16 PerfScore 352.00
 G_M8664_IG06:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        mov      ecx, r12d
-       mov      r13d, ecx
-						;; size=6 bbWeight=2 PerfScore 1.00
+						;; size=3 bbWeight=2 PerfScore 0.50
 G_M8664_IG07:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       cmp      dword ptr [rsp+0x24], r13d
+       cmp      r13d, ecx
        jg       SHORT G_M8664_IG08
        mov      rdx, gword ptr [rsi+8*r15+0x10]
        ; gcrRegs +[rdx]
        cmp      r14d, dword ptr [rbp+0x08]
-       jae      SHORT G_M8664_IG16
+       jae      G_M8664_IG19
        mov      ecx, r14d
        lea      rcx, bword ptr [rbp+8*rcx+0x10]
        ; byrRegs +[rcx]
@@ -128,7 +128,7 @@ G_M8664_IG07:        ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
        inc      r14d
-						;; size=34 bbWeight=2 PerfScore 25.00
+						;; size=36 bbWeight=2 PerfScore 21.50
 G_M8664_IG08:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
        inc      r15d
        cmp      edi, r15d
@@ -137,7 +137,7 @@ G_M8664_IG08:        ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
 G_M8664_IG09:        ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
        test     r14d, r14d
-       jne      SHORT G_M8664_IG12
+       jne      SHORT G_M8664_IG15
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M8664_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
@@ -156,16 +156,28 @@ G_M8664_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax] +[rbp]
+G_M8664_IG12:        ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rbx rbp rsi]
+       jmp      G_M8664_IG05
+						;; size=5 bbWeight=8 PerfScore 16.00
+G_M8664_IG13:        ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       mov      r13d, dword ptr [rsp+0x24]
+       jmp      SHORT G_M8664_IG06
+						;; size=7 bbWeight=8 PerfScore 24.00
+G_M8664_IG14:        ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+       mov      r13d, dword ptr [rsp+0x24]
+       jmp      SHORT G_M8664_IG07
+						;; size=7 bbWeight=1 PerfScore 3.00
+G_M8664_IG15:        ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx rsi]
        cmp      r14d, 1
-       jne      SHORT G_M8664_IG14
+       jne      SHORT G_M8664_IG17
        cmp      dword ptr [rbp+0x08], 0
-       jbe      SHORT G_M8664_IG16
+       jbe      SHORT G_M8664_IG19
        mov      rax, gword ptr [rbp+0x10]
        ; gcrRegs +[rax]
 						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M8664_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -177,7 +189,7 @@ G_M8664_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG17:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        mov      rcx, rbp
        ; gcrRegs +[rcx]
@@ -187,7 +199,7 @@ G_M8664_IG14:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020
        ; gcr arg pop 0
        nop      
 						;; size=12 bbWeight=0.50 PerfScore 0.88
-G_M8664_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG18:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rbp
@@ -199,12 +211,12 @@ G_M8664_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        ret      
 						;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG16:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG19:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        call     CORINFO_HELP_RNGCHKFAIL
        ; gcr arg pop 0
 						;; size=5 bbWeight=0 PerfScore 0.00
-G_M8664_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, gword ptr [(reloc)]
        ; gcrRegs +[rcx]
        call     System.ArgumentNullException:Throw(System.String)
@@ -213,7 +225,7 @@ G_M8664_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 328, prolog size 23, PerfScore 466.25, instruction count 112, allocated bytes for code 328 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
+; Total bytes of code 353, prolog size 23, PerfScore 505.75, instruction count 117, allocated bytes for code 353 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
 ; ============================================================
 
 Unwind Info:
Details

Size improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 4,157 1,928 1,201 1,028 -51,207 +19,183
benchmarks.run.windows.x64.checked.mch 540 241 142 157 -5,884 +2,108
benchmarks.run_pgo.windows.x64.checked.mch 1,591 674 769 148 -13,672 +7,785
benchmarks.run_tiered.windows.x64.checked.mch 154 70 37 47 -2,295 +368
coreclr_tests.run.windows.x64.checked.mch 1,833 878 543 412 -22,187 +7,835
libraries.crossgen2.windows.x64.checked.mch 1,145 472 274 399 -9,045 +2,915
libraries.pmi.windows.x64.checked.mch 3,288 1,743 742 803 -26,039 +8,373
libraries_tests.run.windows.x64.Release.mch 9,902 4,906 3,411 1,585 -123,876 +63,465
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,492 5,800 1,187 3,505 -45,596 +19,207
realworld.run.windows.x64.checked.mch 947 446 330 171 -11,071 +3,205
smoke_tests.nativeaot.windows.x64.checked.mch 241 110 58 73 -5,106 +622
34,290 17,268 8,694 8,328 -315,978 +135,066

PerfScore improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same PerfScore Improvements (PerfScore) Regressions (PerfScore) PerfScore Overall in FullOpts
aspnet.run.windows.x64.checked.mch 4,157 1,589 991 1,577 -21.12% +3.02% -0.5051%
benchmarks.run.windows.x64.checked.mch 540 209 134 197 -7.31% +0.94% -0.0704%
benchmarks.run_pgo.windows.x64.checked.mch 1,591 696 262 633 -10.23% +2.08% -0.3393%
benchmarks.run_tiered.windows.x64.checked.mch 154 68 31 55 -7.72% +0.95% -0.0480%
coreclr_tests.run.windows.x64.checked.mch 1,833 527 325 981 -8.55% +3.89% -0.0178%
libraries.crossgen2.windows.x64.checked.mch 1,145 405 247 493 -3.12% +3.17% -0.0060%
libraries.pmi.windows.x64.checked.mch 3,288 1,241 705 1,342 -7.78% +0.82% -0.0358%
libraries_tests.run.windows.x64.Release.mch 9,902 3,937 2,651 3,314 -16.23% +2.91% -0.3166%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,492 1,602 910 7,980 -5.36% +0.97% -0.0301%
realworld.run.windows.x64.checked.mch 947 407 296 244 -4.25% +0.53% -0.0605%
smoke_tests.nativeaot.windows.x64.checked.mch 241 93 47 101 -1.45% +0.97% -0.0195%

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 141,784 67,486 74,298 65 (0.05%) 74 (0.05%)
benchmarks.run.windows.x64.checked.mch 28,236 4 28,232 1 (0.00%) 1 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 95,568 48,436 47,132 53 (0.06%) 53 (0.06%)
benchmarks.run_tiered.windows.x64.checked.mch 53,431 37,375 16,056 1 (0.00%) 1 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 584,277 348,136 236,141 33 (0.01%) 38 (0.01%)
libraries.crossgen2.windows.x64.checked.mch 275,812 15 275,797 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 314,370 6 314,364 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x64.Release.mch 683,189 484,056 199,133 292 (0.04%) 296 (0.04%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 320,969 21,946 299,023 1 (0.00%) 1 (0.00%)
realworld.run.windows.x64.checked.mch 34,225 3 34,222 1 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,556 11 32,545 0 (0.00%) 11 (0.03%)
2,564,417 1,007,474 1,556,943 447 (0.02%) 476 (0.02%)

jit-analyze output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment