Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created July 4, 2024 20:47
Show Gist options
  • Save MihuBot/409c5832cba6c3090e35eaa62df170a6 to your computer and use it in GitHub Desktop.
Save MihuBot/409c5832cba6c3090e35eaa62df170a6 to your computer and use it in GitHub Desktop.

Top method regressions

20 (3.05 % of base) - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this
 ; Assembly listing for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  4,  3   )     ref  ->  r14         this class-hnd single-def <System.Globalization.GregorianCalendarHelper>
+;  V00 this         [V00,T11] (  4,  3   )     ref  ->  r14         this class-hnd single-def <System.Globalization.GregorianCalendarHelper>
 ;  V01 arg1         [V01,T07] (  6,  4.50)     int  ->  rbx         single-def
 ;  V02 arg2         [V02,T06] (  5,  7   )     int  ->  rdx        
 ;  V03 arg3         [V03,T08] (  5,  3.50)   ubyte  ->  r15         single-def
 ;  V04 loc0         [V04,T05] (  5,  9   )     ref  ->  r14         class-hnd exact single-def <System.Globalization.EraInfo[]>
 ;  V05 loc1         [V05,T14] (  2,  1   )     int  ->  r13        
 ;  V06 loc2         [V06,T04] (  8, 10   )     ref  ->  [rbp-0x30]  class-hnd exact <System.Globalization.EraInfo>
 ;  V07 loc3         [V07,T02] (  7, 12.50)     int  ->  rbx        
 ;  V08 loc4         [V08,T00] ( 12, 17.29)     int  ->  r13        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V10 tmp1         [V10,T17] (  3,  0   )     ref  ->  r15         class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V11 tmp2         [V11,T22] (  2,  0   )     ref  ->  r14         class-hnd exact "impImportAndPushBox" <System.String>
 ;  V12 tmp3         [V12,T18] (  3,  0   )     ref  ->  r13         class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V13 tmp4         [V13,T19] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V14 tmp5         [V14,T20] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V15 tmp6         [V15,T21] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V16 tmp7         [V16,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V17 tmp8         [V17,T11] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V16 tmp7         [V16,T10] (  5,  5   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Globalization.Calendar>
+;  V17 tmp8         [V17,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V18 tmp9         [V18,T23] (  2,  0   )     ref  ->  r12         "argument with side effect"
 ;  V19 tmp10        [V19,T24] (  2,  0   )     ref  ->  rdx         "argument with side effect"
 ;  V20 tmp11        [V20,T25] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
 ;  V21 tmp12        [V21,T26] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V22 tmp13        [V22,T27] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
 ;  V23 tmp14        [V23,T28] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V24 cse0         [V24,T16] (  3,  0.12)     int  ->  rdi         "CSE #10: conservative"
 ;  V25 cse1         [V25,T03] (  3, 11.88)     int  ->  rdi         "CSE #06: aggressive"
 ;  V26 cse2         [V26,T15] (  3,  1.50)     int  ->  rdi         "CSE #03: moderate"
 ;  V27 cse3         [V27,T09] (  5,  5.29)     int  ->  r12         "CSE #01: aggressive"
 ;  V28 cse4         [V28,T13] (  3,  1.50)   byref  ->  rsi         "CSE #02: moderate"
 ;  V29 rat0         [V29,T01] (  6, 17   )    long  ->  r13         "Widened IV V05"
 ;
 ; Lcl frame size = 8
 
 G_M29959_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      r14, rdi
        mov      ebx, esi
        mov      r15d, ecx
 						;; size=24 bbWeight=1 PerfScore 8.25
 G_M29959_IG02:
        test     ebx, ebx
        jge      SHORT G_M29959_IG06
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M29959_IG03:
        test     r15b, r15b
-       jne      G_M29959_IG27
+       jne      G_M29959_IG28
 						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M29959_IG04:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M29959_IG05:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M29959_IG06:
        test     edx, edx
+       jne      SHORT G_M29959_IG08
+       mov      r13, gword ptr [r14+0x08]
+       cmp      dword ptr [r13+0x08], -1
        jne      SHORT G_M29959_IG07
-       mov      rdi, gword ptr [r14+0x08]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      edx, eax
-						;; size=20 bbWeight=0.50 PerfScore 5.25
+       mov      rdi, r13
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [r13+0x08], eax
+						;; size=34 bbWeight=0.50 PerfScore 5.88
 G_M29959_IG07:
+       mov      edx, dword ptr [r13+0x08]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M29959_IG08:
        mov      r14, gword ptr [r14+0x10]
        xor      r13d, r13d
        mov      r12d, dword ptr [r14+0x08]
        test     r12d, r12d
-       jle      SHORT G_M29959_IG13
-       align    [3 bytes for IG08]
-						;; size=19 bbWeight=0.50 PerfScore 2.88
-G_M29959_IG08:
+       jle      SHORT G_M29959_IG14
+       align    [1 bytes for IG09]
+						;; size=17 bbWeight=0.50 PerfScore 2.88
+G_M29959_IG09:
        mov      rcx, gword ptr [r14+8*r13+0x10]
        cmp      edx, dword ptr [rcx+0x28]
-       jne      SHORT G_M29959_IG12
+       jne      SHORT G_M29959_IG13
 						;; size=10 bbWeight=4 PerfScore 24.00
-G_M29959_IG09:
+G_M29959_IG10:
        cmp      ebx, dword ptr [rcx+0x30]
-       jl       SHORT G_M29959_IG20
+       jl       SHORT G_M29959_IG21
        cmp      ebx, dword ptr [rcx+0x34]
-       jg       SHORT G_M29959_IG14
+       jg       SHORT G_M29959_IG15
 						;; size=10 bbWeight=0.50 PerfScore 4.00
-G_M29959_IG10:
+G_M29959_IG11:
        mov      eax, dword ptr [rcx+0x2C]
 						;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M29959_IG11:
+G_M29959_IG12:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29959_IG12:
+G_M29959_IG13:
        lea      ecx, [r13+0x01]
        mov      r13d, ecx
        cmp      r12d, r13d
-       jg       SHORT G_M29959_IG08
+       jg       SHORT G_M29959_IG09
 						;; size=12 bbWeight=4 PerfScore 8.00
-G_M29959_IG13:
-       test     r15b, r15b
-       je       SHORT G_M29959_IG04
-       jmp      G_M29959_IG25
-						;; size=10 bbWeight=0.50 PerfScore 1.62
 G_M29959_IG14:
+       test     r15b, r15b
+       je       G_M29959_IG04
+       jmp      G_M29959_IG26
+						;; size=14 bbWeight=0.50 PerfScore 1.62
+G_M29959_IG15:
        mov      rsi, 0xD1FFAB1E      ; static handle
        mov      edi, dword ptr [rsi]
        test     edi, edi
-       jge      SHORT G_M29959_IG22
+       jge      SHORT G_M29959_IG23
 						;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M29959_IG15:
+G_M29959_IG16:
        mov      gword ptr [rbp-0x30], rcx
        sub      ebx, dword ptr [rcx+0x34]
        dec      r13d
-       js       SHORT G_M29959_IG18
+       js       SHORT G_M29959_IG19
 						;; size=12 bbWeight=0.50 PerfScore 2.62
-G_M29959_IG16:
+G_M29959_IG17:
        cmp      r12d, r13d
-       jle      SHORT G_M29959_IG23
-       align    [0 bytes for IG17]
+       jle      SHORT G_M29959_IG24
+       align    [0 bytes for IG18]
 						;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M29959_IG17:
+G_M29959_IG18:
        mov      edi, r13d
        mov      rsi, gword ptr [r14+8*rdi+0x10]
        mov      edi, dword ptr [rsi+0x34]
        cmp      edi, ebx
        mov      rcx, gword ptr [rbp-0x30]
-       jl       SHORT G_M29959_IG19
-       jmp      SHORT G_M29959_IG10
+       jl       SHORT G_M29959_IG20
+       jmp      SHORT G_M29959_IG11
 						;; size=21 bbWeight=3.96 PerfScore 33.66
-G_M29959_IG18:
+G_M29959_IG19:
        mov      rcx, gword ptr [rbp-0x30]
-       jmp      SHORT G_M29959_IG20
+       jmp      SHORT G_M29959_IG21
 						;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M29959_IG19:
+G_M29959_IG20:
        sub      ebx, edi
        dec      r13d
-       jns      SHORT G_M29959_IG21
+       jns      SHORT G_M29959_IG22
 						;; size=7 bbWeight=3.96 PerfScore 5.94
-G_M29959_IG20:
+G_M29959_IG21:
        test     r15b, r15b
-       je       SHORT G_M29959_IG13
-       jmp      G_M29959_IG26
+       je       SHORT G_M29959_IG14
+       jmp      G_M29959_IG27
 						;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M29959_IG21:
+G_M29959_IG22:
        mov      gword ptr [rbp-0x30], rcx
-       jmp      SHORT G_M29959_IG17
+       jmp      SHORT G_M29959_IG18
 						;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M29959_IG22:
+G_M29959_IG23:
        test     edi, edi
-       jg       SHORT G_M29959_IG20
+       jg       SHORT G_M29959_IG21
        mov      gword ptr [rbp-0x30], rcx
        mov      rdi, 0xD1FFAB1E      ; 'Switch.System.Globalization.EnforceJapaneseEraYearRanges'
        mov      rax, 0xD1FFAB1E      ; code for System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte
        call     [rax]System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte
        test     eax, eax
        mov      rcx, gword ptr [rbp-0x30]
-       jne      SHORT G_M29959_IG20
-       jmp      SHORT G_M29959_IG15
+       jne      SHORT G_M29959_IG21
+       jmp      SHORT G_M29959_IG16
 						;; size=40 bbWeight=0.50 PerfScore 5.00
-G_M29959_IG23:
+G_M29959_IG24:
        cmp      r13d, r12d
-       jae      G_M29959_IG28
+       jae      G_M29959_IG29
        mov      edi, r13d
        mov      rdi, gword ptr [r14+8*rdi+0x10]
        mov      edi, dword ptr [rdi+0x34]
        cmp      edi, ebx
        mov      rcx, gword ptr [rbp-0x30]
-       jge      G_M29959_IG10
+       jge      G_M29959_IG11
        sub      ebx, edi
        dec      r13d
-       js       SHORT G_M29959_IG20
+       js       SHORT G_M29959_IG21
 						;; size=39 bbWeight=0.04 PerfScore 0.37
-G_M29959_IG24:
+G_M29959_IG25:
        mov      gword ptr [rbp-0x30], rcx
-       jmp      SHORT G_M29959_IG23
+       jmp      SHORT G_M29959_IG24
 						;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M29959_IG25:
+G_M29959_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r15, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
-G_M29959_IG26:
+G_M29959_IG27:
        mov      rbx, rcx
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_Range():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_Range():System.String
        mov      r14, rax
        mov      edi, dword ptr [rbx+0x30]
        mov      dword ptr [r15+0x08], edi
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      edi, dword ptr [rbx+0x34]
        mov      dword ptr [r13+0x08], edi
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x1407
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r12, rax
        mov      rdx, r13
        mov      rsi, r15
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object,System.Object):System.String
        mov      rdx, rax
        mov      rsi, r12
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=160 bbWeight=0 PerfScore 0.00
-G_M29959_IG27:
+G_M29959_IG28:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x1407
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r15, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
-G_M29959_IG28:
+G_M29959_IG29:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 656, prolog size 24, PerfScore 119.28, instruction count 181, allocated bytes for code 664 (MethodHash=7b408af8) for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
+; Total bytes of code 676, prolog size 24, PerfScore 120.91, instruction count 184, allocated bytes for code 680 (MethodHash=7b408af8) for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
15 (6.41 % of base) - System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this
 ; Assembly listing for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  6,  4.50)     ref  ->  r15         this class-hnd single-def <System.Globalization.DateTimeFormatInfo>
 ;  V01 arg1         [V01,T00] ( 10,  5.50)     int  ->  rbx        
 ;  V02 loc0         [V02,T03] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.String[]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V05 tmp2         [V05,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V06 tmp3         [V06,T02] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V06 tmp3         [V06,T02] (  5,  5   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Globalization.Calendar>
 ;  V07 tmp4         [V07,T07] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
 ;  V08 tmp5         [V08,T08] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
 ;  V09 cse0         [V09,T04] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M35548_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      r15, rdi
        mov      ebx, esi
 						;; size=17 bbWeight=1 PerfScore 6.00
 G_M35548_IG02:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:get_AbbreviatedEraNames():System.String[]:this
        call     [rax]System.Globalization.DateTimeFormatInfo:get_AbbreviatedEraNames():System.String[]:this
        cmp      dword ptr [rax+0x08], 0
        jne      SHORT G_M35548_IG05
 						;; size=21 bbWeight=1 PerfScore 7.50
 G_M35548_IG03:
        mov      rdi, r15
        mov      esi, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this
 						;; size=15 bbWeight=0.50 PerfScore 0.38
 G_M35548_IG04:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this
 						;; size=13 bbWeight=0.50 PerfScore 2.12
 G_M35548_IG05:
        test     ebx, ebx
+       jne      SHORT G_M35548_IG07
+       mov      rbx, gword ptr [r15+0x90]
+       cmp      dword ptr [rbx+0x08], -1
        jne      SHORT G_M35548_IG06
-       mov      rdi, gword ptr [r15+0x90]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      ebx, eax
-						;; size=23 bbWeight=0.50 PerfScore 5.25
+       mov      rdi, rbx
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [rbx+0x08], eax
+						;; size=35 bbWeight=0.50 PerfScore 5.88
 G_M35548_IG06:
+       mov      ebx, dword ptr [rbx+0x08]
+						;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M35548_IG07:
        mov      rax, gword ptr [r15+0x138]
        dec      ebx
        mov      edi, dword ptr [rax+0x08]
        cmp      edi, ebx
-       jbe      SHORT G_M35548_IG08
+       jbe      SHORT G_M35548_IG09
        mov      edi, ebx
        mov      rax, gword ptr [rax+8*rdi+0x10]
 						;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M35548_IG07:
+G_M35548_IG08:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M35548_IG08:
+G_M35548_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      edi, [rbx+0x01]
        mov      dword ptr [r15+0x08], edi
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=111 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 234, prolog size 12, PerfScore 26.75, instruction count 65, allocated bytes for code 234 (MethodHash=351f7523) for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts)
+; Total bytes of code 249, prolog size 12, PerfScore 28.38, instruction count 68, allocated bytes for code 249 (MethodHash=351f7523) for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts)
15 (7.77 % of base) - System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this
 ; Assembly listing for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Globalization.DateTimeFormatInfo>
 ;  V01 arg1         [V01,T00] (  9,  7.50)     int  ->  rbx        
-;  V02 loc0         [V02,T02] (  3,  3   )     ref  ->  rax         class-hnd exact single-def <System.String[]>
+;  V02 loc0         [V02,T03] (  3,  3   )     ref  ->  rax         class-hnd exact single-def <System.String[]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V05 tmp2         [V05,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V06 tmp3         [V06,T02] (  5,  5   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Globalization.Calendar>
 ;  V07 tmp4         [V07,T07] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
 ;  V08 tmp5         [V08,T08] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
 ;  V09 cse0         [V09,T04] (  2,  2   )     int  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M27329_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      r15, rdi
        mov      ebx, esi
 						;; size=17 bbWeight=1 PerfScore 6.00
 G_M27329_IG02:
        test     ebx, ebx
-       jne      SHORT G_M27329_IG04
+       jne      SHORT G_M27329_IG05
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M27329_IG03:
-       mov      rdi, gword ptr [r15+0x90]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      ebx, eax
-						;; size=19 bbWeight=0.50 PerfScore 4.62
+       mov      rbx, gword ptr [r15+0x90]
+       cmp      dword ptr [rbx+0x08], -1
+       jne      SHORT G_M27329_IG04
+       mov      rdi, rbx
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [rbx+0x08], eax
+						;; size=31 bbWeight=0.50 PerfScore 5.25
 G_M27329_IG04:
+       mov      ebx, dword ptr [rbx+0x08]
+						;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M27329_IG05:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:get_EraNames():System.String[]:this
        call     [rax]System.Globalization.DateTimeFormatInfo:get_EraNames():System.String[]:this
        dec      ebx
        mov      edi, dword ptr [rax+0x08]
        cmp      edi, ebx
-       jbe      SHORT G_M27329_IG06
+       jbe      SHORT G_M27329_IG07
        mov      edi, ebx
        mov      rax, gword ptr [rax+8*rdi+0x10]
 						;; size=31 bbWeight=1 PerfScore 9.25
-G_M27329_IG05:
+G_M27329_IG06:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=1 PerfScore 3.25
-G_M27329_IG06:
+G_M27329_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      edi, [rbx+0x01]
        mov      dword ptr [r15+0x08], edi
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=111 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 193, prolog size 12, PerfScore 24.38, instruction count 53, allocated bytes for code 193 (MethodHash=0b4d953e) for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts)
+; Total bytes of code 208, prolog size 12, PerfScore 26.00, instruction count 56, allocated bytes for code 208 (MethodHash=0b4d953e) for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts)
15 (3.18 % of base) - System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  9,  7   )     ref  ->  r14         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
+;  V00 this         [V00,T05] ( 11,  8   )     ref  ->  r14         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T08] (  4,  4   )     int  ->  r12         single-def
 ;  V02 arg2         [V02,T07] (  5,  4   )     int  ->  r13         single-def
 ;  V03 arg3         [V03,T10] (  4,  3.50)     int  ->  [rbp-0x2C]  single-def
 ;  V04 arg4         [V04,T04] ( 15, 10   )   byref  ->  r15         single-def
 ;  V05 arg5         [V05,T02] (  5, 11   )   byref  ->  rbx         single-def
 ;  V06 arg6         [V06,T23] (  1,  1   )   byref  ->  [rbp+0x10]  single-def
 ;  V07 loc0         [V07,T12] (  5,  3   )     int  ->  [rbp-0x30] 
 ;  V08 loc1         [V08,T15] (  4,  2.50)     int  ->  rax        
 ;  V09 loc2         [V09,T00] ( 14, 21   )     int  ->  [rbp-0x34] 
 ;  V10 loc3         [V10,T03] (  4, 13   )     int  ->  [rbp-0x38] 
 ;  V11 loc4         [V11,T09] (  3,  6   )     int  ->  rax        
 ;  V12 loc5         [V12,T01] (  5, 14   )     int  ->  rcx        
 ;* V13 loc6         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[int]>
 ;# V14 OutArgs      [V14    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V15 tmp1         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp2         [V16    ] (  0,  0   )     int  ->  zero-ref    "non-inline candidate call"
 ;* V17 tmp3         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp4         [V18    ] (  0,  0   )     int  ->  zero-ref   
 ;  V19 tmp5         [V19,T20] (  2,  1   )     int  ->  rsi        
 ;  V20 tmp6         [V20,T17] (  2,  2   )     int  ->  rcx        
 ;  V21 tmp7         [V21,T06] (  3,  8   )     int  ->  rcx        
 ;* V22 tmp8         [V22    ] (  0,  0   )     int  ->  zero-ref   
 ;* V23 tmp9         [V23    ] (  0,  0   )     int  ->  zero-ref   
 ;  V24 tmp10        [V24,T21] (  2,  1   )     int  ->  rsi        
 ;* V25 tmp11        [V25    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
 ;* V26 tmp12        [V26    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
 ;* V27 tmp13        [V27    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
 ;  V28 tmp14        [V28,T16] (  3,  2   )   byref  ->  rdi         "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V29 tmp15        [V29,T22] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
 ;  V30 tmp16        [V30,T18] (  2,  1   )   byref  ->  rdi         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
 ;* V31 tmp17        [V31,T24] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
 ;  V32 tmp18        [V32,T19] (  2,  1   )   byref  ->  rdi         single-def "field V26._reference (fldOffset=0x0)" P-INDEP
 ;* V33 tmp19        [V33,T25] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
 ;* V34 tmp20        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V27._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp21        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x8)" P-INDEP
-;  V36 cse0         [V36,T11] (  7,  5   )    long  ->  [rbp-0x40]  spill-single-def "CSE #04: moderate"
+;  V36 cse0         [V36,T11] (  7,  4   )    long  ->  [rbp-0x40]  multi-def "CSE #04: moderate"
 ;  V37 cse1         [V37,T13] (  3,  3   )     int  ->  rax         "CSE #01: moderate"
 ;  V38 cse2         [V38,T14] (  3,  3   )     int  ->  rcx         "CSE #05: moderate"
 ;
 ; Lcl frame size = 24
 
 G_M4131_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      dword ptr [rbp-0x2C], ecx
        mov      r14, rdi
        mov      r12d, esi
        mov      r13d, edx
        mov      r15, r8
        mov      rbx, r9
 						;; size=37 bbWeight=1 PerfScore 9.00
 G_M4131_IG02:
        mov      edi, r12d
        mov      rcx, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        call     [rcx]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        test     eax, eax
        jne      SHORT G_M4131_IG04
 						;; size=19 bbWeight=1 PerfScore 4.75
 G_M4131_IG03:
        mov      rdi, 0xD1FFAB1E      ; static handle
        jmp      SHORT G_M4131_IG05
        align    [0 bytes for IG11]
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M4131_IG04:
        mov      rdi, 0xD1FFAB1E      ; static handle
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M4131_IG05:
        lea      eax, [r13-0x01]
        cmp      eax, 12
        jae      G_M4131_IG17
        mov      ecx, dword ptr [rbp-0x2C]
        mov      edx, ecx
        add      edx, dword ptr [rdi+4*rax]
        mov      dword ptr [rbp-0x34], edx
        mov      dword ptr [r15], r12d
        mov      r12d, dword ptr [r15]
        mov      rdi, r14
        mov      rdx, qword ptr [r14]
        mov      rdx, qword ptr [rdx+0x78]
-       mov      qword ptr [rbp-0x40], rdx
-       call     [rdx+0x20]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
+       call     [rdx+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
        inc      eax
        cmp      r12d, eax
        jne      SHORT G_M4131_IG07
-						;; size=54 bbWeight=1 PerfScore 19.75
+						;; size=50 bbWeight=1 PerfScore 18.75
 G_M4131_IG06:
        dec      dword ptr [r15]
        mov      edi, dword ptr [r15]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        mov      esi, 366
        mov      edi, 365
        test     eax, eax
        cmove    esi, edi
        mov      r12d, dword ptr [rbp-0x34]
        add      r12d, esi
        jmp      SHORT G_M4131_IG09
 						;; size=42 bbWeight=0.50 PerfScore 6.25
 G_M4131_IG07:
        mov      esi, dword ptr [r15]
        mov      rdi, r14
        mov      edx, 1
-       mov      rax, qword ptr [rbp-0x40]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [r14]
+       mov      rax, qword ptr [rax+0x70]
+       mov      qword ptr [rbp-0x40], rax
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      dword ptr [rbp-0x30], eax
        mov      esi, dword ptr [r15]
        mov      rdi, r14
        mov      edx, 2
        mov      rcx, qword ptr [rbp-0x40]
-       call     [rcx]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       call     [rcx+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      ecx, dword ptr [rbp-0x30]
        cmp      r13d, ecx
        jl       SHORT G_M4131_IG08
        jne      SHORT G_M4131_IG10
        mov      r13d, dword ptr [rbp-0x2C]
        cmp      r13d, eax
        jge      SHORT G_M4131_IG10
-						;; size=56 bbWeight=0.50 PerfScore 9.75
+						;; size=65 bbWeight=0.50 PerfScore 11.75
 G_M4131_IG08:
        dec      dword ptr [r15]
        mov      edi, dword ptr [r15]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte
        mov      esi, 366
        mov      edi, 365
        test     eax, eax
        cmove    esi, edi
        mov      r12d, dword ptr [rbp-0x34]
        add      r12d, esi
 						;; size=40 bbWeight=0.50 PerfScore 5.25
 G_M4131_IG09:
        mov      esi, dword ptr [r15]
        mov      rdi, r14
        mov      edx, 1
-       mov      r13, qword ptr [rbp-0x40]
-       call     [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [r14]
+       mov      rcx, qword ptr [rax+0x70]
+       mov      r13, rcx
+       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      dword ptr [rbp-0x30], eax
        mov      esi, dword ptr [r15]
        mov      rdi, r14
        mov      edx, 2
-       call     [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      dword ptr [rbp-0x34], r12d
+       mov      qword ptr [rbp-0x40], r13
        mov      ecx, dword ptr [rbp-0x30]
-						;; size=44 bbWeight=0.50 PerfScore 7.50
+						;; size=54 bbWeight=0.50 PerfScore 9.62
 G_M4131_IG10:
        dec      ecx
        cmp      ecx, 12
        jae      G_M4131_IG17
        mov      esi, ecx
        mov      rdi, 0xD1FFAB1E      ; static handle
        mov      r12d, dword ptr [rbp-0x34]
        sub      r12d, dword ptr [rdi+4*rsi]
        dec      eax
        sub      r12d, eax
        mov      dword ptr [rbp-0x38], 0x8000
        mov      esi, dword ptr [r15]
        mov      rdi, r14
        mov      edx, 3
        mov      r13, qword ptr [rbp-0x40]
-       call     [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      ecx, 30
        mov      edx, 29
        test     eax, 0x8000
        cmove    ecx, edx
        mov      dword ptr [rbx], 1
        cmp      r12d, ecx
        jle      SHORT G_M4131_IG15
 						;; size=91 bbWeight=1 PerfScore 17.25
 G_M4131_IG11:
        sub      r12d, ecx
        inc      dword ptr [rbx]
        mov      r15d, dword ptr [rbp-0x38]
        sar      r15d, 1
        test     eax, r15d
        jne      SHORT G_M4131_IG13
 						;; size=17 bbWeight=4 PerfScore 24.00
 G_M4131_IG12:
        mov      ecx, 29
        jmp      SHORT G_M4131_IG14
 						;; size=7 bbWeight=2 PerfScore 4.50
 G_M4131_IG13:
        mov      ecx, 30
 						;; size=5 bbWeight=2 PerfScore 0.50
 G_M4131_IG14:
        cmp      r12d, ecx
        mov      dword ptr [rbp-0x38], r15d
        jg       SHORT G_M4131_IG11
 						;; size=9 bbWeight=4 PerfScore 9.00
 G_M4131_IG15:
        mov      rbx, bword ptr [rbp+0x10]
        mov      dword ptr [rbx], r12d
 						;; size=7 bbWeight=1 PerfScore 2.00
 G_M4131_IG16:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M4131_IG17:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 471, prolog size 37, PerfScore 125.00, instruction count 137, allocated bytes for code 471 (MethodHash=2499efdc) for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts)
+; Total bytes of code 486, prolog size 37, PerfScore 128.12, instruction count 141, allocated bytes for code 486 (MethodHash=2499efdc) for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts)
12 (5.66 % of base) - System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  9,  8   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
+;  V00 this         [V00,T00] ( 11,  9   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  7,  5.50)     int  ->  r15        
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
 ;  V04 tmp2         [V04,T07] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V05 tmp3         [V05,T08] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;* V06 tmp4         [V06    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
 ;  V07 tmp5         [V07,T05] (  2,  2   )    long  ->  rsi         "field V03._dateData (fldOffset=0x0)" P-INDEP
 ;  V08 tmp6         [V08,T06] (  2,  2   )    long  ->  rsi         "field V06._dateData (fldOffset=0x0)" P-INDEP
 ;  V09 tmp7         [V09,T09] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
 ;  V10 tmp8         [V10,T10] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V11 cse0         [V11,T03] (  3,  3   )    long  ->  r13         "CSE #02: aggressive"
-;  V12 cse1         [V12,T04] (  3,  3   )    long  ->  r14         "CSE #03: aggressive"
-;  V13 cse2         [V13,T02] (  5,  4   )    long  ->  r14         multi-def "CSE #01: aggressive"
+;  V11 cse0         [V11,T02] (  3,  3   )    long  ->  r13         "CSE #02: aggressive"
+;  V12 cse1         [V12,T03] (  3,  3   )    long  ->  r14         "CSE #03: aggressive"
+;  V13 cse2         [V13,T04] (  3,  3   )    long  ->  r14         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M54329_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
 						;; size=19 bbWeight=1 PerfScore 6.00
 G_M54329_IG02:
        test     r15d, r15d
-       jne      SHORT G_M54329_IG04
+       jne      SHORT G_M54329_IG05
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M54329_IG03:
+       cmp      dword ptr [rbx+0x08], -1
+       jne      SHORT G_M54329_IG04
        mov      rdi, rbx
-       mov      r14, qword ptr [rbx]
-       mov      rax, qword ptr [r14+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      r15d, eax
-						;; size=16 bbWeight=0.50 PerfScore 3.75
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [rbx+0x08], eax
+						;; size=24 bbWeight=0.50 PerfScore 4.25
 G_M54329_IG04:
+       mov      r15d, dword ptr [rbx+0x08]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M54329_IG05:
        mov      rdi, rbx
        mov      r14, qword ptr [rbx]
        mov      r13, qword ptr [r14+0x78]
-       call     [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
+       call     [r13+0x28]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
        mov      rsi, rax
        mov      rdi, rbx
        mov      r14, qword ptr [r14+0x58]
-       call     [r14+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this
+       call     [r14+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this
        cmp      eax, r15d
-       jg       SHORT G_M54329_IG06
+       jg       SHORT G_M54329_IG07
        mov      rdi, rbx
-       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
+       call     [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
        mov      rsi, rax
        mov      rdi, rbx
-       call     [r14+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this
+       call     [r14+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this
        cmp      eax, r15d
-       jl       SHORT G_M54329_IG06
+       jl       SHORT G_M54329_IG07
 						;; size=55 bbWeight=1 PerfScore 22.00
-G_M54329_IG05:
+G_M54329_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.50
-G_M54329_IG06:
+G_M54329_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      dword ptr [rbx+0x08], r15d
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, rbx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=108 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 212, prolog size 13, PerfScore 36.50, instruction count 60, allocated bytes for code 212 (MethodHash=49422bc6) for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts)
+; Total bytes of code 224, prolog size 13, PerfScore 38.00, instruction count 62, allocated bytes for code 224 (MethodHash=49422bc6) for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts)
1 (0.05 % of base) - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
 ; Assembly listing for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 34 single block inlinees; 18 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
 ;  V02 arg2         [V02,T16] (  8,  8   )     int  ->  rbx         single-def
 ;  V03 arg3         [V03    ] ( 10, 41   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.Globalization.DateTimeFormatInfo>
 ;  V04 arg4         [V04,T06] ( 43, 73   )   byref  ->  [rbp+0x10]  EH-live single-def
 ;  V05 loc0         [V05    ] ( 29, 91   )  struct (24) [rbp-0x48]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.ParsingInfo>
 ;  V06 loc1         [V06    ] ( 22,178   )  struct (32) [rbp-0x68]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.__DTString>
 ;  V07 loc2         [V07    ] ( 25,740   )  struct (32) [rbp-0x88]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.__DTString>
 ;  V08 loc3         [V08,T36] (  3,  3   )   ubyte  ->  r15        
 ;  V09 loc4         [V09,T30] (  4,  4   )  ushort  ->  rdi        
 ;  V10 loc5         [V10,T37] (  3,  3   )     int  ->  rsi        
 ;* V11 loc6         [V11,T56] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[Z] EH-live
 ;  V12 OutArgs      [V12    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V13 tmp1         [V13    ] (  0,  0   )     int  ->  zero-ref    "dup spill"
 ;  V14 tmp2         [V14,T38] (  3,  3   )     int  ->  rsi        
 ;* V15 tmp3         [V15    ] (  0,  0   )     int  ->  zero-ref    "non-inline candidate call"
 ;* V16 tmp4         [V16    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V17 tmp5         [V17    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;  V18 tmp6         [V18,T50] (  2,  2   )     int  ->  rdi        
 ;* V19 tmp7         [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impSpillSpecialSideEff" <System.ArgumentOutOfRangeException>
 ;  V20 tmp8         [V20,T31] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;  V21 tmp9         [V21,T32] (  2,  4   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Globalization.Calendar>
 ;* V22 tmp10        [V22    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V23 tmp11        [V23    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V24 tmp12        [V24,T18] (  4,  8   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V25 tmp13        [V25    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V26 tmp14        [V26    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V27 tmp15        [V27,T33] (  2,  4   )   byref  ->  r15         single-def "Inlining Arg"
 ;  V28 tmp16        [V28,T34] (  2,  4   )     int  ->  r12         "Inlining Arg"
 ;* V29 tmp17        [V29    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V30 tmp18        [V30,T19] (  4,  8   )     ref  ->  [rbp-0x90]  class-hnd exact spill-single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;  V31 tmp19        [V31,T39] (  3,  3   )     int  ->  rax         "Inline return value spill temp"
 ;  V32 tmp20        [V32,T20] (  4,  8   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;  V33 tmp21        [V33,T40] (  3,  3   )     int  ->  rax         "Inline return value spill temp"
 ;* V34 tmp22        [V34    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V35 tmp23        [V35,T09] (  3, 48   )     int  ->  rax         "Span.get_Item index"
 ;  V36 tmp24        [V36,T21] (  2,  8   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V37 tmp25        [V37,T07] (  4, 48   )  ushort  ->  rdi         "Inlining Arg"
 ;* V38 tmp26        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V39 tmp27        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V40 tmp28        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V41 tmp29        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V43 tmp31        [V43,T10] (  3, 48   )     int  ->  rdi         "Span.get_Item index"
 ;  V44 tmp32        [V44,T22] (  2,  8   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V45 tmp33        [V45,T08] (  4, 48   )  ushort  ->  rdi         "Inlining Arg"
 ;* V46 tmp34        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V47 tmp35        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V48 tmp36        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V49 tmp37        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V51 tmp39        [V51,T01] (  3,768   )     int  ->  rax         "Span.get_Item index"
 ;  V52 tmp40        [V52,T05] (  2,128   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V53 tmp41        [V53,T00] (  4,768   )  ushort  ->  rdi         "Inlining Arg"
 ;* V54 tmp42        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V55 tmp43        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V56 tmp44        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V57 tmp45        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V58 tmp46        [V58,T13] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V59 tmp47        [V59    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V60 tmp48        [V60,T04] (  3,192   )     int  ->  rdi         "Span.get_Item index"
 ;  V61 tmp49        [V61,T41] (  3,  3   )     int  ->  rax         "Inline return value spill temp"
 ;  V62 tmp50        [V62,T27] (  3,  6   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;  V63 tmp51        [V63,T28] (  3,  6   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;  V64 tmp52        [V64,T42] (  3,  3   )     int  ->  rax         "Inline return value spill temp"
 ;  V65 tmp53        [V65,T17] (  5,  8   )     int  ->  rax         "Single return block return value"
 ;  V66 tmp54        [V66,T24] (  4,  4   )   byref  ->  r14         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
 ;  V67 tmp55        [V67,T25] (  4,  4   )     int  ->  r13         single-def "field V00._length (fldOffset=0x8)" P-INDEP
 ;  V68 tmp56        [V68,T23] (  5,  5   )   byref  ->  r15         "field V01._reference (fldOffset=0x0)" P-INDEP
 ;  V69 tmp57        [V69,T26] (  4,  4   )     int  ->  r12         "field V01._length (fldOffset=0x8)" P-INDEP
 ;* V70 tmp58        [V70    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
 ;* V71 tmp59        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
 ;  V72 tmp60        [V72,T35] (  3,  3   )   byref  ->  r15         "field V23._reference (fldOffset=0x0)" P-INDEP
 ;  V73 tmp61        [V73,T43] (  3,  3   )     int  ->  r12         "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V74 tmp62        [V74,T49] (  2,  2   )   byref  ->  r15         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
 ;  V75 tmp63        [V75,T51] (  2,  2   )     int  ->  r12         "field V25._length (fldOffset=0x8)" P-INDEP
 ;* V76 tmp64        [V76    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V26._reference (fldOffset=0x0)" P-INDEP
 ;* V77 tmp65        [V77    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
 ;* V78 tmp66        [V78    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V29._reference (fldOffset=0x0)" P-INDEP
 ;* V79 tmp67        [V79    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
 ;* V80 tmp68        [V80    ] (  0,  0   )   byref  ->  zero-ref    "field V38._reference (fldOffset=0x0)" P-INDEP
 ;* V81 tmp69        [V81    ] (  0,  0   )     int  ->  zero-ref    "field V38._length (fldOffset=0x8)" P-INDEP
 ;* V82 tmp70        [V82    ] (  0,  0   )   byref  ->  zero-ref    "field V39._reference (fldOffset=0x0)" P-INDEP
 ;* V83 tmp71        [V83    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
 ;* V84 tmp72        [V84    ] (  0,  0   )   byref  ->  zero-ref    "field V40._reference (fldOffset=0x0)" P-INDEP
 ;* V85 tmp73        [V85    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
 ;* V86 tmp74        [V86    ] (  0,  0   )   byref  ->  zero-ref    "field V41._reference (fldOffset=0x0)" P-INDEP
 ;* V87 tmp75        [V87    ] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x8)" P-INDEP
 ;* V88 tmp76        [V88    ] (  0,  0   )   byref  ->  zero-ref    "field V46._reference (fldOffset=0x0)" P-INDEP
 ;* V89 tmp77        [V89    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
 ;* V90 tmp78        [V90    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
 ;* V91 tmp79        [V91    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
 ;* V92 tmp80        [V92    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-INDEP
 ;* V93 tmp81        [V93    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-INDEP
 ;* V94 tmp82        [V94    ] (  0,  0   )   byref  ->  zero-ref    "field V49._reference (fldOffset=0x0)" P-INDEP
 ;* V95 tmp83        [V95    ] (  0,  0   )     int  ->  zero-ref    "field V49._length (fldOffset=0x8)" P-INDEP
 ;* V96 tmp84        [V96    ] (  0,  0   )   byref  ->  zero-ref    "field V54._reference (fldOffset=0x0)" P-INDEP
 ;* V97 tmp85        [V97    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x8)" P-INDEP
 ;* V98 tmp86        [V98    ] (  0,  0   )   byref  ->  zero-ref    "field V55._reference (fldOffset=0x0)" P-INDEP
 ;* V99 tmp87        [V99    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
 ;* V100 tmp88       [V100    ] (  0,  0   )   byref  ->  zero-ref    "field V56._reference (fldOffset=0x0)" P-INDEP
 ;* V101 tmp89       [V101    ] (  0,  0   )     int  ->  zero-ref    "field V56._length (fldOffset=0x8)" P-INDEP
 ;* V102 tmp90       [V102    ] (  0,  0   )   byref  ->  zero-ref    "field V57._reference (fldOffset=0x0)" P-INDEP
 ;* V103 tmp91       [V103    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
 ;  V104 PSPSym      [V104,T52] (  1,  1   )    long  ->  [rbp-0xA0]  do-not-enreg[V] "PSPSym"
 ;  V105 cse0        [V105,T02] (  3,384   )     int  ->  rax         "CSE #09: aggressive"
 ;  V106 cse1        [V106,T14] (  3, 24   )     int  ->  rax         "CSE #05: moderate"
 ;  V107 cse2        [V107,T29] (  5,  5   )     int  ->  rsi         "CSE #16: conservative"
 ;  V108 cse3        [V108,T44] (  3,  3   )     int  ->  r12         "CSE #02: conservative"
 ;  V109 cse4        [V109,T45] (  3,  3   )     int  ->  r14         "CSE #03: conservative"
 ;  V110 cse5        [V110,T46] (  3,  3   )     int  ->  r15         "CSE #13: conservative"
 ;  V111 cse6        [V111,T47] (  3,  3   )     int  ->  rsi         "CSE #14: conservative"
 ;  V112 cse7        [V112,T48] (  3,  3   )     int  ->  r14         "CSE #19: conservative"
 ;  V113 cse8        [V113,T55] (  3,  3   )  double  ->  mm0         "CSE #21: conservative"
 ;  V114 cse9        [V114,T03] (  3,384   )     int  ->  r15         "CSE #10: aggressive"
 ;  V115 cse10       [V115,T15] (  3, 24   )     int  ->  r15         "CSE #06: moderate"
 ;  V116 cse11       [V116,T11] (  3, 48   )     int  ->  rdi         "CSE #11: moderate"
 ;  V117 cse12       [V117,T12] (  3, 48   )     int  ->  rsi         "CSE #12: moderate"
 ;  V118 rat0        [V118,T53] (  3,  6   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;  V119 rat1        [V119,T54] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 152
 
 G_M56315_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 152
        lea      rbp, [rsp+0xC0]
        xor      eax, eax
        mov      qword ptr [rbp-0x88], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu32 zmmword ptr [rbp-0x80], zmm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0xA0], rsp
        mov      gword ptr [rbp-0x30], r9
        mov      r14, rdi
        mov      r13d, esi
        mov      r15, rdx
        mov      r12d, ecx
        mov      ebx, r8d
        mov      rax, bword ptr [rbp+0x10]
 						;; size=81 bbWeight=1 PerfScore 16.58
 G_M56315_IG02:
        mov      rdi, gword ptr [rbp-0x30]
        mov      rdi, gword ptr [rdi+0x90]
        mov      gword ptr [rbp-0x48], rdi
        mov      dword ptr [rbp-0x40], -1
        mov      dword ptr [rbp-0x3C], -1
        test     bl, 4
        setne    dil
        movzx    rdi, dil
        mov      byte  ptr [rbp-0x36], dil
        test     bl, 2
        setne    dil
        movzx    rdi, dil
        mov      byte  ptr [rbp-0x35], dil
        cmp      r12d, 1
        jne      G_M56315_IG10
        movzx    rdi, word  ptr [r15]
        test     ebx, ebx
        jne      SHORT G_M56315_IG06
        mov      esi, edi
        or       esi, 32
        cmp      esi, 111
        je       SHORT G_M56315_IG05
        cmp      esi, 114
        jne      SHORT G_M56315_IG06
        mov      rdi, r14
        mov      esi, r13d
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:TryParseFormatR(System.ReadOnlySpan`1[ushort],byref):ubyte
        call     [rax]System.DateTimeParse:TryParseFormatR(System.ReadOnlySpan`1[ushort],byref):ubyte
 						;; size=113 bbWeight=1 PerfScore 22.50
 G_M56315_IG03:
        movzx    rax, al
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M56315_IG04:
        add      rsp, 152
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M56315_IG05:
        mov      rdi, r14
        mov      esi, r13d
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):ubyte
        call     [rax]System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):ubyte
        jmp      SHORT G_M56315_IG03
 						;; size=23 bbWeight=1 PerfScore 6.00
 G_M56315_IG06:
        test     dword ptr [rax+0x2C], 0x800
        je       SHORT G_M56315_IG07
        cmp      edi, 85
        jne      SHORT G_M56315_IG07
        mov      dword ptr [rax+0x30], 6
        mov      bword ptr [rax+0x48], r15
        mov      dword ptr [rax+0x50], 1
        jmp      G_M56315_IG31
 						;; size=37 bbWeight=1 PerfScore 10.25
 G_M56315_IG07:
        lea      rdx, [rbp-0x48]
        lea      rsi, [rbp-0x30]
        mov      rcx, rax
        mov      r8, 0xD1FFAB1E      ; code for System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String
        call     [r8]System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String
        test     rax, rax
        jne      SHORT G_M56315_IG08
        xor      r15, r15
        xor      r12d, r12d
        jmp      SHORT G_M56315_IG09
 						;; size=37 bbWeight=1 PerfScore 8.25
 G_M56315_IG08:
        lea      r15, bword ptr [rax+0x0C]
        mov      r12d, dword ptr [rax+0x08]
 						;; size=8 bbWeight=1 PerfScore 2.50
 G_M56315_IG09:
        mov      rax, bword ptr [rbp+0x10]
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M56315_IG10:
        mov      rdi, gword ptr [rbp-0x48]
        mov      gword ptr [rax], rdi
        mov      rdi, gword ptr [rbp-0x48]
        mov      rcx, gword ptr [rbp-0x48]
        mov      rcx, qword ptr [rcx]
        mov      rcx, qword ptr [rcx+0x40]
        call     [rcx+0x38]System.Globalization.Calendar:get_ID():ushort:this
        cmp      eax, 8
        sete     dil
        movzx    rdi, dil
        mov      byte  ptr [rbp-0x34], dil
        mov      rax, bword ptr [rbp+0x10]
        mov      dword ptr [rax+0x24], -1
        mov      dword ptr [rax+0x20], -1
        mov      dword ptr [rax+0x1C], -1
        mov      rcx, gword ptr [rbp-0x30]
        mov      gword ptr [rbp-0x90], rcx
        mov      dword ptr [rbp-0x60], -1
        mov      bword ptr [rbp-0x58], r15
        mov      dword ptr [rbp-0x50], r12d
        mov      word  ptr [rbp-0x5C], 0
        mov      rdi, rcx
        mov      rdx, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
        cmp      dword ptr [rdi], edi
        call     [rdx]System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
        mov      gword ptr [rbp-0x68], rax
        mov      r15, gword ptr [rbp-0x90]
        mov      r12d, dword ptr [r15+0x180]
        cmp      r12d, -1
        jne      SHORT G_M56315_IG11
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        call     [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        jmp      SHORT G_M56315_IG12
 						;; size=155 bbWeight=1 PerfScore 40.75
 G_M56315_IG11:
        mov      eax, r12d
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M56315_IG12:
        test     al, 32
        setne    dil
        movzx    rdi, dil
        mov      byte  ptr [rbp-0x5A], dil
        mov      byte  ptr [rbp-0x5A], 0
        mov      r15, gword ptr [rbp-0x30]
        mov      dword ptr [rbp-0x80], -1
        mov      bword ptr [rbp-0x78], r14
        mov      dword ptr [rbp-0x70], r13d
        mov      word  ptr [rbp-0x7C], 0
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
        mov      gword ptr [rbp-0x88], rax
        mov      r14d, dword ptr [r15+0x180]
        cmp      r14d, -1
        jne      SHORT G_M56315_IG13
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        call     [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        jmp      SHORT G_M56315_IG14
 						;; size=97 bbWeight=1 PerfScore 24.75
 G_M56315_IG13:
        mov      eax, r14d
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M56315_IG14:
        test     al, 32
        setne    dil
        movzx    rdi, dil
        mov      byte  ptr [rbp-0x7A], dil
        mov      byte  ptr [rbp-0x7A], 0
        cmp      byte  ptr [rbp-0x35], 0
        je       SHORT G_M56315_IG15
        lea      rdi, [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:TrimTail():this
        call     [rax]System.__DTString:TrimTail():this
        lea      rdi, [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:RemoveTrailingInQuoteSpaces():this
        call     [rax]System.__DTString:RemoveTrailingInQuoteSpaces():this
        lea      rdi, [rbp-0x88]
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:TrimTail():this
        call     [rax]System.__DTString:TrimTail():this
 						;; size=75 bbWeight=1 PerfScore 17.75
 G_M56315_IG15:
        test     bl, 1
        je       G_M56315_IG26
        jmp      SHORT G_M56315_IG17
 						;; size=11 bbWeight=1 PerfScore 3.25
 G_M56315_IG16:
        mov      edi, dword ptr [rbp-0x60]
        inc      edi
        mov      dword ptr [rbp-0x60], edi
 						;; size=8 bbWeight=8 PerfScore 18.00
 G_M56315_IG17:
        mov      eax, dword ptr [rbp-0x60]
        inc      eax
        mov      r15d, dword ptr [rbp-0x50]
        cmp      eax, r15d
        jl       SHORT G_M56315_IG21
 						;; size=14 bbWeight=8 PerfScore 28.00
 G_M56315_IG18:
        lea      rdi, [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:RemoveLeadingInQuoteSpaces():this
        call     [rax]System.__DTString:RemoveLeadingInQuoteSpaces():this
        mov      edi, dword ptr [rbp-0x80]
        inc      edi
        cmp      edi, dword ptr [rbp-0x70]
        jge      G_M56315_IG26
 						;; size=30 bbWeight=1 PerfScore 8.00
 G_M56315_IG19:
        mov      edi, dword ptr [rbp-0x80]
        inc      edi
        cmp      edi, dword ptr [rbp-0x70]
        jae      G_M56315_IG57
        mov      rax, bword ptr [rbp-0x78]
        movzx    rdi, word  ptr [rax+2*rdi]
        cmp      edi, 256
        jae      SHORT G_M56315_IG24
 						;; size=30 bbWeight=8 PerfScore 68.00
 G_M56315_IG20:
        mov      edi, edi
        mov      rax, 0xD1FFAB1E      ; static handle
        test     byte  ptr [rdi+rax], 128
        je       SHORT G_M56315_IG26
        jmp      SHORT G_M56315_IG25
 						;; size=20 bbWeight=4 PerfScore 26.00
 G_M56315_IG21:
        cmp      eax, r15d
        jae      G_M56315_IG57
        mov      rdi, bword ptr [rbp-0x58]
        mov      eax, eax
        movzx    rdi, word  ptr [rdi+2*rax]
        cmp      edi, 256
        jae      SHORT G_M56315_IG23
 						;; size=27 bbWeight=8 PerfScore 46.00
 G_M56315_IG22:
        mov      edi, edi
        mov      rax, 0xD1FFAB1E      ; static handle
        test     byte  ptr [rdi+rax], 128
        je       SHORT G_M56315_IG18
        jmp      G_M56315_IG16
 						;; size=23 bbWeight=4 PerfScore 26.00
 G_M56315_IG23:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        call     [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        test     eax, eax
        je       G_M56315_IG18
        jmp      G_M56315_IG16
 						;; size=25 bbWeight=4 PerfScore 26.00
 G_M56315_IG24:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        call     [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        test     eax, eax
        je       SHORT G_M56315_IG26
 						;; size=16 bbWeight=4 PerfScore 18.00
 G_M56315_IG25:
        mov      edi, dword ptr [rbp-0x80]
        inc      edi
        mov      dword ptr [rbp-0x80], edi
        mov      edi, dword ptr [rbp-0x80]
        inc      edi
        cmp      edi, dword ptr [rbp-0x70]
        jl       G_M56315_IG19
 						;; size=22 bbWeight=8 PerfScore 52.00
 G_M56315_IG26:
        mov      edi, dword ptr [rbp-0x60]
        inc      edi
        mov      dword ptr [rbp-0x60], edi
        mov      edi, dword ptr [rbp-0x60]
        mov      esi, dword ptr [rbp-0x50]
        cmp      edi, esi
        jge      SHORT G_M56315_IG33
 						;; size=18 bbWeight=8 PerfScore 44.00
 G_M56315_IG27:
        cmp      edi, esi
        jae      G_M56315_IG57
        mov      rsi, bword ptr [rbp-0x58]
        mov      edi, edi
        movzx    rdi, word  ptr [rsi+2*rdi]
        mov      word  ptr [rbp-0x5C], di
        cmp      byte  ptr [rbp-0x36], 0
        je       SHORT G_M56315_IG30
        jmp      SHORT G_M56315_IG29
 						;; size=30 bbWeight=32 PerfScore 336.00
 G_M56315_IG28:
        mov      eax, dword ptr [rbp-0x80]
        inc      eax
        mov      dword ptr [rbp-0x80], eax
 						;; size=8 bbWeight=128 PerfScore 288.00
 G_M56315_IG29:
        mov      eax, dword ptr [rbp-0x80]
        inc      eax
        mov      r15d, dword ptr [rbp-0x70]
        cmp      eax, r15d
        jl       G_M56315_IG53
 						;; size=18 bbWeight=128 PerfScore 448.00
 G_M56315_IG30:
        lea      rdi, [rbp-0x88]
        lea      rsi, [rbp-0x68]
        lea      rdx, [rbp-0x48]
        mov      rcx, gword ptr [rbp-0x30]
        mov      r8, bword ptr [rbp+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseByFormat(byref,byref,byref,System.Globalization.DateTimeFormatInfo,byref):ubyte
        call     [rax]System.DateTimeParse:ParseByFormat(byref,byref,byref,System.Globalization.DateTimeFormatInfo,byref):ubyte
        test     eax, eax
        jne      SHORT G_M56315_IG26
 						;; size=39 bbWeight=32 PerfScore 256.00
 G_M56315_IG31:
        xor      eax, eax
 						;; size=2 bbWeight=1 PerfScore 0.25
 G_M56315_IG32:
        add      rsp, 152
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M56315_IG33:
        mov      edi, dword ptr [rbp-0x70]
        dec      edi
        cmp      dword ptr [rbp-0x80], edi
        jge      SHORT G_M56315_IG35
 						;; size=10 bbWeight=1 PerfScore 4.25
 G_M56315_IG34:
        mov      r8, bword ptr [rbp+0x10]
        mov      dword ptr [r8+0x30], 3
        jmp      SHORT G_M56315_IG31
 						;; size=14 bbWeight=1 PerfScore 4.00
 G_M56315_IG35:
        cmp      byte  ptr [rbp-0x37], 0
        je       SHORT G_M56315_IG39
        mov      rdi, gword ptr [rbp-0x30]
        mov      r15d, dword ptr [rdi+0x180]
        cmp      r15d, -1
        jne      SHORT G_M56315_IG36
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        call     [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        jmp      SHORT G_M56315_IG37
 						;; size=37 bbWeight=1 PerfScore 12.50
 G_M56315_IG36:
        mov      eax, r15d
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M56315_IG37:
        test     al, 8
        jne      SHORT G_M56315_IG39
        mov      r8, bword ptr [rbp+0x10]
        mov      esi, dword ptr [r8+0x10]
        cmp      esi, 100
        jge      SHORT G_M56315_IG34
 						;; size=17 bbWeight=1 PerfScore 5.50
 G_M56315_IG38:
        mov      rdi, gword ptr [rbp-0x48]
        mov      rax, gword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x70]
-       call     [rax+0x30]System.Globalization.Calendar:ToFourDigitYear(int):int:this
+       call     [rax+0x28]System.Globalization.Calendar:ToFourDigitYear(int):int:this
        mov      r8, bword ptr [rbp+0x10]
        mov      dword ptr [r8+0x10], eax
 						;; size=26 bbWeight=1 PerfScore 11.00
 G_M56315_IG39:
        cmp      byte  ptr [rbp-0x38], 0
        je       SHORT G_M56315_IG41
        cmp      dword ptr [rbp-0x3C], -1
        jne      SHORT G_M56315_IG40
        xor      esi, esi
        mov      dword ptr [rbp-0x3C], esi
 						;; size=17 bbWeight=1 PerfScore 7.25
 G_M56315_IG40:
        mov      r8, bword ptr [rbp+0x10]
        mov      esi, dword ptr [r8+0x1C]
        cmp      esi, 12
        jg       SHORT G_M56315_IG34
        cmp      dword ptr [rbp-0x3C], 0
        jne      SHORT G_M56315_IG43
        cmp      esi, 12
        jne      SHORT G_M56315_IG44
        xor      esi, esi
        mov      r8, bword ptr [rbp+0x10]
        mov      dword ptr [r8+0x1C], esi
        jmp      SHORT G_M56315_IG44
 						;; size=36 bbWeight=1 PerfScore 12.75
 G_M56315_IG41:
        cmp      dword ptr [rbp-0x3C], 0
        jne      SHORT G_M56315_IG42
        mov      r8, bword ptr [rbp+0x10]
        cmp      dword ptr [r8+0x1C], 12
        jge      G_M56315_IG34
 						;; size=21 bbWeight=1 PerfScore 8.00
 G_M56315_IG42:
        cmp      dword ptr [rbp-0x3C], 1
        jne      SHORT G_M56315_IG44
        mov      r8, bword ptr [rbp+0x10]
        cmp      dword ptr [r8+0x1C], 12
        jl       G_M56315_IG34
        jmp      SHORT G_M56315_IG44
 						;; size=23 bbWeight=1 PerfScore 10.00
 G_M56315_IG43:
        mov      edi, 12
        lea      edx, [rsi+0x0C]
        cmp      esi, 12
        cmovne   edi, edx
        mov      r8, bword ptr [rbp+0x10]
        mov      dword ptr [r8+0x1C], edi
 						;; size=22 bbWeight=1 PerfScore 3.25
 G_M56315_IG44:
        mov      r8, bword ptr [rbp+0x10]
        cmp      dword ptr [r8+0x10], -1
        jne      SHORT G_M56315_IG45
        cmp      dword ptr [r8+0x14], -1
        jne      SHORT G_M56315_IG45
        cmp      dword ptr [r8+0x18], -1
        sete     sil
        movzx    rsi, sil
        jmp      SHORT G_M56315_IG46
 						;; size=33 bbWeight=1 PerfScore 15.25
 G_M56315_IG45:
        xor      esi, esi
 						;; size=2 bbWeight=1 PerfScore 0.25
 G_M56315_IG46:
        movzx    r15, sil
        lea      rsi, [rbp-0x48]
        mov      rdi, r8
        mov      edx, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:CheckDefaultDateTime(byref,byref,int):ubyte
        call     [rax]System.DateTimeParse:CheckDefaultDateTime(byref,byref,int):ubyte
        test     eax, eax
        je       G_M56315_IG31
        test     r15d, r15d
        jne      SHORT G_M56315_IG50
        mov      rdi, gword ptr [rbp-0x30]
        mov      r14d, dword ptr [rdi+0x180]
        cmp      r14d, -1
        jne      SHORT G_M56315_IG47
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        call     [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
        jmp      SHORT G_M56315_IG48
 						;; size=69 bbWeight=1 PerfScore 16.50
 G_M56315_IG47:
        mov      eax, r14d
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M56315_IG48:
        test     al, 8
        je       SHORT G_M56315_IG50
        mov      rdi, bword ptr [rbp+0x10]
        test     dword ptr [rdi+0x2C], 0x400
        setne    cl
        movzx    rcx, cl
        lea      rsi, bword ptr [rdi+0x10]
        lea      rdx, bword ptr [rdi+0x14]
        mov      rdi, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.DateTimeFormatInfo:YearMonthAdjustment(byref,byref,ubyte):ubyte:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Globalization.DateTimeFormatInfo:YearMonthAdjustment(byref,byref,ubyte):ubyte:this
        test     eax, eax
        jne      SHORT G_M56315_IG50
 						;; size=51 bbWeight=1 PerfScore 16.00
 G_M56315_IG49:
        mov      rdi, bword ptr [rbp+0x10]
        mov      dword ptr [rdi+0x30], 4
        jmp      G_M56315_IG31
 						;; size=16 bbWeight=1 PerfScore 4.00
 G_M56315_IG50:
        mov      rdi, bword ptr [rbp+0x10]
        mov      esi, dword ptr [rdi+0x24]
        mov      dword ptr [rsp], esi
        xor      esi, esi
        mov      dword ptr [rsp+0x08], esi
        mov      esi, dword ptr [rdi+0x28]
        mov      dword ptr [rsp+0x10], esi
        lea      rsi, bword ptr [rdi+0x40]
        mov      bword ptr [rsp+0x18], rsi
        mov      esi, dword ptr [rdi+0x10]
        mov      edx, dword ptr [rdi+0x14]
        mov      ecx, dword ptr [rdi+0x18]
        mov      r8d, dword ptr [rdi+0x1C]
        mov      r9d, dword ptr [rdi+0x20]
        mov      rdi, gword ptr [rbp-0x48]
        mov      rax, gword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x70]
-       call     [rax]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
+       mov      rax, qword ptr [rax+0x68]
+       call     [rax+0x38]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
        test     eax, eax
        je       SHORT G_M56315_IG49
        mov      rdi, bword ptr [rbp+0x10]
        vmovsd   xmm0, qword ptr [rdi+0x08]
        vxorps   xmm1, xmm1, xmm1
        vucomisd xmm0, xmm1
        jbe      SHORT G_M56315_IG51
        vmulsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vroundsd xmm0, xmm0, xmm0, 4
        vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
        vcmppd   k1, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rsi, xmm0
        vpbroadcastq xmm0, rsi
        vpblendmq xmm0 {k1}, xmm0, xmmword ptr [reloc @RWD48]
        vmovd    rsi, xmm0
        add      rdi, 64
        mov      rax, bword ptr [rbp+0x10]
        lea      rdx, bword ptr [rax+0x40]
        mov      rcx, 0xD1FFAB1E      ; code for System.DateTime:TryAddTicks(long,byref):ubyte:this
        call     [rcx]System.DateTime:TryAddTicks(long,byref):ubyte:this
        test     eax, eax
        je       G_M56315_IG34
-						;; size=183 bbWeight=1 PerfScore 75.58
+						;; size=184 bbWeight=1 PerfScore 75.58
 G_M56315_IG51:
        mov      rdi, bword ptr [rbp+0x10]
        cmp      dword ptr [rbp-0x40], -1
        je       SHORT G_M56315_IG52
        mov      r14d, dword ptr [rbp-0x40]
        mov      rsi, qword ptr [rdi+0x40]
        mov      rdi, gword ptr [rbp-0x48]
        mov      rax, gword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x50]
-       call     [rax+0x20]System.Globalization.Calendar:GetDayOfWeek(System.DateTime):int:this
+       call     [rax+0x18]System.Globalization.Calendar:GetDayOfWeek(System.DateTime):int:this
        cmp      r14d, eax
        je       SHORT G_M56315_IG52
        mov      rdi, bword ptr [rbp+0x10]
        mov      dword ptr [rdi+0x30], 5
        jmp      G_M56315_IG31
 						;; size=57 bbWeight=1 PerfScore 21.25
 G_M56315_IG52:
        mov      rdi, bword ptr [rbp+0x10]
        mov      esi, ebx
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
        call     [rax]System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
        jmp      G_M56315_IG03
 						;; size=26 bbWeight=1 PerfScore 6.75
 G_M56315_IG53:
        cmp      eax, r15d
        jae      SHORT G_M56315_IG57
        mov      rdi, bword ptr [rbp-0x78]
        mov      eax, eax
        movzx    rdi, word  ptr [rdi+2*rax]
        cmp      edi, 256
        jae      SHORT G_M56315_IG55
 						;; size=23 bbWeight=128 PerfScore 736.00
 G_M56315_IG54:
        mov      edi, edi
        mov      rax, 0xD1FFAB1E      ; static handle
        test     byte  ptr [rdi+rax], 128
        je       G_M56315_IG30
        jmp      G_M56315_IG28
 						;; size=27 bbWeight=64 PerfScore 416.00
 G_M56315_IG55:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        call     [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
        test     eax, eax
        je       G_M56315_IG30
        jmp      G_M56315_IG28
 						;; size=25 bbWeight=64 PerfScore 416.00
 G_M56315_IG56:
        xor      eax, eax
        jmp      G_M56315_IG03
 						;; size=7 bbWeight=0 PerfScore 0.00
 G_M56315_IG57:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 G_M56315_IG58:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        mov      rbp, qword ptr [rdi+0x20]
        mov      qword ptr [rsp+0x20], rbp
        lea      rbp, [rbp+0xC0]
 						;; size=30 bbWeight=0 PerfScore 0.00
 G_M56315_IG59:
        mov      rdi, bword ptr [rbp+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeResult:SetBadDateTimeFailure():this
        call     [rax]System.DateTimeResult:SetBadDateTimeFailure():this
        lea      rax, G_M56315_IG56
 						;; size=23 bbWeight=0 PerfScore 0.00
 G_M56315_IG60:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
 RWD00  	dq	416312D000000000h	;     10000000
 RWD08  	dd	00000000h, 00000000h
 RWD16  	dq	0000000000000088h, 0000000000000000h
 RWD32  	dq	43E0000000000000h, 43E0000000000000h
 RWD48  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
 
 
-; Total bytes of code 1838, prolog size 81, PerfScore 3653.67, instruction count 476, allocated bytes for code 1839 (MethodHash=cd172404) for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
+; Total bytes of code 1839, prolog size 81, PerfScore 3653.67, instruction count 476, allocated bytes for code 1840 (MethodHash=cd172404) for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
1 (0.09 % of base) - System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte
 ; Assembly listing for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 22 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T03] (  5,  3.50)   byref  ->  r14         single-def
 ;  V01 arg1         [V01,T00] ( 69, 37   )   byref  ->  rbx         single-def
 ;  V02 arg2         [V02,T05] (  3,  2.50)     int  ->  r13         single-def
 ;  V03 arg3         [V03,T01] ( 12,  7   )   byref  ->  r15         single-def
 ;  V04 loc0         [V04    ] (  3,  2   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V05 loc1         [V05    ] (  3,  2   )  double  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 loc2         [V06    ] (  2,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V07 loc3         [V07    ] (  2,  1   )     int  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V08 loc4         [V08    ] (  4,  2   )  struct ( 8) [rbp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
 ;  V09 loc5         [V09,T30] (  5,  2.50)  ushort  ->  rcx        
 ;  V10 OutArgs      [V10    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T02] (  3,  6   )   byref  ->  rdi         single-def "dup spill"
 ;* V12 tmp2         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Globalization.Calendar>
 ;* V13 tmp3         [V13    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V14 tmp4         [V14    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V15 tmp5         [V15,T06] (  3,  3   )   byref  ->  rsi         single-def "dup spill"
 ;  V16 tmp6         [V16,T07] (  3,  3   )   byref  ->  rdi         single-def "dup spill"
 ;  V17 tmp7         [V17,T08] (  3,  3   )   byref  ->  rax         single-def "dup spill"
 ;* V18 tmp8         [V18    ] (  0,  0   )  struct ( 8) zero-ref    "folding static readonly field struct" <System.TimeSpan>
 ;  V19 tmp9         [V19,T09] (  3,  3   )   byref  ->  rdi         single-def "dup spill"
 ;  V20 tmp10        [V20,T31] (  2,  2   )   byref  ->  rdi         single-def "dup spill"
 ;  V21 tmp11        [V21,T10] (  3,  3   )   byref  ->  rdi         single-def "dup spill"
 ;* V22 tmp12        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V23 tmp13        [V23,T48] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V24 tmp14        [V24,T33] (  3,  1.50)     int  ->  rdi         "Inline stloc first use temp"
 ;  V25 tmp15        [V25,T21] (  3,  3   )     int  ->  rax         "Span.get_Item index"
 ;  V26 tmp16        [V26,T11] (  3,  3   )   byref  ->  rcx         single-def "Span.get_Item ptrToSpan"
 ;* V27 tmp17        [V27    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V28 tmp18        [V28,T49] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V29 tmp19        [V29,T34] (  3,  1.50)     int  ->  rdi         "Inline stloc first use temp"
 ;  V30 tmp20        [V30,T22] (  3,  3   )     int  ->  rax         "Span.get_Item index"
 ;  V31 tmp21        [V31,T12] (  3,  3   )   byref  ->  rcx         single-def "Span.get_Item ptrToSpan"
 ;* V32 tmp22        [V32    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp23        [V33,T50] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V34 tmp24        [V34,T35] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
 ;  V35 tmp25        [V35,T23] (  3,  3   )     int  ->  rdi         "Span.get_Item index"
 ;  V36 tmp26        [V36,T13] (  3,  3   )   byref  ->  rax         single-def "Span.get_Item ptrToSpan"
 ;* V37 tmp27        [V37,T51] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V38 tmp28        [V38,T36] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
 ;  V39 tmp29        [V39,T24] (  3,  3   )     int  ->  rdi         "Span.get_Item index"
 ;  V40 tmp30        [V40,T14] (  3,  3   )   byref  ->  rax         single-def "Span.get_Item ptrToSpan"
 ;* V41 tmp31        [V41,T52] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V42 tmp32        [V42    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V43 tmp33        [V43,T25] (  3,  3   )     int  ->  rsi         "Span.get_Item index"
 ;  V44 tmp34        [V44,T15] (  3,  3   )   byref  ->  rdi         single-def "Span.get_Item ptrToSpan"
 ;  V45 tmp35        [V45,T26] (  3,  3   )     int  ->  rsi         "Span.get_Item index"
 ;  V46 tmp36        [V46,T16] (  3,  3   )   byref  ->  rdi         single-def "Span.get_Item ptrToSpan"
 ;* V47 tmp37        [V47,T53] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V48 tmp38        [V48,T37] (  3,  1.50)     int  ->  rdi         "Inline stloc first use temp"
 ;  V49 tmp39        [V49,T27] (  3,  3   )     int  ->  rax         "Span.get_Item index"
 ;  V50 tmp40        [V50,T17] (  3,  3   )   byref  ->  rcx         single-def "Span.get_Item ptrToSpan"
 ;* V51 tmp41        [V51,T54] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V52 tmp42        [V52,T38] (  3,  1.50)     int  ->  rdi         "Inline stloc first use temp"
 ;  V53 tmp43        [V53,T28] (  3,  3   )     int  ->  rax         "Span.get_Item index"
 ;  V54 tmp44        [V54,T18] (  3,  3   )   byref  ->  rcx         single-def "Span.get_Item ptrToSpan"
 ;* V55 tmp45        [V55,T55] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V56 tmp46        [V56    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V57 tmp47        [V57,T29] (  3,  3   )     int  ->  rdi         "Span.get_Item index"
 ;  V58 tmp48        [V58,T19] (  3,  3   )   byref  ->  r12         single-def "Span.get_Item ptrToSpan"
 ;  V59 tmp49        [V59,T32] (  2,  2   )     int  ->  rax         "Single return block return value"
 ;  V60 tmp50        [V60    ] (  4,  2   )    long  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V08._dateData (fldOffset=0x0)" P-DEP
 ;* V61 tmp51        [V61,T56] (  0,  0   )    long  ->  zero-ref    "field V18._ticks (fldOffset=0x0)" P-INDEP
 ;  V62 tmp52        [V62,T20] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
 ;  V63 cse0         [V63,T39] (  3,  1.50)     int  ->  rdi         "CSE #01: conservative"
 ;  V64 cse1         [V64,T40] (  3,  1.50)     int  ->  rdi         "CSE #03: conservative"
 ;  V65 cse2         [V65,T41] (  3,  1.50)     int  ->  rsi         "CSE #04: conservative"
 ;  V66 cse3         [V66,T42] (  3,  1.50)     int  ->  rsi         "CSE #05: conservative"
 ;  V67 cse4         [V67,T43] (  3,  1.50)     int  ->  rsi         "CSE #07: conservative"
 ;  V68 cse5         [V68,T44] (  3,  1.50)     int  ->  rax         "CSE #11: conservative"
 ;  V69 cse6         [V69,T45] (  3,  1.50)     int  ->  rdi         "CSE #12: conservative"
 ;  V70 cse7         [V70,T46] (  3,  1.50)     int  ->  rdi         "CSE #13: conservative"
 ;  V71 cse8         [V71,T47] (  3,  1.50)     int  ->  rdi         "CSE #14: conservative"
 ;  V72 cse9         [V72,T04] ( 10,  5   )   byref  ->  r12         "CSE #02: aggressive"
 ;  V73 rat0         [V73,T57] (  3,  3   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;  V74 rat1         [V74,T58] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
 G_M63361_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        mov      r14, rdi
        mov      rbx, rsi
        mov      r13d, edx
        mov      r15, rcx
 						;; size=31 bbWeight=1 PerfScore 7.75
 G_M63361_IG02:
        lea      rdi, bword ptr [rbx+0x08]
        dec      dword ptr [rdi]
        xor      edi, edi
        mov      dword ptr [rbp-0x30], edi
 						;; size=11 bbWeight=1 PerfScore 4.75
 G_M63361_IG03:
        mov      qword ptr [rbp-0x38], rdi
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        lea      rcx, [rbp-0x40]
        mov      rdi, rbx
        mov      esi, 2
        mov      edx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        call     [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        test     eax, eax
        je       G_M63361_IG27
 						;; size=56 bbWeight=1 PerfScore 10.25
 G_M63361_IG04:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        mov      edi, dword ptr [rbx+0x08]
        inc      edi
        mov      dword ptr [rbx+0x08], edi
        cmp      edi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG06
        jmp      G_M63361_IG27
 						;; size=33 bbWeight=0.50 PerfScore 6.38
 G_M63361_IG05:
        dec      edi
        mov      dword ptr [rbx+0x08], edi
        jmp      G_M63361_IG27
 						;; size=10 bbWeight=0.50 PerfScore 1.62
 G_M63361_IG06:
        mov      edi, dword ptr [rbx+0x08]
        mov      eax, edi
        lea      r12, bword ptr [rbx+0x10]
        mov      rcx, r12
        cmp      eax, dword ptr [rcx+0x08]
        jae      G_M63361_IG34
        mov      rcx, bword ptr [rcx]
        cmp      word  ptr [rcx+2*rax], 58
        jne      SHORT G_M63361_IG05
        mov      word  ptr [rbx+0x0C], 58
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        lea      rcx, [rbp-0x48]
        mov      rdi, rbx
        mov      esi, 2
        mov      edx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        call     [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        test     eax, eax
        je       G_M63361_IG27
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        mov      edi, dword ptr [rbx+0x08]
        inc      edi
        mov      dword ptr [rbx+0x08], edi
        cmp      edi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG08
        jmp      G_M63361_IG16
 						;; size=122 bbWeight=0.50 PerfScore 18.00
 G_M63361_IG07:
        dec      edi
        mov      dword ptr [rbx+0x08], edi
        jmp      G_M63361_IG16
 						;; size=10 bbWeight=0.50 PerfScore 1.62
 G_M63361_IG08:
        mov      edi, dword ptr [rbx+0x08]
        mov      eax, edi
        mov      rcx, r12
        cmp      eax, dword ptr [rcx+0x08]
        jae      G_M63361_IG34
        mov      rcx, bword ptr [rcx]
        cmp      word  ptr [rcx+2*rax], 58
        jne      SHORT G_M63361_IG07
        mov      word  ptr [rbx+0x0C], 58
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        lea      rcx, [rbp-0x30]
        mov      rdi, rbx
        mov      esi, 2
        mov      edx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        call     [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
        test     eax, eax
        je       G_M63361_IG27
        mov      esi, dword ptr [rbx+0x08]
        inc      esi
        mov      dword ptr [rbx+0x08], esi
        cmp      esi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG12
        jmp      SHORT G_M63361_IG10
 						;; size=100 bbWeight=0.50 PerfScore 16.00
 G_M63361_IG09:
        dec      esi
        mov      dword ptr [rbx+0x08], esi
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M63361_IG10:
        mov      esi, dword ptr [rbx+0x08]
        inc      esi
        mov      dword ptr [rbx+0x08], esi
        cmp      esi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG13
        jmp      SHORT G_M63361_IG15
 						;; size=15 bbWeight=0.50 PerfScore 4.62
 G_M63361_IG11:
        dec      esi
        mov      dword ptr [rbx+0x08], esi
        jmp      SHORT G_M63361_IG15
 						;; size=7 bbWeight=0.50 PerfScore 1.62
 G_M63361_IG12:
        mov      esi, dword ptr [rbx+0x08]
        mov      edi, esi
        mov      rax, r12
        cmp      edi, dword ptr [rax+0x08]
        jae      G_M63361_IG34
        mov      rax, bword ptr [rax]
        cmp      word  ptr [rax+2*rdi], 46
        jne      SHORT G_M63361_IG09
        mov      word  ptr [rbx+0x0C], 46
        jmp      SHORT G_M63361_IG14
 						;; size=35 bbWeight=0.50 PerfScore 7.75
 G_M63361_IG13:
        mov      esi, dword ptr [rbx+0x08]
        mov      edi, esi
        mov      rax, r12
        cmp      edi, dword ptr [rax+0x08]
        jae      G_M63361_IG34
        mov      rax, bword ptr [rax]
        cmp      word  ptr [rax+2*rdi], 44
        jne      SHORT G_M63361_IG11
        mov      word  ptr [rbx+0x0C], 44
 						;; size=33 bbWeight=0.50 PerfScore 6.75
 G_M63361_IG14:
        lea      rsi, [rbp-0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseFraction(byref,byref):ubyte
        call     [rax]System.DateTimeParse:ParseFraction(byref,byref):ubyte
        test     eax, eax
        je       G_M63361_IG27
        lea      rdi, bword ptr [rbx+0x08]
        dec      dword ptr [rdi]
 						;; size=33 bbWeight=0.50 PerfScore 4.38
 G_M63361_IG15:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
 						;; size=15 bbWeight=0.50 PerfScore 1.75
 G_M63361_IG16:
        inc      dword ptr [rbx+0x08]
        mov      esi, dword ptr [rbx+0x08]
        cmp      esi, dword ptr [rbx+0x18]
        jge      G_M63361_IG29
        mov      rdi, r12
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M63361_IG34
        mov      rdi, bword ptr [rdi]
        movzx    rsi, word  ptr [rdi+2*rsi]
        mov      word  ptr [rbx+0x0C], si
        mov      eax, dword ptr [rbx+0x08]
        mov      esi, eax
        mov      rdi, r12
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M63361_IG34
        mov      rdi, bword ptr [rdi]
        movzx    rcx, word  ptr [rdi+2*rsi]
        cmp      ecx, 43
        je       SHORT G_M63361_IG17
        cmp      ecx, 45
        jne      SHORT G_M63361_IG18
 						;; size=72 bbWeight=0.50 PerfScore 15.62
 G_M63361_IG17:
        lea      rsi, bword ptr [r15+0x2C]
        or       dword ptr [rsi], 256
        lea      rsi, bword ptr [r15+0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:ParseTimeZone(byref,byref):ubyte
        call     [rax]System.DateTimeParse:ParseTimeZone(byref,byref):ubyte
        test     eax, eax
        je       G_M63361_IG27
        lea      rdi, bword ptr [rbx+0x08]
        dec      dword ptr [rdi]
        jmp      SHORT G_M63361_IG21
 						;; size=45 bbWeight=0.50 PerfScore 7.12
 G_M63361_IG18:
        cmp      ecx, 90
        je       SHORT G_M63361_IG19
        cmp      ecx, 122
        jne      SHORT G_M63361_IG20
 						;; size=10 bbWeight=0.50 PerfScore 1.25
 G_M63361_IG19:
        lea      rax, bword ptr [r15+0x2C]
        or       dword ptr [rax], 256
        xor      edi, edi
        mov      qword ptr [r15+0x38], rdi
        lea      rdi, bword ptr [r15+0x2C]
        or       dword ptr [rdi], 512
        jmp      SHORT G_M63361_IG21
 						;; size=28 bbWeight=0.50 PerfScore 5.12
 G_M63361_IG20:
        lea      rdi, bword ptr [rbx+0x08]
        dec      eax
        mov      dword ptr [rdi], eax
 						;; size=8 bbWeight=0.50 PerfScore 0.88
 G_M63361_IG21:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
        mov      edi, dword ptr [rbx+0x08]
        inc      edi
        mov      dword ptr [rbx+0x08], edi
        cmp      edi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG23
        jmp      SHORT G_M63361_IG24
 						;; size=30 bbWeight=0.50 PerfScore 6.38
 G_M63361_IG22:
        dec      edi
        mov      dword ptr [rbx+0x08], edi
        jmp      SHORT G_M63361_IG24
 						;; size=7 bbWeight=0.50 PerfScore 1.62
 G_M63361_IG23:
        mov      edi, dword ptr [rbx+0x08]
        mov      eax, edi
        mov      rcx, r12
        cmp      eax, dword ptr [rcx+0x08]
        jae      G_M63361_IG34
        mov      rcx, bword ptr [rcx]
        cmp      word  ptr [rcx+2*rax], 35
        jne      SHORT G_M63361_IG22
        mov      word  ptr [rbx+0x0C], 35
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
        call     [rax]System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
        test     eax, eax
        je       SHORT G_M63361_IG27
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.__DTString:SkipWhiteSpaces():this
        call     [rax]System.__DTString:SkipWhiteSpaces():this
 						;; size=67 bbWeight=0.50 PerfScore 10.88
 G_M63361_IG24:
        mov      edi, dword ptr [rbx+0x08]
        inc      edi
        mov      dword ptr [rbx+0x08], edi
        cmp      edi, dword ptr [rbx+0x18]
        jl       SHORT G_M63361_IG28
        jmp      SHORT G_M63361_IG26
 						;; size=15 bbWeight=0.50 PerfScore 4.62
 G_M63361_IG25:
        dec      edi
        mov      dword ptr [rbx+0x08], edi
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M63361_IG26:
        inc      dword ptr [rbx+0x08]
        mov      edi, dword ptr [rbx+0x08]
        cmp      edi, dword ptr [rbx+0x18]
        jge      SHORT G_M63361_IG29
        cmp      edi, dword ptr [r12+0x08]
        jae      G_M63361_IG34
        mov      rax, bword ptr [r12]
        movzx    rdi, word  ptr [rax+2*rdi]
        mov      word  ptr [rbx+0x0C], di
 						;; size=34 bbWeight=0.50 PerfScore 9.00
 G_M63361_IG27:
        mov      dword ptr [r15+0x30], 3
        jmp      G_M63361_IG30
 						;; size=13 bbWeight=0.50 PerfScore 1.50
 G_M63361_IG28:
        mov      edi, dword ptr [rbx+0x08]
        mov      eax, edi
        mov      rcx, r12
        cmp      eax, dword ptr [rcx+0x08]
        jae      G_M63361_IG34
        mov      rcx, bword ptr [rcx]
        cmp      word  ptr [rcx+2*rax], 0
        jne      SHORT G_M63361_IG25
        mov      word  ptr [rbx+0x0C], 0
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
        call     [rax]System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
        test     eax, eax
        je       SHORT G_M63361_IG27
        jmp      SHORT G_M63361_IG26
 						;; size=54 bbWeight=0.50 PerfScore 10.12
 G_M63361_IG29:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        call     [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        mov      edi, dword ptr [rbp-0x30]
        mov      dword ptr [rsp], edi
        xor      edi, edi
        mov      dword ptr [rsp+0x08], edi
        mov      edi, dword ptr [r15+0x28]
        mov      dword ptr [rsp+0x10], edi
        lea      rdi, [rbp-0x50]
        mov      qword ptr [rsp+0x18], rdi
        mov      rdi, rax
        mov      rdx, qword ptr [r14]
        mov      edx, dword ptr [rdx]
        mov      rcx, qword ptr [r14]
        mov      ecx, dword ptr [rcx+0x04]
        mov      esi, dword ptr [r14+0x10]
        mov      r8d, dword ptr [rbp-0x40]
        mov      r9d, dword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x70]
-       call     [rax]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
+       mov      rax, qword ptr [rax+0x68]
+       call     [rax+0x38]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
        test     eax, eax
        jne      SHORT G_M63361_IG32
        mov      dword ptr [r15+0x30], 4
-						;; size=88 bbWeight=0.50 PerfScore 16.25
+						;; size=89 bbWeight=0.50 PerfScore 16.25
 G_M63361_IG30:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M63361_IG31:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M63361_IG32:
        vmovsd   xmm0, qword ptr [rbp-0x38]
        vmulsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vroundsd xmm0, xmm0, xmm0, 4
        vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
        vcmppd   k1, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rsi, xmm0
        vpbroadcastq xmm0, rsi
        vpblendmq xmm0 {k1}, xmm0, xmmword ptr [reloc @RWD48]
        vmovd    rsi, xmm0
        lea      rdi, [rbp-0x50]
        lea      rdx, [rbp-0x50]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:TryAddTicks(long,byref):ubyte:this
        call     [rax]System.DateTime:TryAddTicks(long,byref):ubyte:this
        test     eax, eax
        je       G_M63361_IG27
        mov      rdi, qword ptr [rbp-0x50]
        mov      qword ptr [r15+0x40], rdi
        mov      rdi, r15
        mov      esi, r13d
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
        call     [rax]System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
        movzx    rax, al
 						;; size=126 bbWeight=0.50 PerfScore 22.88
 G_M63361_IG33:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M63361_IG34:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 RWD00  	dq	416312D000000000h	;     10000000
 RWD08  	dd	00000000h, 00000000h
 RWD16  	dq	0000000000000088h, 0000000000000000h
 RWD32  	dq	43E0000000000000h, 43E0000000000000h
 RWD48  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
 
 
-; Total bytes of code 1156, prolog size 19, PerfScore 212.12, instruction count 315, allocated bytes for code 1157 (MethodHash=9b9b087e) for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
+; Total bytes of code 1157, prolog size 19, PerfScore 212.12, instruction count 315, allocated bytes for code 1158 (MethodHash=9b9b087e) for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
1 (0.27 % of base) - System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 12, 10.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.DateTime>
 ;  V02 arg2         [V02,T03] (  3,  3   )     int  ->  r14         single-def
 ;  V03 loc0         [V03    ] (  7,  6   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V04 loc1         [V04    ] (  6,  5   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V05 loc2         [V05    ] (  6,  5.50)     int  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 loc3         [V06,T09] (  3,  3   )     int  ->  rax        
 ;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.DateTime>
 ;  V08 OutArgs      [V08    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V09 tmp1         [V09,T05] (  2,  4   )    long  ->  r14         "non-inline candidate call"
 ;* V10 tmp2         [V10    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "non-inline candidate call" <System.DateTime>
 ;* V11 tmp3         [V11    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
 ;  V12 tmp4         [V12,T01] (  5, 10   )     ref  ->  r13         class-hnd single-def "dup spill" <System.Globalization.Calendar>
 ;* V13 tmp5         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.DateTime>
 ;* V14 tmp6         [V14    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V15 tmp7         [V15    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V16 tmp8         [V16    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V17 tmp9         [V17,T12] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V18 tmp10        [V18,T02] (  6,  6   )    long  ->  r15         single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
 ;  V19 tmp11        [V19,T10] (  3,  3   )    long  ->  r15         "field V07._dateData (fldOffset=0x0)" P-INDEP
 ;  V20 tmp12        [V20,T13] (  2,  2   )    long  ->  r12         "field V10._dateData (fldOffset=0x0)" P-INDEP
 ;  V21 tmp13        [V21,T14] (  2,  2   )    long  ->  rdx         "field V11._dateData (fldOffset=0x0)" P-INDEP
 ;* V22 tmp14        [V22    ] (  0,  0   )    long  ->  zero-ref    "field V13._dateData (fldOffset=0x0)" P-INDEP
 ;  V23 tmp15        [V23,T06] (  2,  4   )     int  ->  [rbp-0x44]  spill-single-def "argument with side effect"
 ;  V24 tmp16        [V24,T07] (  2,  4   )     int  ->  [rbp-0x48]  spill-single-def "argument with side effect"
 ;  V25 tmp17        [V25,T08] (  2,  4   )     int  ->  rcx         "argument with side effect"
 ;  V26 cse0         [V26,T11] (  3,  3   )    long  ->  r13         "CSE #03: moderate"
 ;  V27 cse1         [V27,T04] (  4,  4   )    long  ->  r12         "CSE #01: moderate"
 ;
 ; Lcl frame size = 40
 
 G_M51837_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14d, edx
 						;; size=28 bbWeight=1 PerfScore 7.50
 G_M51837_IG02:
        mov      rsi, 0xD1FFAB1E
        and      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        call     [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        mov      r13, rax
        mov      rdi, r13
        mov      rsi, r15
        mov      r12, qword ptr [r13]
        mov      rax, qword ptr [r12+0x60]
-       call     [rax+0x28]System.Globalization.Calendar:GetYear(System.DateTime):int:this
+       call     [rax+0x20]System.Globalization.Calendar:GetYear(System.DateTime):int:this
        mov      dword ptr [rbp-0x44], eax
        mov      rdi, r13
        mov      rsi, r15
        mov      rcx, qword ptr [r12+0x58]
-       call     [rcx+0x38]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
+       call     [rcx+0x30]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
        mov      dword ptr [rbp-0x48], eax
        mov      rdi, r13
        mov      rsi, r15
        mov      rcx, qword ptr [r12+0x50]
-       call     [rcx+0x18]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
+       call     [rcx+0x10]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
        mov      ecx, eax
        lea      rsi, [rbp-0x40]
        mov      qword ptr [rsp], rsi
        mov      esi, dword ptr [rbp-0x44]
        mov      edx, dword ptr [rbp-0x48]
        lea      r8, [rbp-0x30]
        lea      r9, [rbp-0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        add      r14d, dword ptr [rbp-0x30]
        mov      dword ptr [rbp-0x30], r14d
        cmp      dword ptr [rbp-0x38], 13
        jne      SHORT G_M51837_IG04
 						;; size=148 bbWeight=1 PerfScore 42.25
 G_M51837_IG03:
        mov      esi, dword ptr [rbp-0x30]
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        jne      SHORT G_M51837_IG04
        mov      dword ptr [rbp-0x38], 12
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x30]
        mov      edx, dword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        mov      dword ptr [rbp-0x40], eax
-						;; size=52 bbWeight=0.50 PerfScore 8.62
+						;; size=53 bbWeight=0.50 PerfScore 8.62
 G_M51837_IG04:
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x30]
        mov      edx, dword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        cmp      dword ptr [rbp-0x40], eax
        cmovle   eax, dword ptr [rbp-0x40]
        mov      dword ptr [rbp-0x40], eax
        mov      rdi, rbx
        mov      rsi, r15
        mov      edx, dword ptr [rbp-0x30]
        mov      ecx, dword ptr [rbp-0x38]
        mov      r8d, dword ptr [rbp-0x40]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:LunarToTime(System.DateTime,int,int,int):System.DateTime:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:LunarToTime(System.DateTime,int,int,int):System.DateTime:this
        mov      r15, rax
        mov      r14, 0xD1FFAB1E
        and      r14, r15
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      r13, qword ptr [rax+0x40]
        call     [r13+0x20]System.Globalization.Calendar:get_MinSupportedDateTime():System.DateTime:this
        mov      r12, rax
        mov      rdi, rbx
        call     [r13+0x28]System.Globalization.Calendar:get_MaxSupportedDateTime():System.DateTime:this
        mov      rdx, rax
        mov      rdi, r14
        mov      rsi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
        call     [rax]System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
        mov      rax, r15
 						;; size=123 bbWeight=1 PerfScore 33.00
 G_M51837_IG05:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 366, prolog size 19, PerfScore 95.62, instruction count 102, allocated bytes for code 366 (MethodHash=3b673582) for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
+; Total bytes of code 367, prolog size 19, PerfScore 95.62, instruction count 102, allocated bytes for code 367 (MethodHash=3b673582) for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
1 (0.93 % of base) - System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  5,  4   )     ref  ->  r15         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T00] (  6,  5.50)     int  ->  rbx        
 ;  V02 arg2         [V02,T02] (  5,  4   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T03] (  3,  3   )     int  ->  rcx         single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M27737_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      r15, rdi
        mov      ebx, esi
        mov      r14d, edx
 						;; size=20 bbWeight=1 PerfScore 6.25
 G_M27737_IG02:
        mov      rdi, r15
        mov      esi, ebx
        mov      edx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        mov      ebx, eax
        cmp      r14d, 13
        jne      SHORT G_M27737_IG04
 						;; size=27 bbWeight=1 PerfScore 5.50
 G_M27737_IG03:
        mov      rdi, r15
        mov      esi, ebx
        xor      edx, edx
        mov      rax, qword ptr [r15]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        je       SHORT G_M27737_IG06
-						;; size=20 bbWeight=0.50 PerfScore 4.50
+						;; size=21 bbWeight=0.50 PerfScore 4.50
 G_M27737_IG04:
        mov      eax, r14d
        sub      eax, 1
        cmp      eax, 12
        ja       SHORT G_M27737_IG06
        mov      eax, ebx
 						;; size=13 bbWeight=1 PerfScore 2.00
 G_M27737_IG05:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=1 PerfScore 3.25
 G_M27737_IG06:
        mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_Month(int)
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_Month(int)
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 107, prolog size 12, PerfScore 21.50, instruction count 40, allocated bytes for code 107 (MethodHash=d3d993a6) for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 21.50, instruction count 40, allocated bytes for code 108 (MethodHash=d3d993a6) for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
1 (0.39 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  6,  8.25)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.DateTime>
 ;  V02 loc0         [V02    ] (  2,  5   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V03 loc1         [V03    ] (  3,  6   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V04 loc2         [V04    ] (  4, 10   )     int  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V05 loc3         [V05,T00] (  5, 17   )     int  ->  r15        
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T01] (  2, 16   )     int  ->  r13         "impAppendStmt"
 ;  V08 tmp2         [V08,T04] (  5, 10   )     ref  ->  r14         class-hnd single-def "dup spill" <System.Globalization.Calendar>
 ;* V09 tmp3         [V09    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.DateTime>
 ;* V10 tmp4         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V11 tmp5         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V12 tmp6         [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V13 tmp7         [V13,T05] (  3,  8   )     int  ->  rax         "Inline return value spill temp"
 ;* V14 tmp8         [V14    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V15 tmp9         [V15,T02] (  2, 16   )     int  ->  rsi         "Inlining Arg"
 ;  V16 tmp10        [V16,T06] (  5,  5   )    long  ->  r15         single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
 ;* V17 tmp11        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V09._dateData (fldOffset=0x0)" P-INDEP
 ;  V18 tmp12        [V18,T09] (  2,  4   )     int  ->  r12         "argument with side effect"
 ;  V19 tmp13        [V19,T10] (  2,  4   )     int  ->  [rbp-0x44]  spill-single-def "argument with side effect"
 ;  V20 tmp14        [V20,T11] (  2,  4   )     int  ->  rcx         "argument with side effect"
 ;  V21 cse0         [V21,T07] (  2,  4.25)    long  ->  r14         hoist "CSE #03: moderate"
 ;  V22 cse1         [V22,T08] (  4,  4   )    long  ->  r13         "CSE #01: moderate"
 ;
 ; Lcl frame size = 40
 
 G_M63146_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=25 bbWeight=1 PerfScore 7.25
 G_M63146_IG02:
        mov      rsi, 0xD1FFAB1E
        and      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        call     [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        mov      r14, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      r13, qword ptr [r14]
        mov      rax, qword ptr [r13+0x60]
-       call     [rax+0x28]System.Globalization.Calendar:GetYear(System.DateTime):int:this
+       call     [rax+0x20]System.Globalization.Calendar:GetYear(System.DateTime):int:this
        mov      r12d, eax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r13+0x58]
-       call     [rax+0x38]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
+       call     [rax+0x30]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
        mov      dword ptr [rbp-0x44], eax
        mov      rdi, r14
        mov      rsi, r15
        mov      rcx, qword ptr [r13+0x50]
-       call     [rcx+0x18]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
+       call     [rcx+0x10]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
        mov      ecx, eax
        lea      rsi, [rbp-0x40]
        mov      qword ptr [rsp], rsi
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x44]
        lea      r8, [rbp-0x30]
        lea      r9, [rbp-0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        mov      r15d, 1
        cmp      dword ptr [rbp-0x38], 1
        jle      SHORT G_M63146_IG08
 						;; size=142 bbWeight=1 PerfScore 38.00
 G_M63146_IG03:
        mov      rdi, qword ptr [rbx]
-       mov      r14, qword ptr [rdi+0x78]
+       mov      r14, qword ptr [rdi+0x70]
 						;; size=7 bbWeight=0.25 PerfScore 1.00
 G_M63146_IG04:
        mov      r13d, dword ptr [rbp-0x40]
        mov      esi, dword ptr [rbp-0x30]
        mov      rdi, rbx
        mov      edx, 3
-       call     [r14]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       call     [r14+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        lea      ecx, [r15-0x01]
        mov      edx, 0x8000
        sarx     ecx, edx, ecx
        test     eax, ecx
        jne      SHORT G_M63146_IG06
-						;; size=36 bbWeight=4 PerfScore 32.00
+						;; size=37 bbWeight=4 PerfScore 32.00
 G_M63146_IG05:
        mov      eax, 29
        jmp      SHORT G_M63146_IG07
 						;; size=7 bbWeight=2 PerfScore 4.50
 G_M63146_IG06:
        mov      eax, 30
 						;; size=5 bbWeight=2 PerfScore 0.50
 G_M63146_IG07:
        add      eax, r13d
        mov      dword ptr [rbp-0x40], eax
        inc      r15d
        cmp      r15d, dword ptr [rbp-0x38]
        jl       SHORT G_M63146_IG04
 						;; size=15 bbWeight=4 PerfScore 18.00
 G_M63146_IG08:
        mov      eax, dword ptr [rbp-0x40]
 						;; size=3 bbWeight=1 PerfScore 1.00
 G_M63146_IG09:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 255, prolog size 19, PerfScore 106.50, instruction count 75, allocated bytes for code 255 (MethodHash=b99a0955) for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
+; Total bytes of code 256, prolog size 19, PerfScore 106.50, instruction count 75, allocated bytes for code 256 (MethodHash=b99a0955) for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
1 (1.64 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  3,  2.50)     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T02] (  3,  2.50)     int  ->  rdx         single-def
 ;  V03 loc0         [V03,T04] (  3,  1.50)     int  ->  rax        
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05,T03] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M52894_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=0.50 PerfScore 1.88
 G_M52894_IG02:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        mov      esi, eax
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        lea      ecx, [rax+0x01]
        xor      edx, edx
        test     eax, eax
        mov      eax, edx
        cmovg    eax, ecx
-						;; size=43 bbWeight=0.50 PerfScore 6.38
+						;; size=44 bbWeight=0.50 PerfScore 6.38
 G_M52894_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 61, prolog size 8, PerfScore 9.38, instruction count 23, allocated bytes for code 61 (MethodHash=86393161) for method System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 9.38, instruction count 23, allocated bytes for code 62 (MethodHash=86393161) for method System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
1 (1.52 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  3,  2.50)     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T02] (  3,  2.50)     int  ->  rdx         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T03] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M14525_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=0.50 PerfScore 1.88
 G_M14525_IG02:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        mov      esi, eax
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        mov      ecx, 13
        mov      edx, 12
        test     eax, eax
        mov      eax, edx
        cmovne   eax, ecx
-						;; size=48 bbWeight=0.50 PerfScore 6.25
+						;; size=49 bbWeight=0.50 PerfScore 6.25
 G_M14525_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 66, prolog size 8, PerfScore 9.25, instruction count 23, allocated bytes for code 66 (MethodHash=7353c742) for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
+; Total bytes of code 67, prolog size 8, PerfScore 9.25, instruction count 23, allocated bytes for code 67 (MethodHash=7353c742) for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
1 (1.67 % of base) - System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  3,  2.50)     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T02] (  3,  2.50)     int  ->  rbx         single-def
 ;* V03 loc0         [V03    ] (  0,  0   )     int  ->  zero-ref   
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M28713_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      ebx, edx
 						;; size=10 bbWeight=0.50 PerfScore 1.88
 G_M28713_IG02:
        mov      edx, 3
        mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        dec      ebx
        mov      ecx, 0x8000
        sarx     ecx, ecx, ebx
        mov      edx, 30
        mov      edi, 29
        test     eax, ecx
        mov      eax, edi
        cmovne   eax, edx
-						;; size=43 bbWeight=0.50 PerfScore 4.75
+						;; size=44 bbWeight=0.50 PerfScore 4.75
 G_M28713_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 60, prolog size 8, PerfScore 7.75, instruction count 21, allocated bytes for code 60 (MethodHash=0d428fd6) for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
+; Total bytes of code 61, prolog size 8, PerfScore 7.75, instruction count 21, allocated bytes for code 61 (MethodHash=0d428fd6) for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
1 (4.00 % of base) - System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M55001_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M55001_IG02:
        xor      edx, edx
        mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        setne    al
        movzx    rax, al
-						;; size=19 bbWeight=1 PerfScore 8.75
+						;; size=20 bbWeight=1 PerfScore 8.75
 G_M55001_IG03:
        pop      rbp
        ret      
 						;; size=2 bbWeight=1 PerfScore 1.50
 
-; Total bytes of code 25, prolog size 4, PerfScore 11.50, instruction count 11, allocated bytes for code 25 (MethodHash=f9cb2926) for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.50, instruction count 11, allocated bytes for code 26 (MethodHash=f9cb2926) for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
1 (0.30 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  6,  6   )     int  ->  r15        
 ;  V02 arg2         [V02,T02] (  6,  4.50)     int  ->  r14         single-def
 ;  V03 arg3         [V03,T03] (  5,  4   )     int  ->  r13         single-def
 ;  V04 arg4         [V04,T04] (  3,  3   )     int  ->   r8         single-def
 ;  V05 loc0         [V05,T06] (  3,  2   )     int  ->  r12        
 ;  V06 loc1         [V06,T05] (  3,  2.50)     int  ->  rax        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T07] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V09 tmp2         [V09,T08] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V10 tmp3         [V10,T11] (  2,  0   )     ref  ->  r13         class-hnd exact single-def "impImportAndPushBox" <System.String>
 ;  V11 tmp4         [V11,T09] (  3,  0   )     ref  ->  r12         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V12 tmp5         [V12,T10] (  3,  0   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V13 tmp6         [V13,T12] (  2,  0   )     ref  ->  [rbp-0x30]  spill-single-def "argument with side effect"
 ;  V14 tmp7         [V14,T13] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M62098_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      r15d, esi
        mov      r14d, edx
        mov      r13d, ecx
 						;; size=28 bbWeight=1 PerfScore 8.50
 G_M62098_IG02:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      ecx, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
        mov      r15d, eax
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
        mov      r12d, eax
        test     r13d, r13d
        jle      SHORT G_M62098_IG07
        cmp      r13d, r12d
        jg       SHORT G_M62098_IG07
        mov      rdi, rbx
        mov      esi, r15d
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        je       SHORT G_M62098_IG05
-						;; size=82 bbWeight=1 PerfScore 20.25
+						;; size=83 bbWeight=1 PerfScore 20.25
 G_M62098_IG03:
        inc      eax
        cmp      r14d, eax
        sete     al
        movzx    rax, al
 						;; size=11 bbWeight=0.50 PerfScore 0.88
 G_M62098_IG04:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M62098_IG05:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M62098_IG06:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M62098_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      dword ptr [rbx+0x08], r13d
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_Day():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_Day():System.String
        mov      r13, rax
        mov      dword ptr [r15+0x08], r12d
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      dword ptr [r12+0x08], r14d
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      edi, 0x13E08
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      gword ptr [rbp-0x30], rax
        mov      rdx, r12
        mov      rsi, r15
        mov      rdi, r13
        mov      rcx, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
        call     [rcx]System.SR:Format(System.String,System.Object,System.Object):System.String
        mov      rcx, rax
        mov      rsi, gword ptr [rbp-0x30]
        mov      rdx, rbx
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r14
        call     CORINFO_HELP_THROW
        int3     
 						;; size=179 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 332, prolog size 16, PerfScore 34.00, instruction count 94, allocated bytes for code 332 (MethodHash=dd350d6d) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 333, prolog size 16, PerfScore 34.00, instruction count 94, allocated bytes for code 333 (MethodHash=dd350d6d) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
1 (1.32 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T02] (  3,  3   )     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T01] (  4,  3.50)     int  ->  r15         single-def
 ;  V03 arg3         [V03,T03] (  3,  3   )     int  ->  rcx         single-def
 ;  V04 loc0         [V04,T05] (  3,  2.50)     int  ->  rax        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T04] (  2,  4   )     int  ->  rsi         "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M5185_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
        mov      r15d, edx
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M5185_IG02:
        mov      rdi, rbx
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
        mov      esi, eax
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        je       SHORT G_M5185_IG05
-						;; size=38 bbWeight=1 PerfScore 12.75
+						;; size=39 bbWeight=1 PerfScore 12.75
 G_M5185_IG03:
        inc      eax
        cmp      r15d, eax
        sete     al
        movzx    rax, al
 						;; size=11 bbWeight=0.50 PerfScore 0.88
 G_M5185_IG04:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M5185_IG05:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M5185_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 76, prolog size 9, PerfScore 20.25, instruction count 31, allocated bytes for code 76 (MethodHash=fcf0ebbe) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 77, prolog size 9, PerfScore 20.25, instruction count 31, allocated bytes for code 77 (MethodHash=fcf0ebbe) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
1 (1.75 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T02] (  3,  3   )     int  ->  rdx         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T03] (  2,  4   )     int  ->  rsi         "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M6561_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=1 PerfScore 3.75
 G_M6561_IG02:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
        mov      esi, eax
        mov      rdi, rbx
        xor      edx, edx
        mov      rax, qword ptr [rbx]
-       mov      rax, qword ptr [rax+0x78]
-       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+       mov      rax, qword ptr [rax+0x70]
+       call     [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
        test     eax, eax
        setne    al
        movzx    rax, al
-						;; size=39 bbWeight=1 PerfScore 12.75
+						;; size=40 bbWeight=1 PerfScore 12.75
 G_M6561_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 57, prolog size 8, PerfScore 18.75, instruction count 21, allocated bytes for code 57 (MethodHash=23bee65e) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
+; Total bytes of code 58, prolog size 8, PerfScore 18.75, instruction count 21, allocated bytes for code 58 (MethodHash=23bee65e) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment