GH-91945

Created Diff never expires
478 removals
473 lines
337 additions
339 lines
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; FullOpts code
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
; 0 inlinees with PGO data; 11 single block inlinees; 2 inlinees without PGO data
; 0 inlinees with PGO data; 11 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 this [V00,T01] ( 19, 11 ) ref -> r15 this class-hnd single-def <System.Data.Common.ObjectStorage>
; V00 this [V00,T00] ( 18, 10.50) ref -> rbx this class-hnd single-def <System.Data.Common.ObjectStorage>
; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def
; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def
; V02 arg2 [V02,T00] ( 38, 17.50) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T01] ( 18, 10.50) ref -> r15 class-hnd single-def <System.Object>
; V03 loc0 [V03,T03] ( 12, 6 ) ref -> rax class-hnd exact single-def <System.RuntimeType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Object[]>
; V05 tmp1 [V05,T09] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V05 tmp2 [V05,T09] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V06 tmp2 [V06,T10] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V06 tmp3 [V06,T10] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V07 tmp3 [V07,T11] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V07 tmp4 [V07,T11] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V08 tmp4 [V08,T12] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V08 tmp5 [V08,T12] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V09 tmp5 [V09,T13] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V09 tmp6 [V09,T13] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V10 tmp6 [V10,T14] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V10 tmp7 [V10,T14] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V11 tmp7 [V11,T15] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V11 tmp8 [V11,T15] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V12 tmp8 [V12,T16] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V12 tmp9 [V12,T16] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V13 tmp9 [V13,T17] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V13 tmp10 [V13,T17] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]>
; V14 tmp10 [V14,T18] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]>
; V14 tmp11 [V14,T18] ( 2, 2 ) ref -> r13 class-hnd single-def "bubbling QMark2" <System.Object[]>
; V15 tmp11 [V15,T19] ( 2, 2 ) ref -> r15 class-hnd single-def "bubbling QMark2" <System.Object[]>
;* V15 tmp12 [V15,T43] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; V16 tmp12 [V16,T08] ( 3, 2 ) long -> rcx "fgMakeTemp is creating a new local variable"
; V16 tmp13 [V16,T04] ( 3, 3 ) ref -> r15 class-hnd "spilling QMark2" <System.String>
; V17 tmp13 [V17,T04] ( 4, 4 ) ref -> rdi class-hnd "spilling QMark2" <System.String>
; V17 tmp14 [V17,T24] ( 2, 2 ) struct (16) [rbp-0x38] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid>
; V18 tmp14 [V18,T25] ( 2, 2 ) struct (16) [rbp-0x28] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid>
; V18 tmp15 [V18,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid>
; V19 tmp15 [V19,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid>
; V19 tmp16 [V19 ] ( 4, 2 ) struct (24) [rbp-0x50] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
; V20 tmp16 [V20 ] ( 4, 2 ) struct (24) [rbp-0x40] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V22 tmp18 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V25 tmp22 [V25,T19] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V26 tmp22 [V26,T20] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V26 tmp23 [V26,T25] ( 2, 2 ) int -> rsi "Inlining Arg"
; V27 tmp23 [V27,T26] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V28 tmp25 [V28,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V29 tmp25 [V29,T32] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V29 tmp26 [V29,T26] ( 2, 2 ) ushort -> rbx "Inlining Arg"
; V30 tmp26 [V30,T27] ( 2, 2 ) ushort -> rbx "Inlining Arg"
;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V31 tmp28 [V31,T32] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V32 tmp28 [V32,T33] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V32 tmp29 [V32,T27] ( 2, 2 ) short -> rbx "Inlining Arg"
; V33 tmp29 [V33,T28] ( 2, 2 ) short -> rbx "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V34 tmp31 [V34,T33] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V35 tmp31 [V35,T34] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V35 tmp32 [V35,T28] ( 2, 2 ) int -> rbx "Inlining Arg"
; V36 tmp32 [V36,T29] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V37 tmp34 [V37,T34] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V38 tmp34 [V38,T35] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V38 tmp35 [V38,T29] ( 2, 2 ) ushort -> rbx "Inlining Arg"
; V39 tmp35 [V39,T30] ( 2, 2 ) ushort -> rbx "Inlining Arg"
;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V40 tmp37 [V40,T35] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V41 tmp37 [V41,T36] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V41 tmp38 [V41,T30] ( 2, 2 ) int -> rbx "Inlining Arg"
; V42 tmp38 [V42,T31] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V43 tmp40 [V43,T36] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V44 tmp40 [V44,T37] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V44 tmp41 [V44,T44] ( 2, 2 ) float -> [rbp-0x54] spill-single-def "Inlining Arg"
; V45 tmp41 [V45,T43] ( 2, 2 ) float -> [rbp-0x44] spill-single-def "Inlining Arg"
;* V45 tmp42 [V45 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp42 [V46 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
; V47 tmp44 [V47,T39] ( 2, 1 ) byref -> rdi "field V22._reference (fldOffset=0x0)" P-INDEP
; V48 tmp44 [V48,T39] ( 2, 1 ) byref -> rsi "field V23._reference (fldOffset=0x0)" P-INDEP
; V48 tmp45 [V48,T41] ( 2, 1 ) int -> rsi "field V22._length (fldOffset=0x8)" P-INDEP
; V49 tmp45 [V49,T41] ( 2, 1 ) int -> [rbp-0x48] spill-single-def "field V23._length (fldOffset=0x8)" P-INDEP
; V49 tmp46 [V49,T40] ( 2, 1 ) byref -> rdi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V50 tmp46 [V50,T40] ( 2, 1 ) byref -> rsi single-def "field V24._reference (fldOffset=0x0)" P-INDEP
; V50 tmp47 [V50,T42] ( 2, 1 ) int -> rsi "field V23._length (fldOffset=0x8)" P-INDEP
; V51 tmp47 [V51,T42] ( 2, 1 ) int -> rdi "field V24._length (fldOffset=0x8)" P-INDEP
;* V51 tmp48 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp48 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V53 tmp50 [V53,T06] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V54 tmp50 [V54,T06] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V54 tmp51 [V54,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V55 tmp51 [V55,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V55 tmp52 [V55,T20] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V56 tmp52 [V56,T21] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V56 tmp53 [V56,T21] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V57 tmp53 [V57,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V57 tmp54 [V57,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V58 tmp54 [V58,T23] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V58 tmp55 [V58,T23] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V59 tmp55 [V59,T24] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V59 cse0 [V59,T37] ( 3, 1.50) ref -> rdi "CSE - conservative"
; V60 cse0 [V60,T38] ( 3, 1.50) ref -> rdi "CSE - conservative"
; V60 cse1 [V60,T38] ( 3, 1.50) ref -> r13 "CSE - conservative"
; V61 cse2 [V61,T03] ( 13, 6.50) long -> r12 "CSE - aggressive"
;
;
; Lcl frame size = 56
; Lcl frame size = 56


G_M32004_IG01:
G_M32004_IG01:
push rbp
push rbp
push r15
push r15
push r14
push r14
push r13
push r12
push rbx
push rbx
sub rsp, 56
sub rsp, 56
vzeroupper
vzeroupper
lea rbp, [rsp+0x50]
lea rbp, [rsp+0x60]
mov r15, rdi
mov rbx, rdi
mov r14d, esi
mov r14d, esi
mov rbx, rdx
mov r15, rdx
;; size=27 bbWeight=1 PerfScore 6.50
;; size=31 bbWeight=1 PerfScore 8.50
G_M32004_IG02:
G_M32004_IG02:
cmp gword ptr [r15+0x30], rbx
cmp gword ptr [rbx+0x30], r15
jne SHORT G_M32004_IG04
jne SHORT G_M32004_IG04
;; size=6 bbWeight=1 PerfScore 4.00
;; size=6 bbWeight=1 PerfScore 4.00
G_M32004_IG03:
G_M32004_IG03:
mov rdi, gword ptr [r15+0x40]
mov rdi, gword ptr [rbx+0x40]
cmp r14d, dword ptr [rdi+0x08]
cmp r14d, dword ptr [rdi+0x08]
jae G_M32004_IG42
jae G_M32004_IG20
mov esi, r14d
mov esi, r14d
xor rax, rax
xor rax, rax
mov gword ptr [rdi+8*rsi+0x10], rax
mov gword ptr [rdi+8*rsi+0x10], rax
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=29 bbWeight=0.50 PerfScore 4.75
;; size=29 bbWeight=0.50 PerfScore 4.75
G_M32004_IG04:
G_M32004_IG04:
mov rdi, gword ptr [r15+0x18]
mov rdi, gword ptr [rbx+0x18]
mov rsi, 0xD1FFAB1E ; 'System.Object'
mov rsi, 0xD1FFAB1E ; 'System.Object'


cmp rdi, rsi
cmp rdi, rsi
je SHORT G_M32004_IG05
je SHORT G_M32004_IG05
mov rsi, rbx
mov rsi, r15
mov rax, qword ptr [rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xA0]
mov rax, qword ptr [rax+0xA0]
call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this
call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this
test eax, eax
test eax, eax
je SHORT G_M32004_IG06
je SHORT G_M32004_IG06
;; size=39 bbWeight=0.50 PerfScore 6.00
;; size=39 bbWeight=0.50 PerfScore 6.00
G_M32004_IG05:
G_M32004_IG05:
mov rdi, gword ptr [r15+0x40]
mov rdi, gword ptr [rbx+0x40]
movsxd rsi, r14d
movsxd rsi, r14d
mov rdx, rbx
mov rdx, r15
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=20 bbWeight=0.50 PerfScore 2.75
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M32004_IG06:
G_M32004_IG06:
mov rdi, rbx
mov r13, gword ptr [rbx+0x18]
call System.Object:GetType():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Guid'
mov rdi, 0xD1FFAB1E ; 'System.Guid'


cmp gword ptr [r15+0x18], rdi
cmp r13, rdi
jne G_M32004_IG07
jne SHORT G_M32004_IG07
mov rdi, 0xD1FFAB1E ; 'System.String'
mov r12, qword ptr [r15]

mov rdi, 0xD1FFAB1E ; System.String
cmp rax, rdi
cmp r12, rdi
jne G_M32004_IG07
jne SHORT G_M32004_IG07
mov r15, gword ptr [r15+0x40]
mov r13, gword ptr [rbx+0x40]
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [rdi], rcx
jne G_M32004_IG39
vxorps xmm0, xmm0, xmm0
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x40], xmm0
vmovdqu xmmword ptr [rbp-0x50], xmm0
vmovdqu xmmword ptr [rbp-0x3C], xmm0
vmovdqu xmmword ptr [rbp-0x4C], xmm0
mov byte ptr [rbp-0x30], 1
mov byte ptr [rbp-0x40], 1
lea rsi, bword ptr [rdi+0x0C]
lea rdi, bword ptr [r15+0x0C]
mov edi, dword ptr [rdi+0x08]
mov esi, dword ptr [r15+0x08]
mov dword ptr [rbp-0x48], edi
lea rdx, [rbp-0x50]
mov rdi, rsi
mov esi, dword ptr [rbp-0x48]
lea rdx, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
vmovups xmm0, xmmword ptr [rbp-0x40]
vmovups xmm0, xmmword ptr [rbp-0x50]
vmovups xmmword ptr [rbp-0x28], xmm0
vmovups xmmword ptr [rbp-0x38], xmm0
mov rdi, 0xD1FFAB1E ; System.Guid
mov rdi, 0xD1FFAB1E ; System.Guid
call CORINFO_HELP_NEWSFAST
call CORINFO_HELP_NEWSFAST
vmovups xmm0, xmmword ptr [rbp-0x28]
vmovups xmm0, xmmword ptr [rbp-0x38]
vmovups xmmword ptr [rax+0x08], xmm0
vmovups xmmword ptr [rax+0x08], xmm0
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r13
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=177 bbWeight=0.50 PerfScore 19.67
;; size=137 bbWeight=0.50 PerfScore 16.29
G_M32004_IG07:
G_M32004_IG07:
mov rsi, 0xD1FFAB1E ; 'System.Byte[]'
mov rdi, 0xD1FFAB1E ; 'System.Byte[]'

cmp gword ptr [r15+0x18], rsi
jne G_M32004_IG41
mov rsi, 0xD1FFAB1E ; 'System.Boolean'


cmp rax, rsi
cmp r13, rdi
jne SHORT G_M32004_IG10
jne G_M32004_IG19
mov r15, gword ptr [r15+0x40]
mov r12, qword ptr [r15]
mov rsi, 0xD1FFAB1E ; System.Boolean
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG09
;; size=54 bbWeight=0.50 PerfScore 6.00
G_M32004_IG08:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Boolean
mov rdi, 0xD1FFAB1E ; System.Boolean
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG08
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG09:
movzx rdi, byte ptr [r15+0x08]
movzx rdi, byte ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[]
call [rax]System.BitConverter:GetBytes(ubyte):ubyte[]
call [rax]System.BitConverter:GetBytes(ubyte):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=36 bbWeight=0.50 PerfScore 4.50
;; size=77 bbWeight=0.50 PerfScore 8.00
G_M32004_IG10:
G_M32004_IG08:
mov rsi, 0xD1FFAB1E ; 'System.Char'

cmp rax, rsi
jne SHORT G_M32004_IG13
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Char
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG12
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG11:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Char
mov rdi, 0xD1FFAB1E ; System.Char
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG09
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG12:
movzx rbx, word ptr [r15+0x08]
movzx rbx, word ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=47 bbWeight=0.50 PerfScore 4.12
;; size=67 bbWeight=0.50 PerfScore 5.88
G_M32004_IG13:
G_M32004_IG09:
mov rsi, 0xD1FFAB1E ; 'System.Int16'

cmp rax, rsi
jne SHORT G_M32004_IG16
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int16
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG15
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG14:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int16
mov rdi, 0xD1FFAB1E ; System.Int16
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG10
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG15:
movsx rbx, word ptr [r15+0x08]
movsx rbx, word ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=48 bbWeight=0.50 PerfScore 5.12
;; size=67 bbWeight=0.50 PerfScore 6.88
G_M32004_IG16:
G_M32004_IG10:
mov rsi, 0xD1FFAB1E ; 'System.Int32'

cmp rax, rsi
jne SHORT G_M32004_IG19
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG18
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG17:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int32
mov rdi, 0xD1FFAB1E ; System.Int32
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG11
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG18:
mov ebx, dword ptr [r15+0x08]
mov ebx, dword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov dword ptr [rax+0x10], ebx
mov dword ptr [rax+0x10], ebx
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=45 bbWeight=0.50 PerfScore 4.12
;; size=65 bbWeight=0.50 PerfScore 5.88
G_M32004_IG19:
G_M32004_IG11:
mov rsi, 0xD1FFAB1E ; 'System.Int64'

cmp rax, rsi
jne SHORT G_M32004_IG22
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int64
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG21
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG20:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int64
mov rdi, 0xD1FFAB1E ; System.Int64
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG12
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG21:
mov rdi, qword ptr [r15+0x08]
mov rdi, qword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[]
call [rax]System.BitConverter:GetBytes(long):ubyte[]
call [rax]System.BitConverter:GetBytes(long):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=35 bbWeight=0.50 PerfScore 4.50
;; size=54 bbWeight=0.50 PerfScore 6.25
G_M32004_IG22:
G_M32004_IG12:
mov rsi, 0xD1FFAB1E ; 'System.UInt16'

cmp rax, rsi
jne SHORT G_M32004_IG25
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt16
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG24
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG23:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt16
mov rdi, 0xD1FFAB1E ; System.UInt16
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG13
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG24:
movzx rbx, word ptr [r15+0x08]
movzx rbx, word ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=47 bbWeight=0.50 PerfScore 4.12
;; size=67 bbWeight=0.50 PerfScore 5.88
G_M32004_IG25:
G_M32004_IG13:
mov rsi, 0xD1FFAB1E ; 'System.UInt32'

cmp rax, rsi
jne SHORT G_M32004_IG28
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt32
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG27
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG26:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt32
mov rdi, 0xD1FFAB1E ; System.UInt32
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG14
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG27:
mov ebx, dword ptr [r15+0x08]
mov ebx, dword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov dword ptr [rax+0x10], ebx
mov dword ptr [rax+0x10], ebx
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=45 bbWeight=0.50 PerfScore 4.12
;; size=65 bbWeight=0.50 PerfScore 5.88
G_M32004_IG28:
G_M32004_IG14:
mov rsi, 0xD1FFAB1E ; 'System.UInt64'

cmp rax, rsi
jne SHORT G_M32004_IG31
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt64
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG30
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG29:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt64
mov rdi, 0xD1FFAB1E ; System.UInt64
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG15
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG30:
mov rdi, qword ptr [r15+0x08]
mov rdi, qword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[]
call [rax]System.BitConverter:GetBytes(ulong):ubyte[]
call [rax]System.BitConverter:GetBytes(ulong):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp G_M32004_IG37
jmp G_M32004_IG17
;; size=35 bbWeight=0.50 PerfScore 4.50
;; size=54 bbWeight=0.50 PerfScore 6.25
G_M32004_IG31:
G_M32004_IG15:
mov rsi, 0xD1FFAB1E ; 'System.Single'

cmp rax, rsi
jne SHORT G_M32004_IG34
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Single
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG33
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG32:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Single
mov rdi, 0xD1FFAB1E ; System.Single
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG16
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG33:
vmovss xmm0, dword ptr [r15+0x08]
vmovss xmm0, dword ptr [rbx+0x08]
vmovss dword ptr [rbp-0x54], xmm0
vmovss dword ptr [rbp-0x44], xmm0
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
vmovss xmm0, dword ptr [rbp-0x44]
vmovss xmm0, dword ptr [rbp-0x54]
vmovss dword ptr [rax+0x10], xmm0
vmovss dword ptr [rax+0x10], xmm0
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, r12
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
jmp SHORT G_M32004_IG37
jmp SHORT G_M32004_IG17
;; size=56 bbWeight=0.50 PerfScore 7.62
;; size=76 bbWeight=0.50 PerfScore 9.38
G_M32004_IG34:
G_M32004_IG16:
mov rsi, 0xD1FFAB1E ; 'System.Double'
mov rax, 0xD1FFAB1E ; System.Double

cmp r12, rax
cmp rax, rsi
jne SHORT G_M32004_IG19
jne SHORT G_M32004_IG40
mov rbx, gword ptr [rbx+0x40]
mov r15, gword ptr [r15+0x40]
vmovsd xmm0, qword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; System.Double
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG36
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG35:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Double
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=25 bbWeight=0.25 PerfScore 0.94
G_M32004_IG36:
vmovsd xmm0, qword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[]
call [rax]System.BitConverter:GetBytes(double):ubyte[]
call [rax]System.BitConverter:GetBytes(double):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
mov rdi, r15
mov rdi, rbx
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
;; size=31 bbWeight=0.50 PerfScore 4.50
;; size=51 bbWeight=0.50 PerfScore 6.25
G_M32004_IG37:
G_M32004_IG17:
nop
nop
;; size=1 bbWeight=1 PerfScore 0.25
;; size=1 bbWeight=1 PerfScore 0.25
G_M32004_IG38:
G_M32004_IG18:
add rsp, 56
add rsp, 56
pop rbx
pop rbx
pop r12
pop r13
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
;; size=11 bbWeight=1 PerfScore 3.25
;; size=15 bbWeight=1 PerfScore 4.25
G_M32004_IG39:
G_M32004_IG19:
mov rdi, rcx
mov rsi, rbx
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
int3
;; size=12 bbWeight=0 PerfScore 0.00
G_M32004_IG40:
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rdi, rax
call CORINFO_HELP_THROW
;; size=20 bbWeight=0 PerfScore 0.00
G_M32004_IG41:
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rdi, rax
mov rdi, rax
call CORINFO_HELP_THROW
call CORINFO_HELP_THROW
;; size=20 bbWeight=0 PerfScore 0.00
;; size=20 bbWeight=0 PerfScore 0.00
G_M32004_IG42:
G_M32004_IG20:
call CORINFO_HELP_RNGCHKFAIL
call CORINFO_HELP_RNGCHKFAIL
int3
int3
;; size=6 bbWeight=0 PerfScore 0.00
;; size=6 bbWeight=0 PerfScore 0.00


; Total bytes of code 1403, prolog size 18, PerfScore 284.97, instruction count 297, allocated bytes for code 1403 (MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Total bytes of code 947, prolog size 22, PerfScore 207.99, instruction count 217, allocated bytes for code 947 (MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; ============================================================
; ============================================================