29 (3.86 % of base) - System.Security.Cryptography.CryptographicAttributeObjectCollection:Add(System.Security.Cryptography.CryptographicAttributeObject):int:this
; Assembly listing for method System.Security.Cryptography.CryptographicAttributeObjectCollection:Add(System.Security.Cryptography.CryptographicAttributeObject):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; 19 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.CryptographicAttributeObjectCollection>
-; V01 arg1 [V01,T17] ( 8, 9.50) ref -> r15 class-hnd single-def <System.Security.Cryptography.CryptographicAttributeObject>
-; V02 loc0 [V02,T21] ( 6, 6.75) ref -> r14 class-hnd exact single-def <System.String>
-; V03 loc1 [V03,T29] ( 2, 1 ) int -> rbx
-; V04 loc2 [V04,T06] ( 4, 14 ) ref -> r12 class-hnd exact <System.Security.Cryptography.CryptographicAttributeObject>
+; V00 this [V00,T09] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.CryptographicAttributeObjectCollection>
+; V01 arg1 [V01,T13] ( 8, 9.50) ref -> r15 class-hnd single-def <System.Security.Cryptography.CryptographicAttributeObject>
+; V02 loc0 [V02,T16] ( 6, 6.75) ref -> r14 class-hnd exact single-def <System.String>
+; V03 loc1 [V03,T23] ( 2, 1 ) int -> rbx
+; V04 loc2 [V04,T08] ( 4, 14 ) ref -> r12 class-hnd exact <System.Security.Cryptography.CryptographicAttributeObject>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V06 loc4 [V06,T08] ( 4, 12.50) ref -> r14 class-hnd exact <System.Security.Cryptography.AsnEncodedDataEnumerator>
-; V07 loc5 [V07,T18] ( 4, 8 ) ref -> rdx class-hnd <System.Security.Cryptography.AsnEncodedData>
+;* V06 loc4 [V06,T30] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V07 loc5 [V07,T14] ( 4, 8 ) ref -> rdx class-hnd <System.Security.Cryptography.AsnEncodedData>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Security.Cryptography.AsnEncodedDataCollection>
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V11 tmp3 [V11,T30] ( 2, 2 ) int -> rdi "spilling unroll qmark"
-; V12 tmp4 [V12,T37] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V13 tmp5 [V13,T38] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
-; V14 tmp6 [V14,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
-; V15 tmp7 [V15,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+; V11 tmp3 [V11,T24] ( 2, 2 ) int -> rdi "spilling unroll qmark"
+; V12 tmp4 [V12,T32] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V13 tmp5 [V13,T33] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
+; V14 tmp6 [V14,T25] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V15 tmp7 [V15,T34] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Oid>
; V17 tmp9 [V17,T03] ( 3, 24 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Oid>
-; V19 tmp11 [V19,T27] ( 3, 3 ) ref -> r15 class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
-; V20 tmp12 [V20,T25] ( 4, 4 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
-;* V21 tmp13 [V21,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
-; V22 tmp14 [V22,T02] ( 4, 24 ) int -> rdi "Inlining Arg"
-; V23 tmp15 [V23,T16] ( 2, 12 ) ref -> rsi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
-; V24 tmp16 [V24,T09] ( 3, 12 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
+; V19 tmp11 [V19,T21] ( 3, 3 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
+;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V21 tmp13 [V21,T06] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
+; V22 tmp14 [V22,T02] ( 4, 24 ) int -> rsi "Inlining Arg"
+; V23 tmp15 [V23,T05] ( 3, 20 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
+; V24 tmp16 [V24,T10] ( 3, 12 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V26 tmp18 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
; V27 tmp19 [V27,T01] ( 6, 24 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
-; V28 tmp20 [V28,T23] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Security.Cryptography.AsnEncodedData[]>
-; V29 tmp21 [V29,T19] ( 4, 8 ) int -> rax "Inline stloc first use temp"
+; V28 tmp20 [V28,T18] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Security.Cryptography.AsnEncodedData[]>
+; V29 tmp21 [V29,T15] ( 4, 8 ) int -> rax "Inline stloc first use temp"
;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp23 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
-; V36 tmp28 [V36,T22] ( 6, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
-; V37 tmp29 [V37,T32] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Security.Cryptography.CryptographicAttributeObject[]>
-; V38 tmp30 [V38,T28] ( 4, 2 ) int -> rax single-def "Inline stloc first use temp"
-; V39 tmp31 [V39,T04] ( 3, 24 ) ref -> rdi "arr expr"
-; V40 tmp32 [V40,T05] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V41 tmp33 [V41,T40] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V42 tmp34 [V42,T41] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V43 tmp35 [V43,T10] ( 3, 12 ) ref -> rsi "arr expr"
-; V44 tmp36 [V44,T42] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V45 cse0 [V45,T13] ( 3, 12 ) int -> rax "CSE #10: moderate"
-; V46 cse1 [V46,T11] ( 3, 12 ) ref -> rsi "CSE #09: moderate"
-; V47 cse2 [V47,T26] ( 2, 4 ) int -> rax "CSE #05: moderate"
-; V48 cse3 [V48,T34] ( 3, 1.50) int -> rax "CSE #02: moderate"
-; V49 cse4 [V49,T14] ( 3, 12 ) int -> rdi "CSE #08: moderate"
-; V50 cse5 [V50,T35] ( 2, 1 ) int -> rsi "CSE #03: moderate"
-; V51 cse6 [V51,T15] ( 3, 12 ) int -> rdi "CSE #06: moderate"
-; V52 cse7 [V52,T12] ( 2, 8 ) ref -> rsi "CSE #07: moderate"
-; V53 cse8 [V53,T24] ( 3, 6 ) ref -> rdi "CSE #04: moderate"
-; V54 cse9 [V54,T33] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
-; V55 rat0 [V55,T00] ( 8, 25.50) long -> r13 "Widened IV V03"
-; V56 rat1 [V56,T36] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V36 tmp28 [V36,T17] ( 6, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
+; V37 tmp29 [V37,T26] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Security.Cryptography.CryptographicAttributeObject[]>
+; V38 tmp30 [V38,T22] ( 4, 2 ) int -> rax single-def "Inline stloc first use temp"
+; V39 tmp31 [V39 ] ( 9, 22 ) struct (24) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V40 tmp32 [V40,T04] ( 3, 24 ) ref -> rdi "arr expr"
+; V41 tmp33 [V41,T07] ( 2, 16 ) ref -> rsi "argument with side effect"
+; V42 tmp34 [V42,T35] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V43 tmp35 [V43,T36] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V44 tmp36 [V44,T11] ( 3, 12 ) ref -> rdi "arr expr"
+; V45 tmp37 [V45,T37] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V46 cse0 [V46,T20] ( 2, 4 ) int -> rax "CSE #05: moderate"
+; V47 cse1 [V47,T28] ( 3, 1.50) int -> rax "CSE #02: moderate"
+; V48 cse2 [V48,T29] ( 2, 1 ) int -> rsi "CSE #03: moderate"
+; V49 cse3 [V49,T12] ( 3, 12 ) int -> rdi "CSE #06: moderate"
+; V50 cse4 [V50,T19] ( 3, 6 ) ref -> rdi "CSE #04: moderate"
+; V51 cse5 [V51,T27] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
+; V52 rat0 [V52,T00] ( 8, 25.50) long -> r13 "Widened IV V03"
+; V53 rat1 [V53,T31] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M1123_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
+ vxorps xmm8, xmm8, xmm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ xor eax, eax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15, rsi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=41 bbWeight=1 PerfScore 10.83
G_M1123_IG02:
test r15, r15
je G_M1123_IG21
mov rdi, gword ptr [r15+0x10]
mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
call [rax]Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
mov r14, gword ptr [rax+0x08]
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
cmp dword ptr [rdi+0x10], 0
jle SHORT G_M1123_IG04
;; size=42 bbWeight=1 PerfScore 14.75
G_M1123_IG03:
mov rdi, gword ptr [rbx+0x08]
cmp r13d, dword ptr [rdi+0x10]
jae G_M1123_IG20
mov rdi, gword ptr [rdi+0x08]
cmp r13d, dword ptr [rdi+0x08]
jae G_M1123_IG22
mov r12, gword ptr [rdi+8*r13+0x10]
mov rdi, gword ptr [r12+0x08]
cmp rdi, gword ptr [r15+0x08]
je G_M1123_IG19
mov rdi, gword ptr [r12+0x10]
mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
call [rax]Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
mov rsi, gword ptr [rax+0x08]
mov rdi, r14
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
jne SHORT G_M1123_IG08
inc r13d
mov rdi, gword ptr [rbx+0x08]
cmp r13d, dword ptr [rdi+0x10]
jl SHORT G_M1123_IG03
;; size=106 bbWeight=4 PerfScore 154.00
G_M1123_IG04:
mov rdi, gword ptr [rbx+0x08]
mov eax, dword ptr [rdi+0x10]
mov r13d, eax
inc dword ptr [rdi+0x14]
mov r14, gword ptr [rdi+0x08]
mov esi, dword ptr [r14+0x08]
cmp esi, eax
ja SHORT G_M1123_IG05
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M1123_IG06
;; size=42 bbWeight=0.50 PerfScore 9.00
G_M1123_IG05:
lea esi, [rax+0x01]
mov dword ptr [rdi+0x10], esi
mov edi, eax
lea rdi, bword ptr [r14+8*rdi+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=21 bbWeight=0.50 PerfScore 2.00
G_M1123_IG06:
mov eax, r13d
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M1123_IG07:
vzeroupper
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.62
G_M1123_IG08:
mov ebx, r13d
test r14, r14
je SHORT G_M1123_IG11
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M1123_IG09:
cmp dword ptr [r14+0x08], 20
jne SHORT G_M1123_IG11
;; size=7 bbWeight=0.25 PerfScore 1.00
G_M1123_IG10:
vmovups ymm0, ymmword ptr [r14+0x0C]
vmovups ymm1, ymmword ptr [r14+0x14]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD00]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
sete dil
movzx rdi, dil
test edi, edi
jne G_M1123_IG18
;; size=52 bbWeight=0.50 PerfScore 10.75
G_M1123_IG11:
- mov r15, gword ptr [r15+0x08]
- cmp byte ptr [r15], r15b
- mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.AsnEncodedDataEnumerator
- call CORINFO_HELP_NEWSFAST
- mov r14, rax
- lea rdi, bword ptr [r14+0x08]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r14+0x10], -1
+ mov rdi, gword ptr [r15+0x08]
+ cmp byte ptr [rdi], dil
+ vxorps xmm0, xmm0, xmm0
+ vmovdqu xmmword ptr [rbp-0x40], xmm0
+ vmovdqu xmmword ptr [rbp-0x3C], xmm0
+ mov rsi, 0xD1FFAB1E ; System.Security.Cryptography.AsnEncodedDataEnumerator
+ mov qword ptr [rbp-0x40], rsi
+ mov gword ptr [rbp-0x38], rdi
+ mov dword ptr [rbp-0x30], -1
jmp SHORT G_M1123_IG13
- ;; size=47 bbWeight=0.50 PerfScore 5.62
+ ;; size=48 bbWeight=0.50 PerfScore 6.29
G_M1123_IG12:
mov rsi, rdx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
;; size=15 bbWeight=2 PerfScore 7.00
G_M1123_IG13:
- mov edi, dword ptr [r14+0x10]
- mov rsi, gword ptr [r14+0x08]
+ mov edi, dword ptr [rbp-0x30]
+ mov rsi, gword ptr [rbp-0x38]
mov rsi, gword ptr [rsi+0x08]
- mov eax, dword ptr [rsi+0x10]
- lea ecx, [rax-0x01]
- cmp edi, ecx
+ mov esi, dword ptr [rsi+0x10]
+ dec esi
+ cmp edi, esi
jge SHORT G_M1123_IG15
inc edi
- mov dword ptr [r14+0x10], edi
- cmp edi, eax
+ mov dword ptr [rbp-0x30], edi
+ mov rdi, gword ptr [rbp-0x38]
+ mov esi, dword ptr [rbp-0x30]
+ mov rdi, gword ptr [rdi+0x08]
+ cmp esi, dword ptr [rdi+0x10]
jae G_M1123_IG20
- ;; size=36 bbWeight=4 PerfScore 49.00
+ ;; size=45 bbWeight=4 PerfScore 67.00
G_M1123_IG14:
- mov rsi, gword ptr [rsi+0x08]
- cmp edi, dword ptr [rsi+0x08]
+ mov rdi, gword ptr [rdi+0x08]
+ cmp esi, dword ptr [rdi+0x08]
jae G_M1123_IG22
- mov edi, edi
- mov rdx, gword ptr [rsi+8*rdi+0x10]
+ mov esi, esi
+ mov rdx, gword ptr [rdi+8*rsi+0x10]
mov rdi, gword ptr [r12+0x08]
cmp byte ptr [rdi], dil
test rdx, rdx
je SHORT G_M1123_IG17
mov rdi, gword ptr [rdi+0x08]
mov eax, dword ptr [rdi+0x10]
inc dword ptr [rdi+0x14]
mov rcx, gword ptr [rdi+0x08]
cmp dword ptr [rcx+0x08], eax
jbe SHORT G_M1123_IG12
lea esi, [rax+0x01]
mov dword ptr [rdi+0x10], esi
movsxd rsi, eax
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp SHORT G_M1123_IG13
;; size=78 bbWeight=2 PerfScore 69.50
G_M1123_IG15:
mov eax, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M1123_IG16:
vzeroupper
- add rsp, 8
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.62
G_M1123_IG17:
mov edi, 0x430B
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M1123_IG18:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_Pkcs9_MultipleSigningTimeNotAllowed():System.String
call [rax]System.SR:get_Cryptography_Pkcs9_MultipleSigningTimeNotAllowed():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M1123_IG19:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_InvalidOperation_DuplicateItemNotAllowed():System.String
call [rax]System.SR:get_InvalidOperation_DuplicateItemNotAllowed():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
call [rax]System.InvalidOperationException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M1123_IG20:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M1123_IG21:
mov rdi, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov edi, 0x1E5C
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this
call [rax]System.ArgumentNullException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=65 bbWeight=0 PerfScore 0.00
G_M1123_IG22:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dq 002E003000340038h, 0035003300310031h, 0031002E00390034h, 0035002E0039002Eh
RWD32 dq 002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h
-; Total bytes of code 751, prolog size 22, PerfScore 336.88, instruction count 191, allocated bytes for code 751 (MethodHash=599afb9c) for method System.Security.Cryptography.CryptographicAttributeObjectCollection:Add(System.Security.Cryptography.CryptographicAttributeObject):int:this (FullOpts)
+; Total bytes of code 780, prolog size 41, PerfScore 358.38, instruction count 198, allocated bytes for code 780 (MethodHash=599afb9c) for method System.Security.Cryptography.CryptographicAttributeObjectCollection:Add(System.Security.Cryptography.CryptographicAttributeObject):int:this (FullOpts)
23 (9.20 % of base) - System.Formats.Nrbf.ArraySinglePrimitiveRecord`1[System.Numerics.Vector`1[float]]:DecodeFromNonSeekableStream(System.IO.BinaryReader,int):System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]
; Assembly listing for method System.Formats.Nrbf.ArraySinglePrimitiveRecord`1[System.Numerics.Vector`1[float]]:DecodeFromNonSeekableStream(System.IO.BinaryReader,int):System.Collections.Generic.List`1[System.Numerics.Vector`1[float]] (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; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 4, 6.25) ref -> rbx class-hnd single-def <System.IO.BinaryReader>
-; V01 arg1 [V01,T09] ( 6, 5.25) int -> r15 single-def
-; V02 loc0 [V02,T02] ( 8, 22 ) ref -> r13 class-hnd exact single-def <System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]>
-;* V03 loc1 [V03,T13] ( 0, 0 ) int -> zero-ref
+; V00 arg0 [V00,T04] ( 4, 6.25) ref -> rbx class-hnd single-def <System.IO.BinaryReader>
+; V01 arg1 [V01,T07] ( 6, 5.25) int -> r15 single-def
+; V02 loc0 [V02,T00] ( 8, 22 ) ref -> r13 class-hnd exact single-def <System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]>
+;* V03 loc1 [V03,T11] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]>
+; V05 tmp1 [V05,T08] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V07 tmp3 [V07,T00] ( 3, 24 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.TimeSpan>
-; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> r12 "inline UNBOX clone1"
-; V09 tmp5 [V09,T12] ( 2, 2 ) int -> r14 "Inline return value spill temp"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.TimeSpan>
+;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "inline UNBOX clone1"
+; V09 tmp5 [V09,T10] ( 2, 2 ) int -> r14 "Inline return value spill temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T05] ( 3, 10 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Numerics.Vector`1[float][]>
-; V12 tmp8 [V12,T04] ( 4, 12 ) int -> rax "Inline stloc first use temp"
-; V13 tmp9 [V13,T14] ( 3, 16 ) simd32 -> mm0 "Inlining Arg" <System.Numerics.Vector`1[float]>
-; V14 tmp10 [V14,T07] ( 2, 8 ) long -> r12 "field V06._ticks (fldOffset=0x0)" P-INDEP
-; V15 cse0 [V15,T11] ( 2, 4.25) long -> r14 hoist "CSE #02: moderate"
-; V16 cse1 [V16,T08] ( 2, 8 ) int -> rdi "CSE #03: aggressive"
-; V17 rat0 [V17,T03] ( 4, 12.25) int -> r15 "Trip count IV"
+; V11 tmp7 [V11,T03] ( 3, 10 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Numerics.Vector`1[float][]>
+; V12 tmp8 [V12,T02] ( 4, 12 ) int -> rax "Inline stloc first use temp"
+; V13 tmp9 [V13,T12] ( 3, 16 ) simd32 -> mm0 "Inlining Arg" <System.Numerics.Vector`1[float]>
+; V14 tmp10 [V14 ] ( 6, 21 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[System.TimeSpan]>
+; V15 tmp11 [V15,T05] ( 2, 8 ) long -> rax "field V06._ticks (fldOffset=0x0)" P-INDEP
+; V16 cse0 [V16,T09] ( 2, 4.25) long -> r14 hoist "CSE #02: moderate"
+; V17 cse1 [V17,T06] ( 2, 8 ) int -> rdi "CSE #05: aggressive"
+; V18 rat0 [V18,T01] ( 4, 12.25) int -> r15 "Trip count IV"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M51783_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
+ xor eax, eax
+ mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15d, esi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=35 bbWeight=1 PerfScore 9.50
G_M51783_IG02:
mov edi, 4
cmp r15d, 4
mov r14d, edi
cmovle r14d, r15d
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, r13
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:.ctor(int):this
call [rax]System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:.ctor(int):this
test r15d, r15d
- jle G_M51783_IG08
+ jle G_M51783_IG10
;; size=61 bbWeight=1 PerfScore 7.50
G_M51783_IG03:
mov rdi, qword ptr [rbx]
mov r14, qword ptr [rdi+0x50]
;; size=7 bbWeight=0.25 PerfScore 1.00
G_M51783_IG04:
mov rdi, rbx
call [r14+0x10]System.IO.BinaryReader:ReadInt64():long:this
- mov r12, rax
- mov rdi, 0xD1FFAB1E ; System.TimeSpan
- call CORINFO_HELP_NEWSFAST
- mov qword ptr [rax+0x08], r12
- mov r12, rax
- mov rsi, r12
+ vxorps xmm0, xmm0, xmm0
+ vmovups xmmword ptr [rbp-0x38], xmm0
+ mov rsi, 0xD1FFAB1E ; System.TimeSpan
+ mov qword ptr [rbp-0x38], rsi
+ mov qword ptr [rbp-0x30], rax
+ mov rsi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
+ cmp qword ptr [rbp-0x38], rsi
+ je SHORT G_M51783_IG06
+ ;; size=50 bbWeight=4 PerfScore 40.33
+G_M51783_IG05:
+ mov rsi, qword ptr [rbp-0x38]
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
- call [rax]CORINFO_HELP_UNBOX
- vmovups ymm0, ymmword ptr [r12+0x08]
+ call CORINFO_HELP_UNBOX_TYPETEST
+ ;; size=19 bbWeight=1 PerfScore 2.25
+G_M51783_IG06:
+ lea rdi, bword ptr [rbp-0x30]
+ vmovups ymm0, ymmword ptr [rdi]
inc dword ptr [r13+0x14]
mov r12, gword ptr [r13+0x08]
mov eax, dword ptr [r13+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, eax
- ja SHORT G_M51783_IG06
- ;; size=85 bbWeight=4 PerfScore 100.00
-G_M51783_IG05:
+ ja SHORT G_M51783_IG08
+ ;; size=29 bbWeight=4 PerfScore 63.00
+G_M51783_IG07:
vmovups ymmword ptr [rsp], ymm0
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:AddWithResize(System.Numerics.Vector`1[float]):this
call [rax]System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:AddWithResize(System.Numerics.Vector`1[float]):this
- jmp SHORT G_M51783_IG07
+ jmp SHORT G_M51783_IG09
;; size=22 bbWeight=2 PerfScore 13.00
-G_M51783_IG06:
+G_M51783_IG08:
lea ecx, [rax+0x01]
mov dword ptr [r13+0x10], ecx
mov eax, eax
shl rax, 5
vmovups ymmword ptr [r12+rax+0x10], ymm0
;; size=20 bbWeight=2 PerfScore 8.50
-G_M51783_IG07:
+G_M51783_IG09:
dec r15d
jne G_M51783_IG04
;; size=9 bbWeight=4 PerfScore 5.00
-G_M51783_IG08:
+G_M51783_IG10:
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M51783_IG09:
+G_M51783_IG11:
vzeroupper
- add rsp, 40
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
-; Total bytes of code 250, prolog size 19, PerfScore 147.75, instruction count 65, allocated bytes for code 250 (MethodHash=ff9635b8) for method System.Formats.Nrbf.ArraySinglePrimitiveRecord`1[System.Numerics.Vector`1[float]]:DecodeFromNonSeekableStream(System.IO.BinaryReader,int):System.Collections.Generic.List`1[System.Numerics.Vector`1[float]] (FullOpts)
+; Total bytes of code 273, prolog size 29, PerfScore 155.58, instruction count 71, allocated bytes for code 273 (MethodHash=ff9635b8) for method System.Formats.Nrbf.ArraySinglePrimitiveRecord`1[System.Numerics.Vector`1[float]]:DecodeFromNonSeekableStream(System.IO.BinaryReader,int):System.Collections.Generic.List`1[System.Numerics.Vector`1[float]] (FullOpts)
19 (1.64 % of base) - System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CheckCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.Pkcs.SignerInfo,byref,byref,System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo):ubyte
; Assembly listing for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CheckCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.Pkcs.SignerInfo,byref,byref,System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo):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; 53 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T17] ( 8, 8 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V01 arg1 [V01,T22] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
-; V02 arg2 [V02,T23] ( 3, 3 ) byref -> rdx single-def
-; V03 arg3 [V03,T24] ( 3, 3 ) byref -> rcx single-def
-; V04 arg4 [V04,T20] ( 5, 5 ) ref -> r15 class-hnd single-def <System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo>
-; V05 loc0 [V05,T15] ( 4, 18 ) ref -> r15 class-hnd exact single-def <System.Security.Cryptography.X509Certificates.X509ExtensionCollection>
-; V06 loc1 [V06,T18] ( 4, 10 ) ubyte -> r13
-; V07 loc2 [V07,T12] ( 5, 33 ) int -> r12
-; V08 loc3 [V08,T16] ( 3, 12 ) ref -> rdi class-hnd exact <System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension>
-;* V09 loc4 [V09,T35] ( 0, 0 ) ubyte -> zero-ref
-; V10 loc5 [V10,T03] ( 4,100 ) ref -> rax class-hnd exact <System.Security.Cryptography.OidEnumerator>
-;* V11 loc6 [V11,T49] ( 0, 0 ) ubyte -> zero-ref single-def
+; V00 arg0 [V00,T12] ( 8, 8 ) ref -> rbx class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V01 arg1 [V01,T17] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
+; V02 arg2 [V02,T18] ( 3, 3 ) byref -> rdx single-def
+; V03 arg3 [V03,T19] ( 3, 3 ) byref -> rcx single-def
+; V04 arg4 [V04,T15] ( 5, 5 ) ref -> r15 class-hnd single-def <System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo>
+; V05 loc0 [V05,T10] ( 4, 18 ) ref -> r15 class-hnd exact single-def <System.Security.Cryptography.X509Certificates.X509ExtensionCollection>
+; V06 loc1 [V06,T13] ( 4, 10 ) ubyte -> r13
+; V07 loc2 [V07,T08] ( 5, 33 ) int -> r12
+; V08 loc3 [V08,T11] ( 3, 12 ) ref -> rdi class-hnd exact <System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension>
+;* V09 loc4 [V09,T30] ( 0, 0 ) ubyte -> zero-ref
+;* V10 loc5 [V10,T31] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Security.Cryptography.OidEnumerator>
+;* V11 loc6 [V11,T45] ( 0, 0 ) ubyte -> zero-ref single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.DateTimeOffset>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.DateTimeOffset>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.DateTimeOffset>
;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.DateTimeOffset>
-; V19 tmp7 [V19,T10] ( 4, 72 ) ref -> rdi "ISINST eval op1"
+; V19 tmp7 [V19,T06] ( 4, 72 ) ref -> rdi "ISINST eval op1"
;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension>
-; V21 tmp9 [V21,T19] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Certificate2Collection>
+; V21 tmp9 [V21,T14] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Certificate2Collection>
;* V22 tmp10 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Security.Cryptography.CryptographicException>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V25 tmp13 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V26 tmp14 [V26,T36] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
+; V26 tmp14 [V26,T32] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
-; V29 tmp17 [V29,T25] ( 4, 4 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V29 tmp17 [V29,T20] ( 4, 4 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V30 tmp18 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V31 tmp19 [V31,T33] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V32 tmp20 [V32,T26] ( 4, 4 ) ref -> rdi
+; V31 tmp19 [V31,T28] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V32 tmp20 [V32,T21] ( 4, 4 ) ref -> rdi
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.DateTimeOffset>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.DateTimeOffset>
;* V35 tmp23 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime>
;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V37 tmp25 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V41 tmp29 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V42 tmp30 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V44 tmp32 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V45 tmp33 [V45 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
;* V47 tmp35 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V48 tmp36 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V49 tmp37 [V49,T37] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
+; V49 tmp37 [V49,T33] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp39 [V51 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
-; V52 tmp40 [V52,T27] ( 4, 4 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V52 tmp40 [V52,T22] ( 4, 4 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V54 tmp42 [V54,T34] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V55 tmp43 [V55,T28] ( 4, 4 ) ref -> rdi
+; V54 tmp42 [V54,T29] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V55 tmp43 [V55,T23] ( 4, 4 ) ref -> rdi
;* V56 tmp44 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.DateTimeOffset>
;* V57 tmp45 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.DateTimeOffset>
;* V58 tmp46 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime>
;* V59 tmp47 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V60 tmp48 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V62 tmp50 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V63 tmp51 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V65 tmp53 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V68 tmp56 [V68 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V69 tmp57 [V69,T14] ( 3, 24 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "Inlining Arg" <System.Security.Cryptography.OidCollection>
-; V70 tmp58 [V70,T13] ( 4, 32 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.OidEnumerator>
+; V69 tmp57 [V69,T09] ( 3, 24 ) ref -> rax class-hnd exact "Inlining Arg" <System.Security.Cryptography.OidCollection>
+;* V70 tmp58 [V70 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.OidEnumerator>
; V71 tmp59 [V71,T00] ( 5,192 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V72 tmp60 [V72,T09] ( 2, 96 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.OidCollection>
+; V72 tmp60 [V72,T01] ( 3,160 ) ref -> rax class-hnd exact "Inlining Arg" <System.Security.Cryptography.OidCollection>
;* V73 tmp61 [V73 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V74 tmp62 [V74,T02] ( 3,128 ) int -> [rbp-0x30] spill-single-def "Inlining Arg"
+; V74 tmp62 [V74,T03] ( 3,128 ) int -> [rbp-0x30] spill-single-def "Inlining Arg"
;* V75 tmp63 [V75 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V76 tmp64 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Oid>
;* V77 tmp65 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V78 tmp66 [V78,T01] ( 5,144 ) ref -> rdi "spilling varStr"
-; V79 tmp67 [V79,T11] ( 2, 64 ) int -> rdi "spilling unroll qmark"
+; V78 tmp66 [V78,T02] ( 5,144 ) ref -> rax "spilling varStr"
+; V79 tmp67 [V79,T07] ( 2, 64 ) int -> rax "spilling unroll qmark"
;* V80 tmp68 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V81 tmp69 [V81 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V82 tmp70 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.OidCollection>
;* V83 tmp71 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509Extension]>
-; V84 tmp72 [V84,T21] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList>
-;* V85 tmp73 [V85,T48] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V86 tmp74 [V86,T29] ( 4, 4 ) long -> r13 "field V13._dateData (fldOffset=0x0)" P-INDEP
-;* V87 tmp75 [V87 ] ( 0, 0 ) short -> zero-ref single-def "field V14._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V88 tmp76 [V88 ] ( 0, 0 ) long -> zero-ref single-def "field V14._dateTime (fldOffset=0x8)" P-INDEP
-;* V89 tmp77 [V89 ] ( 0, 0 ) short -> zero-ref single-def "field V15._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V90 tmp78 [V90,T38] ( 2, 2 ) long -> rdi single-def "field V15._dateTime (fldOffset=0x8)" P-INDEP
-; V91 tmp79 [V91,T30] ( 4, 4 ) long -> r13 "field V16._dateData (fldOffset=0x0)" P-INDEP
-;* V92 tmp80 [V92 ] ( 0, 0 ) short -> zero-ref single-def "field V17._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V93 tmp81 [V93 ] ( 0, 0 ) long -> zero-ref single-def "field V17._dateTime (fldOffset=0x8)" P-INDEP
-;* V94 tmp82 [V94 ] ( 0, 0 ) short -> zero-ref single-def "field V18._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V95 tmp83 [V95,T39] ( 2, 2 ) long -> rdi single-def "field V18._dateTime (fldOffset=0x8)" P-INDEP
-;* V96 tmp84 [V96 ] ( 0, 0 ) short -> zero-ref single-def "field V23._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V97 tmp85 [V97,T40] ( 2, 2 ) long -> [rbp-0x38] do-not-enreg[F] "field V23._dateTime (fldOffset=0x8)" P-INDEP
-;* V98 tmp86 [V98 ] ( 0, 0 ) long -> zero-ref single-def "field V24._dateData (fldOffset=0x0)" P-INDEP
-; V99 tmp87 [V99,T31] ( 4, 4 ) long -> r12 "field V25._ticks (fldOffset=0x0)" P-INDEP
-; V100 tmp88 [V100,T41] ( 2, 2 ) long -> r12 "field V28._ticks (fldOffset=0x0)" P-INDEP
-;* V101 tmp89 [V101 ] ( 0, 0 ) long -> zero-ref single-def "field V30._dateData (fldOffset=0x0)" P-INDEP
-;* V102 tmp90 [V102 ] ( 0, 0 ) short -> zero-ref "field V33._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V103 tmp91 [V103 ] ( 0, 0 ) long -> zero-ref single-def "field V33._dateTime (fldOffset=0x8)" P-INDEP
-;* V104 tmp92 [V104 ] ( 0, 0 ) short -> zero-ref "field V34._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V105 tmp93 [V105 ] ( 0, 0 ) long -> zero-ref single-def "field V34._dateTime (fldOffset=0x8)" P-INDEP
-;* V106 tmp94 [V106 ] ( 0, 0 ) long -> zero-ref single-def "field V35._dateData (fldOffset=0x0)" P-INDEP
-;* V107 tmp95 [V107 ] ( 0, 0 ) long -> zero-ref single-def "field V36._dateData (fldOffset=0x0)" P-INDEP
-;* V108 tmp96 [V108 ] ( 0, 0 ) long -> zero-ref single-def "field V37._dateData (fldOffset=0x0)" P-INDEP
-; V109 tmp97 [V109,T42] ( 2, 2 ) long -> rax single-def "field V38._dateData (fldOffset=0x0)" P-INDEP
-;* V110 tmp98 [V110 ] ( 0, 0 ) long -> zero-ref single-def "field V40._dateData (fldOffset=0x0)" P-INDEP
-; V111 tmp99 [V111,T43] ( 2, 2 ) long -> rdi single-def "field V41._dateData (fldOffset=0x0)" P-INDEP
-;* V112 tmp100 [V112 ] ( 0, 0 ) long -> zero-ref single-def "field V43._dateData (fldOffset=0x0)" P-INDEP
-;* V113 tmp101 [V113 ] ( 0, 0 ) long -> zero-ref single-def "field V44._dateData (fldOffset=0x0)" P-INDEP
-;* V114 tmp102 [V114 ] ( 0, 0 ) short -> zero-ref single-def "field V46._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V115 tmp103 [V115,T44] ( 2, 2 ) long -> [rbp-0x40] do-not-enreg[F] "field V46._dateTime (fldOffset=0x8)" P-INDEP
-;* V116 tmp104 [V116 ] ( 0, 0 ) long -> zero-ref single-def "field V47._dateData (fldOffset=0x0)" P-INDEP
-; V117 tmp105 [V117,T32] ( 4, 4 ) long -> r12 "field V48._ticks (fldOffset=0x0)" P-INDEP
-; V118 tmp106 [V118,T45] ( 2, 2 ) long -> r12 "field V51._ticks (fldOffset=0x0)" P-INDEP
-;* V119 tmp107 [V119 ] ( 0, 0 ) long -> zero-ref single-def "field V53._dateData (fldOffset=0x0)" P-INDEP
-;* V120 tmp108 [V120 ] ( 0, 0 ) short -> zero-ref "field V56._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V121 tmp109 [V121 ] ( 0, 0 ) long -> zero-ref single-def "field V56._dateTime (fldOffset=0x8)" P-INDEP
-;* V122 tmp110 [V122 ] ( 0, 0 ) short -> zero-ref "field V57._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V123 tmp111 [V123 ] ( 0, 0 ) long -> zero-ref single-def "field V57._dateTime (fldOffset=0x8)" P-INDEP
-;* V124 tmp112 [V124 ] ( 0, 0 ) long -> zero-ref single-def "field V58._dateData (fldOffset=0x0)" P-INDEP
-;* V125 tmp113 [V125 ] ( 0, 0 ) long -> zero-ref single-def "field V59._dateData (fldOffset=0x0)" P-INDEP
-;* V126 tmp114 [V126 ] ( 0, 0 ) long -> zero-ref single-def "field V60._dateData (fldOffset=0x0)" P-INDEP
-; V127 tmp115 [V127,T46] ( 2, 2 ) long -> rax single-def "field V61._dateData (fldOffset=0x0)" P-INDEP
-;* V128 tmp116 [V128 ] ( 0, 0 ) long -> zero-ref single-def "field V63._dateData (fldOffset=0x0)" P-INDEP
-; V129 tmp117 [V129,T47] ( 2, 2 ) long -> rdi single-def "field V64._dateData (fldOffset=0x0)" P-INDEP
-;* V130 tmp118 [V130 ] ( 0, 0 ) long -> zero-ref single-def "field V66._dateData (fldOffset=0x0)" P-INDEP
-;* V131 tmp119 [V131 ] ( 0, 0 ) long -> zero-ref single-def "field V67._dateData (fldOffset=0x0)" P-INDEP
-; V132 tmp120 [V132,T52] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V133 tmp121 [V133,T04] ( 3, 96 ) ref -> rdi "arr expr"
-; V134 PSPSym [V134,T50] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-; V135 cse0 [V135,T06] ( 3, 96 ) int -> rdx "CSE #05: aggressive"
-; V136 cse1 [V136,T07] ( 3, 96 ) int -> rcx "CSE #04: aggressive"
-; V137 cse2 [V137,T08] ( 3, 96 ) int -> rcx "CSE #02: aggressive"
-; V138 cse3 [V138,T05] ( 3, 96 ) ref -> rdi "CSE #03: aggressive"
-; V139 rat0 [V139,T51] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V84 tmp72 [V84,T16] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList>
+; V85 tmp73 [V85 ] ( 9,176 ) struct (24) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Security.Cryptography.OidEnumerator>
+;* V86 tmp74 [V86,T44] ( 0, 0 ) int -> zero-ref "Single return block return value"
+; V87 tmp75 [V87,T24] ( 4, 4 ) long -> r13 "field V13._dateData (fldOffset=0x0)" P-INDEP
+;* V88 tmp76 [V88 ] ( 0, 0 ) short -> zero-ref single-def "field V14._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V89 tmp77 [V89 ] ( 0, 0 ) long -> zero-ref single-def "field V14._dateTime (fldOffset=0x8)" P-INDEP
+;* V90 tmp78 [V90 ] ( 0, 0 ) short -> zero-ref single-def "field V15._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V91 tmp79 [V91,T34] ( 2, 2 ) long -> rdi single-def "field V15._dateTime (fldOffset=0x8)" P-INDEP
+; V92 tmp80 [V92,T25] ( 4, 4 ) long -> r13 "field V16._dateData (fldOffset=0x0)" P-INDEP
+;* V93 tmp81 [V93 ] ( 0, 0 ) short -> zero-ref single-def "field V17._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V94 tmp82 [V94 ] ( 0, 0 ) long -> zero-ref single-def "field V17._dateTime (fldOffset=0x8)" P-INDEP
+;* V95 tmp83 [V95 ] ( 0, 0 ) short -> zero-ref single-def "field V18._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V96 tmp84 [V96,T35] ( 2, 2 ) long -> rdi single-def "field V18._dateTime (fldOffset=0x8)" P-INDEP
+;* V97 tmp85 [V97 ] ( 0, 0 ) short -> zero-ref single-def "field V23._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V98 tmp86 [V98,T36] ( 2, 2 ) long -> [rbp-0x50] do-not-enreg[F] "field V23._dateTime (fldOffset=0x8)" P-INDEP
+;* V99 tmp87 [V99 ] ( 0, 0 ) long -> zero-ref single-def "field V24._dateData (fldOffset=0x0)" P-INDEP
+; V100 tmp88 [V100,T26] ( 4, 4 ) long -> r12 "field V25._ticks (fldOffset=0x0)" P-INDEP
+; V101 tmp89 [V101,T37] ( 2, 2 ) long -> r12 "field V28._ticks (fldOffset=0x0)" P-INDEP
+;* V102 tmp90 [V102 ] ( 0, 0 ) long -> zero-ref single-def "field V30._dateData (fldOffset=0x0)" P-INDEP
+;* V103 tmp91 [V103 ] ( 0, 0 ) short -> zero-ref "field V33._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V104 tmp92 [V104 ] ( 0, 0 ) long -> zero-ref single-def "field V33._dateTime (fldOffset=0x8)" P-INDEP
+;* V105 tmp93 [V105 ] ( 0, 0 ) short -> zero-ref "field V34._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V106 tmp94 [V106 ] ( 0, 0 ) long -> zero-ref single-def "field V34._dateTime (fldOffset=0x8)" P-INDEP
+;* V107 tmp95 [V107 ] ( 0, 0 ) long -> zero-ref single-def "field V35._dateData (fldOffset=0x0)" P-INDEP
+;* V108 tmp96 [V108 ] ( 0, 0 ) long -> zero-ref single-def "field V36._dateData (fldOffset=0x0)" P-INDEP
+;* V109 tmp97 [V109 ] ( 0, 0 ) long -> zero-ref single-def "field V37._dateData (fldOffset=0x0)" P-INDEP
+; V110 tmp98 [V110,T38] ( 2, 2 ) long -> rax single-def "field V38._dateData (fldOffset=0x0)" P-INDEP
+;* V111 tmp99 [V111 ] ( 0, 0 ) long -> zero-ref single-def "field V40._dateData (fldOffset=0x0)" P-INDEP
+; V112 tmp100 [V112,T39] ( 2, 2 ) long -> rdi single-def "field V41._dateData (fldOffset=0x0)" P-INDEP
+;* V113 tmp101 [V113 ] ( 0, 0 ) long -> zero-ref single-def "field V43._dateData (fldOffset=0x0)" P-INDEP
+;* V114 tmp102 [V114 ] ( 0, 0 ) long -> zero-ref single-def "field V44._dateData (fldOffset=0x0)" P-INDEP
+;* V115 tmp103 [V115 ] ( 0, 0 ) short -> zero-ref single-def "field V46._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V116 tmp104 [V116,T40] ( 2, 2 ) long -> [rbp-0x58] do-not-enreg[F] "field V46._dateTime (fldOffset=0x8)" P-INDEP
+;* V117 tmp105 [V117 ] ( 0, 0 ) long -> zero-ref single-def "field V47._dateData (fldOffset=0x0)" P-INDEP
+; V118 tmp106 [V118,T27] ( 4, 4 ) long -> r12 "field V48._ticks (fldOffset=0x0)" P-INDEP
+; V119 tmp107 [V119,T41] ( 2, 2 ) long -> r12 "field V51._ticks (fldOffset=0x0)" P-INDEP
+;* V120 tmp108 [V120 ] ( 0, 0 ) long -> zero-ref single-def "field V53._dateData (fldOffset=0x0)" P-INDEP
+;* V121 tmp109 [V121 ] ( 0, 0 ) short -> zero-ref "field V56._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V122 tmp110 [V122 ] ( 0, 0 ) long -> zero-ref single-def "field V56._dateTime (fldOffset=0x8)" P-INDEP
+;* V123 tmp111 [V123 ] ( 0, 0 ) short -> zero-ref "field V57._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V124 tmp112 [V124 ] ( 0, 0 ) long -> zero-ref single-def "field V57._dateTime (fldOffset=0x8)" P-INDEP
+;* V125 tmp113 [V125 ] ( 0, 0 ) long -> zero-ref single-def "field V58._dateData (fldOffset=0x0)" P-INDEP
+;* V126 tmp114 [V126 ] ( 0, 0 ) long -> zero-ref single-def "field V59._dateData (fldOffset=0x0)" P-INDEP
+;* V127 tmp115 [V127 ] ( 0, 0 ) long -> zero-ref single-def "field V60._dateData (fldOffset=0x0)" P-INDEP
+; V128 tmp116 [V128,T42] ( 2, 2 ) long -> rax single-def "field V61._dateData (fldOffset=0x0)" P-INDEP
+;* V129 tmp117 [V129 ] ( 0, 0 ) long -> zero-ref single-def "field V63._dateData (fldOffset=0x0)" P-INDEP
+; V130 tmp118 [V130,T43] ( 2, 2 ) long -> rdi single-def "field V64._dateData (fldOffset=0x0)" P-INDEP
+;* V131 tmp119 [V131 ] ( 0, 0 ) long -> zero-ref single-def "field V66._dateData (fldOffset=0x0)" P-INDEP
+;* V132 tmp120 [V132 ] ( 0, 0 ) long -> zero-ref single-def "field V67._dateData (fldOffset=0x0)" P-INDEP
+; V133 tmp121 [V133,T48] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V134 tmp122 [V134,T04] ( 3, 96 ) ref -> rax "arr expr"
+; V135 PSPSym [V135,T46] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V136 cse0 [V136,T05] ( 3, 96 ) int -> rax "CSE #02: aggressive"
+; V137 rat0 [V137,T47] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 56
G_M14137_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
lea rbp, [rsp+0x60]
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu xmmword ptr [rbp-0x48], xmm8
+ xor eax, eax
+ mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x60], rsp
mov rbx, rdi
mov r14, rsi
mov r15, r8
- ;; size=32 bbWeight=1 PerfScore 8.50
+ ;; size=48 bbWeight=1 PerfScore 12.08
G_M14137_IG02:
mov rdi, rbx
mov rsi, rdx
mov rdx, rcx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CertMatchesIds(System.Security.Cryptography.X509Certificates.X509Certificate2,byref,byref):ubyte
call [rax]System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CertMatchesIds(System.Security.Cryptography.X509Certificates.X509Certificate2,byref,byref):ubyte
test eax, eax
je G_M14137_IG20
cmp byte ptr [rbx], bl
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate:GetNotAfter():System.DateTime:this
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate:GetNotAfter():System.DateTime:this
mov r13, rax
mov rdi, 0xD1FFAB1E
and rdi, r13
je SHORT G_M14137_IG03
mov rax, 0xD1FFAB1E
cmp rdi, rax
je SHORT G_M14137_IG05
;; size=79 bbWeight=1 PerfScore 15.00
G_M14137_IG03:
mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
mov r12, gword ptr [rdi]
mov rdi, gword ptr [r12+0x08]
test rdi, rdi
jne SHORT G_M14137_IG04
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
mov rdi, rax
;; size=41 bbWeight=1 PerfScore 9.25
G_M14137_IG04:
mov rsi, r13
mov rcx, r12
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
cmp dword ptr [rdi], edi
call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
mov r12, rax
jmp SHORT G_M14137_IG06
align [0 bytes for IG14]
;; size=30 bbWeight=1 PerfScore 9.25
G_M14137_IG05:
xor r12d, r12d
;; size=3 bbWeight=1 PerfScore 0.25
G_M14137_IG06:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
mov rdi, r13
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x50], rax
movsx rdi, word ptr [r15+0x78]
mov rdi, qword ptr [r15+0x80]
mov rax, 0xD1FFAB1E
- and rax, qword ptr [rbp-0x38]
+ and rax, qword ptr [rbp-0x50]
mov rcx, 0xD1FFAB1E
or rax, rcx
mov rcx, 0xD1FFAB1E
and rdi, rcx
mov rcx, 0xD1FFAB1E
or rdi, rcx
mov rcx, 0xD1FFAB1E
and rax, rcx
and rdi, rcx
cmp rax, rdi
jl G_M14137_IG20
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate:GetNotBefore():System.DateTime:this
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate:GetNotBefore():System.DateTime:this
mov r13, rax
mov rdi, 0xD1FFAB1E
and rdi, r13
je SHORT G_M14137_IG07
mov rax, 0xD1FFAB1E
cmp rdi, rax
je SHORT G_M14137_IG09
;; size=175 bbWeight=1 PerfScore 26.75
G_M14137_IG07:
mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
mov r12, gword ptr [rdi]
mov rdi, gword ptr [r12+0x08]
test rdi, rdi
jne SHORT G_M14137_IG08
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
mov rdi, rax
;; size=41 bbWeight=1 PerfScore 9.25
G_M14137_IG08:
mov rsi, r13
mov rcx, r12
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
cmp dword ptr [rdi], edi
call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
mov r12, rax
jmp SHORT G_M14137_IG10
;; size=30 bbWeight=1 PerfScore 9.25
G_M14137_IG09:
xor r12d, r12d
;; size=3 bbWeight=1 PerfScore 0.25
G_M14137_IG10:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
mov rdi, r13
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
- mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x58], rax
mov rdi, qword ptr [r15+0x80]
mov rax, 0xD1FFAB1E
- and rax, qword ptr [rbp-0x40]
+ and rax, qword ptr [rbp-0x58]
mov rcx, 0xD1FFAB1E
or rax, rcx
mov rcx, 0xD1FFAB1E
and rdi, rcx
mov rcx, 0xD1FFAB1E
or rdi, rcx
mov rcx, 0xD1FFAB1E
and rax, rcx
and rdi, rcx
cmp rax, rdi
jg G_M14137_IG20
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate2:get_Extensions():System.Security.Cryptography.X509Certificates.X509ExtensionCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate2:get_Extensions():System.Security.Cryptography.X509Certificates.X509ExtensionCollection:this
mov r15, rax
xor r13d, r13d
xor r12d, r12d
mov rdi, gword ptr [r15+0x08]
cmp dword ptr [rdi+0x10], 0
jle G_M14137_IG20
;; size=160 bbWeight=1 PerfScore 26.25
G_M14137_IG11:
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ExtensionCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509Extension:this
call [rax]System.Security.Cryptography.X509Certificates.X509ExtensionCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509Extension:this
mov rdi, rax
test rdi, rdi
je G_M14137_IG18
;; size=30 bbWeight=8 PerfScore 42.00
G_M14137_IG12:
mov rax, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension
cmp qword ptr [rdi], rax
jne G_M14137_IG18
;; size=19 bbWeight=16 PerfScore 68.00
G_M14137_IG13:
test r13d, r13d
jne G_M14137_IG20
mov r13d, 1
cmp byte ptr [rdi+0x18], 0
je G_M14137_IG20
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension:get_EnhancedKeyUsages():System.Security.Cryptography.OidCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension:get_EnhancedKeyUsages():System.Security.Cryptography.OidCollection:this
- mov gword ptr [rbp-0x48], rax
cmp byte ptr [rax], al
+ vxorps xmm0, xmm0, xmm0
+ vmovdqu xmmword ptr [rbp-0x48], xmm0
+ vmovdqu xmmword ptr [rbp-0x44], xmm0
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.OidEnumerator
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x50], rax
- lea rdi, bword ptr [rax+0x08]
- mov rsi, gword ptr [rbp-0x48]
- call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x50]
- mov dword ptr [rax+0x10], -1
- ;; size=86 bbWeight=4 PerfScore 78.00
+ mov qword ptr [rbp-0x48], rdi
+ mov gword ptr [rbp-0x40], rax
+ mov dword ptr [rbp-0x38], -1
+ ;; size=78 bbWeight=4 PerfScore 69.33
G_M14137_IG14:
- mov ecx, dword ptr [rax+0x10]
- mov rdi, gword ptr [rax+0x08]
- mov edx, dword ptr [rdi+0x10]
- lea esi, [rdx-0x01]
- cmp ecx, esi
- jge SHORT G_M14137_IG20
- inc ecx
- mov dword ptr [rax+0x10], ecx
+ mov eax, dword ptr [rbp-0x38]
+ mov rdi, gword ptr [rbp-0x40]
+ mov edi, dword ptr [rdi+0x10]
+ dec edi
+ cmp eax, edi
+ jge G_M14137_IG20
+ inc eax
+ mov dword ptr [rbp-0x38], eax
+ mov rax, gword ptr [rbp-0x40]
+ mov ecx, dword ptr [rbp-0x38]
mov dword ptr [rbp-0x2C], ecx
+ mov edx, dword ptr [rax+0x10]
mov dword ptr [rbp-0x30], edx
cmp ecx, edx
jae G_M14137_IG27
- ;; size=36 bbWeight=32 PerfScore 392.00
+ ;; size=49 bbWeight=32 PerfScore 448.00
G_M14137_IG15:
- mov rdi, gword ptr [rdi+0x08]
- cmp ecx, dword ptr [rdi+0x08]
+ mov rax, gword ptr [rax+0x08]
+ cmp ecx, dword ptr [rax+0x08]
jae G_M14137_IG28
- mov ecx, ecx
- mov rdi, gword ptr [rdi+8*rcx+0x10]
- mov rdi, gword ptr [rdi+0x08]
- test rdi, rdi
+ mov edi, ecx
+ mov rax, gword ptr [rax+8*rdi+0x10]
+ mov rax, gword ptr [rax+0x08]
+ test rax, rax
je SHORT G_M14137_IG14
;; size=29 bbWeight=16 PerfScore 184.00
G_M14137_IG16:
- cmp dword ptr [rdi+0x08], 17
+ cmp dword ptr [rax+0x08], 17
jne SHORT G_M14137_IG14
;; size=6 bbWeight=8 PerfScore 32.00
G_M14137_IG17:
- vmovups ymm0, ymmword ptr [rdi+0x0C]
- vmovups ymm1, ymmword ptr [rdi+0x0E]
+ vmovups ymm0, ymmword ptr [rax+0x0C]
+ vmovups ymm1, ymmword ptr [rax+0x0E]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD00]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
- sete dil
- movzx rdi, dil
- test edi, edi
+ sete al
+ movzx rax, al
+ test eax, eax
je SHORT G_M14137_IG14
- ;; size=46 bbWeight=16 PerfScore 344.00
+ ;; size=44 bbWeight=16 PerfScore 344.00
G_M14137_IG18:
inc r12d
mov rax, gword ptr [r15+0x08]
cmp r12d, dword ptr [rax+0x10]
jl G_M14137_IG11
;; size=17 bbWeight=8 PerfScore 50.00
G_M14137_IG19:
test r13d, r13d
jne SHORT G_M14137_IG24
;; size=5 bbWeight=1 PerfScore 1.25
G_M14137_IG20:
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
G_M14137_IG21:
vzeroupper
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
G_M14137_IG22:
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
G_M14137_IG23:
vzeroupper
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
G_M14137_IG24:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate2Collection
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; System.Collections.ArrayList
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M14137_IG26
;; size=51 bbWeight=1 PerfScore 7.25
G_M14137_IG25:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r15+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.CollectionBase:System.Collections.IList.Add(System.Object):int:this
call [rax]System.Collections.CollectionBase:System.Collections.IList.Add(System.Object):int:this
mov rdi, r14
mov rsi, r15
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignerInfo:CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.Pkcs.SignerInfo:CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte):this
jmp G_M14137_IG22
;; size=82 bbWeight=1 PerfScore 18.25
G_M14137_IG26:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Object]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp SHORT G_M14137_IG25
;; size=17 bbWeight=0 PerfScore 0.00
G_M14137_IG27:
mov edi, 0x4351
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov esi, dword ptr [rbp-0x30]
mov edi, dword ptr [rbp-0x2C]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowGreaterEqual[uint](uint,uint,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowGreaterEqual[uint](uint,uint,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M14137_IG28:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M14137_IG29:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
;; size=22 bbWeight=0 PerfScore 0.00
G_M14137_IG30:
lea rax, G_M14137_IG20
;; size=7 bbWeight=0 PerfScore 0.00
G_M14137_IG31:
vzeroupper
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0 PerfScore 0.00
RWD00 dq 0036002E0033002Eh, 0035002E0031002Eh, 0037002E0035002Eh, 0038002E0033002Eh
RWD32 dq 002E0033002E0031h, 002E0031002E0036h, 002E0035002E0035h, 002E0033002E0037h
-; Total bytes of code 1156, prolog size 32, PerfScore 1341.75, instruction count 276, allocated bytes for code 1156 (MethodHash=8e53c8c6) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CheckCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.Pkcs.SignerInfo,byref,byref,System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo):ubyte (FullOpts)
+; Total bytes of code 1175, prolog size 48, PerfScore 1392.67, instruction count 281, allocated bytes for code 1175 (MethodHash=8e53c8c6) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CheckCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.Pkcs.SignerInfo,byref,byref,System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo):ubyte (FullOpts)
18 (1.43 % of base) - System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:TryGetCertIds(System.Security.Cryptography.Pkcs.SignerInfo,byref,byref):ubyte
; Assembly listing for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:TryGetCertIds(System.Security.Cryptography.Pkcs.SignerInfo,byref,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; 33 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T47] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
-; V01 arg1 [V01,T27] ( 7, 52 ) byref -> rbx single-def
-; V02 arg2 [V02,T28] ( 7, 52 ) byref -> r15 single-def
-;* V03 loc0 [V03,T53] ( 0, 0 ) long -> zero-ref class-hnd exact single-def <System.Security.Cryptography.CryptographicAttributeObjectEnumerator>
-; V04 loc1 [V04,T46] ( 3, 12 ) ref -> r14 class-hnd exact <System.Security.Cryptography.CryptographicAttributeObject>
+; V00 arg0 [V00,T41] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
+; V01 arg1 [V01,T22] ( 7, 52 ) byref -> rbx single-def
+; V02 arg2 [V02,T23] ( 7, 52 ) byref -> r15 single-def
+;* V03 loc0 [V03,T48] ( 0, 0 ) long -> zero-ref class-hnd exact single-def <System.Security.Cryptography.CryptographicAttributeObjectEnumerator>
+; V04 loc1 [V04,T40] ( 3, 12 ) ref -> r14 class-hnd exact <System.Security.Cryptography.CryptographicAttributeObject>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V06 loc3 [V06,T04] ( 4,100 ) ref -> r13 class-hnd exact <System.Security.Cryptography.AsnEncodedDataEnumerator>
-; V07 loc4 [V07,T21] ( 4, 64 ) ref -> r14 class-hnd <System.Security.Cryptography.AsnEncodedData>
+;* V06 loc3 [V06,T46] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V07 loc4 [V07,T17] ( 4, 64 ) ref -> r14 class-hnd <System.Security.Cryptography.AsnEncodedData>
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V09 loc6 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Security.Cryptography.Pkcs.Asn1.SigningCertificateAsn>
-;* V10 loc7 [V10,T52] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V10 loc7 [V10,T47] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;* V11 loc8 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Security.Cryptography.Pkcs.Asn1.SigningCertificateV2Asn>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T38] ( 3, 24 ) ref -> rax class-hnd exact "dup spill" <System.Security.Cryptography.Oid>
+; V13 tmp1 [V13,T32] ( 3, 24 ) ref -> rax class-hnd exact "dup spill" <System.Security.Cryptography.Oid>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref
-; V15 tmp3 [V15,T33] ( 9, 32 ) ref -> rdi
-; V16 tmp4 [V16,T11] ( 3, 96 ) ref -> rax class-hnd exact "dup spill" <System.Security.Cryptography.Oid>
+; V15 tmp3 [V15,T28] ( 9, 32 ) ref -> rax
+; V16 tmp4 [V16,T12] ( 3, 96 ) ref -> rax class-hnd exact "dup spill" <System.Security.Cryptography.Oid>
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref
-; V18 tmp6 [V18,T01] ( 10,144 ) ref -> r12
+; V18 tmp6 [V18,T02] ( 10,144 ) ref -> r13
;* V19 tmp7 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-; V20 tmp8 [V20,T22] ( 2, 64 ) struct (88) [rbp-0x80] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Nullable`1[System.Security.Cryptography.Pkcs.Asn1.EssCertIdV2]>
+; V20 tmp8 [V20,T18] ( 2, 64 ) struct (88) [rbp-0x78] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Nullable`1[System.Security.Cryptography.Pkcs.Asn1.EssCertIdV2]>
;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Security.Cryptography.CryptographicException>
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-; V23 tmp11 [V23,T23] ( 2, 64 ) struct (56) [rbp-0xB8] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Nullable`1[System.Security.Cryptography.Pkcs.Asn1.EssCertId]>
+; V23 tmp11 [V23,T19] ( 2, 64 ) struct (56) [rbp-0xB0] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Nullable`1[System.Security.Cryptography.Pkcs.Asn1.EssCertId]>
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Security.Cryptography.CryptographicException>
;* V25 tmp13 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
-; V26 tmp14 [V26,T51] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
-; V27 tmp15 [V27,T50] ( 5, 5 ) ref -> rax
-; V28 tmp16 [V28,T48] ( 3, 6 ) ref -> r13 class-hnd exact single-def "dup spill" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
+; V26 tmp14 [V26,T45] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
+; V27 tmp15 [V27,T44] ( 5, 5 ) ref -> rax
+; V28 tmp16 [V28,T42] ( 3, 6 ) ref -> r13 class-hnd exact single-def "dup spill" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
;* V29 tmp17 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicAttributeObjectEnumerator>
-; V31 tmp19 [V31,T35] ( 2, 32 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
-; V32 tmp20 [V32,T29] ( 4, 48 ) int -> rax "Inlining Arg"
-; V33 tmp21 [V33,T32] ( 3, 40 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
+; V31 tmp19 [V31,T29] ( 2, 32 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
+; V32 tmp20 [V32,T24] ( 4, 48 ) int -> rax "Inlining Arg"
+; V33 tmp21 [V33,T27] ( 3, 40 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V35 tmp23 [V35,T42] ( 2, 16 ) int -> rax "spilling unroll qmark"
+; V35 tmp23 [V35,T36] ( 2, 16 ) int -> rdi "spilling unroll qmark"
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V37 tmp25 [V37,T43] ( 2, 16 ) int -> rdi "spilling unroll qmark"
-; V38 tmp26 [V38,T39] ( 3, 24 ) ref -> r14 class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
-; V39 tmp27 [V39,T34] ( 4, 32 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
-;* V40 tmp28 [V40,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
-; V41 tmp29 [V41,T00] ( 4,192 ) int -> rax "Inlining Arg"
-; V42 tmp30 [V42,T20] ( 2, 96 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
+; V37 tmp25 [V37,T37] ( 2, 16 ) int -> rax "spilling unroll qmark"
+; V38 tmp26 [V38,T33] ( 3, 24 ) ref -> rax class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
+;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V40 tmp28 [V40,T05] ( 2,128 ) ref -> rax class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
+; V41 tmp29 [V41,T00] ( 4,192 ) int -> rdi "Inlining Arg"
+; V42 tmp30 [V42,T01] ( 3,160 ) ref -> rax class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V44 tmp32 [V44,T24] ( 2, 64 ) int -> rax "spilling unroll qmark"
-; V45 tmp33 [V45,T02] ( 4,128 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
-; V46 tmp34 [V46 ] ( 8,256 ) struct (16) [rbp-0xC8] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+; V44 tmp32 [V44,T20] ( 2, 64 ) int -> rax "spilling unroll qmark"
+; V45 tmp33 [V45,T03] ( 4,128 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
+; V46 tmp34 [V46 ] ( 8,256 ) struct (16) [rbp-0xC0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V47 tmp35 [V47 ] ( 0, 0 ) struct (48) zero-ref do-not-enreg[S] "Inlining Arg" <System.Security.Cryptography.Pkcs.Asn1.EssCertId>
;* V48 tmp36 [V48 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V49 tmp37 [V49,T25] ( 2, 64 ) int -> rax "spilling unroll qmark"
-; V50 tmp38 [V50,T03] ( 4,128 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
-; V51 tmp39 [V51 ] ( 8,256 ) struct (16) [rbp-0xD8] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+; V49 tmp37 [V49,T21] ( 2, 64 ) int -> rax "spilling unroll qmark"
+; V50 tmp38 [V50,T04] ( 4,128 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
+; V51 tmp39 [V51 ] ( 8,256 ) struct (16) [rbp-0xD0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V52 tmp40 [V52 ] ( 0, 0 ) struct (80) zero-ref do-not-enreg[S] "Inlining Arg" <System.Security.Cryptography.Pkcs.Asn1.EssCertIdV2>
;* V53 tmp41 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
;* V56 tmp44 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
;* V57 tmp45 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V58 tmp46 [V58 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V59 tmp47 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.CryptographicAttributeObjectCollection>
;* V60 tmp48 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.CryptographicAttributeObject]>
-; V61 tmp49 [V61 ] ( 8, 43 ) struct (24) [rbp-0xF0] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Security.Cryptography.CryptographicAttributeObjectEnumerator>
-; V62 tmp50 [V62,T49] ( 3, 6 ) int -> rcx "Single return block return value"
-; V63 tmp51 [V63,T30] ( 3, 48 ) ref -> rax "field V09.Certs (fldOffset=0x0)" P-INDEP
-; V64 tmp52 [V64,T44] ( 1, 16 ) ref -> rdx "field V09.Policies (fldOffset=0x8)" P-INDEP
-; V65 tmp53 [V65,T31] ( 3, 48 ) ref -> rax "field V11.Certs (fldOffset=0x0)" P-INDEP
-; V66 tmp54 [V66,T45] ( 1, 16 ) ref -> rdx "field V11.Policies (fldOffset=0x8)" P-INDEP
-;* V67 tmp55 [V67 ] ( 0, 0 ) ref -> zero-ref "field V19._object (fldOffset=0x0)" P-INDEP
-;* V68 tmp56 [V68 ] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
-;* V69 tmp57 [V69 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0xc)" P-INDEP
-;* V70 tmp58 [V70 ] ( 0, 0 ) ref -> zero-ref "field V22._object (fldOffset=0x0)" P-INDEP
-;* V71 tmp59 [V71 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
-;* V72 tmp60 [V72 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
-; V73 tmp61 [V73,T05] ( 4, 96 ) ref -> [rbp-0xC8] do-not-enreg[] "field V46._object (fldOffset=0x0)" P-DEP
-; V74 tmp62 [V74,T07] ( 4, 96 ) int -> [rbp-0xC0] do-not-enreg[] "field V46._index (fldOffset=0x8)" P-DEP
-; V75 tmp63 [V75,T08] ( 4, 96 ) int -> [rbp-0xBC] do-not-enreg[] "field V46._length (fldOffset=0xc)" P-DEP
-; V76 tmp64 [V76,T06] ( 4, 96 ) ref -> [rbp-0xD8] do-not-enreg[] "field V51._object (fldOffset=0x0)" P-DEP
-; V77 tmp65 [V77,T09] ( 4, 96 ) int -> [rbp-0xD0] do-not-enreg[] "field V51._index (fldOffset=0x8)" P-DEP
-; V78 tmp66 [V78,T10] ( 4, 96 ) int -> [rbp-0xCC] do-not-enreg[] "field V51._length (fldOffset=0xc)" P-DEP
-;* V79 tmp67 [V79 ] ( 0, 0 ) ubyte -> zero-ref "V20.[000..001)"
-;* V80 tmp68 [V80 ] ( 0, 0 ) ubyte -> zero-ref "V23.[000..001)"
-; V81 tmp69 [V81,T40] ( 3, 24 ) ref -> rdi "arr expr"
-; V82 tmp70 [V82,T12] ( 3, 96 ) ref -> rdi "arr expr"
-; V83 PSPSym [V83,T54] ( 1, 1 ) long -> [rbp-0x100] do-not-enreg[V] "PSPSym"
-; V84 cse0 [V84,T17] ( 3, 96 ) int -> rsi "CSE #15: moderate"
-; V85 cse1 [V85,T13] ( 3, 96 ) ref -> rdi "CSE #14: moderate"
-; V86 cse2 [V86,T18] ( 3, 96 ) int -> rax "CSE #13: moderate"
-; V87 cse3 [V87,T19] ( 3, 96 ) int -> rax "CSE #11: moderate"
-; V88 cse4 [V88,T14] ( 2, 64 ) ref -> rdi "CSE #12: moderate"
-; V89 cse5 [V89,T41] ( 3, 24 ) int -> rdi "CSE #16: moderate"
-; V90 cse6 [V90,T36] ( 2, 32 ) int -> rdi "CSE #07: moderate"
-; V91 cse7 [V91,T37] ( 2, 32 ) int -> rdi "CSE #10: moderate"
-; V92 rat0 [V92,T57] ( 3, 24 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V93 rat1 [V93,T58] ( 3, 24 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V94 rat2 [V94,T55] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V95 rat3 [V95,T56] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V96 rat4 [V96,T15] ( 3, 96 ) byref -> rsi "ReplaceWithLclVar is creating a new local variable"
-; V97 rat5 [V97,T16] ( 3, 96 ) byref -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V61 tmp49 [V61 ] ( 8, 43 ) struct (24) [rbp-0xE8] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Security.Cryptography.CryptographicAttributeObjectEnumerator>
+; V62 tmp50 [V62 ] ( 9,176 ) struct (24) [rbp-0x100] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Security.Cryptography.AsnEncodedDataEnumerator>
+; V63 tmp51 [V63,T43] ( 3, 6 ) int -> rcx "Single return block return value"
+; V64 tmp52 [V64,T25] ( 3, 48 ) ref -> rax "field V09.Certs (fldOffset=0x0)" P-INDEP
+; V65 tmp53 [V65,T38] ( 1, 16 ) ref -> rdx "field V09.Policies (fldOffset=0x8)" P-INDEP
+; V66 tmp54 [V66,T26] ( 3, 48 ) ref -> rax "field V11.Certs (fldOffset=0x0)" P-INDEP
+; V67 tmp55 [V67,T39] ( 1, 16 ) ref -> rdx "field V11.Policies (fldOffset=0x8)" P-INDEP
+;* V68 tmp56 [V68 ] ( 0, 0 ) ref -> zero-ref "field V19._object (fldOffset=0x0)" P-INDEP
+;* V69 tmp57 [V69 ] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
+;* V70 tmp58 [V70 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0xc)" P-INDEP
+;* V71 tmp59 [V71 ] ( 0, 0 ) ref -> zero-ref "field V22._object (fldOffset=0x0)" P-INDEP
+;* V72 tmp60 [V72 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
+;* V73 tmp61 [V73 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
+; V74 tmp62 [V74,T06] ( 4, 96 ) ref -> [rbp-0xC0] do-not-enreg[] "field V46._object (fldOffset=0x0)" P-DEP
+; V75 tmp63 [V75,T08] ( 4, 96 ) int -> [rbp-0xB8] do-not-enreg[] "field V46._index (fldOffset=0x8)" P-DEP
+; V76 tmp64 [V76,T09] ( 4, 96 ) int -> [rbp-0xB4] do-not-enreg[] "field V46._length (fldOffset=0xc)" P-DEP
+; V77 tmp65 [V77,T07] ( 4, 96 ) ref -> [rbp-0xD0] do-not-enreg[] "field V51._object (fldOffset=0x0)" P-DEP
+; V78 tmp66 [V78,T10] ( 4, 96 ) int -> [rbp-0xC8] do-not-enreg[] "field V51._index (fldOffset=0x8)" P-DEP
+; V79 tmp67 [V79,T11] ( 4, 96 ) int -> [rbp-0xC4] do-not-enreg[] "field V51._length (fldOffset=0xc)" P-DEP
+;* V80 tmp68 [V80 ] ( 0, 0 ) ubyte -> zero-ref "V20.[000..001)"
+;* V81 tmp69 [V81 ] ( 0, 0 ) ubyte -> zero-ref "V23.[000..001)"
+; V82 tmp70 [V82,T34] ( 3, 24 ) ref -> rdi "arr expr"
+; V83 tmp71 [V83,T13] ( 3, 96 ) ref -> rax "arr expr"
+; V84 PSPSym [V84,T49] ( 1, 1 ) long -> [rbp-0x110] do-not-enreg[V] "PSPSym"
+; V85 cse0 [V85,T16] ( 3, 96 ) int -> rax "CSE #11: moderate"
+; V86 cse1 [V86,T35] ( 3, 24 ) int -> rdi "CSE #12: moderate"
+; V87 cse2 [V87,T30] ( 2, 32 ) int -> rdi "CSE #07: moderate"
+; V88 cse3 [V88,T31] ( 2, 32 ) int -> rdi "CSE #10: moderate"
+; V89 rat0 [V89,T52] ( 3, 24 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V90 rat1 [V90,T53] ( 3, 24 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V91 rat2 [V91,T50] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V92 rat3 [V92,T51] ( 3, 96 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V93 rat4 [V93,T14] ( 3, 96 ) byref -> rsi "ReplaceWithLclVar is creating a new local variable"
+; V94 rat5 [V94,T15] ( 3, 96 ) byref -> rdi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 216
+; Lcl frame size = 240
G_M23582_IG01:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- sub rsp, 216
- lea rbp, [rsp+0x100]
+ sub rsp, 240
+ lea rbp, [rsp+0x110]
vxorps xmm8, xmm8, xmm8
- vmovdqu32 zmmword ptr [rbp-0xF0], zmm8
- vmovdqu32 zmmword ptr [rbp-0xB0], zmm8
- vmovdqu32 zmmword ptr [rbp-0x70], zmm8
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x100], rsp
+ vmovdqu32 zmmword ptr [rbp-0x100], zmm8
+ vmovdqu32 zmmword ptr [rbp-0xC0], zmm8
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ vmovdqa xmmword ptr [rbp-0x30], xmm8
+ mov qword ptr [rbp-0x110], rsp
mov r14, rdi
mov rbx, rsi
mov r15, rdx
- ;; size=82 bbWeight=1 PerfScore 16.08
+ ;; size=75 bbWeight=1 PerfScore 17.83
G_M23582_IG02:
xor edi, edi
mov qword ptr [rbx], rdi
mov qword ptr [rbx+0x08], rdi
mov qword ptr [rbx+0x10], rdi
mov qword ptr [rbx+0x18], rdi
mov qword ptr [rbx+0x20], rdi
mov qword ptr [rbx+0x28], rdi
mov qword ptr [rbx+0x30], rdi
;; size=29 bbWeight=1 PerfScore 7.25
G_M23582_IG03:
mov qword ptr [r15], rdi
mov qword ptr [r15+0x08], rdi
mov qword ptr [r15+0x10], rdi
mov qword ptr [r15+0x18], rdi
mov qword ptr [r15+0x20], rdi
mov qword ptr [r15+0x28], rdi
mov qword ptr [r15+0x30], rdi
mov qword ptr [r15+0x38], rdi
mov qword ptr [r15+0x40], rdi
mov qword ptr [r15+0x48], rdi
mov qword ptr [r15+0x50], rdi
mov rax, gword ptr [r14+0x48]
test rax, rax
jne SHORT G_M23582_IG04
mov rdi, gword ptr [r14+0x18]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignerInfo:MakeAttributeCollection(System.Security.Cryptography.Asn1.AttributeAsn[]):System.Security.Cryptography.CryptographicAttributeObjectCollection
call [rax]System.Security.Cryptography.Pkcs.SignerInfo:MakeAttributeCollection(System.Security.Cryptography.Asn1.AttributeAsn[]):System.Security.Cryptography.CryptographicAttributeObjectCollection
mov r13, rax
lea rdi, bword ptr [r14+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
;; size=86 bbWeight=1 PerfScore 21.75
G_M23582_IG04:
cmp byte ptr [rax], al
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicAttributeObjectEnumerator
- mov qword ptr [rbp-0xF0], rdi
- mov gword ptr [rbp-0xE8], rax
- mov dword ptr [rbp-0xE0], -1
+ mov qword ptr [rbp-0xE8], rdi
+ mov gword ptr [rbp-0xE0], rax
+ mov dword ptr [rbp-0xD8], -1
;; size=36 bbWeight=1 PerfScore 6.25
G_M23582_IG05:
- mov edi, dword ptr [rbp-0xE0]
- mov rax, gword ptr [rbp-0xE8]
+ mov edi, dword ptr [rbp-0xD8]
+ mov rax, gword ptr [rbp-0xE0]
mov rax, gword ptr [rax+0x08]
mov eax, dword ptr [rax+0x10]
dec eax
cmp edi, eax
jge G_M23582_IG38
inc edi
- mov dword ptr [rbp-0xE0], edi
- mov rdi, gword ptr [rbp-0xE8]
- mov eax, dword ptr [rbp-0xE0]
+ mov dword ptr [rbp-0xD8], edi
+ mov rdi, gword ptr [rbp-0xE0]
+ mov eax, dword ptr [rbp-0xD8]
mov rdi, gword ptr [rdi+0x08]
cmp eax, dword ptr [rdi+0x10]
jae G_M23582_IG43
;; size=64 bbWeight=8 PerfScore 134.00
G_M23582_IG06:
mov rdi, gword ptr [rdi+0x08]
cmp eax, dword ptr [rdi+0x08]
jae G_M23582_IG44
mov eax, eax
mov r14, gword ptr [rdi+8*rax+0x10]
mov rdi, gword ptr [r14+0x10]
mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
call [rax]Internal.Cryptography.PkcsHelpers:CopyOid(System.Security.Cryptography.Oid):System.Security.Cryptography.Oid
test rax, rax
je SHORT G_M23582_IG07
- mov rdi, gword ptr [rax+0x08]
+ mov rax, gword ptr [rax+0x08]
jmp SHORT G_M23582_IG08
;; size=47 bbWeight=4 PerfScore 75.00
G_M23582_IG07:
- xor rdi, rdi
+ xor rax, rax
;; size=2 bbWeight=4 PerfScore 1.00
G_M23582_IG08:
- test rdi, rdi
+ test rax, rax
je SHORT G_M23582_IG13
;; size=5 bbWeight=4 PerfScore 5.00
G_M23582_IG09:
- cmp dword ptr [rdi+0x08], 26
+ cmp dword ptr [rax+0x08], 26
jne SHORT G_M23582_IG11
;; size=6 bbWeight=2 PerfScore 8.00
G_M23582_IG10:
- vmovups ymm0, ymmword ptr [rdi+0x0C]
- vmovups ymm1, ymmword ptr [rdi+0x20]
+ vmovups ymm0, ymmword ptr [rax+0x0C]
+ vmovups ymm1, ymmword ptr [rax+0x20]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD00]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
- sete al
- movzx rax, al
- test eax, eax
+ sete dil
+ movzx rdi, dil
+ test edi, edi
jne SHORT G_M23582_IG13
- ;; size=44 bbWeight=4 PerfScore 86.00
+ ;; size=46 bbWeight=4 PerfScore 86.00
G_M23582_IG11:
- cmp dword ptr [rdi+0x08], 26
+ cmp dword ptr [rax+0x08], 26
jne G_M23582_IG05
;; size=10 bbWeight=2 PerfScore 8.00
G_M23582_IG12:
- vmovups ymm0, ymmword ptr [rdi+0x0C]
- vmovups ymm1, ymmword ptr [rdi+0x20]
+ vmovups ymm0, ymmword ptr [rax+0x0C]
+ vmovups ymm1, ymmword ptr [rax+0x20]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD64]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
- sete dil
- movzx rdi, dil
- test edi, edi
+ sete al
+ movzx rax, al
+ test eax, eax
je G_M23582_IG05
- ;; size=50 bbWeight=4 PerfScore 86.00
+ ;; size=48 bbWeight=4 PerfScore 86.00
G_M23582_IG13:
- mov r14, gword ptr [r14+0x08]
- cmp byte ptr [r14], r14b
+ mov rax, gword ptr [r14+0x08]
+ cmp byte ptr [rax], al
+ vxorps xmm0, xmm0, xmm0
+ vmovdqu xmmword ptr [rbp-0x100], xmm0
+ vmovdqu xmmword ptr [rbp-0xFC], xmm0
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.AsnEncodedDataEnumerator
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r14
- call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r13+0x10], -1
- ;; size=45 bbWeight=4 PerfScore 37.00
+ mov qword ptr [rbp-0x100], rdi
+ mov gword ptr [rbp-0xF8], rax
+ mov dword ptr [rbp-0xF0], -1
+ ;; size=60 bbWeight=4 PerfScore 42.33
G_M23582_IG14:
- mov eax, dword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
+ mov eax, dword ptr [rbp-0xF0]
+ mov rdi, gword ptr [rbp-0xF8]
mov rdi, gword ptr [rdi+0x08]
- mov esi, dword ptr [rdi+0x10]
- lea edx, [rsi-0x01]
- cmp eax, edx
+ mov edi, dword ptr [rdi+0x10]
+ dec edi
+ cmp eax, edi
jge G_M23582_IG05
inc eax
- mov dword ptr [r13+0x10], eax
- cmp eax, esi
+ mov dword ptr [rbp-0xF0], eax
+ mov rax, gword ptr [rbp-0xF8]
+ mov edi, dword ptr [rbp-0xF0]
+ mov rax, gword ptr [rax+0x08]
+ cmp edi, dword ptr [rax+0x10]
jae G_M23582_IG43
- ;; size=40 bbWeight=32 PerfScore 392.00
+ ;; size=64 bbWeight=32 PerfScore 536.00
G_M23582_IG15:
- mov rdi, gword ptr [rdi+0x08]
- cmp eax, dword ptr [rdi+0x08]
+ mov rax, gword ptr [rax+0x08]
+ cmp edi, dword ptr [rax+0x08]
jae G_M23582_IG44
- mov eax, eax
- mov r14, gword ptr [rdi+8*rax+0x10]
+ mov edi, edi
+ mov r14, gword ptr [rax+8*rdi+0x10]
mov rax, gword ptr [r14+0x08]
test rax, rax
je SHORT G_M23582_IG16
- mov r12, gword ptr [rax+0x08]
+ mov r13, gword ptr [rax+0x08]
jmp SHORT G_M23582_IG17
;; size=35 bbWeight=16 PerfScore 248.00
G_M23582_IG16:
- xor r12, r12
+ xor r13, r13
;; size=3 bbWeight=16 PerfScore 4.00
G_M23582_IG17:
- test r12, r12
+ test r13, r13
je SHORT G_M23582_IG20
;; size=5 bbWeight=16 PerfScore 20.00
G_M23582_IG18:
- cmp dword ptr [r12+0x08], 26
+ cmp dword ptr [r13+0x08], 26
jne SHORT G_M23582_IG20
- ;; size=8 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 32.00
G_M23582_IG19:
- vmovups ymm0, ymmword ptr [r12+0x0C]
- vmovups ymm1, ymmword ptr [r12+0x20]
+ vmovups ymm0, ymmword ptr [r13+0x0C]
+ vmovups ymm1, ymmword ptr [r13+0x20]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD00]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
sete al
movzx rax, al
test eax, eax
je SHORT G_M23582_IG21
cmp byte ptr [rbx], 0
jne SHORT G_M23582_IG23
jmp SHORT G_M23582_IG25
- ;; size=55 bbWeight=16 PerfScore 440.00
+ ;; size=53 bbWeight=16 PerfScore 440.00
G_M23582_IG20:
- test r12, r12
+ test r13, r13
je G_M23582_IG14
;; size=9 bbWeight=16 PerfScore 20.00
G_M23582_IG21:
- cmp dword ptr [r12+0x08], 26
+ cmp dword ptr [r13+0x08], 26
jne G_M23582_IG14
- ;; size=12 bbWeight=8 PerfScore 32.00
+ ;; size=11 bbWeight=8 PerfScore 32.00
G_M23582_IG22:
- vmovups ymm0, ymmword ptr [r12+0x0C]
- vmovups ymm1, ymmword ptr [r12+0x20]
+ vmovups ymm0, ymmword ptr [r13+0x0C]
+ vmovups ymm1, ymmword ptr [r13+0x20]
vpxor ymm1, ymm1, ymmword ptr [reloc @RWD64]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -34
vptest ymm0, ymm0
sete al
movzx rax, al
test eax, eax
je G_M23582_IG14
cmp byte ptr [r15], 0
je G_M23582_IG32
- ;; size=62 bbWeight=16 PerfScore 408.00
+ ;; size=60 bbWeight=16 PerfScore 408.00
G_M23582_IG23:
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
G_M23582_IG24:
vzeroupper
- add rsp, 216
+ add rsp, 240
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=21 bbWeight=1 PerfScore 5.25
+ ;; size=19 bbWeight=1 PerfScore 4.75
G_M23582_IG25:
mov rdi, gword ptr [r14+0x10]
test rdi, rdi
je SHORT G_M23582_IG26
- mov gword ptr [rbp-0xC8], rdi
+ mov gword ptr [rbp-0xC0], rdi
xor esi, esi
- mov dword ptr [rbp-0xC0], esi
+ mov dword ptr [rbp-0xB8], esi
mov edi, dword ptr [rdi+0x08]
- mov dword ptr [rbp-0xBC], edi
+ mov dword ptr [rbp-0xB4], edi
jmp SHORT G_M23582_IG29
;; size=35 bbWeight=16 PerfScore 168.00
G_M23582_IG26:
xor rdi, rdi
- mov gword ptr [rbp-0xC8], rdi
+ mov gword ptr [rbp-0xC0], rdi
;; size=9 bbWeight=16 PerfScore 20.00
G_M23582_IG27:
- mov dword ptr [rbp-0xC0], edi
+ mov dword ptr [rbp-0xB8], edi
;; size=6 bbWeight=16 PerfScore 16.00
G_M23582_IG28:
- mov dword ptr [rbp-0xBC], edi
+ mov dword ptr [rbp-0xB4], edi
;; size=6 bbWeight=16 PerfScore 16.00
G_M23582_IG29:
- mov rdi, gword ptr [rbp-0xC8]
- mov rsi, qword ptr [rbp-0xC0]
+ mov rdi, gword ptr [rbp-0xC0]
+ mov rsi, qword ptr [rbp-0xB8]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.Asn1.SigningCertificateAsn:Decode(System.ReadOnlyMemory`1[ubyte],int):System.Security.Cryptography.Pkcs.Asn1.SigningCertificateAsn
call [rax]System.Security.Cryptography.Pkcs.Asn1.SigningCertificateAsn:Decode(System.ReadOnlyMemory`1[ubyte],int):System.Security.Cryptography.Pkcs.Asn1.SigningCertificateAsn
mov edi, dword ptr [rax+0x08]
test edi, edi
jle G_M23582_IG37
;; size=39 bbWeight=16 PerfScore 140.00
G_M23582_IG30:
vmovdqu ymm0, ymmword ptr [rax+0x10]
- vmovdqu ymmword ptr [rbp-0xB0], ymm0
+ vmovdqu ymmword ptr [rbp-0xA8], ymm0
vmovdqu xmm0, xmmword ptr [rax+0x30]
- vmovdqu xmmword ptr [rbp-0x90], xmm0
+ vmovdqu xmmword ptr [rbp-0x88], xmm0
;; size=26 bbWeight=16 PerfScore 176.00
G_M23582_IG31:
mov rdi, rbx
- lea rsi, bword ptr [rbp-0xB8]
+ lea rsi, bword ptr [rbp-0xB0]
movsq
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov byte ptr [rbx], 1
jmp G_M23582_IG20
;; size=41 bbWeight=16 PerfScore 172.00
G_M23582_IG32:
mov rdi, gword ptr [r14+0x10]
test rdi, rdi
je SHORT G_M23582_IG33
- mov gword ptr [rbp-0xD8], rdi
+ mov gword ptr [rbp-0xD0], rdi
xor esi, esi
- mov dword ptr [rbp-0xD0], esi
+ mov dword ptr [rbp-0xC8], esi
mov edi, dword ptr [rdi+0x08]
- mov dword ptr [rbp-0xCC], edi
+ mov dword ptr [rbp-0xC4], edi
jmp SHORT G_M23582_IG36
;; size=35 bbWeight=16 PerfScore 168.00
G_M23582_IG33:
xor rdi, rdi
- mov gword ptr [rbp-0xD8], rdi
+ mov gword ptr [rbp-0xD0], rdi
;; size=9 bbWeight=16 PerfScore 20.00
G_M23582_IG34:
- mov dword ptr [rbp-0xD0], edi
+ mov dword ptr [rbp-0xC8], edi
;; size=6 bbWeight=16 PerfScore 16.00
G_M23582_IG35:
- mov dword ptr [rbp-0xCC], edi
+ mov dword ptr [rbp-0xC4], edi
;; size=6 bbWeight=16 PerfScore 16.00
G_M23582_IG36:
- mov rdi, gword ptr [rbp-0xD8]
- mov rsi, qword ptr [rbp-0xD0]
+ mov rdi, gword ptr [rbp-0xD0]
+ mov rsi, qword ptr [rbp-0xC8]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.Asn1.SigningCertificateV2Asn:Decode(System.ReadOnlyMemory`1[ubyte],int):System.Security.Cryptography.Pkcs.Asn1.SigningCertificateV2Asn
call [rax]System.Security.Cryptography.Pkcs.Asn1.SigningCertificateV2Asn:Decode(System.ReadOnlyMemory`1[ubyte],int):System.Security.Cryptography.Pkcs.Asn1.SigningCertificateV2Asn
mov edi, dword ptr [rax+0x08]
test edi, edi
jle SHORT G_M23582_IG37
lea rsi, bword ptr [rax+0x10]
cmp byte ptr [rsi], sil
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_BULK_WRITEBARRIER
- lea rdi, bword ptr [rbp-0x78]
+ lea rdi, bword ptr [rbp-0x70]
mov edx, 80
call [rax]CORINFO_HELP_BULK_WRITEBARRIER
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_BULK_WRITEBARRIER
mov rdi, r15
cmp byte ptr [rdi], dil
- lea rsi, [rbp-0x80]
+ lea rsi, [rbp-0x78]
mov edx, 88
call [rax]CORINFO_HELP_BULK_WRITEBARRIER
mov byte ptr [r15], 1
jmp G_M23582_IG14
;; size=99 bbWeight=16 PerfScore 424.00
G_M23582_IG37:
xor ecx, ecx
jmp SHORT G_M23582_IG41
;; size=4 bbWeight=1 PerfScore 2.25
G_M23582_IG38:
cmp byte ptr [r15], 0
je SHORT G_M23582_IG40
mov eax, 1
;; size=11 bbWeight=1 PerfScore 4.25
G_M23582_IG39:
vzeroupper
- add rsp, 216
+ add rsp, 240
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=21 bbWeight=1 PerfScore 5.25
+ ;; size=19 bbWeight=1 PerfScore 4.75
G_M23582_IG40:
movzx rcx, byte ptr [rbx]
;; size=3 bbWeight=1 PerfScore 2.00
G_M23582_IG41:
movzx rax, cl
;; size=3 bbWeight=1 PerfScore 0.25
G_M23582_IG42:
vzeroupper
- add rsp, 216
+ add rsp, 240
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=21 bbWeight=1 PerfScore 5.25
+ ;; size=19 bbWeight=1 PerfScore 4.75
G_M23582_IG43:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M23582_IG44:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M23582_IG45:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x100]
- ;; size=25 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x110]
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M23582_IG46:
lea rax, G_M23582_IG37
;; size=7 bbWeight=0 PerfScore 0.00
G_M23582_IG47:
vzeroupper
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M23582_IG48:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x100]
- ;; size=25 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x110]
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M23582_IG49:
lea rax, G_M23582_IG37
;; size=7 bbWeight=0 PerfScore 0.00
G_M23582_IG50:
vzeroupper
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
RWD00 dq 0039003400350033h, 0039002E0031002Eh, 002E00360031002Eh, 00320031002E0032h
RWD32 dq 002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h
RWD64 dq 0039003400350033h, 0039002E0031002Eh, 002E00360031002Eh, 00370034002E0032h
-; Total bytes of code 1257, prolog size 82, PerfScore 3464.08, instruction count 317, allocated bytes for code 1257 (MethodHash=373aa3e1) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:TryGetCertIds(System.Security.Cryptography.Pkcs.SignerInfo,byref,byref):ubyte (FullOpts)
+; Total bytes of code 1275, prolog size 75, PerfScore 3613.67, instruction count 312, allocated bytes for code 1275 (MethodHash=373aa3e1) for method System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:TryGetCertIds(System.Security.Cryptography.Pkcs.SignerInfo,byref,byref):ubyte (FullOpts)
16 (4.52 % of base) - System.Linq.Expressions.Interpreter.LightCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this
; Assembly listing for method System.Linq.Expressions.Interpreter.LightCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):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; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 6 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Interpreter.LightCompiler>
-; V01 arg1 [V01,T09] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Linq.Expressions.Expression>
-; V02 loc0 [V02,T08] ( 5, 7 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.BlockExpression>
+; V00 this [V00,T05] ( 4, 6 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Interpreter.LightCompiler>
+; V01 arg1 [V01,T08] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Linq.Expressions.Expression>
+; V02 loc0 [V02,T07] ( 5, 7 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.BlockExpression>
; V03 loc1 [V03,T01] ( 5, 16.50) int -> r14
-; V04 loc2 [V04,T10] ( 3, 5 ) int -> r12
-; V05 loc3 [V05,T12] ( 2, 4 ) ref -> rax class-hnd exact <System.Linq.Expressions.LabelExpression>
+; V04 loc2 [V04,T09] ( 3, 5 ) int -> r12
+; V05 loc3 [V05,T11] ( 2, 4 ) ref -> rax class-hnd exact <System.Linq.Expressions.LabelExpression>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T00] ( 4, 36 ) ref -> rax "ISINST eval op1"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Linq.Expressions.LabelExpression>
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
-;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Linq.Expressions.Interpreter.LabelInfo>
+;* V11 tmp5 [V11 ] ( 0, 0 ) byref -> zero-ref class-hnd "Inline return value spill temp" <System.Linq.Expressions.Interpreter.LabelInfo>
; V12 tmp6 [V12,T03] ( 3, 12 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Linq.Expressions.LabelTarget>
-; V13 tmp7 [V13,T07] ( 2, 8 ) ref -> rdi class-hnd exact "dup spill" <System.Linq.Expressions.Interpreter.LabelInfo>
-; V14 tmp8 [V14,T04] ( 3, 12 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Interpreter.LabelInfo>
-; V15 tmp9 [V15,T05] ( 3, 12 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.LabelScopeInfo]>
-; V16 tmp10 [V16,T13] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V17 tmp11 [V17,T02] ( 2, 16 ) ref -> rdi "argument with side effect"
-; V18 cse0 [V18,T11] ( 3, 5 ) long -> r13 "CSE #02: moderate"
+; V13 tmp7 [V13,T06] ( 2, 8 ) ref -> rdi class-hnd exact "dup spill" <System.Linq.Expressions.Interpreter.LabelInfo>
+;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Expressions.Interpreter.LabelInfo>
+; V15 tmp9 [V15,T04] ( 3, 12 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.LabelScopeInfo]>
+; V16 tmp10 [V16 ] ( 4, 8 ) struct (48) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Linq.Expressions.Interpreter.LabelInfo>
+; V17 tmp11 [V17,T12] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V18 tmp12 [V18,T02] ( 2, 16 ) ref -> rdi "argument with side effect"
+; V19 cse0 [V19,T10] ( 3, 5 ) long -> r13 "CSE #02: moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 56
G_M20037_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
+ xor eax, eax
+ mov qword ptr [rbp-0x58], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
- ;; size=22 bbWeight=1 PerfScore 7.00
+ ;; size=42 bbWeight=1 PerfScore 11.58
G_M20037_IG02:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.BlockExpression
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r15, rax
test r15, r15
je G_M20037_IG10
;; size=34 bbWeight=1 PerfScore 5.00
G_M20037_IG03:
xor r14d, r14d
mov rdi, r15
mov rax, qword ptr [r15]
mov r13, qword ptr [rax+0x48]
call [r13+0x30]System.Linq.Expressions.BlockExpression:GetOrMakeExpressions():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this
mov rdi, gword ptr [rax+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
mov r12d, eax
test r12d, r12d
jle G_M20037_IG10
;; size=46 bbWeight=0.50 PerfScore 7.12
G_M20037_IG04:
mov rdi, r15
call [r13+0x30]System.Linq.Expressions.BlockExpression:GetOrMakeExpressions():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this
mov rdi, gword ptr [rax+0x08]
mov esi, r14d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
call [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
test rax, rax
je G_M20037_IG09
;; size=36 bbWeight=4 PerfScore 40.00
G_M20037_IG05:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.LabelExpression
cmp qword ptr [rax], rdi
jne G_M20037_IG09
;; size=19 bbWeight=8 PerfScore 34.00
G_M20037_IG06:
mov rsi, gword ptr [rax+0x08]
test rsi, rsi
je SHORT G_M20037_IG07
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LightCompiler:EnsureLabel(System.Linq.Expressions.LabelTarget):System.Linq.Expressions.Interpreter.LabelInfo:this
call [rax]System.Linq.Expressions.Interpreter.LightCompiler:EnsureLabel(System.Linq.Expressions.LabelTarget):System.Linq.Expressions.Interpreter.LabelInfo:this
mov rdi, rax
mov rsi, gword ptr [rbx+0x28]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this
cmp dword ptr [rdi], edi
call [rax]System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this
jmp SHORT G_M20037_IG09
;; size=47 bbWeight=2 PerfScore 34.50
G_M20037_IG07:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x58], ymm0
+ vmovdqu xmmword ptr [rbp-0x3F], xmm0
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Interpreter.LabelInfo
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x58], rdi
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.LabelScopeInfo]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x60], rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M20037_IG11
- ;; size=53 bbWeight=2 PerfScore 17.50
+ ;; size=62 bbWeight=2 PerfScore 20.17
G_M20037_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.LabelScopeInfo]:s_emptyArray
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [rax+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x30]
- lea rdi, bword ptr [rax+0x20]
- mov rsi, gword ptr [rbp-0x38]
- call CORINFO_HELP_ASSIGN_REF
+ mov rax, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0x38], rax
xor rdi, rdi
- mov rax, gword ptr [rbp-0x30]
- mov gword ptr [rax+0x08], rdi
- ;; size=49 bbWeight=2 PerfScore 19.00
+ mov gword ptr [rbp-0x50], rdi
+ ;; size=36 bbWeight=2 PerfScore 14.00
G_M20037_IG09:
inc r14d
cmp r14d, r12d
jl G_M20037_IG04
;; size=12 bbWeight=4 PerfScore 6.00
G_M20037_IG10:
- add rsp, 24
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M20037_IG11:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.LabelScopeInfo]
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rax, gword ptr [rbp-0x38]
+ mov rax, gword ptr [rbp-0x60]
jmp SHORT G_M20037_IG08
;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 354, prolog size 19, PerfScore 174.38, instruction count 84, allocated bytes for code 354 (MethodHash=076bb1ba) for method System.Linq.Expressions.Interpreter.LightCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (FullOpts)
+; Total bytes of code 370, prolog size 39, PerfScore 176.63, instruction count 88, allocated bytes for code 370 (MethodHash=076bb1ba) for method System.Linq.Expressions.Interpreter.LightCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (FullOpts)
11 (1.77 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]
; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
; V02 loc0 [V02,T02] ( 11, 29.66) ref -> r14 class-hnd <System.Numerics.Vector`1[float][]>
;* V03 loc1 [V03,T09] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V04 loc2 [V04,T06] ( 4, 8 ) int -> r12
; V05 loc3 [V05,T12] ( 3, 8 ) simd32 -> [rbp-0x50] do-not-enreg[HS] hidden-struct-arg <System.Numerics.Vector`1[float]>
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x54]
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T11] ( 2, 16 ) simd32 -> [rbp-0x90] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument"
-; V09 tmp2 [V09,T05] ( 3, 12 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V10 tmp3 [V10,T06] ( 3, 12 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+; V10 tmp3 [V10,T05] ( 3, 12 ) ref -> [rbp-0xE0] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
; V11 tmp4 [V11,T10] ( 4, 64 ) simd32 -> [rbp-0xB0] do-not-enreg[HS] hidden-struct-arg "Strict ordering of exceptions for Array store"
; V12 tmp5 [V12,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Numerics.Vector`1[float]]>
-; V13 rat0 [V13,T01] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V13 tmp6 [V13 ] ( 4, 8 ) struct (40) [rbp-0xD8] do-not-enreg[XSF] addr-exposed "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[System.Numerics.Vector`1[float]]>
+; V14 cse0 [V14,T07] ( 3, 6 ) long -> rdi "CSE #01: aggressive"
+; V15 rat0 [V15,T01] ( 12, 42 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 184
+; Lcl frame size = 216
G_M3520_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 184
- lea rbp, [rsp+0xE0]
+ sub rsp, 216
+ lea rbp, [rsp+0x100]
mov rbx, rdi
mov r15, rsi
;; size=31 bbWeight=1 PerfScore 7.25
G_M3520_IG02:
test rbx, rbx
je G_M3520_IG16
test r15, r15
je G_M3520_IG15
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.Numerics.Vector`1[float]]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[System.Numerics.Vector`1[float]]:get_Count():int:this
mov r12d, eax
test r12d, r12d
jle G_M3520_IG09
;; size=53 bbWeight=1 PerfScore 9.75
G_M3520_IG03:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0x90]
mov edx, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
vmovups ymm0, ymmword ptr [rbp-0x90]
vmovups ymmword ptr [rsp], ymm0
lea rsi, [rbp-0x50]
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]:Invoke(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this
test r14, r14
jne G_M3520_IG07
;; size=61 bbWeight=4 PerfScore 71.00
G_M3520_IG04:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0xD8], ymm0
+ vmovdqu xmmword ptr [rbp-0xC0], xmm0
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0xB8], rax
+ mov qword ptr [rbp-0xD8], rdi
vmovups ymm0, ymmword ptr [rbp-0x50]
- vmovups ymmword ptr [rax+0x08], ymm0
- mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
+ vmovups ymmword ptr [rbp-0xD0], ymm0
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0xC0], rax
+ mov gword ptr [rbp-0xE0], rax
mov rdi, gword ptr [rbx+0x08]
lea rsi, bword ptr [rax+0x08]
mov edx, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
- mov rsi, gword ptr [rbp-0xB8]
- cmp rsi, gword ptr [rbp-0xC0]
+ lea rsi, [rbp-0xD8]
+ mov rdi, gword ptr [rbp-0xE0]
+ cmp rsi, rdi
je G_M3520_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float][]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M3520_IG07
- ;; size=126 bbWeight=2 PerfScore 47.50
+ ;; size=137 bbWeight=2 PerfScore 45.17
G_M3520_IG05:
cmp dword ptr [r14+0x08], r13d
jl G_M3520_IG12
;; size=10 bbWeight=1 PerfScore 4.00
G_M3520_IG06:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0xB0]
mov dword ptr [rbp-0x54], eax
mov edx, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
mov eax, dword ptr [rbp-0x54]
mov edi, eax
shl rdi, 5
vmovups ymm0, ymmword ptr [rbp-0xB0]
vmovups ymmword ptr [r14+rdi+0x10], ymm0
inc eax
cmp eax, r13d
jl SHORT G_M3520_IG06
;; size=60 bbWeight=15.84 PerfScore 257.40
G_M3520_IG07:
cmp r13d, dword ptr [r14+0x08]
jae G_M3520_IG17
mov rax, r13
shl rax, 5
vmovups ymm0, ymmword ptr [rbp-0x50]
vmovups ymmword ptr [r14+rax+0x10], ymm0
;; size=29 bbWeight=2 PerfScore 21.50
G_M3520_IG08:
inc r13d
cmp r13d, r12d
jl G_M3520_IG03
;; size=12 bbWeight=4 PerfScore 6.00
G_M3520_IG09:
test r14, r14
jne SHORT G_M3520_IG13
;; size=5 bbWeight=1 PerfScore 1.25
G_M3520_IG10:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M3520_IG11:
vzeroupper
- add rsp, 184
+ add rsp, 216
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M3520_IG12:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0xB0]
mov dword ptr [rbp-0x54], eax
mov edx, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
mov edi, dword ptr [rbp-0x54]
cmp edi, dword ptr [r14+0x08]
jae G_M3520_IG17
mov eax, edi
shl rax, 5
vmovups ymm0, ymmword ptr [rbp-0xB0]
vmovups ymmword ptr [r14+rax+0x10], ymm0
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M3520_IG12
jmp G_M3520_IG07
;; size=77 bbWeight=0.16 PerfScore 3.60
G_M3520_IG13:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Numerics.Vector`1[float]]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
G_M3520_IG14:
vzeroupper
- add rsp, 184
+ add rsp, 216
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M3520_IG15:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M3520_IG16:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M3520_IG17:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 620, prolog size 25, PerfScore 436.38, instruction count 144, allocated bytes for code 620 (MethodHash=f352f23f) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (FullOpts)
+; Total bytes of code 631, prolog size 25, PerfScore 434.04, instruction count 146, allocated bytes for code 631 (MethodHash=f352f23f) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (FullOpts)