Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created June 14, 2024 03:29
Show Gist options
  • Save MihuBot/28a71a1017e2288c5ff480705f50282d to your computer and use it in GitHub Desktop.
Save MihuBot/28a71a1017e2288c5ff480705f50282d to your computer and use it in GitHub Desktop.

Top method improvements

-36 (-1.89 % of base) - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <ubyte[]>
 ;  V04 loc2         [V04,T14] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T18] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T30] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T31] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T32] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T33] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T19] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T20] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T21] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T36] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T40] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V25 tmp16        [V25,T22] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T23] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V28 tmp19        [V28,T24] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T25] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T32] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T34] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T33] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <ubyte[]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V48 tmp39        [V48,T26] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T37] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T35] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T38] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T29] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T17] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V40 tmp31        [V40,T37] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T17] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T35] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <ubyte[]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
+;  V51 tmp42        [V51,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T38] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T41] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T39] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T42] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T30] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T31] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M46002_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M46002_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 10
        jle      G_M46002_IG30
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x50]
        test     rax, rax
        je       G_M46002_IG30
-						;; size=87 bbWeight=1 PerfScore 19.50
+						;; size=83 bbWeight=1 PerfScore 18.50
 G_M46002_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M46002_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M46002_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M46002_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M46002_IG26
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M46002_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M46002_IG09
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M46002_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M46002_IG22
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M46002_IG06:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
        je       G_M46002_IG31
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG07:
        mov      rax, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[ubyte]:Value
        mov      rax, gword ptr [rax]
 						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M46002_IG08:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG09:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M46002_IG21
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M46002_IG10
+       sar      ebx, 16
+       jmp      SHORT G_M46002_IG11
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M46002_IG10:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M46002_IG32
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M46002_IG11:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M46002_IG33
+       je       G_M46002_IG32
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG12:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M46002_IG18
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M46002_IG13:
-       cmp      ebx, r14d
-       jae      G_M46002_IG34
+       cmp      ebx, ecx
+       jae      G_M46002_IG33
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M46002_IG15
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M46002_IG14:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M46002_IG15:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M46002_IG19
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M46002_IG17
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M46002_IG16:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M46002_IG17:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M46002_IG13
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M46002_IG18:
        xor      rcx, rcx
        jmp      SHORT G_M46002_IG20
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M46002_IG19:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46002_IG20:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M46002_IG25
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M46002_IG21:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M46002_IG22:
        cmp      ebx, 0x800
        jl       SHORT G_M46002_IG23
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M46002_IG24
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M46002_IG23:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M46002_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M46002_IG27
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M46002_IG27
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M46002_IG25:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M46002_IG27
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M46002_IG27
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M46002_IG26:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M46002_IG29
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M46002_IG27:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46002_IG28:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG29:
        mov      r12, rbx
        jmp      SHORT G_M46002_IG27
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M46002_IG30:
        mov      edi, 10
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M46002_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M46002_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[ubyte]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M46002_IG07
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M46002_IG32:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M46002_IG11
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M46002_IG33:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M46002_IG12
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M46002_IG34:
+G_M46002_IG33:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 973, prolog size 27, PerfScore 231.31, instruction count 249, allocated bytes for code 973 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
+; Total bytes of code 955, prolog size 24, PerfScore 241.81, instruction count 250, allocated bytes for code 955 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
-36 (-5.98 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r13         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T08] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
 ;  V03 arg3         [V03,T01] (  8,  5.50)    long  ->  rbx         single-def
 ;  V04 arg4         [V04,T02] (  8,  5   )    long  ->  r15         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V07 tmp2         [V07,T14] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V07 tmp2         [V07,T18] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V09 tmp4         [V09,T15] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V09 tmp4         [V09,T19] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V10 tmp5         [V10    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V11 tmp6         [V11,T12] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V11 tmp6         [V11,T16] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp7         [V12    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V13 tmp8         [V13,T13] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V13 tmp8         [V13,T17] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp10        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V16 tmp11        [V16,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V17 tmp12        [V17,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V18 tmp13        [V18,T10] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V19 tmp14        [V19,T03] (  4,  8   )    long  ->  rdi         "impAppendStmt"
-;  V20 tmp15        [V20,T09] (  3,  5   )     int  ->  rbx         "Inlining Arg"
+;  V18 tmp13        [V18,T09] (  2,  4   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V19 tmp14        [V19    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V20 tmp15        [V20,T08] (  3,  5   )     int  ->  rbx         "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp17        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V23 tmp18        [V23,T16] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V24 tmp19        [V24,T17] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V25 tmp20        [V25,T18] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V26 tmp21        [V26,T19] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V27 tmp22        [V27,T06] (  3,  6   )    long  ->  rdi         "index expr"
-;  V28 cse0         [V28,T11] (  2,  2   )     ref  ->  r12         "CSE #01: moderate"
+;  V23 tmp18        [V23,T14] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V24 tmp19        [V24,T03] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V25 tmp20        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V26 tmp21        [V26,T20] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V27 tmp22        [V27,T21] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V28 tmp23        [V28,T22] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V29 tmp24        [V29,T23] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V30 tmp25        [V30,T10] (  2,  4   )    long  ->  rdi         "index expr"
+;  V31 cse0         [V31,T13] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V32 cse1         [V32,T15] (  2,  2   )     ref  ->  r12         "CSE #02: moderate"
+;  V33 rat0         [V33,T11] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V34 rat1         [V34,T12] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M46466_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r13, rdi
        mov      r14, rsi
        mov      r12, rdx
        mov      rbx, rcx
        mov      r15, r8
-						;; size=38 bbWeight=1 PerfScore 9.75
+						;; size=31 bbWeight=1 PerfScore 8.75
 G_M46466_IG02:
        cmp      rbx, -1
        jl       G_M46466_IG16
        cmp      r15, -1
        jl       G_M46466_IG15
        mov      edi, 0xD1FFAB1E
        cmp      rbx, rdi
        jl       SHORT G_M46466_IG04
 						;; size=30 bbWeight=1 PerfScore 4.00
 G_M46466_IG03:
        mov      edi, 0xD1FFAB1E
        cmp      rbx, rdi
-       jg       G_M46466_IG12
+       jg       G_M46466_IG13
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M46466_IG04:
        mov      edi, 0xD1FFAB1E
        cmp      r15, rdi
        jl       SHORT G_M46466_IG06
 						;; size=10 bbWeight=1 PerfScore 1.50
 G_M46466_IG05:
        mov      edi, 0xD1FFAB1E
        cmp      r15, rdi
-       jg       G_M46466_IG13
+       jg       G_M46466_IG14
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M46466_IG06:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r14, gword ptr [rbp-0x38]
+       mov      r14, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r14+0x28]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r14+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [r14+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r12, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r12
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r12, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=131 bbWeight=1 PerfScore 20.00
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M46466_IG08
+						;; size=159 bbWeight=1 PerfScore 27.50
 G_M46466_IG07:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M46466_IG17
-       mov      r12, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M46466_IG09
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M46466_IG08:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M46466_IG09:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r12+8*rdi+0x10]
-       mov      r14, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      G_M46466_IG14
-						;; size=76 bbWeight=1 PerfScore 16.00
-G_M46466_IG08:
        cmp      ebx, -1
-       je       SHORT G_M46466_IG10
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M46466_IG09:
+       je       SHORT G_M46466_IG11
+						;; size=25 bbWeight=1 PerfScore 5.25
+G_M46466_IG10:
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M46466_IG10:
+G_M46466_IG11:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r13, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 6.25
-G_M46466_IG11:
-       add      rsp, 24
+						;; size=43 bbWeight=1 PerfScore 5.25
+G_M46466_IG12:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M46466_IG12:
+G_M46466_IG13:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG13:
+G_M46466_IG14:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r15
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG14:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M46466_IG08
-						;; size=10 bbWeight=0 PerfScore 0.00
 G_M46466_IG15:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r15
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
 G_M46466_IG16:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
-G_M46466_IG17:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 602, prolog size 22, PerfScore 66.50, instruction count 138, allocated bytes for code 602 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
+; Total bytes of code 566, prolog size 16, PerfScore 63.00, instruction count 132, allocated bytes for code 566 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
-36 (-4.36 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T08] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
 ;* V03 arg3         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
 ;* V04 arg4         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
-;  V05 loc0         [V05,T05] (  7,  4.50)    long  ->  r13        
-;  V06 loc1         [V06,T06] (  7,  4   )    long  ->  r12        
+;  V05 loc0         [V05,T04] (  7,  4.50)    long  ->  r13        
+;  V06 loc1         [V06,T05] (  7,  4   )    long  ->  r12        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T20] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
-;  V09 tmp2         [V09,T24] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
+;  V08 tmp1         [V08,T24] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
+;  V09 tmp2         [V09,T28] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
 ;* V10 tmp3         [V10    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V11 tmp4         [V11,T16] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V11 tmp4         [V11,T20] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp5         [V12    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V13 tmp6         [V13,T14] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V14 tmp7         [V14,T21] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
-;  V15 tmp8         [V15,T25] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
+;* V13 tmp6         [V13,T18] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;  V14 tmp7         [V14,T25] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
+;  V15 tmp8         [V15,T29] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
 ;* V16 tmp9         [V16    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V17 tmp10        [V17,T17] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V17 tmp10        [V17,T21] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V18 tmp11        [V18    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V19 tmp12        [V19,T15] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V19 tmp12        [V19,T19] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp14        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V22 tmp15        [V22,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V22 tmp15        [V22,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V23 tmp16        [V23,T03] (  3,  6   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V24 tmp17        [V24,T10] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V25 tmp18        [V25,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
-;  V26 tmp19        [V26,T09] (  3,  5   )     int  ->  r13         "Inlining Arg"
+;  V24 tmp17        [V24,T09] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V25 tmp18        [V25    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V26 tmp19        [V26,T08] (  3,  5   )     int  ->  r13         "Inlining Arg"
 ;* V27 tmp20        [V27    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V29 tmp22        [V29,T11] (  2,  2   )    long  ->  rcx         single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
-;  V30 tmp23        [V30,T12] (  2,  2   )    long  ->   r8         single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
-;  V31 tmp24        [V31,T27] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V32 tmp25        [V32,T28] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V33 tmp26        [V33,T29] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V34 tmp27        [V34,T30] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V35 tmp28        [V35,T04] (  3,  6   )    long  ->  rdi         "index expr"
-;  V36 cse0         [V36,T13] (  2,  2   )     ref  ->  r14         "CSE #04: moderate"
-;  V37 cse1         [V37,T22] (  5,  4   )  double  ->  mm2         "CSE #01: aggressive"
-;  V38 cse2         [V38,T23] (  6,  3   )  double  ->  mm3         multi-def "CSE #02: moderate"
-;  V39 cse3         [V39,T26] (  3,  3   )  double  ->  mm1         "CSE #03: moderate"
-;  V40 rat0         [V40,T18] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V41 rat1         [V41,T19] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V29 tmp22        [V29,T16] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V30 tmp23        [V30,T01] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V31 tmp24        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V32 tmp25        [V32,T10] (  2,  2   )    long  ->  rcx         single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
+;  V33 tmp26        [V33,T11] (  2,  2   )    long  ->   r8         single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
+;  V34 tmp27        [V34,T31] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V35 tmp28        [V35,T32] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V36 tmp29        [V36,T33] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V37 tmp30        [V37,T34] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V38 tmp31        [V38,T12] (  2,  4   )    long  ->  rdi         "index expr"
+;  V39 cse0         [V39,T15] (  3,  3   )    long  ->  rax         "CSE #04: moderate"
+;  V40 cse1         [V40,T17] (  2,  2   )     ref  ->  r14         "CSE #05: moderate"
+;  V41 cse2         [V41,T26] (  5,  4   )  double  ->  mm2         "CSE #01: moderate"
+;  V42 cse3         [V42,T27] (  6,  3   )  double  ->  mm3         multi-def "CSE #02: moderate"
+;  V43 cse4         [V43,T30] (  3,  3   )  double  ->  mm1         "CSE #03: moderate"
+;  V44 rat0         [V44,T13] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V45 rat1         [V45,T14] (  2,  4   )    long  ->  rax         "TLS access"
+;  V46 rat2         [V46,T22] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V47 rat3         [V47,T23] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M54850_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r15, rdi
        mov      rbx, rsi
        mov      r14, rdx
-						;; size=32 bbWeight=1 PerfScore 9.25
+						;; size=25 bbWeight=1 PerfScore 8.25
 G_M54850_IG02:
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rcx
        vmovsd   xmm1, qword ptr [reloc @RWD00]
        vdivsd   xmm0, xmm0, xmm1
        vmovsd   xmm2, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm2
        ja       SHORT G_M54850_IG05
 						;; size=35 bbWeight=1 PerfScore 27.33
 G_M54850_IG03:
        vmovsd   xmm3, qword ptr [reloc @RWD16]
        vucomisd xmm3, xmm0
        ja       SHORT G_M54850_IG04
        jmp      SHORT G_M54850_IG06
 						;; size=16 bbWeight=0.50 PerfScore 4.00
 G_M54850_IG04:
        vmovaps  xmm0, xmm3
        jmp      SHORT G_M54850_IG06
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M54850_IG05:
        vmovaps  xmm0, xmm2
 						;; size=4 bbWeight=0.50 PerfScore 0.12
 G_M54850_IG06:
        vmovddup xmm3, xmm0
        vmovddup xmm4, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm3, xmm4, xmm3, 0
        vandpd   xmm0, xmm3, xmm0
        vcmppd   xmm3, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rdi, xmm0
        vmovd    xmm0, rdi
        vpbroadcastq xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm3
        vmovd    r13, xmm0
        cmp      r13, -1
        jl       G_M54850_IG24
        mov      edi, 0xD1FFAB1E
        cmp      r13, rdi
        jl       SHORT G_M54850_IG08
 						;; size=80 bbWeight=1 PerfScore 26.08
 G_M54850_IG07:
        mov      edi, 0xD1FFAB1E
        cmp      r13, rdi
-       jg       G_M54850_IG20
+       jg       G_M54850_IG21
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M54850_IG08:
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, r8
        vdivsd   xmm0, xmm0, xmm1
        vucomisd xmm0, xmm2
        ja       SHORT G_M54850_IG11
 						;; size=19 bbWeight=1 PerfScore 21.33
 G_M54850_IG09:
        vmovsd   xmm3, qword ptr [reloc @RWD16]
        vucomisd xmm3, xmm0
        ja       SHORT G_M54850_IG10
        jmp      SHORT G_M54850_IG12
 						;; size=16 bbWeight=0.50 PerfScore 4.00
 G_M54850_IG10:
        vmovaps  xmm0, xmm3
        jmp      SHORT G_M54850_IG12
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M54850_IG11:
        vmovaps  xmm0, xmm2
 						;; size=4 bbWeight=0.50 PerfScore 0.12
 G_M54850_IG12:
        vmovddup xmm1, xmm0
        vmovddup xmm2, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm1, xmm2, xmm1, 0
        vandpd   xmm0, xmm1, xmm0
        vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rdi, xmm0
        vmovd    xmm0, rdi
        vpbroadcastq xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm1
        vmovd    r12, xmm0
        cmp      r12, -1
        jl       G_M54850_IG23
        mov      edi, 0xD1FFAB1E
        cmp      r12, rdi
        jl       SHORT G_M54850_IG14
 						;; size=80 bbWeight=1 PerfScore 26.08
 G_M54850_IG13:
        mov      edi, 0xD1FFAB1E
        cmp      r12, rdi
-       jg       G_M54850_IG21
+       jg       G_M54850_IG22
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M54850_IG14:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, gword ptr [rbp-0x38]
+       mov      rbx, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [rbx+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r14, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r14
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r14, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=131 bbWeight=1 PerfScore 20.00
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M54850_IG16
+						;; size=159 bbWeight=1 PerfScore 27.50
 G_M54850_IG15:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M54850_IG25
-       mov      r14, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M54850_IG17
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M54850_IG16:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M54850_IG17:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r14+8*rdi+0x10]
-       mov      rbx, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      G_M54850_IG22
-						;; size=76 bbWeight=1 PerfScore 16.00
-G_M54850_IG16:
        cmp      r13d, -1
-       je       SHORT G_M54850_IG18
-						;; size=6 bbWeight=1 PerfScore 1.25
-G_M54850_IG17:
+       je       SHORT G_M54850_IG19
+						;; size=26 bbWeight=1 PerfScore 5.25
+G_M54850_IG18:
        mov      rdi, rbx
        mov      esi, r13d
        mov      edx, r12d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=21 bbWeight=0.50 PerfScore 2.00
-G_M54850_IG18:
+G_M54850_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
        mov      r12, rax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r15, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=48 bbWeight=1 PerfScore 6.25
-G_M54850_IG19:
-       add      rsp, 24
+						;; size=44 bbWeight=1 PerfScore 5.25
+G_M54850_IG20:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M54850_IG20:
+G_M54850_IG21:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r13
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG21:
+G_M54850_IG22:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r12
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG22:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M54850_IG16
-						;; size=10 bbWeight=0 PerfScore 0.00
 G_M54850_IG23:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r12
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
 G_M54850_IG24:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r13
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
-G_M54850_IG25:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 RWD24  	dd	00000000h, 00000000h
 RWD32  	dq	43E0000000000000h, 43E0000000000000h
 RWD48  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
 
 
-; Total bytes of code 825, prolog size 22, PerfScore 171.83, instruction count 184, allocated bytes for code 825 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
+; Total bytes of code 789, prolog size 16, PerfScore 168.33, instruction count 178, allocated bytes for code 789 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
-36 (-13.74 % of base) - System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this
 ; Assembly listing for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  8,  7   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.TimerQueueTimer>
-;  V01 arg1         [V01,T04] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T05] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
-;  V03 arg3         [V03,T03] (  4,  3.50)     int  ->  r15         single-def
-;  V04 arg4         [V04,T07] (  3,  2.50)     int  ->  r12         single-def
-;  V05 arg5         [V05,T06] (  3,  3   )   ubyte  ->  r13         single-def
+;  V00 this         [V00,T00] (  8,  7   )     ref  ->  rbx         this class-hnd single-def <System.Threading.TimerQueueTimer>
+;  V01 arg1         [V01,T03] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.Threading.TimerCallback>
+;  V02 arg2         [V02,T04] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T02] (  4,  3.50)     int  ->  r15         single-def
+;  V04 arg4         [V04,T06] (  3,  2.50)     int  ->  r12         single-def
+;  V05 arg5         [V05,T05] (  3,  3   )   ubyte  ->  r13         single-def
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T08] (  2,  4   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V08 tmp2         [V08,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
+;  V07 tmp1         [V07,T07] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V08 tmp2         [V08    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V09 tmp3         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V10 tmp4         [V10,T02] (  3,  6   )    long  ->  rdi         "index expr"
-;  V11 cse0         [V11,T09] (  2,  2   )     ref  ->  r14         "CSE #01: moderate"
+;  V10 tmp4         [V10,T12] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V11 tmp5         [V11,T01] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V12 tmp6         [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V13 tmp7         [V13,T08] (  2,  4   )    long  ->  rdi         "index expr"
+;  V14 cse0         [V14,T11] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V15 cse1         [V15,T13] (  2,  2   )     ref  ->  r14         "CSE #02: moderate"
+;  V16 rat0         [V16,T09] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V17 rat1         [V17,T10] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M3687_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
+       push     rax
+       lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      r14, rdx
        mov      r15d, ecx
        mov      r12d, r8d
        mov      r13d, r9d
-						;; size=37 bbWeight=1 PerfScore 9.00
+						;; size=31 bbWeight=1 PerfScore 8.75
 G_M3687_IG02:
        lea      rdi, bword ptr [rbx+0x20]
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x48], -1
        test     r13b, r13b
-       je       G_M3687_IG06
-						;; size=38 bbWeight=1 PerfScore 5.50
+       je       SHORT G_M3687_IG04
+						;; size=34 bbWeight=1 PerfScore 5.50
 G_M3687_IG03:
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
-       mov      gword ptr [rbp-0x30], rbx
        lea      rdi, bword ptr [rbx+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-						;; size=28 bbWeight=0.50 PerfScore 3.00
+						;; size=24 bbWeight=0.50 PerfScore 2.50
 G_M3687_IG04:
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r14, gword ptr [rax]
-       mov      gword ptr [rbp-0x38], r14
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r14, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=27 bbWeight=1 PerfScore 3.50
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M3687_IG06
+						;; size=55 bbWeight=1 PerfScore 11.00
 G_M3687_IG05:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      SHORT G_M3687_IG12
-       mov      r14, gword ptr [rbp-0x38]
+       sar      ecx, 16
+       jmp      SHORT G_M3687_IG07
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M3687_IG06:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M3687_IG07:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r14+8*rdi+0x10]
-       mov      rbx, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       je       SHORT G_M3687_IG07
-       jmp      SHORT G_M3687_IG11
-						;; size=70 bbWeight=1 PerfScore 18.00
-G_M3687_IG06:
-       mov      gword ptr [rbp-0x30], rbx
-       jmp      SHORT G_M3687_IG04
-						;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3687_IG07:
        cmp      r15d, -1
        je       SHORT G_M3687_IG09
-						;; size=6 bbWeight=1 PerfScore 1.25
+						;; size=26 bbWeight=1 PerfScore 5.25
 G_M3687_IG08:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r12d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=21 bbWeight=0.50 PerfScore 2.00
 G_M3687_IG09:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
 G_M3687_IG10:
-       add      rsp, 24
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M3687_IG11:
-       call     CORINFO_HELP_POLL_GC
-       jmp      SHORT G_M3687_IG07
-						;; size=7 bbWeight=0 PerfScore 0.00
-G_M3687_IG12:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 262, prolog size 22, PerfScore 48.25, instruction count 73, allocated bytes for code 262 (MethodHash=08a1f198) for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
+; Total bytes of code 226, prolog size 16, PerfScore 42.50, instruction count 64, allocated bytes for code 226 (MethodHash=08a1f198) for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[double]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[double]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M55498_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M55498_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M55498_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M55498_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M55498_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M55498_IG24
+       je       G_M55498_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M55498_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M55498_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M55498_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M55498_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[double]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[double]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M55498_IG06:
        cmp      r14d, -1
-       je       G_M55498_IG12
+       je       G_M55498_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M55498_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M55498_IG25
+       je       G_M55498_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M55498_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M55498_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M55498_IG27
+       je       G_M55498_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M55498_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M55498_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M55498_IG19
+       jmp      G_M55498_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M55498_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M55498_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M55498_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M55498_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M55498_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M55498_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M55498_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M55498_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M55498_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M55498_IG26
+       je       G_M55498_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M55498_IG13:
+G_M55498_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M55498_IG15
+       jne      SHORT G_M55498_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M55498_IG14:
+G_M55498_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M55498_IG27
+       je       G_M55498_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M55498_IG15:
+G_M55498_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M55498_IG17
+       je       SHORT G_M55498_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M55498_IG16:
+G_M55498_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[double]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[double]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M55498_IG17:
+G_M55498_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M55498_IG18:
-       add      rsp, 64
+G_M55498_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M55498_IG19:
+G_M55498_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M55498_IG22
+       jg       SHORT G_M55498_IG23
        test     rdi, rdi
-       jne      SHORT G_M55498_IG20
+       jne      SHORT G_M55498_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M55498_IG22
+       ja       SHORT G_M55498_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M55498_IG20:
+G_M55498_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M55498_IG22
+       jl       SHORT G_M55498_IG23
        cmp      rdi, -1
-       jne      SHORT G_M55498_IG21
+       jne      SHORT G_M55498_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M55498_IG22
+       jb       SHORT G_M55498_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M55498_IG21:
+G_M55498_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M55498_IG23
+       jmp      SHORT G_M55498_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M55498_IG22:
+G_M55498_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG23:
+G_M55498_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M55498_IG12
+       jmp      G_M55498_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M55498_IG24:
+G_M55498_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG25:
+G_M55498_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M55498_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M55498_IG26:
+G_M55498_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M55498_IG13
+       jmp      G_M55498_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M55498_IG27:
+G_M55498_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M55498_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M55498_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M55498_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=a61f2735) for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=a61f2735) for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[int]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[int]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M20556_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M20556_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M20556_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M20556_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M20556_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M20556_IG24
+       je       G_M20556_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M20556_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M20556_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M20556_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M20556_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[int]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[int]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M20556_IG06:
        cmp      r14d, -1
-       je       G_M20556_IG12
+       je       G_M20556_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M20556_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M20556_IG25
+       je       G_M20556_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M20556_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M20556_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M20556_IG27
+       je       G_M20556_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M20556_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M20556_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M20556_IG19
+       jmp      G_M20556_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M20556_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M20556_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M20556_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M20556_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M20556_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M20556_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M20556_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M20556_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M20556_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M20556_IG26
+       je       G_M20556_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M20556_IG13:
+G_M20556_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M20556_IG15
+       jne      SHORT G_M20556_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M20556_IG14:
+G_M20556_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M20556_IG27
+       je       G_M20556_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M20556_IG15:
+G_M20556_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M20556_IG17
+       je       SHORT G_M20556_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M20556_IG16:
+G_M20556_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[int]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[int]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M20556_IG17:
+G_M20556_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M20556_IG18:
-       add      rsp, 64
+G_M20556_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M20556_IG19:
+G_M20556_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M20556_IG22
+       jg       SHORT G_M20556_IG23
        test     rdi, rdi
-       jne      SHORT G_M20556_IG20
+       jne      SHORT G_M20556_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M20556_IG22
+       ja       SHORT G_M20556_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M20556_IG20:
+G_M20556_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M20556_IG22
+       jl       SHORT G_M20556_IG23
        cmp      rdi, -1
-       jne      SHORT G_M20556_IG21
+       jne      SHORT G_M20556_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M20556_IG22
+       jb       SHORT G_M20556_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M20556_IG21:
+G_M20556_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M20556_IG23
+       jmp      SHORT G_M20556_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M20556_IG22:
+G_M20556_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG23:
+G_M20556_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M20556_IG12
+       jmp      G_M20556_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M20556_IG24:
+G_M20556_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG25:
+G_M20556_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M20556_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M20556_IG26:
+G_M20556_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M20556_IG13
+       jmp      G_M20556_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M20556_IG27:
+G_M20556_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M20556_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M20556_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M20556_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=3a45afb3) for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=3a45afb3) for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[long]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[long]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M15829_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M15829_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M15829_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M15829_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M15829_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M15829_IG24
+       je       G_M15829_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M15829_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M15829_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M15829_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M15829_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[long]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[long]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M15829_IG06:
        cmp      r14d, -1
-       je       G_M15829_IG12
+       je       G_M15829_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M15829_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M15829_IG25
+       je       G_M15829_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M15829_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M15829_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M15829_IG27
+       je       G_M15829_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M15829_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M15829_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M15829_IG19
+       jmp      G_M15829_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M15829_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M15829_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M15829_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M15829_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M15829_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M15829_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M15829_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M15829_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M15829_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M15829_IG26
+       je       G_M15829_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M15829_IG13:
+G_M15829_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M15829_IG15
+       jne      SHORT G_M15829_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M15829_IG14:
+G_M15829_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M15829_IG27
+       je       G_M15829_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M15829_IG15:
+G_M15829_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M15829_IG17
+       je       SHORT G_M15829_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M15829_IG16:
+G_M15829_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[long]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[long]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M15829_IG17:
+G_M15829_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M15829_IG18:
-       add      rsp, 64
+G_M15829_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M15829_IG19:
+G_M15829_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M15829_IG22
+       jg       SHORT G_M15829_IG23
        test     rdi, rdi
-       jne      SHORT G_M15829_IG20
+       jne      SHORT G_M15829_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M15829_IG22
+       ja       SHORT G_M15829_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M15829_IG20:
+G_M15829_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M15829_IG22
+       jl       SHORT G_M15829_IG23
        cmp      rdi, -1
-       jne      SHORT G_M15829_IG21
+       jne      SHORT G_M15829_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M15829_IG22
+       jb       SHORT G_M15829_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M15829_IG21:
+G_M15829_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M15829_IG23
+       jmp      SHORT G_M15829_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M15829_IG22:
+G_M15829_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG23:
+G_M15829_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M15829_IG12
+       jmp      G_M15829_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M15829_IG24:
+G_M15829_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG25:
+G_M15829_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M15829_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M15829_IG26:
+G_M15829_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M15829_IG13
+       jmp      G_M15829_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M15829_IG27:
+G_M15829_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M15829_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M15829_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M15829_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=cab3c22a) for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=cab3c22a) for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[short]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[short]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M20973_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M20973_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M20973_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M20973_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M20973_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M20973_IG24
+       je       G_M20973_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M20973_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M20973_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M20973_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M20973_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[short]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[short]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M20973_IG06:
        cmp      r14d, -1
-       je       G_M20973_IG12
+       je       G_M20973_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M20973_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M20973_IG25
+       je       G_M20973_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M20973_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M20973_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M20973_IG27
+       je       G_M20973_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M20973_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M20973_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M20973_IG19
+       jmp      G_M20973_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M20973_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M20973_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M20973_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M20973_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M20973_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M20973_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M20973_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M20973_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M20973_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M20973_IG26
+       je       G_M20973_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M20973_IG13:
+G_M20973_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M20973_IG15
+       jne      SHORT G_M20973_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M20973_IG14:
+G_M20973_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M20973_IG27
+       je       G_M20973_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M20973_IG15:
+G_M20973_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M20973_IG17
+       je       SHORT G_M20973_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M20973_IG16:
+G_M20973_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[short]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[short]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M20973_IG17:
+G_M20973_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M20973_IG18:
-       add      rsp, 64
+G_M20973_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M20973_IG19:
+G_M20973_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M20973_IG22
+       jg       SHORT G_M20973_IG23
        test     rdi, rdi
-       jne      SHORT G_M20973_IG20
+       jne      SHORT G_M20973_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M20973_IG22
+       ja       SHORT G_M20973_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M20973_IG20:
+G_M20973_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M20973_IG22
+       jl       SHORT G_M20973_IG23
        cmp      rdi, -1
-       jne      SHORT G_M20973_IG21
+       jne      SHORT G_M20973_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M20973_IG22
+       jb       SHORT G_M20973_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M20973_IG21:
+G_M20973_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M20973_IG23
+       jmp      SHORT G_M20973_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M20973_IG22:
+G_M20973_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG23:
+G_M20973_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M20973_IG12
+       jmp      G_M20973_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M20973_IG24:
+G_M20973_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG25:
+G_M20973_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M20973_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M20973_IG26:
+G_M20973_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M20973_IG13
+       jmp      G_M20973_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M20973_IG27:
+G_M20973_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M20973_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M20973_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M20973_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=5fd3ae12) for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=5fd3ae12) for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M14689_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M14689_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M14689_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M14689_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M14689_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M14689_IG24
+       je       G_M14689_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M14689_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M14689_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M14689_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M14689_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M14689_IG06:
        cmp      r14d, -1
-       je       G_M14689_IG12
+       je       G_M14689_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M14689_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M14689_IG25
+       je       G_M14689_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M14689_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M14689_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M14689_IG27
+       je       G_M14689_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M14689_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M14689_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M14689_IG19
+       jmp      G_M14689_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M14689_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M14689_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M14689_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M14689_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M14689_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M14689_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M14689_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M14689_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M14689_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M14689_IG26
+       je       G_M14689_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M14689_IG13:
+G_M14689_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M14689_IG15
+       jne      SHORT G_M14689_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M14689_IG14:
+G_M14689_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M14689_IG27
+       je       G_M14689_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M14689_IG15:
+G_M14689_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M14689_IG17
+       je       SHORT G_M14689_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M14689_IG16:
+G_M14689_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M14689_IG17:
+G_M14689_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M14689_IG18:
-       add      rsp, 64
+G_M14689_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M14689_IG19:
+G_M14689_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M14689_IG22
+       jg       SHORT G_M14689_IG23
        test     rdi, rdi
-       jne      SHORT G_M14689_IG20
+       jne      SHORT G_M14689_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M14689_IG22
+       ja       SHORT G_M14689_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M14689_IG20:
+G_M14689_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M14689_IG22
+       jl       SHORT G_M14689_IG23
        cmp      rdi, -1
-       jne      SHORT G_M14689_IG21
+       jne      SHORT G_M14689_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M14689_IG22
+       jb       SHORT G_M14689_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M14689_IG21:
+G_M14689_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M14689_IG23
+       jmp      SHORT G_M14689_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M14689_IG22:
+G_M14689_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG23:
+G_M14689_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M14689_IG12
+       jmp      G_M14689_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M14689_IG24:
+G_M14689_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG25:
+G_M14689_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M14689_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M14689_IG26:
+G_M14689_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M14689_IG13
+       jmp      G_M14689_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M14689_IG27:
+G_M14689_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M14689_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M14689_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M14689_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=9306c69e) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=9306c69e) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M34140_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M34140_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x58]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M34140_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M34140_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M34140_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M34140_IG24
+       je       G_M34140_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M34140_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M34140_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M34140_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M34140_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M34140_IG06:
        cmp      r14d, -1
-       je       G_M34140_IG12
+       je       G_M34140_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M34140_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M34140_IG25
+       je       G_M34140_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M34140_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M34140_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M34140_IG27
+       je       G_M34140_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M34140_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M34140_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M34140_IG19
+       jmp      G_M34140_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M34140_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M34140_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M34140_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M34140_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M34140_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M34140_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x60]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M34140_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M34140_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M34140_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M34140_IG26
+       je       G_M34140_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M34140_IG13:
+G_M34140_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M34140_IG15
+       jne      SHORT G_M34140_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M34140_IG14:
+G_M34140_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M34140_IG27
+       je       G_M34140_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M34140_IG15:
+G_M34140_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x68]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x70], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M34140_IG17
+       je       SHORT G_M34140_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M34140_IG16:
+G_M34140_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M34140_IG17:
+G_M34140_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M34140_IG18:
-       add      rsp, 64
+G_M34140_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M34140_IG19:
+G_M34140_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M34140_IG22
+       jg       SHORT G_M34140_IG23
        test     rdi, rdi
-       jne      SHORT G_M34140_IG20
+       jne      SHORT G_M34140_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M34140_IG22
+       ja       SHORT G_M34140_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M34140_IG20:
+G_M34140_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M34140_IG22
+       jl       SHORT G_M34140_IG23
        cmp      rdi, -1
-       jne      SHORT G_M34140_IG21
+       jne      SHORT G_M34140_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M34140_IG22
+       jb       SHORT G_M34140_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M34140_IG21:
+G_M34140_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x60]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M34140_IG23
+       jmp      SHORT G_M34140_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M34140_IG22:
+G_M34140_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG23:
+G_M34140_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M34140_IG12
+       jmp      G_M34140_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M34140_IG24:
+G_M34140_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG25:
+G_M34140_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M34140_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M34140_IG26:
+G_M34140_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M34140_IG13
+       jmp      G_M34140_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M34140_IG27:
+G_M34140_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M34140_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M34140_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M34140_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=f4ef7aa3) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=f4ef7aa3) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
+;  V00 this         [V00,T00] ( 16, 12   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T08] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V10 tmp3         [V10,T27] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V10 tmp3         [V10,T31] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V11 tmp4         [V11,T09] (  4,  3.50)     ref  ->  rsi        
 ;  V12 tmp5         [V12,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-;  V13 tmp6         [V13,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V14 tmp7         [V14,T15] (  5,  2.50)     ref  ->  r15        
+;  V13 tmp6         [V13,T18] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V14 tmp7         [V14,T14] (  5,  2.50)     ref  ->  r15        
 ;* V15 tmp8         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V16 tmp9         [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V17 tmp10        [V17,T02] (  7,  7   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V18 tmp11        [V18,T06] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-;  V19 tmp12        [V19,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V19 tmp12        [V19,T16] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp14        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V22 tmp15        [V22,T11] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
-;  V23 tmp16        [V23,T20] (  2,  2   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V24 tmp17        [V24,T07] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V23 tmp16        [V23,T19] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V25 tmp18        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V26 tmp19        [V26    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V27 tmp20        [V27    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V28 tmp21        [V28    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V29 tmp22        [V29    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V31 tmp24        [V31    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V33 tmp26        [V33,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V34 tmp27        [V34,T18] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V36 tmp29        [V36    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V37 tmp30        [V37,T22] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V26 tmp19        [V26,T26] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V27 tmp20        [V27,T07] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V29 tmp22        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V30 tmp23        [V30    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V31 tmp24        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V33 tmp26        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V34 tmp27        [V34    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V36 tmp29        [V36,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V37 tmp30        [V37,T17] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31        [V38    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V39 tmp32        [V39    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V40 tmp33        [V40,T21] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V42 tmp35        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp36        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V45 tmp38        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V52 tmp45        [V52,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V56 tmp49        [V56,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V59 tmp52        [V59,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V62 tmp55        [V62    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V63 tmp56        [V63    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57        [V64,T31] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
-;  V73 tmp66        [V73,T16] (  5,  2.50)    long  ->  rdi         "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;  V86 tmp79        [V86,T26] (  2,  1   )    long  ->  rcx         "field V58._ticks (fldOffset=0x0)" P-INDEP
-;  V87 tmp80        [V87,T21] (  2,  2   )     ref  ->  rax         "field V60._node (fldOffset=0x0)" P-INDEP
-;  V88 tmp81        [V88,T23] (  2,  2   )    long  ->  r15         "field V60._id (fldOffset=0x8)" P-INDEP
-;  V89 tmp82        [V89,T14] (  3,  3   )    long  ->  rdi         "index expr"
-;  V90 PSPSym       [V90,T28] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
-;* V91 cse0         [V91,T24] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
-;  V92 cse1         [V92,T25] (  2,  1   )     ref  ->  r15         "CSE #04: conservative"
+;* V44 tmp37        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V48 tmp41        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp48        [V55,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V56 tmp49        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V59 tmp52        [V59,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V62 tmp55        [V62,T12] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57        [V64    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V65 tmp58        [V65    ] (  4,  4   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V66 tmp59        [V66    ] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60        [V67,T35] (  0,  0   )    long  ->  zero-ref    "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
+;  V76 tmp69        [V76,T15] (  5,  2.50)    long  ->  rdi         "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;  V89 tmp82        [V89,T30] (  2,  1   )    long  ->  rcx         "field V61._ticks (fldOffset=0x0)" P-INDEP
+;  V90 tmp83        [V90,T20] (  2,  2   )     ref  ->  rax         "field V63._node (fldOffset=0x0)" P-INDEP
+;  V91 tmp84        [V91,T22] (  2,  2   )    long  ->  r15         "field V63._id (fldOffset=0x8)" P-INDEP
+;  V92 tmp85        [V92,T23] (  2,  2   )    long  ->  rdi         "index expr"
+;  V93 PSPSym       [V93,T32] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;* V94 cse0         [V94,T28] (  0,  0   )   byref  ->  zero-ref    multi-def "CSE #02: moderate"
+;  V95 cse1         [V95,T27] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V96 cse2         [V96,T29] (  2,  1   )     ref  ->  r15         "CSE #05: conservative"
+;  V97 rat0         [V97,T24] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V98 rat1         [V98,T25] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 32
 
 G_M61376_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 64
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      qword ptr [rbp-0x60], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      gword ptr [rbp-0x28], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=46 bbWeight=1 PerfScore 11.00
+						;; size=43 bbWeight=1 PerfScore 10.00
 G_M61376_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M61376_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M61376_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M61376_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M61376_IG24
+       je       G_M61376_IG25
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M61376_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M61376_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M61376_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M61376_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M61376_IG06:
        cmp      r14d, -1
-       je       G_M61376_IG12
+       je       G_M61376_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M61376_IG07:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M61376_IG25
+       je       G_M61376_IG26
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M61376_IG08:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_1
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M61376_IG09
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M61376_IG27
+       je       G_M61376_IG28
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_1
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=99 bbWeight=0.50 PerfScore 6.38
 G_M61376_IG09:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M61376_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x30], rax
-       jmp      G_M61376_IG19
+       jmp      G_M61376_IG20
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M61376_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      gword ptr [rbp-0x48], r13
        lea      rdi, bword ptr [r13+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x28]
-       mov      gword ptr [rbp-0x40], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r13+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x50], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=85 bbWeight=0.50 PerfScore 5.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M61376_IG11
+       sar      ecx, 16
+       jmp      SHORT G_M61376_IG12
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M61376_IG11:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M61376_IG28
-       mov      r15, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M61376_IG12:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r13, gword ptr [rbp-0x48]
        lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r13
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M61376_IG12
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M61376_IG12:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M61376_IG13:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M61376_IG26
+       je       G_M61376_IG27
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M61376_IG13:
+G_M61376_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_0
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       jne      SHORT G_M61376_IG15
+       jne      SHORT G_M61376_IG16
 						;; size=18 bbWeight=1 PerfScore 3.50
-G_M61376_IG14:
+G_M61376_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9
        mov      rsi, gword ptr [rdi]
        test     rsi, rsi
-       je       G_M61376_IG27
+       je       G_M61376_IG28
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_0
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M61376_IG15:
+G_M61376_IG16:
        lea      rdi, bword ptr [rbp-0x28]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r15, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r15
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M61376_IG17
+       je       SHORT G_M61376_IG18
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M61376_IG16:
+G_M61376_IG17:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M61376_IG17:
+G_M61376_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M61376_IG18:
-       add      rsp, 64
+G_M61376_IG19:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M61376_IG19:
+G_M61376_IG20:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x38]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M61376_IG22
+       jg       SHORT G_M61376_IG23
        test     rdi, rdi
-       jne      SHORT G_M61376_IG20
+       jne      SHORT G_M61376_IG21
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M61376_IG22
+       ja       SHORT G_M61376_IG23
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M61376_IG20:
+G_M61376_IG21:
        cmp      rdi, -1
-       jl       SHORT G_M61376_IG22
+       jl       SHORT G_M61376_IG23
        cmp      rdi, -1
-       jne      SHORT G_M61376_IG21
+       jne      SHORT G_M61376_IG22
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M61376_IG22
+       jb       SHORT G_M61376_IG23
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M61376_IG21:
+G_M61376_IG22:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r15
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M61376_IG23
+       jmp      SHORT G_M61376_IG24
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M61376_IG22:
+G_M61376_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG23:
+G_M61376_IG24:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M61376_IG12
+       jmp      G_M61376_IG13
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M61376_IG24:
+G_M61376_IG25:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG25:
+G_M61376_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M61376_IG08
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M61376_IG26:
+G_M61376_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M61376_IG13
+       jmp      G_M61376_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M61376_IG27:
+G_M61376_IG28:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG28:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M61376_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x60]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M61376_IG30:
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M61376_IG31:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=5b10103f) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=5b10103f) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-4.68 % of base) - System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this
 ; Assembly listing for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 25 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 11,  7   )     ref  ->  [rbp-0x38]  this class-hnd single-def <System.Threading.Tasks.Task+DelayPromise>
+;  V00 this         [V00,T00] ( 11,  7   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task+DelayPromise>
 ;  V01 arg1         [V01,T02] (  5,  4   )     int  ->  r15         single-def
 ;  V02 arg2         [V02,T03] (  5,  3.50)     ref  ->  r14         class-hnd single-def <System.TimeProvider>
 ;  V03 loc0         [V03    ] (  3,  1   )  struct ( 8) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T10] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerCallback>
+;  V05 tmp1         [V05,T09] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerCallback>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V08 tmp4         [V08,T01] (  7,  7   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V08 tmp4         [V08,T01] (  7,  7   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Tasks.TplEventSource>
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
 ;* V11 tmp7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.TimerCallback>
-;  V12 tmp8         [V12,T11] (  2,  2   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V13 tmp9         [V13,T04] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V12 tmp8         [V12,T10] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp9         [V13    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V16 tmp12        [V16    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V17 tmp13        [V17    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V18 tmp14        [V18    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V19 tmp15        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V20 tmp16        [V20    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V21 tmp17        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V22 tmp18        [V22,T05] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V23 tmp19        [V23,T09] (  4,  2   )    long  ->  rcx         ld-addr-op "Inline ldloca(s) first use temp"
-;* V24 tmp20        [V24    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V25 tmp21        [V25    ] (  2,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V26 tmp22        [V26,T13] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V27 tmp23        [V27    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V28 tmp24        [V28    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V29 tmp25        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V30 tmp26        [V30    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V15 tmp11        [V15,T17] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V16 tmp12        [V16,T04] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V17 tmp13        [V17    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V18 tmp14        [V18    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V19 tmp15        [V19    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V20 tmp16        [V20    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V21 tmp17        [V21    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V22 tmp18        [V22    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V23 tmp19        [V23    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V24 tmp20        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V25 tmp21        [V25,T05] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V26 tmp22        [V26,T08] (  4,  2   )    long  ->  rcx         ld-addr-op "Inline ldloca(s) first use temp"
+;* V27 tmp23        [V27    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V28 tmp24        [V28    ] (  2,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V29 tmp25        [V29,T12] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V30 tmp26        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V31 tmp27        [V31    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp28        [V32    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V33 tmp29        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V34 tmp30        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V35 tmp31        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V36 tmp32        [V36    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V37 tmp33        [V37    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V38 tmp34        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V39 tmp35        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V40 tmp36        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V41 tmp37        [V41,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V42 tmp38        [V42    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V43 tmp39        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V44 tmp40        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V45 tmp41        [V45,T19] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V46 tmp42        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V47 tmp43        [V47    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;* V48 tmp44        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49    ] (  3,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V03._thread (fldOffset=0x0)" P-DEP
-;* V50 tmp46        [V50,T20] (  0,  0   )    long  ->  zero-ref    "field V06._ticks (fldOffset=0x0)" P-INDEP
-;* V51 tmp47        [V51    ] (  0,  0   )    long  ->  zero-ref    "field V07._ticks (fldOffset=0x0)" P-INDEP
-;* V52 tmp48        [V52    ] (  0,  0   )    long  ->  zero-ref    "field V16._lower (fldOffset=0x0)" P-INDEP
-;* V53 tmp49        [V53    ] (  0,  0   )    long  ->  zero-ref    "field V16._upper (fldOffset=0x8)" P-INDEP
-;* V54 tmp50        [V54    ] (  0,  0   )    long  ->  zero-ref    "field V17._lower (fldOffset=0x0)" P-INDEP
-;* V55 tmp51        [V55    ] (  0,  0   )    long  ->  zero-ref    "field V17._upper (fldOffset=0x8)" P-INDEP
-;* V56 tmp52        [V56    ] (  0,  0   )    long  ->  zero-ref    "field V18._lower (fldOffset=0x0)" P-INDEP
-;* V57 tmp53        [V57    ] (  0,  0   )    long  ->  zero-ref    "field V18._upper (fldOffset=0x8)" P-INDEP
-;* V58 tmp54        [V58    ] (  0,  0   )    long  ->  zero-ref    "field V21._lower (fldOffset=0x0)" P-INDEP
-;  V59 tmp55        [V59,T07] (  5,  2.50)    long  ->  rdi         "field V21._upper (fldOffset=0x8)" P-INDEP
-;* V60 tmp56        [V60    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
-;* V61 tmp57        [V61    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
-;* V62 tmp58        [V62    ] (  0,  0   )    long  ->  zero-ref    "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V63 tmp59        [V63    ] (  0,  0   )    long  ->  zero-ref    "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V64 tmp60        [V64    ] (  0,  0   )    long  ->  zero-ref    "field V36._lower (fldOffset=0x0)" P-INDEP
-;* V65 tmp61        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V36._upper (fldOffset=0x8)" P-INDEP
-;* V66 tmp62        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V37._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp63        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V37._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp64        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V39._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp65        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V39._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp66        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V43._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp67        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V43._upper (fldOffset=0x8)" P-INDEP
-;  V72 tmp68        [V72,T16] (  2,  1   )    long  ->  rcx         "field V47._ticks (fldOffset=0x0)" P-INDEP
-;  V73 tmp69        [V73,T12] (  2,  2   )     ref  ->  r13         single-def "argument with side effect"
-;  V74 tmp70        [V74,T14] (  2,  2   )     int  ->  rsi         "argument with side effect"
-;  V75 tmp71        [V75,T06] (  3,  3   )    long  ->  rdi         "index expr"
-;  V76 PSPSym       [V76,T17] (  1,  1   )    long  ->  [rbp-0x50]  do-not-enreg[V] "PSPSym"
-;  V77 cse0         [V77,T08] (  3,  2.50)     ref  ->  r13         "CSE #05: moderate"
-;  V78 cse1         [V78,T15] (  2,  1   )     ref  ->  r13         "CSE #06: moderate"
+;* V33 tmp29        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V34 tmp30        [V34    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V35 tmp31        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V36 tmp32        [V36    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V37 tmp33        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V38 tmp34        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V39 tmp35        [V39    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V40 tmp36        [V40    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V41 tmp37        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V42 tmp38        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V43 tmp39        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V44 tmp40        [V44,T22] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V45 tmp41        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V46 tmp42        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V47 tmp43        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V48 tmp44        [V48,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V49 tmp45        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V50 tmp46        [V50    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;* V51 tmp47        [V51    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V52 tmp48        [V52    ] (  3,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V03._thread (fldOffset=0x0)" P-DEP
+;* V53 tmp49        [V53,T24] (  0,  0   )    long  ->  zero-ref    "field V06._ticks (fldOffset=0x0)" P-INDEP
+;* V54 tmp50        [V54    ] (  0,  0   )    long  ->  zero-ref    "field V07._ticks (fldOffset=0x0)" P-INDEP
+;* V55 tmp51        [V55    ] (  0,  0   )    long  ->  zero-ref    "field V19._lower (fldOffset=0x0)" P-INDEP
+;* V56 tmp52        [V56    ] (  0,  0   )    long  ->  zero-ref    "field V19._upper (fldOffset=0x8)" P-INDEP
+;* V57 tmp53        [V57    ] (  0,  0   )    long  ->  zero-ref    "field V20._lower (fldOffset=0x0)" P-INDEP
+;* V58 tmp54        [V58    ] (  0,  0   )    long  ->  zero-ref    "field V20._upper (fldOffset=0x8)" P-INDEP
+;* V59 tmp55        [V59    ] (  0,  0   )    long  ->  zero-ref    "field V21._lower (fldOffset=0x0)" P-INDEP
+;* V60 tmp56        [V60    ] (  0,  0   )    long  ->  zero-ref    "field V21._upper (fldOffset=0x8)" P-INDEP
+;* V61 tmp57        [V61    ] (  0,  0   )    long  ->  zero-ref    "field V24._lower (fldOffset=0x0)" P-INDEP
+;  V62 tmp58        [V62,T06] (  5,  2.50)    long  ->  rdi         "field V24._upper (fldOffset=0x8)" P-INDEP
+;* V63 tmp59        [V63    ] (  0,  0   )    long  ->  zero-ref    "field V33._lower (fldOffset=0x0)" P-INDEP
+;* V64 tmp60        [V64    ] (  0,  0   )    long  ->  zero-ref    "field V33._upper (fldOffset=0x8)" P-INDEP
+;* V65 tmp61        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V37._lower (fldOffset=0x0)" P-INDEP
+;* V66 tmp62        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V37._upper (fldOffset=0x8)" P-INDEP
+;* V67 tmp63        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V39._lower (fldOffset=0x0)" P-INDEP
+;* V68 tmp64        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V39._upper (fldOffset=0x8)" P-INDEP
+;* V69 tmp65        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V40._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp66        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V40._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp67        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V42._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp68        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V42._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp69        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V46._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp70        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V46._upper (fldOffset=0x8)" P-INDEP
+;  V75 tmp71        [V75,T20] (  2,  1   )    long  ->  rcx         "field V50._ticks (fldOffset=0x0)" P-INDEP
+;  V76 tmp72        [V76,T11] (  2,  2   )     ref  ->  r13         single-def "argument with side effect"
+;  V77 tmp73        [V77,T13] (  2,  2   )     int  ->  rsi         "argument with side effect"
+;  V78 tmp74        [V78,T14] (  2,  2   )    long  ->  rdi         "index expr"
+;  V79 PSPSym       [V79,T21] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;  V80 cse0         [V80,T07] (  3,  2.50)     ref  ->  r13         "CSE #05: moderate"
+;  V81 cse1         [V81,T18] (  3,  1.50)    long  ->  rax         "CSE #06: moderate"
+;  V82 cse2         [V82,T19] (  2,  1   )     ref  ->  r13         "CSE #07: moderate"
+;  V83 rat0         [V83,T15] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V84 rat1         [V84,T16] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M763_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
-       sub      rsp, 48
-       vzeroupper 
-       lea      rbp, [rsp+0x50]
+       sub      rsp, 32
+       lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x28], rax
-       mov      qword ptr [rbp-0x50], rsp
+       mov      qword ptr [rbp-0x40], rsp
        mov      rbx, rdi
        mov      r15d, esi
        mov      r14, rdx
-						;; size=39 bbWeight=1 PerfScore 9.75
+						;; size=36 bbWeight=1 PerfScore 8.75
 G_M763_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M763_IG19
+       je       G_M763_IG20
 						;; size=26 bbWeight=1 PerfScore 5.25
 G_M763_IG03:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.TplEventSource:Log
        mov      r13, gword ptr [rdi]
        cmp      byte  ptr [r13+0x9D], 0
        je       SHORT G_M763_IG05
 						;; size=23 bbWeight=1 PerfScore 6.25
 G_M763_IG04:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:get_Id():int:this
        call     [rax]System.Threading.Tasks.Task:get_Id():int:this
        mov      esi, eax
        mov      rdi, r13
        mov      rdx, 0xD1FFAB1E      ; 'Task.Delay'
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.TplEventSource:TraceOperationBegin(int,System.String,long):this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Threading.Tasks.TplEventSource:TraceOperationBegin(int,System.String,long):this
 						;; size=46 bbWeight=0.50 PerfScore 5.38
 G_M763_IG05:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
        cmp      byte  ptr [rdi], 0
        je       SHORT G_M763_IG07
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M763_IG06:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
        call     [rax]System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
 						;; size=15 bbWeight=0.50 PerfScore 1.75
 G_M763_IG07:
        cmp      r15d, -1
-       je       G_M763_IG12
+       je       G_M763_IG13
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M763_IG08:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r14, gword ptr [rax]
        je       SHORT G_M763_IG09
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x28], rax
-       jmp      G_M763_IG14
+       jmp      G_M763_IG15
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M763_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
-       mov      gword ptr [rbp-0x40], r14
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rdi]
        lea      rdi, bword ptr [r14+0x20]
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r14+0x28]
-       mov      gword ptr [rbp-0x38], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r14+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r13, gword ptr [rax]
-       mov      gword ptr [rbp-0x48], r13
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r13, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=95 bbWeight=0.50 PerfScore 6.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M763_IG10
+       sar      ecx, 16
+       jmp      SHORT G_M763_IG11
+						;; size=120 bbWeight=0.50 PerfScore 10.75
 G_M763_IG10:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M763_IG20
-       mov      r13, gword ptr [rbp-0x48]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M763_IG11:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r13+8*rdi+0x10]
-       mov      r14, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r14
        mov      esi, r15d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [rbx+0x38]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M763_IG11
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M763_IG11:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M763_IG12:
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M763_IG12
+       je       SHORT G_M763_IG13
        mov      rdi, gword ptr [rbx+0x38]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=26 bbWeight=0.50 PerfScore 4.62
-G_M763_IG12:
+G_M763_IG13:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M763_IG13:
-       add      rsp, 48
+G_M763_IG14:
+       add      rsp, 32
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
-G_M763_IG14:
+G_M763_IG15:
        mov      rdx, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rdx]
        mov      edx, r15d
        mov      edi, 0x3E8
        lea      rcx, [rbp-0x30]
        mulx     rdi, r8, rdi
        mov      qword ptr [rcx], r8
        mov      rcx, qword ptr [rbp-0x30]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M763_IG17
+       jg       SHORT G_M763_IG18
        test     rdi, rdi
-       jne      SHORT G_M763_IG15
+       jne      SHORT G_M763_IG16
        mov      rdx, 0xD1FFAB1E
        cmp      rcx, rdx
-       ja       SHORT G_M763_IG17
+       ja       SHORT G_M763_IG18
 						;; size=76 bbWeight=0.50 PerfScore 6.62
-G_M763_IG15:
+G_M763_IG16:
        cmp      rdi, -1
-       jl       SHORT G_M763_IG17
+       jl       SHORT G_M763_IG18
        cmp      rdi, -1
-       jne      SHORT G_M763_IG16
+       jne      SHORT G_M763_IG17
        mov      rdi, 0xD1FFAB1E
        cmp      rcx, rdi
-       jb       SHORT G_M763_IG17
+       jb       SHORT G_M763_IG18
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M763_IG16:
+G_M763_IG17:
        lea      rcx, [rcx+4*rcx]
        add      rcx, rcx
        mov      rdi, r14
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x38]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M763_IG18
+       jmp      SHORT G_M763_IG19
 						;; size=46 bbWeight=0.50 PerfScore 6.12
-G_M763_IG17:
+G_M763_IG18:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M763_IG18:
+G_M763_IG19:
        lea      rdi, [rbp-0x28]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M763_IG11
+       jmp      G_M763_IG12
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M763_IG19:
+G_M763_IG20:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TplEventSource
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M763_IG03
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M763_IG20:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M763_IG21:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x50]
-						;; size=26 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x40]
+						;; size=23 bbWeight=0 PerfScore 0.00
 G_M763_IG22:
        lea      rdi, [rbp-0x28]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M763_IG23:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 726, prolog size 39, PerfScore 84.00, instruction count 175, allocated bytes for code 726 (MethodHash=1eeffd04) for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
+; Total bytes of code 692, prolog size 36, PerfScore 81.75, instruction count 167, allocated bytes for code 692 (MethodHash=1eeffd04) for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
-31 (-10.47 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  4   )     ref  ->  [rbp-0x20]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T02] (  4,  4   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T03] (  4,  4   )     ref  ->  r15         class-hnd single-def <System.Threading.TimerCallback>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T00] (  7, 14   )     ref  ->  [rbp-0x28]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-;  V04 tmp2         [V04,T04] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V05 tmp3         [V05,T06] (  2,  4   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V06 tmp4         [V06,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
+;  V03 tmp1         [V03,T00] (  7, 14   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V04 tmp2         [V04,T04] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+;  V05 tmp3         [V05,T05] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V07 tmp5         [V07    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V08 tmp6         [V08,T05] (  3,  6   )    long  ->  rdi         "index expr"
-;  V09 cse0         [V09,T07] (  2,  2   )     ref  ->  r15         "CSE #01: aggressive"
+;  V08 tmp6         [V08,T10] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V09 tmp7         [V09,T01] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V10 tmp8         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V11 tmp9         [V11,T06] (  2,  4   )    long  ->  rdi         "index expr"
+;  V12 cse0         [V12,T09] (  3,  3   )    long  ->  rax         "CSE #01: aggressive"
+;  V13 cse1         [V13,T11] (  2,  2   )     ref  ->  r15         "CSE #02: aggressive"
+;  V14 rat0         [V14,T07] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V15 rat1         [V15,T08] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M23568_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x30]
+       push     rax
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=24 bbWeight=1 PerfScore 6.25
+						;; size=18 bbWeight=1 PerfScore 6.00
 G_M23568_IG02:
        mov      rdi, r15
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
-       mov      gword ptr [rbp-0x28], r14
        lea      rdi, bword ptr [r14+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r14+0x28]
-       mov      gword ptr [rbp-0x20], rbx
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r14+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [r14+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rax]
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r15, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=134 bbWeight=1 PerfScore 20.25
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M23568_IG04
+						;; size=154 bbWeight=1 PerfScore 25.75
 G_M23568_IG03:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      SHORT G_M23568_IG06
-       mov      r15, gword ptr [rbp-0x30]
+       sar      ecx, 16
+       jmp      SHORT G_M23568_IG05
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M23568_IG04:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M23568_IG05:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r15+8*rdi+0x10]
-       mov      r14, gword ptr [rbp-0x28]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
-       mov      rbx, rax
-       lea      rdi, bword ptr [rbx+0x08]
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r15, gword ptr [rbp-0x20]
-       lea      rdi, bword ptr [r15+0x08]
-       mov      rsi, rbx
+       lea      rdi, bword ptr [rbx+0x08]
+       mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      SHORT G_M23568_IG05
-						;; size=114 bbWeight=1 PerfScore 22.00
-G_M23568_IG04:
-       add      rsp, 24
+       nop      
+						;; size=63 bbWeight=1 PerfScore 9.25
+G_M23568_IG06:
+       add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=1 PerfScore 3.25
-G_M23568_IG05:
-       call     CORINFO_HELP_POLL_GC
-       jmp      SHORT G_M23568_IG04
-						;; size=7 bbWeight=0 PerfScore 0.00
-G_M23568_IG06:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 296, prolog size 18, PerfScore 51.75, instruction count 72, allocated bytes for code 296 (MethodHash=0dbda3ef) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
+; Total bytes of code 265, prolog size 12, PerfScore 47.25, instruction count 65, allocated bytes for code 265 (MethodHash=0dbda3ef) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
-30 (-2.98 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
 ; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 18, 13.50)     ref  ->  [rbp-0x50]  this class-hnd EH-live single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]>
 ;  V01 arg1         [V01,T01] (  8,  6   )     ref  ->  r15         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V02 arg2         [V02,T03] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T05] (  5,  3.50)     ref  ->  r13         class-hnd single-def <System.TimeProvider>
 ;  V04 arg4         [V04    ] (  4,  4   )  struct ( 8) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Threading.TimerCallback>
 ;  V06 loc1         [V06    ] (  3,  1   )  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V08 tmp1         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp2         [V09,T13] (  2,  4   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V10 tmp3         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V11 tmp4         [V11,T34] (  0,  0   )   byref  ->  zero-ref    single-def
+;* V11 tmp4         [V11,T38] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V12 tmp5         [V12,T14] (  4,  3.50)     ref  ->  rsi        
-;* V13 tmp6         [V13,T35] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V13 tmp6         [V13,T39] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V14 tmp7         [V14,T07] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
 ;* V15 tmp8         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp9         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp10        [V17,T27] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-;  V18 tmp11        [V18,T21] (  5,  2.50)     ref  ->  r12        
+;  V17 tmp10        [V17,T26] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+;  V18 tmp11        [V18,T20] (  5,  2.50)     ref  ->  r12        
 ;* V19 tmp12        [V19    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;* V20 tmp13        [V20    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.TimeSpan>
-;  V21 tmp14        [V21,T02] (  7,  7   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-;* V22 tmp15        [V22,T36] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V21 tmp14        [V21,T02] (  7,  7   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;* V22 tmp15        [V22,T40] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V23 tmp16        [V23,T08] (  5,  5   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
 ;* V24 tmp17        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp18        [V25,T24] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V25 tmp18        [V25,T23] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V26 tmp19        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V27 tmp20        [V27,T15] (  3,  3   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V28 tmp21        [V28,T16] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
-;  V29 tmp22        [V29,T28] (  2,  2   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V30 tmp23        [V30,T11] (  4,  4   )    long  ->  rdi         "impAppendStmt"
+;  V29 tmp22        [V29,T27] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V31 tmp24        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V32 tmp25        [V32    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V33 tmp26        [V33    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
-;* V34 tmp27        [V34    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V35 tmp28        [V35    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V36 tmp29        [V36    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V37 tmp30        [V37    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;* V38 tmp31        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V39 tmp32        [V39,T18] (  3,  3   )    long  ->  rdx         "Inlining Arg"
-;  V40 tmp33        [V40,T25] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
-;* V41 tmp34        [V41    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V42 tmp35        [V42    ] (  2,  1   )    long  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V43 tmp36        [V43,T30] (  2,  2   )    long  ->  rdi         "impAppendStmt"
-;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V45 tmp38        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp40        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V32 tmp25        [V32,T34] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V33 tmp26        [V33,T11] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V34 tmp27        [V34    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V35 tmp28        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V36 tmp29        [V36    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
+;* V37 tmp30        [V37    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V38 tmp31        [V38    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V39 tmp32        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V40 tmp33        [V40    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;* V41 tmp34        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;  V42 tmp35        [V42,T18] (  3,  3   )    long  ->  rdx         "Inlining Arg"
+;  V43 tmp36        [V43,T24] (  4,  2   )    long  ->  rsi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V44 tmp37        [V44    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V45 tmp38        [V45    ] (  2,  1   )    long  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V46 tmp39        [V46,T29] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;* V47 tmp40        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp41        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V49 tmp42        [V49    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V50 tmp43        [V50    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V51 tmp44        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V53 tmp46        [V53    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
-;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V56 tmp49        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V57 tmp50        [V57    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V58 tmp51        [V58,T38] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V59 tmp52        [V59    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V60 tmp53        [V60    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V61 tmp54        [V61    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V62 tmp55        [V62,T39] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V63 tmp56        [V63    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V64 tmp57        [V64    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;  V65 tmp58        [V65,T17] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
-;* V66 tmp59        [V66    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V67 tmp60        [V67    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V68 tmp61        [V68    ] (  4,  4   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-;  V69 tmp62        [V69    ] (  3,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V70 tmp63        [V70,T40] (  0,  0   )    long  ->  zero-ref    "field V19._ticks (fldOffset=0x0)" P-INDEP
-;* V71 tmp64        [V71    ] (  0,  0   )    long  ->  zero-ref    "field V20._ticks (fldOffset=0x0)" P-INDEP
-;* V72 tmp65        [V72    ] (  0,  0   )    long  ->  zero-ref    "field V33._lower (fldOffset=0x0)" P-INDEP
-;* V73 tmp66        [V73    ] (  0,  0   )    long  ->  zero-ref    "field V33._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V35._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V38._lower (fldOffset=0x0)" P-INDEP
-;  V79 tmp72        [V79,T22] (  5,  2.50)    long  ->  rdi         "field V38._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75        [V82    ] (  0,  0   )    long  ->  zero-ref    "field V51._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V51._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V53._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V53._upper (fldOffset=0x8)" P-INDEP
-;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
-;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V56._lower (fldOffset=0x0)" P-INDEP
-;* V89 tmp82        [V89    ] (  0,  0   )    long  ->  zero-ref    "field V56._upper (fldOffset=0x8)" P-INDEP
-;* V90 tmp83        [V90    ] (  0,  0   )    long  ->  zero-ref    "field V60._lower (fldOffset=0x0)" P-INDEP
-;* V91 tmp84        [V91    ] (  0,  0   )    long  ->  zero-ref    "field V60._upper (fldOffset=0x8)" P-INDEP
-;  V92 tmp85        [V92,T33] (  2,  1   )    long  ->  rcx         "field V64._ticks (fldOffset=0x0)" P-INDEP
-;  V93 tmp86        [V93,T29] (  2,  2   )     ref  ->  rax         "field V66._node (fldOffset=0x0)" P-INDEP
-;  V94 tmp87        [V94,T31] (  2,  2   )    long  ->  r12         "field V66._id (fldOffset=0x8)" P-INDEP
-;  V95 tmp88        [V95,T19] (  3,  3   )    long  ->  rdi         "index expr"
-;  V96 PSPSym       [V96,T37] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
-;  V97 cse0         [V97,T06] (  8,  5   )   byref  ->  r15         multi-def "CSE #03: moderate"
-;  V98 cse1         [V98,T10] (  4,  3   )    long  ->  rdi         multi-def "CSE #02: moderate"
-;  V99 cse2         [V99,T32] (  2,  1   )     ref  ->  r13         "CSE #04: conservative"
-;  V100 rat0        [V100,T23] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V101 rat1        [V101,T26] (  3,  2   )    long  ->  rdi         "runtime lookup"
-;  V102 rat2        [V102,T20] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V103 rat3        [V103,T09] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V104 rat4        [V104,T12] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V105 rat5        [V105,T04] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V50 tmp43        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V51 tmp44        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V52 tmp45        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V53 tmp46        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V54 tmp47        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V55 tmp48        [V55    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V56 tmp49        [V56    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V57 tmp50        [V57    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
+;* V58 tmp51        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V59 tmp52        [V59    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V60 tmp53        [V60    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V61 tmp54        [V61,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V62 tmp55        [V62    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V63 tmp56        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V64 tmp57        [V64    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V65 tmp58        [V65,T43] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V66 tmp59        [V66    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V67 tmp60        [V67    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;  V68 tmp61        [V68,T17] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
+;* V69 tmp62        [V69    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V70 tmp63        [V70    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V71 tmp64        [V71    ] (  4,  4   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+;  V72 tmp65        [V72    ] (  3,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V73 tmp66        [V73,T44] (  0,  0   )    long  ->  zero-ref    "field V19._ticks (fldOffset=0x0)" P-INDEP
+;* V74 tmp67        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V20._ticks (fldOffset=0x0)" P-INDEP
+;* V75 tmp68        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V36._lower (fldOffset=0x0)" P-INDEP
+;* V76 tmp69        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V36._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V37._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V37._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V38._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V38._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74        [V81    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
+;  V82 tmp75        [V82,T21] (  5,  2.50)    long  ->  rdi         "field V41._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76        [V83    ] (  0,  0   )    long  ->  zero-ref    "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V56._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V56._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp82        [V89    ] (  0,  0   )    long  ->  zero-ref    "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V90 tmp83        [V90    ] (  0,  0   )    long  ->  zero-ref    "field V57._upper (fldOffset=0x8)" P-INDEP
+;* V91 tmp84        [V91    ] (  0,  0   )    long  ->  zero-ref    "field V59._lower (fldOffset=0x0)" P-INDEP
+;* V92 tmp85        [V92    ] (  0,  0   )    long  ->  zero-ref    "field V59._upper (fldOffset=0x8)" P-INDEP
+;* V93 tmp86        [V93    ] (  0,  0   )    long  ->  zero-ref    "field V63._lower (fldOffset=0x0)" P-INDEP
+;* V94 tmp87        [V94    ] (  0,  0   )    long  ->  zero-ref    "field V63._upper (fldOffset=0x8)" P-INDEP
+;  V95 tmp88        [V95,T37] (  2,  1   )    long  ->  rcx         "field V67._ticks (fldOffset=0x0)" P-INDEP
+;  V96 tmp89        [V96,T28] (  2,  2   )     ref  ->  rax         "field V69._node (fldOffset=0x0)" P-INDEP
+;  V97 tmp90        [V97,T30] (  2,  2   )    long  ->  r12         "field V69._id (fldOffset=0x8)" P-INDEP
+;  V98 tmp91        [V98,T31] (  2,  2   )    long  ->  rdi         "index expr"
+;  V99 PSPSym       [V99,T41] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
+;  V100 cse0        [V100,T06] (  8,  5   )   byref  ->  r15         multi-def "CSE #03: moderate"
+;  V101 cse1        [V101,T10] (  4,  3   )    long  ->  rdi         multi-def "CSE #02: moderate"
+;  V102 cse2        [V102,T35] (  3,  1.50)    long  ->  rax         "CSE #04: conservative"
+;  V103 cse3        [V103,T36] (  2,  1   )     ref  ->  r13         "CSE #05: conservative"
+;  V104 rat0        [V104,T22] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V105 rat1        [V105,T25] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V106 rat2        [V106,T19] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V107 rat3        [V107,T09] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V108 rat4        [V108,T12] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V109 rat5        [V109,T04] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V110 rat6        [V110,T32] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V111 rat7        [V111,T33] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M34265_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 72
-       vzeroupper 
-       lea      rbp, [rsp+0x70]
+       sub      rsp, 56
+       lea      rbp, [rsp+0x60]
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
-       mov      qword ptr [rbp-0x70], rsp
+       mov      qword ptr [rbp-0x60], rsp
        mov      qword ptr [rbp-0x30], rdi
        mov      gword ptr [rbp-0x50], rdi
        mov      gword ptr [rbp-0x38], r8
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
        mov      r13, rcx
-						;; size=56 bbWeight=1 PerfScore 14.00
+						;; size=53 bbWeight=1 PerfScore 13.00
 G_M34265_IG02:
        mov      dword ptr [rbx+0x34], 0xD1FFAB1E
        lea      rdi, bword ptr [rbx+0x40]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r15+0x34], 0xD1FFAB1E
        jne      SHORT G_M34265_IG05
 						;; size=29 bbWeight=1 PerfScore 6.75
 G_M34265_IG03:
        cmp      gword ptr [r15+0x20], 0
        jne      SHORT G_M34265_IG04
        lea      rdi, bword ptr [r15+0x20]
        test     rdi, rdi
-       je       G_M34265_IG28
+       je       G_M34265_IG29
        mov      rsi, rbx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
        test     rax, rax
        je       SHORT G_M34265_IG06
 						;; size=35 bbWeight=0.50 PerfScore 4.25
 G_M34265_IG04:
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        call     [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M34265_IG06
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M34265_IG05:
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M34265_IG06:
        cmp      r14d, -1
-       je       G_M34265_IG14
+       je       G_M34265_IG15
 						;; size=10 bbWeight=1 PerfScore 1.25
 G_M34265_IG07:
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi+0x08]
        mov      rax, qword ptr [rsi+0x18]
        test     rax, rax
        je       SHORT G_M34265_IG09
 						;; size=20 bbWeight=0.50 PerfScore 4.62
 G_M34265_IG08:
        mov      rdi, rax
        jmp      SHORT G_M34265_IG10
 						;; size=5 bbWeight=0.40 PerfScore 0.90
 G_M34265_IG09:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
 						;; size=18 bbWeight=0.10 PerfScore 0.15
 G_M34265_IG10:
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        mov      r15, rax
        mov      r12, gword ptr [r15+0x08]
        test     r12, r12
        jne      SHORT G_M34265_IG11
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rsi, gword ptr [r15]
        test     rsi, rsi
-       je       G_M34265_IG29
+       je       G_M34265_IG30
        lea      rdi, bword ptr [r12+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]:<.ctor>b__3_1(System.Object):this
        mov      qword ptr [r12+0x18], rdi
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=84 bbWeight=0.50 PerfScore 6.88
 G_M34265_IG11:
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      r13, gword ptr [rax]
        je       SHORT G_M34265_IG12
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        call     [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
        mov      gword ptr [rbp-0x40], rax
-       jmp      G_M34265_IG23
+       jmp      G_M34265_IG24
 						;; size=36 bbWeight=0.50 PerfScore 5.25
 G_M34265_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
-       mov      gword ptr [rbp-0x58], r15
        lea      rdi, bword ptr [r15+0x20]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r15+0x28]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r15+0x48], -1
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r13, gword ptr [rax]
-       mov      gword ptr [rbp-0x60], r13
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r13, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=81 bbWeight=0.50 PerfScore 5.25
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M34265_IG13
+       sar      ecx, 16
+       jmp      SHORT G_M34265_IG14
+						;; size=110 bbWeight=0.50 PerfScore 9.75
 G_M34265_IG13:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M34265_IG30
-       mov      r13, gword ptr [rbp-0x60]
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M34265_IG14:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r13+8*rdi+0x10]
-       mov      r15, gword ptr [rbp-0x58]
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      esi, r14d
        mov      edx, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
-       mov      rbx, gword ptr [rbp-0x50]
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       je       SHORT G_M34265_IG14
-       call     CORINFO_HELP_POLL_GC
-						;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M34265_IG14:
+						;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M34265_IG15:
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi+0x08]
        mov      rax, qword ptr [rsi+0x18]
        test     rax, rax
-       je       SHORT G_M34265_IG16
+       je       SHORT G_M34265_IG17
 						;; size=20 bbWeight=1 PerfScore 9.25
-G_M34265_IG15:
+G_M34265_IG16:
        mov      rdi, rax
-       jmp      SHORT G_M34265_IG17
+       jmp      SHORT G_M34265_IG18
 						;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M34265_IG16:
+G_M34265_IG17:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
 						;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M34265_IG17:
+G_M34265_IG18:
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        mov      r15, rax
        mov      rsi, gword ptr [r15+0x10]
        test     rsi, rsi
-       jne      SHORT G_M34265_IG19
+       jne      SHORT G_M34265_IG20
 						;; size=17 bbWeight=1 PerfScore 4.50
-G_M34265_IG18:
+G_M34265_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Action`2[System.Object,System.Threading.CancellationToken]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rsi, gword ptr [r15]
        test     rsi, rsi
-       je       G_M34265_IG29
+       je       G_M34265_IG30
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
        mov      qword ptr [r14+0x18], rdi
        lea      rdi, bword ptr [r15+0x10]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
 						;; size=68 bbWeight=0.50 PerfScore 4.75
-G_M34265_IG19:
+G_M34265_IG20:
        lea      rdi, bword ptr [rbp-0x38]
        mov      rdx, rbx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
        mov      r12, rdx
        lea      rdi, bword ptr [rbx+0x50]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x58], r12
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M34265_IG21
+       je       SHORT G_M34265_IG22
 						;; size=52 bbWeight=1 PerfScore 11.50
-G_M34265_IG20:
+G_M34265_IG21:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:Cleanup():this
        call     [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:Cleanup():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M34265_IG21:
+G_M34265_IG22:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M34265_IG22:
-       add      rsp, 72
+G_M34265_IG23:
+       add      rsp, 56
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M34265_IG23:
+G_M34265_IG24:
        mov      edx, r14d
        mov      edi, 0x3E8
        lea      rsi, [rbp-0x48]
        mulx     rdi, rcx, rdi
        mov      qword ptr [rsi], rcx
        mov      rsi, qword ptr [rbp-0x48]
        sar      rdx, 63
        and      rdx, 0x3E8
        sub      rdi, rdx
        test     rdi, rdi
-       jg       SHORT G_M34265_IG26
+       jg       SHORT G_M34265_IG27
        test     rdi, rdi
-       jne      SHORT G_M34265_IG24
+       jne      SHORT G_M34265_IG25
        mov      rdx, 0xD1FFAB1E
        cmp      rsi, rdx
-       ja       SHORT G_M34265_IG26
+       ja       SHORT G_M34265_IG27
 						;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M34265_IG24:
+G_M34265_IG25:
        cmp      rdi, -1
-       jl       SHORT G_M34265_IG26
+       jl       SHORT G_M34265_IG27
        cmp      rdi, -1
-       jne      SHORT G_M34265_IG25
+       jne      SHORT G_M34265_IG26
        mov      rdi, 0xD1FFAB1E
        cmp      rsi, rdi
-       jb       SHORT G_M34265_IG26
+       jb       SHORT G_M34265_IG27
 						;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M34265_IG25:
+G_M34265_IG26:
        lea      rcx, [rsi+4*rsi]
        add      rcx, rcx
        mov      rdi, r13
        mov      rsi, r12
        mov      rdx, rbx
        mov      r8, -0x2710
        mov      rax, qword ptr [r13]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
        lea      rdi, bword ptr [rbx+0x48]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M34265_IG27
+       jmp      SHORT G_M34265_IG28
 						;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M34265_IG26:
+G_M34265_IG27:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG27:
+G_M34265_IG28:
        lea      rdi, [rbp-0x40]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
-       jmp      G_M34265_IG14
+       jmp      G_M34265_IG15
 						;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M34265_IG28:
+G_M34265_IG29:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG29:
+G_M34265_IG30:
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        call     [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG30:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 G_M34265_IG31:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
-       vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x70]
-						;; size=25 bbWeight=0 PerfScore 0.00
+       lea      rbp, [rbp+0x60]
+						;; size=22 bbWeight=0 PerfScore 0.00
 G_M34265_IG32:
        lea      rdi, [rbp-0x40]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.AsyncFlowControl:Undo():this
        call     [rax]System.Threading.AsyncFlowControl:Undo():this
        nop      
 						;; size=17 bbWeight=0 PerfScore 0.00
 G_M34265_IG33:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1006, prolog size 56, PerfScore 120.65, instruction count 256, allocated bytes for code 1006 (MethodHash=c59c7a26) for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 976, prolog size 53, PerfScore 118.90, instruction count 249, allocated bytes for code 976 (MethodHash=c59c7a26) for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-29 (-6.50 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r13         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T08] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
-;  V03 arg3         [V03,T02] (  6,  4.50)     int  ->  rbx         single-def
+;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4.50)     int  ->  rbx         single-def
 ;  V04 arg4         [V04,T03] (  5,  3.50)     int  ->  r15         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V07 tmp2         [V07,T11] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V07 tmp2         [V07,T15] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V09 tmp4         [V09,T12] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V10 tmp5         [V10,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-;  V11 tmp6         [V11,T05] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V12 tmp7         [V12,T09] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V13 tmp8         [V13,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
+;* V09 tmp4         [V09,T16] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;  V10 tmp5         [V10,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V11 tmp6         [V11,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+;  V12 tmp7         [V12,T08] (  2,  4   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp8         [V13    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V15 tmp10        [V15,T13] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V16 tmp11        [V16,T14] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V17 tmp12        [V17,T06] (  3,  6   )    long  ->  rdi         "index expr"
-;  V18 cse0         [V18,T10] (  2,  2   )     ref  ->  r12         "CSE #01: moderate"
+;  V15 tmp10        [V15,T13] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V16 tmp11        [V16,T02] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V17 tmp12        [V17    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V18 tmp13        [V18,T17] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V19 tmp14        [V19,T18] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V20 tmp15        [V20,T09] (  2,  4   )    long  ->  rdi         "index expr"
+;  V21 cse0         [V21,T12] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V22 cse1         [V22,T14] (  2,  2   )     ref  ->  r12         "CSE #02: moderate"
+;  V23 rat0         [V23,T10] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V24 rat1         [V24,T11] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M31938_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r13, rdi
        mov      r14, rsi
        mov      r12, rdx
        mov      ebx, ecx
        mov      r15d, r8d
-						;; size=37 bbWeight=1 PerfScore 9.75
+						;; size=30 bbWeight=1 PerfScore 8.75
 G_M31938_IG02:
        cmp      ebx, -1
        jl       G_M31938_IG10
        cmp      r15d, -1
        jl       G_M31938_IG09
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r14, gword ptr [rbp-0x38]
+       mov      r14, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r14+0x28]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r14+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [r14+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r12, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r12
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r12, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=150 bbWeight=1 PerfScore 22.50
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M31938_IG04
+						;; size=178 bbWeight=1 PerfScore 30.00
 G_M31938_IG03:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M31938_IG11
-       mov      r12, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M31938_IG05
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M31938_IG04:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M31938_IG05:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r12+8*rdi+0x10]
-       mov      r14, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      SHORT G_M31938_IG08
-						;; size=72 bbWeight=1 PerfScore 16.00
-G_M31938_IG04:
        cmp      ebx, -1
-       je       SHORT G_M31938_IG06
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M31938_IG05:
+       je       SHORT G_M31938_IG07
+						;; size=25 bbWeight=1 PerfScore 5.25
+G_M31938_IG06:
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M31938_IG06:
+G_M31938_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
-       mov      rbx, rax
-       lea      rdi, bword ptr [rbx+0x08]
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r13, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, rbx
+       mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 6.25
-G_M31938_IG07:
-       add      rsp, 24
+						;; size=43 bbWeight=1 PerfScore 5.25
+G_M31938_IG08:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M31938_IG08:
-       call     CORINFO_HELP_POLL_GC
-       jmp      SHORT G_M31938_IG04
-						;; size=7 bbWeight=0 PerfScore 0.00
 G_M31938_IG09:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      edi, r15d
        mov      esi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
 G_M31938_IG10:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      edi, ebx
        mov      esi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=43 bbWeight=0 PerfScore 0.00
-G_M31938_IG11:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 446, prolog size 22, PerfScore 62.00, instruction count 108, allocated bytes for code 446 (MethodHash=f2d5833d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
+; Total bytes of code 417, prolog size 16, PerfScore 58.50, instruction count 102, allocated bytes for code 417 (MethodHash=f2d5833d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
-29 (-8.45 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T05] (  3,  3   )     ref  ->  r14         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r13         class-hnd single-def <System.Object>
-;  V03 arg3         [V03,T05] (  4,  3.50)     int  ->  r15         single-def
-;  V04 arg4         [V04,T08] (  3,  2.50)     int  ->  r12         single-def
+;  V02 arg2         [V02,T06] (  3,  3   )     ref  ->  r13         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T04] (  4,  3.50)     int  ->  r15         single-def
+;  V04 arg4         [V04,T07] (  3,  2.50)     int  ->  r12         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V06 tmp1         [V06,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V07 tmp2         [V07,T03] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V08 tmp3         [V08,T09] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V09 tmp4         [V09,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
+;  V08 tmp3         [V08,T08] (  2,  4   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V09 tmp4         [V09    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V10 tmp5         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V11 tmp6         [V11,T04] (  3,  6   )    long  ->  rdi         "index expr"
-;  V12 cse0         [V12,T10] (  2,  2   )     ref  ->  r13         "CSE #01: moderate"
+;  V11 tmp6         [V11,T13] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V12 tmp7         [V12,T01] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V13 tmp8         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V14 tmp9         [V14,T09] (  2,  4   )    long  ->  rdi         "index expr"
+;  V15 cse0         [V15,T12] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V16 cse1         [V16,T14] (  2,  2   )     ref  ->  r13         "CSE #02: moderate"
+;  V17 rat0         [V17,T10] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V18 rat1         [V18,T11] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M13954_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r14, rdi
        mov      rbx, rsi
        mov      r13, rdx
        mov      r15d, ecx
        mov      r12d, r8d
-						;; size=38 bbWeight=1 PerfScore 9.75
+						;; size=31 bbWeight=1 PerfScore 8.75
 G_M13954_IG02:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, gword ptr [rbp-0x38]
+       mov      rbx, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [rbx+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r13, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r13
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r13, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=131 bbWeight=1 PerfScore 20.00
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M13954_IG04
+						;; size=159 bbWeight=1 PerfScore 27.50
 G_M13954_IG03:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M13954_IG09
-       mov      r13, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M13954_IG05
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M13954_IG04:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M13954_IG05:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r13+8*rdi+0x10]
-       mov      rbx, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      SHORT G_M13954_IG08
-						;; size=72 bbWeight=1 PerfScore 16.00
-G_M13954_IG04:
        cmp      r15d, -1
-       je       SHORT G_M13954_IG06
-						;; size=6 bbWeight=1 PerfScore 1.25
-G_M13954_IG05:
+       je       SHORT G_M13954_IG07
+						;; size=26 bbWeight=1 PerfScore 5.25
+G_M13954_IG06:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r12d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=21 bbWeight=0.50 PerfScore 2.00
-G_M13954_IG06:
+G_M13954_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r14, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 6.25
-G_M13954_IG07:
-       add      rsp, 24
+						;; size=43 bbWeight=1 PerfScore 5.25
+G_M13954_IG08:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M13954_IG08:
-       call     CORINFO_HELP_POLL_GC
-       jmp      SHORT G_M13954_IG04
-						;; size=7 bbWeight=0 PerfScore 0.00
-G_M13954_IG09:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 343, prolog size 22, PerfScore 59.50, instruction count 86, allocated bytes for code 343 (MethodHash=3f9bc97d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
+; Total bytes of code 314, prolog size 16, PerfScore 56.00, instruction count 80, allocated bytes for code 314 (MethodHash=3f9bc97d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <double[]>
 ;  V04 loc2         [V04,T14] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T18] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T30] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T31] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T32] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T33] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T19] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T20] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T21] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T36] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T40] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <double[]>
-;  V25 tmp16        [V25,T22] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T23] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <double[]>
-;  V28 tmp19        [V28,T24] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T25] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T32] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T34] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T33] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <double[]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <double[]>
-;  V48 tmp39        [V48,T26] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T37] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T35] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T38] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T29] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T17] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V40 tmp31        [V40,T37] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T17] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T35] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <double[]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <double[]>
+;  V51 tmp42        [V51,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T38] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T41] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T39] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T42] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T30] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T31] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M10898_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M10898_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 14
        jle      G_M10898_IG29
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x70]
        test     rax, rax
        je       G_M10898_IG29
-						;; size=87 bbWeight=1 PerfScore 19.50
+						;; size=83 bbWeight=1 PerfScore 18.50
 G_M10898_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M10898_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M10898_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M10898_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M10898_IG25
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M10898_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M10898_IG08
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M10898_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M10898_IG21
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M10898_IG06:
        mov      rax, 0xD1FFAB1E      ; 'System.Double[]'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M10898_IG07:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M10898_IG08:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M10898_IG20
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M10898_IG09
+       sar      ebx, 16
+       jmp      SHORT G_M10898_IG10
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M10898_IG09:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M10898_IG30
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M10898_IG10:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M10898_IG31
+       je       G_M10898_IG30
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M10898_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M10898_IG17
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M10898_IG12:
-       cmp      ebx, r14d
-       jae      G_M10898_IG32
+       cmp      ebx, ecx
+       jae      G_M10898_IG31
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M10898_IG14
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M10898_IG13:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M10898_IG14:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M10898_IG18
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M10898_IG16
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M10898_IG15:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M10898_IG16:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M10898_IG12
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M10898_IG17:
        xor      rcx, rcx
        jmp      SHORT G_M10898_IG19
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M10898_IG18:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M10898_IG19:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M10898_IG24
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M10898_IG20:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M10898_IG21:
        cmp      ebx, 256
        jl       SHORT G_M10898_IG22
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; double[]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M10898_IG23
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M10898_IG22:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; double[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M10898_IG23:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M10898_IG26
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M10898_IG26
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M10898_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M10898_IG26
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M10898_IG26
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M10898_IG25:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M10898_IG28
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M10898_IG26:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M10898_IG27:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M10898_IG28:
        mov      r12, rbx
        jmp      SHORT G_M10898_IG26
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M10898_IG29:
        mov      edi, 14
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M10898_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M10898_IG30:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M10898_IG10
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M10898_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M10898_IG11
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M10898_IG32:
+G_M10898_IG31:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 931, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 931 (MethodHash=44d5d56d) for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
+; Total bytes of code 913, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 913 (MethodHash=44d5d56d) for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <long[]>
 ;  V04 loc2         [V04,T14] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T18] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T30] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T31] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T32] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T33] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T19] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T20] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T21] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T36] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T40] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <long[]>
-;  V25 tmp16        [V25,T22] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T23] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <long[]>
-;  V28 tmp19        [V28,T24] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T25] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T32] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T34] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T33] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <long[]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <long[]>
-;  V48 tmp39        [V48,T26] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T37] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T35] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T38] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T29] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T17] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V40 tmp31        [V40,T37] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T17] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T35] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <long[]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <long[]>
+;  V51 tmp42        [V51,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T38] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T41] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T39] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T42] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T30] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T31] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M38034_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M38034_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 16
        jle      G_M38034_IG29
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x80]
        test     rax, rax
        je       G_M38034_IG29
-						;; size=90 bbWeight=1 PerfScore 19.50
+						;; size=86 bbWeight=1 PerfScore 18.50
 G_M38034_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M38034_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M38034_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M38034_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M38034_IG25
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M38034_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M38034_IG08
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M38034_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M38034_IG21
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M38034_IG06:
        mov      rax, 0xD1FFAB1E      ; 'System.Int64[]'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M38034_IG07:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M38034_IG08:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M38034_IG20
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M38034_IG09
+       sar      ebx, 16
+       jmp      SHORT G_M38034_IG10
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M38034_IG09:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M38034_IG30
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M38034_IG10:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M38034_IG31
+       je       G_M38034_IG30
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M38034_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M38034_IG17
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M38034_IG12:
-       cmp      ebx, r14d
-       jae      G_M38034_IG32
+       cmp      ebx, ecx
+       jae      G_M38034_IG31
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M38034_IG14
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M38034_IG13:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M38034_IG14:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M38034_IG18
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M38034_IG16
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M38034_IG15:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M38034_IG16:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M38034_IG12
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M38034_IG17:
        xor      rcx, rcx
        jmp      SHORT G_M38034_IG19
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M38034_IG18:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M38034_IG19:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M38034_IG24
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M38034_IG20:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M38034_IG21:
        cmp      ebx, 256
        jl       SHORT G_M38034_IG22
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; long[]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M38034_IG23
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M38034_IG22:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; long[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M38034_IG23:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M38034_IG26
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M38034_IG26
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M38034_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M38034_IG26
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M38034_IG26
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M38034_IG25:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M38034_IG28
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M38034_IG26:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M38034_IG27:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M38034_IG28:
        mov      r12, rbx
        jmp      SHORT G_M38034_IG26
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M38034_IG29:
        mov      edi, 16
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M38034_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M38034_IG30:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M38034_IG10
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M38034_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M38034_IG11
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M38034_IG32:
+G_M38034_IG31:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 934, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 934 (MethodHash=287b6b6d) for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
+; Total bytes of code 916, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 916 (MethodHash=287b6b6d) for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <short[]>
 ;  V04 loc2         [V04,T14] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T18] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T30] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T31] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T32] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T33] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T19] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T20] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T21] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T36] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T40] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <short[]>
-;  V25 tmp16        [V25,T22] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T23] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <short[]>
-;  V28 tmp19        [V28,T24] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T25] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T32] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T34] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T33] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <short[]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <short[]>
-;  V48 tmp39        [V48,T26] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T37] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T35] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T38] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T29] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T17] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V40 tmp31        [V40,T37] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T17] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T35] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <short[]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <short[]>
+;  V51 tmp42        [V51,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T38] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T41] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T39] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T42] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T30] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T31] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M58514_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M58514_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 13
        jle      G_M58514_IG29
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x68]
        test     rax, rax
        je       G_M58514_IG29
-						;; size=87 bbWeight=1 PerfScore 19.50
+						;; size=83 bbWeight=1 PerfScore 18.50
 G_M58514_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M58514_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M58514_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M58514_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M58514_IG25
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M58514_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M58514_IG08
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M58514_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M58514_IG21
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M58514_IG06:
        mov      rax, 0xD1FFAB1E      ; 'System.Int16[]'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M58514_IG07:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M58514_IG08:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M58514_IG20
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M58514_IG09
+       sar      ebx, 16
+       jmp      SHORT G_M58514_IG10
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M58514_IG09:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M58514_IG30
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M58514_IG10:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M58514_IG31
+       je       G_M58514_IG30
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M58514_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M58514_IG17
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M58514_IG12:
-       cmp      ebx, r14d
-       jae      G_M58514_IG32
+       cmp      ebx, ecx
+       jae      G_M58514_IG31
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M58514_IG14
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M58514_IG13:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M58514_IG14:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M58514_IG18
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M58514_IG16
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M58514_IG15:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M58514_IG16:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M58514_IG12
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M58514_IG17:
        xor      rcx, rcx
        jmp      SHORT G_M58514_IG19
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M58514_IG18:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M58514_IG19:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M58514_IG24
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M58514_IG20:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M58514_IG21:
        cmp      ebx, 0x400
        jl       SHORT G_M58514_IG22
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; short[]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M58514_IG23
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M58514_IG22:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; short[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M58514_IG23:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M58514_IG26
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M58514_IG26
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M58514_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M58514_IG26
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M58514_IG26
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M58514_IG25:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M58514_IG28
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M58514_IG26:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M58514_IG27:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M58514_IG28:
        mov      r12, rbx
        jmp      SHORT G_M58514_IG26
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M58514_IG29:
        mov      edi, 13
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M58514_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M58514_IG30:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M58514_IG10
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M58514_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M58514_IG11
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M58514_IG32:
+G_M58514_IG31:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 931, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 931 (MethodHash=7c1a1b6d) for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
+; Total bytes of code 913, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 913 (MethodHash=7c1a1b6d) for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
-18 (-1.91 % of base) - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T17] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T17] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <System.Nullable`1[int][]>
 ;  V04 loc2         [V04,T15] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T31] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T32] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T35] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T20] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T33] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T34] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T37] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T21] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T22] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T23] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T37] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T41] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Nullable`1[int][]>
-;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T24] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T25] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Nullable`1[int][]>
-;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T26] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T27] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T33] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T16] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T35] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T16] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T34] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <System.Nullable`1[int][]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Nullable`1[int][]>
-;  V48 tmp39        [V48,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T38] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T36] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T39] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T30] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
-;  V60 rat4         [V60,T14] (  3,  6   )     int  ->  rsi         "ReplaceWithLclVar is creating a new local variable"
+;  V40 tmp31        [V40,T38] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T18] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T36] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <System.Nullable`1[int][]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Nullable`1[int][]>
+;  V51 tmp42        [V51,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T30] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T39] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T42] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T40] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T43] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T19] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T31] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T32] (  2,  2   )    long  ->  rax         "TLS access"
+;  V65 rat5         [V65,T14] (  3,  6   )     int  ->  rsi         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M14930_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M14930_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 17
        jle      G_M14930_IG29
        mov      rdi, gword ptr [rax+0x08]
        mov      esi, 8
        mov      eax, esi
        shl      eax, 4
        add      eax, esi
        mov      rax, bword ptr [rdi+rax]
        test     rax, rax
        je       G_M14930_IG29
-						;; size=99 bbWeight=1 PerfScore 20.75
+						;; size=95 bbWeight=1 PerfScore 19.75
 G_M14930_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M14930_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M14930_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M14930_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M14930_IG25
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M14930_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M14930_IG08
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M14930_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M14930_IG21
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M14930_IG06:
        mov      rax, 0xD1FFAB1E      ; 'System.Nullable`1[System.Int32][]'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M14930_IG07:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M14930_IG08:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M14930_IG20
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M14930_IG09
+       sar      ebx, 16
+       jmp      SHORT G_M14930_IG10
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M14930_IG09:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M14930_IG30
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M14930_IG10:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M14930_IG31
+       je       G_M14930_IG30
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M14930_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M14930_IG17
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M14930_IG12:
-       cmp      ebx, r14d
-       jae      G_M14930_IG32
+       cmp      ebx, ecx
+       jae      G_M14930_IG31
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M14930_IG14
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M14930_IG13:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M14930_IG14:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M14930_IG18
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M14930_IG16
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M14930_IG15:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M14930_IG16:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M14930_IG12
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M14930_IG17:
        xor      rcx, rcx
        jmp      SHORT G_M14930_IG19
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M14930_IG18:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M14930_IG19:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M14930_IG24
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M14930_IG20:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M14930_IG21:
        cmp      ebx, 256
        jl       SHORT G_M14930_IG22
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; System.Nullable`1[int][]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M14930_IG23
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M14930_IG22:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; System.Nullable`1[int][]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M14930_IG23:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M14930_IG26
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M14930_IG26
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M14930_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M14930_IG26
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M14930_IG26
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M14930_IG25:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M14930_IG28
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M14930_IG26:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M14930_IG27:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M14930_IG28:
        mov      r12, rbx
        jmp      SHORT G_M14930_IG26
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M14930_IG29:
        mov      edi, 17
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M14930_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M14930_IG30:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M14930_IG10
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M14930_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M14930_IG11
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M14930_IG32:
+G_M14930_IG31:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 943, prolog size 27, PerfScore 229.44, instruction count 246, allocated bytes for code 943 (MethodHash=5baac5ad) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
+; Total bytes of code 925, prolog size 24, PerfScore 239.94, instruction count 247, allocated bytes for code 925 (MethodHash=5baac5ad) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment