Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created March 14, 2024 17:53

Top method improvements

-32 (-1.71 % of base) - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object
 ; Assembly listing for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (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; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T13] (  7,  6.98)     ref  ->  r14         class-hnd single-def <System.IServiceProvider>
-;  V01 arg1         [V01,T11] (  8,  7.48)     ref  ->  r15         class-hnd single-def <System.Type>
-;  V02 arg2         [V02,T09] ( 11, 13.77)     ref  ->  rbx         class-hnd single-def <System.Object[]>
+;  V00 arg0         [V00,T14] (  7,  6.98)     ref  ->  r14         class-hnd single-def <System.IServiceProvider>
+;  V01 arg1         [V01,T12] (  8,  7.48)     ref  ->  r15         class-hnd single-def <System.Type>
+;  V02 arg2         [V02,T08] ( 11, 13.77)     ref  ->  rbx         class-hnd single-def <System.Object[]>
 ;  V03 loc0         [V03    ] ( 17, 43.96)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass4_0>
-;* V04 loc1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
-;  V05 loc2         [V05    ] (  2,  1.50)  struct (64) [rbp-0x70]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
-;  V06 loc3         [V06,T17] (  7,  5.50)     int  ->  r13         single-def
+;  V04 loc1         [V04    ] (  2,  1.50)  struct (64) [rbp-0x70]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
+;  V05 loc2         [V05,T19] (  5,  4.50)     int  ->  r13         single-def
+;* V06 loc3         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
 ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
 ;* V08 loc5         [V08    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.Object]>
 ;  V09 loc6         [V09    ] ( 16, 31.40)  struct (24) [rbp-0x88]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
 ;  V10 loc7         [V10,T00] ( 10, 26.94)     ref  ->  [rbp-0xE8]  class-hnd <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
 ;  V11 loc8         [V11,T18] (  4,  6.50)     ref  ->  [rbp-0xF0]  class-hnd spill-single-def <Microsoft.Extensions.DependencyInjection.IServiceProviderIsService>
-;  V12 loc9         [V12,T15] (  6,  7.48)     ref  ->  [rbp-0xF8]  class-hnd <System.Type[]>
+;  V12 loc9         [V12,T16] (  6,  7.48)     ref  ->  [rbp-0xF8]  class-hnd <System.Type[]>
 ;  V13 loc10        [V13    ] (  2,  3.96)     ref  ->  [rbp-0x90]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ConstructorInfo>
 ;  V14 loc11        [V14    ] (  2,  3.96)     ref  ->  [rbp-0x98]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Nullable`1[int][]>
-;  V15 loc12        [V15,T12] (  6,  9   )     int  ->  [rbp-0x9C] 
+;  V15 loc12        [V15,T13] (  6,  9   )     int  ->  [rbp-0x9C] 
 ;  V16 loc13        [V16    ] (  5,  7   )  struct (24) [rbp-0xB8]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
-;  V17 loc14        [V17,T20] (  4,  5   )   ubyte  ->  [rbp-0xBC] 
-;  V18 loc15        [V18,T34] (  2,  1   )     int  ->  rsi        
-;  V19 loc16        [V19,T36] (  2,  1   )     int  ->  rsi        
-;* V20 loc17        [V20,T39] (  0,  0   )     int  ->  zero-ref   
+;  V17 loc14        [V17,T21] (  4,  5   )   ubyte  ->  [rbp-0xBC] 
+;  V18 loc15        [V18,T30] (  2,  1   )     int  ->  rsi        
+;  V19 loc16        [V19,T33] (  2,  1   )     int  ->  rsi        
+;* V20 loc17        [V20,T37] (  0,  0   )     int  ->  zero-ref   
 ;  V21 loc18        [V21,T10] (  4, 12   )     int  ->  rax        
 ;  V22 loc19        [V22,T03] ( 12, 20.54)     int  ->  [rbp-0xC0] 
 ;# V23 OutArgs      [V23    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V24 tmp1         [V24,T05] (  6, 20   )     ref  ->  rdi         class-hnd "dup spill" <System.Object>
-;* V25 tmp2         [V25    ] (  0,  0   )     ref  ->  zero-ref   
-;* V26 tmp3         [V26    ] (  0,  0   )     int  ->  zero-ref   
-;* V27 tmp4         [V27    ] (  0,  0   )     ref  ->  zero-ref   
+;* V24 tmp1         [V24    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
+;  V25 tmp2         [V25,T05] (  6, 20   )     ref  ->  rdi         class-hnd "dup spill" <System.Object>
+;* V26 tmp3         [V26    ] (  0,  0   )     ref  ->  zero-ref   
+;* V27 tmp4         [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp5         [V28    ] (  0,  0   )     ref  ->  zero-ref   
-;* V29 tmp6         [V29    ] (  0,  0   )     int  ->  zero-ref   
-;  V30 tmp7         [V30,T14] (  6,  8   )     ref  ->  [rbp-0x100] 
-;  V31 tmp8         [V31,T40] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V32 tmp9         [V32,T44] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impImportAndPushBox" <System.String>
-;  V33 tmp10        [V33,T41] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;  V34 tmp11        [V34,T42] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;  V35 tmp12        [V35,T43] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V36 tmp13        [V36    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V37 tmp14        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V38 tmp15        [V38    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V39 tmp16        [V39,T28] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Object[]>
-;  V40 tmp17        [V40,T29] (  3,  3   )     int  ->  rdi         "Inlining Arg"
-;* V41 tmp18        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V42 tmp19        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V43 tmp20        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;  V44 tmp21        [V44,T23] (  2,  4   )   byref  ->  rdx         single-def "Inlining Arg"
-;  V45 tmp22        [V45,T25] (  2,  4   )     int  ->  rax         "Inlining Arg"
-;* V46 tmp23        [V46    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;* V47 tmp24        [V47    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;* V48 tmp25        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
-;* V49 tmp26        [V49    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V50 tmp27        [V50    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V51 tmp28        [V51,T26] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V52 tmp29        [V52,T08] (  4, 16   )    long  ->  rdx         "Inlining Arg"
-;* V53 tmp30        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
-;* V54 tmp31        [V54    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;  V55 tmp32        [V55    ] ( 17, 43.96)     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
-;  V56 tmp33        [V56,T30] (  3,  2   )   byref  ->  r12         "field V04._reference (fldOffset=0x0)" P-INDEP
-;  V57 tmp34        [V57,T27] (  4,  3   )     int  ->  rax         "field V04._length (fldOffset=0x8)" P-INDEP
-;  V58 tmp35        [V58,T07] ( 10, 18.96)   byref  ->  r12         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V59 tmp36        [V59,T06] ( 10, 17.96)     int  ->  r13         single-def "field V07._length (fldOffset=0x8)" P-INDEP
-;  V60 tmp37        [V60,T16] (  4,  7   )   byref  ->  [rbp-0x108]  spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V61 tmp38        [V61,T21] (  3,  5   )     int  ->  [rbp-0xC4]  spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
-;  V62 tmp39        [V62,T35] (  2,  1   )   byref  ->  r12         single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;  V63 tmp40        [V63,T37] (  2,  1   )     int  ->  rax         single-def "field V37._length (fldOffset=0x8)" P-INDEP
-;  V64 tmp41        [V64,T31] (  2,  2   )   byref  ->  r12         single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V65 tmp42        [V65,T38] (  0,  0   )     int  ->  zero-ref    single-def "field V41._length (fldOffset=0x8)" P-INDEP
-;  V66 tmp43        [V66,T32] (  2,  2   )   byref  ->  rdx         single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;  V67 tmp44        [V67,T33] (  2,  2   )     int  ->  rax         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;* V68 tmp45        [V68    ] (  0,  0   )   byref  ->  zero-ref    "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V69 tmp46        [V69    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
-;* V70 tmp47        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp48        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
-;* V72 tmp49        [V72    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-INDEP
-;* V73 tmp50        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-INDEP
-;* V74 tmp51        [V74    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp52        [V75    ] (  0,  0   )     int  ->  zero-ref    single-def "field V54._length (fldOffset=0x8)" P-INDEP
-;  V76 tmp53        [V76,T24] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
-;  V77 tmp54        [V77,T45] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V78 tmp55        [V78,T46] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V79 tmp56        [V79,T47] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V80 cse0         [V80,T22] (  3,  4   )    long  ->  [rbp-0xD0]  spill-single-def "CSE #03: conservative"
-;  V81 cse1         [V81,T19] (  5,  5.25)     int  ->  [rbp-0xD4]  spill-single-def "CSE #07: moderate"
-;  V82 rat0         [V82,T01] (  7, 21   )    long  ->  rsi         "Widened IV V18"
-;  V83 rat1         [V83,T04] (  6, 20.50)    long  ->  [rbp-0xE0]  "Widened IV V20"
-;  V84 rat2         [V84,T02] (  7, 21   )    long  ->  rsi         "Widened IV V19"
+;* V29 tmp6         [V29    ] (  0,  0   )     ref  ->  zero-ref   
+;* V30 tmp7         [V30    ] (  0,  0   )     int  ->  zero-ref   
+;  V31 tmp8         [V31,T15] (  6,  8   )     ref  ->  [rbp-0x100] 
+;  V32 tmp9         [V32,T39] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V33 tmp10        [V33,T43] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impImportAndPushBox" <System.String>
+;  V34 tmp11        [V34,T40] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+;  V35 tmp12        [V35,T41] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+;  V36 tmp13        [V36,T42] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;  V37 tmp14        [V37,T26] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Object[]>
+;* V38 tmp15        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V39 tmp16        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V40 tmp17        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V41 tmp18        [V41    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V42 tmp19        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V43 tmp20        [V43    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V44 tmp21        [V44    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;* V45 tmp22        [V45    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;* V46 tmp23        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
+;* V47 tmp24        [V47    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V48 tmp25        [V48    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V49 tmp26        [V49,T24] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V50 tmp27        [V50,T07] (  4, 16   )    long  ->  rdx         "Inlining Arg"
+;* V51 tmp28        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
+;* V52 tmp29        [V52    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;  V53 tmp30        [V53    ] ( 17, 43.96)     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
+;* V54 tmp31        [V54    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp32        [V55    ] (  0,  0   )     int  ->  zero-ref    single-def "field V06._length (fldOffset=0x8)" P-INDEP
+;  V56 tmp33        [V56,T06] ( 10, 18.96)   byref  ->  r12         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V57 tmp34        [V57,T09] ( 10, 11.96)     int  ->  r13         single-def "field V07._length (fldOffset=0x8)" P-INDEP
+;  V58 tmp35        [V58,T17] (  4,  7   )   byref  ->  [rbp-0x108]  spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V59 tmp36        [V59,T11] (  3,  9   )     int  ->  [rbp-0xC4]  spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
+;  V60 tmp37        [V60,T27] (  3,  2   )   byref  ->  r12         "field V24._reference (fldOffset=0x0)" P-INDEP
+;  V61 tmp38        [V61,T25] (  4,  3   )     int  ->  rdi         "field V24._length (fldOffset=0x8)" P-INDEP
+;  V62 tmp39        [V62,T31] (  2,  1   )   byref  ->  r12         "field V38._reference (fldOffset=0x0)" P-INDEP
+;  V63 tmp40        [V63,T34] (  2,  1   )     int  ->  rdi         "field V38._length (fldOffset=0x8)" P-INDEP
+;  V64 tmp41        [V64,T32] (  2,  1   )   byref  ->  r12         single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp42        [V65,T38] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
+;  V66 tmp43        [V66,T28] (  2,  2   )   byref  ->  r12         single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V67 tmp44        [V67,T35] (  0,  0   )     int  ->  zero-ref    single-def "field V40._length (fldOffset=0x8)" P-INDEP
+;  V68 tmp45        [V68,T29] (  2,  2   )   byref  ->  rcx         single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp46        [V69,T36] (  0,  0   )     int  ->  zero-ref    single-def "field V42._length (fldOffset=0x8)" P-INDEP
+;* V70 tmp47        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp48        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V44._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp49        [V72    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp50        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp51        [V74    ] (  0,  0   )   byref  ->  zero-ref    "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp52        [V75    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp53        [V76    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp54        [V77    ] (  0,  0   )     int  ->  zero-ref    single-def "field V52._length (fldOffset=0x8)" P-INDEP
+;  V78 tmp55        [V78,T23] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
+;  V79 tmp56        [V79,T44] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V80 tmp57        [V80,T45] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V81 tmp58        [V81,T46] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V82 cse0         [V82,T22] (  3,  4   )    long  ->  [rbp-0xD0]  spill-single-def "CSE #02: conservative"
+;  V83 cse1         [V83,T20] (  5,  5.25)     int  ->  [rbp-0xD4]  spill-single-def "CSE #06: moderate"
+;  V84 rat0         [V84,T01] (  7, 21   )    long  ->  rsi         "Widened IV V18"
+;  V85 rat1         [V85,T04] (  6, 20.50)    long  ->  [rbp-0xE0]  "Widened IV V20"
+;  V86 rat2         [V86,T02] (  7, 21   )    long  ->  rsi         "Widened IV V19"
 ;
 ; Lcl frame size = 232
 
 G_M32498_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 232
        lea      rbp, [rsp+0x110]
        xor      eax, eax
        mov      qword ptr [rbp-0xB8], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0xB0], ymm8
        vmovdqu  ymmword ptr [rbp-0x90], ymm8
        vmovdqu  ymmword ptr [rbp-0x70], ymm8
        vmovdqu  ymmword ptr [rbp-0x50], ymm8
        mov      qword ptr [rbp-0x30], rax
        mov      r14, rdi
        mov      r15, rsi
        mov      rbx, rdx
 						;; size=78 bbWeight=1 PerfScore 18.08
 G_M32498_IG02:
        test     r14, r14
        je       G_M32498_IG42
        mov      rdi, r15
        mov      rax, qword ptr [r15]
        mov      rax, qword ptr [rax+0x70]
        call     [rax+0x18]System.Type:GetAttributeFlagsImpl():int:this
        test     al, 128
        jne      G_M32498_IG43
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        lea      rdx, [rbp-0x30]
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        call     [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        test     eax, eax
        jne      SHORT G_M32498_IG04
 						;; size=66 bbWeight=1 PerfScore 17.25
 G_M32498_IG03:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
        mov      gword ptr [rbp-0x30], rax
 						;; size=19 bbWeight=0.50 PerfScore 2.25
 G_M32498_IG04:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x70], ymm0
        vmovdqu  ymmword ptr [rbp-0x50], ymm0
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
        mov      r13d, eax
        cmp      r13d, 4
-       jg       SHORT G_M32498_IG06
+       jle      SHORT G_M32498_IG06
 						;; size=39 bbWeight=1 PerfScore 7.58
 G_M32498_IG05:
-       lea      r12, bword ptr [rbp-0x70]
-       lea      eax, [r13+r13]
-       jmp      SHORT G_M32498_IG07
-       align    [0 bytes for IG09]
-						;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M32498_IG06:
        lea      esi, [r13+r13]
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       lea      edi, [r13+r13]
-       cmp      dword ptr [rax+0x08], edi
-       jb       G_M32498_IG44
        lea      r12, bword ptr [rax+0x10]
-       mov      eax, edi
-						;; size=43 bbWeight=0.50 PerfScore 5.12
+       mov      edi, dword ptr [rax+0x08]
+       jmp      SHORT G_M32498_IG07
+       align    [0 bytes for IG09]
+						;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M32498_IG06:
+       lea      r12, bword ptr [rbp-0x70]
+       mov      edi, 8
+						;; size=9 bbWeight=0.50 PerfScore 0.38
 G_M32498_IG07:
-       cmp      r13d, eax
+       cmp      r13d, edi
+       ja       G_M32498_IG44
+       mov      r11d, r13d
+       mov      esi, r13d
+       add      r11, rsi
+       mov      edi, edi
+       cmp      r11, rdi
        ja       G_M32498_IG44
-       mov      ecx, r13d
-       shl      rcx, 3
-       mov      qword ptr [rbp-0xD0], rcx
-       lea      rdx, bword ptr [r12+rcx]
-       sub      eax, r13d
-       mov      bword ptr [rbp-0x108], rdx
-       mov      dword ptr [rbp-0xC4], eax
+       mov      eax, r13d
+       shl      rax, 3
+       mov      qword ptr [rbp-0xD0], rax
+       lea      rcx, bword ptr [r12+rax]
+       mov      bword ptr [rbp-0x108], rcx
+       mov      dword ptr [rbp-0xC4], r13d
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x88], xmm0
        vmovdqu  xmmword ptr [rbp-0x80], xmm0
        mov      rdi, r14
        mov      r11, 0xD1FFAB1E      ; code for System.IServiceProvider:GetService(System.Type):System.Object:this
        mov      rsi, 0xD1FFAB1E      ; 'Microsoft.Extensions.DependencyInjection.IServiceProviderIsServ'
 
        call     [r11]System.IServiceProvider:GetService(System.Type):System.Object:this
        mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.IServiceProviderIsService
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTINTERFACE
        call     [rax]CORINFO_HELP_CHKCASTINTERFACE
        mov      gword ptr [rbp-0xF0], rax
        test     rax, rax
        je       G_M32498_IG26
-						;; size=127 bbWeight=1 PerfScore 17.83
+						;; size=145 bbWeight=1 PerfScore 19.83
 G_M32498_IG08:
        xor      esi, esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], 0
        jle      SHORT G_M32498_IG10
 						;; size=12 bbWeight=0.50 PerfScore 2.62
 G_M32498_IG09:
        mov      rdi, gword ptr [rbp-0x30]
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M32498_IG41
        mov      rdi, gword ptr [rbp-0x30]
        mov      rcx, gword ptr [rdi+8*rsi+0x10]
        cmp      byte  ptr [rcx+0x28], 0
        jne      G_M32498_IG22
        inc      esi
        mov      rcx, gword ptr [rbp-0x30]
        cmp      dword ptr [rcx+0x08], esi
        jg       SHORT G_M32498_IG09
 						;; size=43 bbWeight=4 PerfScore 69.00
 G_M32498_IG10:
        mov      dword ptr [rbp-0x9C], -1
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0xB8], xmm0
        vmovdqu  xmmword ptr [rbp-0xB0], xmm0
        xor      edx, edx
        mov      dword ptr [rbp-0xBC], edx
        xor      r8d, r8d
        mov      rsi, gword ptr [rbp-0x30]
        cmp      dword ptr [rsi+0x08], 0
        jle      G_M32498_IG13
 						;; size=55 bbWeight=0.50 PerfScore 4.92
 G_M32498_IG11:
        mov      rsi, gword ptr [rbp-0x30]
        cmp      r8d, dword ptr [rsi+0x08]
        jae      G_M32498_IG41
        mov      rsi, gword ptr [rbp-0x30]
        mov      qword ptr [rbp-0xE0], r8
        mov      rsi, gword ptr [rsi+8*r8+0x10]
        mov      r9, rsi
        mov      gword ptr [rbp-0xE8], r9
        mov      rsi, gword ptr [r9+0x10]
        mov      esi, dword ptr [rsi+0x08]
-       mov      esi, r13d
+       mov      esi, dword ptr [rbp-0xC4]
        mov      rdi, r12
-       mov      r10, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
-       call     [r10]System.SpanHelpers:ClearWithReferences(byref,ulong)
+       mov      r11, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
+       call     [r11]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      rax, gword ptr [rbp-0xE8]
        mov      gword ptr [rbp-0x88], rax
        mov      bword ptr [rbp-0x80], r12
-       mov      dword ptr [rbp-0x78], r13d
+       mov      eax, dword ptr [rbp-0xC4]
+       mov      dword ptr [rbp-0x78], eax
        lea      rdi, [rbp-0x88]
        mov      rsi, rbx
        mov      rdx, gword ptr [rbp-0xF0]
-       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
-       call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+       call     [rcx]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        mov      ecx, dword ptr [rbp-0x9C]
        cmp      ecx, eax
-       jge      G_M32498_IG16
-						;; size=131 bbWeight=4 PerfScore 117.00
+       jge      SHORT G_M32498_IG16
+						;; size=135 bbWeight=4 PerfScore 124.00
 G_M32498_IG12:
        mov      dword ptr [rbp-0x9C], eax
-       cmp      r13d, dword ptr [rbp-0xC4]
-       ja       G_M32498_IG48
-       mov      r9, qword ptr [rbp-0xD0]
-       mov      rdx, r9
+       mov      r8, qword ptr [rbp-0xD0]
+       mov      rdx, r8
        cmp      rdx, 0x4000
        ja       SHORT G_M32498_IG14
        mov      rdi, bword ptr [rbp-0x108]
        mov      rsi, r12
        call     System.Buffer:__BulkMoveWithWriteBarrier(byref,byref,ulong)
        jmp      SHORT G_M32498_IG15
-						;; size=55 bbWeight=2 PerfScore 21.50
+						;; size=42 bbWeight=2 PerfScore 15.50
 G_M32498_IG13:
-       mov      edx, dword ptr [rbp-0xBC]
+       mov      edi, dword ptr [rbp-0xBC]
        jmp      SHORT G_M32498_IG18
        align    [0 bytes for IG23]
 						;; size=8 bbWeight=0.25 PerfScore 0.75
 G_M32498_IG14:
        mov      rdi, bword ptr [rbp-0x108]
        mov      rsi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
        call     [rax]System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
 						;; size=22 bbWeight=2 PerfScore 9.00
 G_M32498_IG15:
        mov      rsi, gword ptr [rbp-0x88]
        mov      gword ptr [rbp-0xB8], rsi
        mov      rsi, bword ptr [rbp-0x108]
        mov      bword ptr [rbp-0xB0], rsi
-       mov      edi, dword ptr [rbp-0xC4]
-       mov      dword ptr [rbp-0xA8], edi
+       mov      dword ptr [rbp-0xA8], r13d
        xor      edx, edx
+       xor      edi, edi
        jmp      SHORT G_M32498_IG17
-						;; size=44 bbWeight=2 PerfScore 16.50
+						;; size=41 bbWeight=2 PerfScore 15.00
 G_M32498_IG16:
        cmp      ecx, eax
-       mov      edx, dword ptr [rbp-0xBC]
+       mov      edi, dword ptr [rbp-0xBC]
        jne      SHORT G_M32498_IG21
-       mov      edx, 1
+       mov      edi, 1
        mov      dword ptr [rbp-0x9C], ecx
        mov      rsi, bword ptr [rbp-0x108]
-       mov      edi, dword ptr [rbp-0xC4]
-						;; size=34 bbWeight=2 PerfScore 11.00
+						;; size=28 bbWeight=2 PerfScore 9.00
 G_M32498_IG17:
        mov      r8, qword ptr [rbp-0xE0]
        inc      r8d
        mov      rax, gword ptr [rbp-0x30]
        cmp      dword ptr [rax+0x08], r8d
        jg       SHORT G_M32498_IG20
 						;; size=20 bbWeight=4 PerfScore 25.00
 G_M32498_IG18:
        cmp      dword ptr [rbp-0x9C], -1
        je       G_M32498_IG26
-       test     edx, edx
+       test     edi, edi
        jne      G_M32498_IG45
        lea      rdi, [rbp-0xB8]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=44 bbWeight=0.50 PerfScore 4.25
 G_M32498_IG19:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=0.50 PerfScore 2.12
 G_M32498_IG20:
-       mov      dword ptr [rbp-0xBC], edx
+       mov      dword ptr [rbp-0xBC], edi
        jmp      G_M32498_IG11
 						;; size=11 bbWeight=2 PerfScore 6.00
 G_M32498_IG21:
        mov      dword ptr [rbp-0x9C], ecx
        mov      rsi, bword ptr [rbp-0x108]
-       mov      edi, dword ptr [rbp-0xC4]
        jmp      SHORT G_M32498_IG17
-						;; size=21 bbWeight=1 PerfScore 5.00
+						;; size=15 bbWeight=1 PerfScore 4.00
 G_M32498_IG22:
        inc      esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], esi
        jle      SHORT G_M32498_IG24
 						;; size=11 bbWeight=0.50 PerfScore 2.62
 G_M32498_IG23:
        mov      rdi, gword ptr [rbp-0x30]
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M32498_IG41
        mov      rdi, gword ptr [rbp-0x30]
        mov      rdi, gword ptr [rdi+8*rsi+0x10]
        cmp      byte  ptr [rdi+0x28], 0
        jne      G_M32498_IG47
        inc      esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], esi
        jg       SHORT G_M32498_IG23
 						;; size=43 bbWeight=4 PerfScore 69.00
 G_M32498_IG24:
        mov      gword ptr [rbp-0xE8], rcx
        mov      rsi, gword ptr [rcx+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      esi, r13d
        mov      rdi, r12
        mov      rdx, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
        call     [rdx]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      r15, gword ptr [rbp-0xE8]
        mov      gword ptr [rbp-0x88], r15
        mov      bword ptr [rbp-0x80], r12
        mov      dword ptr [rbp-0x78], r13d
        lea      rdi, [rbp-0x88]
        mov      rsi, rbx
        mov      rdx, gword ptr [rbp-0xF0]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        cmp      eax, -1
        je       G_M32498_IG46
        lea      rdi, [rbp-0x88]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=115 bbWeight=0.50 PerfScore 11.62
 G_M32498_IG25:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=0.50 PerfScore 2.12
 G_M32498_IG26:
        cmp      dword ptr [rbx+0x08], 0
        jne      SHORT G_M32498_IG27
        mov      rax, 0xD1FFAB1E      ; 'System.Type[]'
 
        jmp      G_M32498_IG38
 						;; size=21 bbWeight=0.50 PerfScore 3.12
 G_M32498_IG27:
        mov      esi, dword ptr [rbx+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Type[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        xor      ecx, ecx
        mov      gword ptr [rbp-0xF8], rax
        mov      edx, dword ptr [rax+0x08]
        mov      dword ptr [rbp-0xD4], edx
        test     edx, edx
        mov      rax, gword ptr [rbp-0xF8]
        jle      G_M32498_IG38
 						;; size=51 bbWeight=0.50 PerfScore 4.88
 G_M32498_IG28:
        cmp      dword ptr [rbx+0x08], edx
        jl       SHORT G_M32498_IG34
 						;; size=5 bbWeight=0.25 PerfScore 1.00
 G_M32498_IG29:
        mov      dword ptr [rbp-0xC0], ecx
        mov      edi, ecx
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        test     rdi, rdi
        jne      SHORT G_M32498_IG31
 						;; size=18 bbWeight=3.96 PerfScore 17.82
 G_M32498_IG30:
        xor      rsi, rsi
        mov      gword ptr [rbp-0x100], rsi
        jmp      SHORT G_M32498_IG32
 						;; size=11 bbWeight=1.98 PerfScore 6.44
 G_M32498_IG31:
        mov      gword ptr [rbp-0xF8], rax
        call     System.Object:GetType():System.Type:this
        mov      gword ptr [rbp-0x100], rax
        mov      rax, gword ptr [rbp-0xF8]
 						;; size=26 bbWeight=1.98 PerfScore 7.92
 G_M32498_IG32:
        movsxd   rsi, dword ptr [rbp-0xC0]
        mov      gword ptr [rbp-0xF8], rax
        mov      rdi, rax
        mov      rdx, gword ptr [rbp-0x100]
        call     CORINFO_HELP_ARRADDR_ST
        mov      ecx, dword ptr [rbp-0xC0]
        inc      ecx
        cmp      dword ptr [rbp-0xD4], ecx
        mov      rax, gword ptr [rbp-0xF8]
        jg       SHORT G_M32498_IG29
 						;; size=52 bbWeight=3.96 PerfScore 45.54
 G_M32498_IG33:
        jmp      G_M32498_IG38
 						;; size=5 bbWeight=1.98 PerfScore 3.96
 G_M32498_IG34:
        cmp      ecx, dword ptr [rbx+0x08]
        jae      G_M32498_IG41
        mov      dword ptr [rbp-0xC0], ecx
        mov      edi, ecx
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        test     rdi, rdi
        jne      SHORT G_M32498_IG36
 						;; size=27 bbWeight=0.04 PerfScore 0.34
 G_M32498_IG35:
        xor      rdi, rdi
        xor      rsi, rsi
        mov      gword ptr [rbp-0x100], rsi
        jmp      SHORT G_M32498_IG37
 						;; size=13 bbWeight=0.02 PerfScore 0.07
 G_M32498_IG36:
        mov      gword ptr [rbp-0xF8], rax
        call     System.Object:GetType():System.Type:this
        mov      gword ptr [rbp-0x100], rax
        mov      rax, gword ptr [rbp-0xF8]
 						;; size=26 bbWeight=0.02 PerfScore 0.08
 G_M32498_IG37:
        movsxd   rsi, dword ptr [rbp-0xC0]
        mov      gword ptr [rbp-0xF8], rax
        mov      rdi, rax
        mov      rdx, gword ptr [rbp-0x100]
        call     CORINFO_HELP_ARRADDR_ST
        mov      r8d, dword ptr [rbp-0xC0]
        inc      r8d
        mov      ecx, dword ptr [rbp-0xD4]
        cmp      ecx, r8d
        mov      rax, gword ptr [rbp-0xF8]
        jg       G_M32498_IG40
 						;; size=61 bbWeight=0.04 PerfScore 0.43
 G_M32498_IG38:
        lea      r8, [rbp-0x98]
        lea      rcx, [rbp-0x90]
        mov      rdi, r15
        mov      rsi, rax
        mov      rdx, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
        mov      rdi, gword ptr [rbp-0x90]
        mov      rsi, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
        mov      r15, rax
        mov      rsi, gword ptr [r15+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      esi, r13d
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
        call     [rax]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      gword ptr [rbp-0x88], r15
        mov      bword ptr [rbp-0x80], r12
        mov      dword ptr [rbp-0x78], r13d
        lea      rdi, [rbp-0x88]
        mov      rsi, gword ptr [rbp-0x98]
        mov      rdx, rbx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
        lea      rdi, [rbp-0x88]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=154 bbWeight=1.98 PerfScore 61.87
 G_M32498_IG39:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1.98 PerfScore 8.42
 G_M32498_IG40:
        mov      ecx, r8d
        jmp      G_M32498_IG34
 						;; size=8 bbWeight=0.02 PerfScore 0.05
 G_M32498_IG41:
        call     CORINFO_HELP_RNGCHKFAIL
 						;; size=5 bbWeight=0 PerfScore 0.00
 G_M32498_IG42:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentNullException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 945
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:.ctor(System.String):this
        call     [rax]System.ArgumentNullException:.ctor(System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
 						;; size=64 bbWeight=0 PerfScore 0.00
 G_M32498_IG43:
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_CannotCreateAbstractClasses():System.String
        call     [rax]System.SR:get_CannotCreateAbstractClasses():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
 						;; size=56 bbWeight=0 PerfScore 0.00
 G_M32498_IG44:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M32498_IG45:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_MultipleCtorsFoundWithBestLength():System.String
        call     [rax]System.SR:get_MultipleCtorsFoundWithBestLength():System.String
        mov      r14, rax
        mov      r13d, dword ptr [rbp-0x9C]
        mov      dword ptr [rbx+0x08], r13d
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdx, rbx
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object,System.Object):System.String
        mov      rsi, rax
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
        call     [rax]System.InvalidOperationException:.ctor(System.String):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
 						;; size=109 bbWeight=0 PerfScore 0.00
 G_M32498_IG46:
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M32498_IG47:
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M32498_IG48:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1870, prolog size 78, PerfScore 612.35, instruction count 406, allocated bytes for code 1873 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
+; Total bytes of code 1838, prolog size 78, PerfScore 607.85, instruction count 402, allocated bytes for code 1845 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
-14 (-5.93 % of base) - System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this
 ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T10] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Runtime.Loader.AssemblyLoadContext>
 ;  V01 arg1         [V01,T07] (  3,  4   )     ref  ->  rbx         class-hnd single-def <System.Reflection.Assembly>
 ;  V02 arg2         [V02,T08] (  3,  4   )     ref  ->  r15         class-hnd single-def <System.String>
 ;  V03 loc0         [V03    ] (  8, 33   )  struct (24) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;* V04 loc1         [V04    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;  V05 loc2         [V05,T09] (  3,  6   )     ref  ->  rax         class-hnd <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;  V06 loc3         [V06,T11] (  3,  4.50)    long  ->  rax        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T12] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;* V09 tmp2         [V09    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;* V10 tmp3         [V10,T06] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V11 tmp4         [V11,T01] (  6, 34   )     int  ->  r14         "Inline stloc first use temp"
 ;  V12 tmp5         [V12,T00] (  5, 84   )     ref  ->  r13         class-hnd "dup spill" <System.MulticastDelegate>
 ;  V13 tmp6         [V13,T04] (  2, 16   )   byref  ->  r12        
 ;* V14 tmp7         [V14    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V15 tmp8         [V15    ] (  0,  0   )   byref  ->  zero-ref   
 ;  V16 tmp9         [V16,T02] (  4, 20   )     ref  ->  rax        
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;* V18 tmp11        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;  V19 tmp12        [V19,T03] (  4, 20   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Object>
 ;  V20 tmp13        [V20,T05] (  4,  8   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object[]>
 ;* V21 tmp14        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V22 tmp15        [V22    ] (  3, 17   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._delegate (fldOffset=0x0)" P-DEP
 ;  V23 tmp16        [V23    ] (  3, 11   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
 ;  V24 tmp17        [V24    ] (  4, 21   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
 ;* V25 tmp18        [V25    ] (  0,  0   )     ref  ->  zero-ref    "field V04._delegate (fldOffset=0x0)" P-INDEP
 ;* V26 tmp19        [V26    ] (  0,  0   )     ref  ->  zero-ref    "field V04._current (fldOffset=0x8)" P-INDEP
 ;* V27 tmp20        [V27    ] (  0,  0   )     int  ->  zero-ref    "field V04._index (fldOffset=0x10)" P-INDEP
 ;  V28 tmp21        [V28,T13] (  2,  2   )     ref  ->  rsi         single-def "field V09._delegate (fldOffset=0x0)" P-INDEP
 ;* V29 tmp22        [V29,T14] (  0,  0   )     ref  ->  zero-ref    single-def "field V09._current (fldOffset=0x8)" P-INDEP
 ;* V30 tmp23        [V30,T15] (  0,  0   )     int  ->  zero-ref    "field V09._index (fldOffset=0x10)" P-INDEP
 ;
 ; Lcl frame size = 24
 
 G_M27358_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        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, rsi
        mov      r15, rdx
 						;; size=41 bbWeight=1 PerfScore 10.83
 G_M27358_IG02:
        mov      rsi, gword ptr [rdi+0x10]
        mov      gword ptr [rbp-0x40], rsi
        xor      rsi, rsi
        mov      gword ptr [rbp-0x38], rsi
        mov      dword ptr [rbp-0x30], -1
        jmp      SHORT G_M27358_IG04
 						;; size=23 bbWeight=1 PerfScore 7.25
 G_M27358_IG03:
        mov      rax, gword ptr [rbp-0x38]
        mov      rsi, rbx
        mov      rdx, r15
        mov      rdi, gword ptr [rax+0x08]
        call     [rax+0x18]System.Func`3[System.__Canon,System.__Canon,long]:Invoke(System.__Canon,System.__Canon):long:this
        test     rax, rax
-       jne      G_M27358_IG15
-						;; size=26 bbWeight=2 PerfScore 15.50
+       jne      SHORT G_M27358_IG15
+						;; size=22 bbWeight=2 PerfScore 15.50
 G_M27358_IG04:
        mov      r14d, dword ptr [rbp-0x30]
        inc      r14d
        mov      r13, gword ptr [rbp-0x40]
        lea      r12, bword ptr [rbp-0x40]
        test     r13, r13
        jne      SHORT G_M27358_IG06
 						;; size=20 bbWeight=8 PerfScore 32.00
 G_M27358_IG05:
        xor      rax, rax
        jmp      SHORT G_M27358_IG11
 						;; size=4 bbWeight=2 PerfScore 4.50
 G_M27358_IG06:
        mov      rsi, gword ptr [r13+0x28]
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFARRAY
-       call     [rax]CORINFO_HELP_ISINSTANCEOFARRAY
+       call     CORINFO_HELP_ISINSTANCEOFARRAY
        test     rax, rax
        jne      SHORT G_M27358_IG09
        test     r14d, r14d
        je       SHORT G_M27358_IG08
-						;; size=36 bbWeight=2 PerfScore 16.00
+						;; size=29 bbWeight=2 PerfScore 11.50
 G_M27358_IG07:
        xor      rax, rax
        jmp      SHORT G_M27358_IG11
 						;; size=4 bbWeight=8 PerfScore 18.00
 G_M27358_IG08:
        mov      rax, r13
        jmp      SHORT G_M27358_IG11
 						;; size=5 bbWeight=8 PerfScore 18.00
 G_M27358_IG09:
        cmp      r14d, dword ptr [r13+0x30]
        jae      SHORT G_M27358_IG07
 						;; size=6 bbWeight=16 PerfScore 64.00
 G_M27358_IG10:
        cmp      r14d, dword ptr [rax+0x08]
        jae      SHORT G_M27358_IG16
        mov      esi, r14d
        mov      rax, gword ptr [rax+8*rsi+0x10]
 						;; size=14 bbWeight=2 PerfScore 12.50
 G_M27358_IG11:
        mov      gword ptr [r12+0x08], rax
        test     rax, rax
        je       SHORT G_M27358_IG13
 						;; size=10 bbWeight=8 PerfScore 18.00
 G_M27358_IG12:
        mov      dword ptr [rbp-0x30], r14d
-       jmp      G_M27358_IG03
-						;; size=9 bbWeight=4 PerfScore 12.00
+       jmp      SHORT G_M27358_IG03
+						;; size=6 bbWeight=4 PerfScore 12.00
 G_M27358_IG13:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M27358_IG14:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M27358_IG15:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M27358_IG16:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 236, prolog size 35, PerfScore 232.96, instruction count 77, allocated bytes for code 236 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
+; Total bytes of code 222, prolog size 35, PerfScore 228.46, instruction count 76, allocated bytes for code 222 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
-11 (-1.25 % of base) - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this
 ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly: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; 15 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T05] (  8, 13   )     ref  ->  [rbp-0x78]  this class-hnd single-def <System.Runtime.Loader.AssemblyLoadContext>
 ;  V01 arg1         [V01,T11] (  4,  6   )     ref  ->  [rbp-0x80]  class-hnd single-def <System.Reflection.AssemblyName>
 ;  V02 loc0         [V02    ] (  8, 33   )  struct (24) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]]>
 ;* V03 loc1         [V03    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]]>
 ;  V04 loc2         [V04,T12] (  4,  8   )     ref  ->  r13         class-hnd <System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]>
 ;  V05 loc3         [V05,T06] (  8, 14.50)     ref  ->  [rbp-0x88]  class-hnd <System.Reflection.Assembly>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T07] (  3, 12   )     ref  ->  [rbp-0x90]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
 ;  V08 tmp2         [V08,T08] (  3, 12   )     ref  ->  r13         class-hnd exact "impAppendStmt" <System.String>
 ;* V09 tmp3         [V09    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V10 tmp4         [V10    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V11 tmp5         [V11    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V13 tmp7         [V13,T13] (  4,  8   )     ref  ->  [rbp-0x98] 
 ;* V14 tmp8         [V14    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V15 tmp9         [V15    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V16 tmp10        [V16    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V17 tmp11        [V17    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V18 tmp12        [V18    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V19 tmp13        [V19    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V20 tmp14        [V20,T14] (  4,  8   )     ref  ->  [rbp-0xA0] 
 ;* V21 tmp15        [V21    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V22 tmp16        [V22    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V23 tmp17        [V23    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V24 tmp18        [V24    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V25 tmp19        [V25    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V26 tmp20        [V26    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V27 tmp21        [V27    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V28 tmp22        [V28    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V29 tmp23        [V29,T15] (  3,  6   )     ref  ->  rax        
 ;  V30 tmp24        [V30,T31] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]>
 ;* V31 tmp25        [V31    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]]>
 ;* V32 tmp26        [V32    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp27        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V34 tmp28        [V34    ] (  2,  4   )   byref  ->  [rbp-0x48]  must-init pinned "Inline stloc first use temp"
 ;* V35 tmp29        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V36 tmp30        [V36    ] (  2,  4   )   byref  ->  [rbp-0x50]  must-init pinned "Inline stloc first use temp"
 ;* V37 tmp31        [V37    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V38 tmp32        [V38    ] (  2,  4   )   byref  ->  [rbp-0x58]  must-init pinned "Inline stloc first use temp"
 ;* V39 tmp33        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V40 tmp34        [V40    ] (  2,  4   )   byref  ->  [rbp-0x60]  must-init pinned "Inline stloc first use temp"
 ;* V41 tmp35        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V42 tmp36        [V42    ] (  2,  4   )   byref  ->  [rbp-0x68]  must-init pinned "Inline stloc first use temp"
 ;* V43 tmp37        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V44 tmp38        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V45 tmp39        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V46 tmp40        [V46,T16] (  4,  8   )   byref  ->   r8         "Inline return value spill temp"
 ;  V47 tmp41        [V47,T17] (  4,  8   )   byref  ->  rcx         "Inline return value spill temp"
 ;  V48 tmp42        [V48,T18] (  4,  8   )   byref  ->  rdx         "Inline return value spill temp"
 ;  V49 tmp43        [V49,T19] (  4,  8   )   byref  ->  rsi         "Inline return value spill temp"
 ;  V50 tmp44        [V50,T20] (  4,  8   )   byref  ->  r13         "Inline return value spill temp"
 ;* V51 tmp45        [V51    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V52 tmp46        [V52,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V53 tmp47        [V53,T01] (  6, 34   )     int  ->  r13         "Inline stloc first use temp"
 ;  V54 tmp48        [V54,T00] (  5, 84   )     ref  ->  r12         class-hnd "dup spill" <System.MulticastDelegate>
 ;  V55 tmp49        [V55,T04] (  2, 16   )   byref  ->  [rbp-0xA8]  spill-single-def
 ;* V56 tmp50        [V56    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V57 tmp51        [V57    ] (  0,  0   )   byref  ->  zero-ref   
 ;  V58 tmp52        [V58,T02] (  4, 20   )     ref  ->  rcx        
 ;* V59 tmp53        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]>
 ;* V60 tmp54        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Func`3[System.Runtime.Loader.AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly]>
 ;  V61 tmp55        [V61,T03] (  4, 20   )     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Object>
 ;  V62 tmp56        [V62,T21] (  4,  8   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object[]>
 ;* V63 tmp57        [V63    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V64 tmp58        [V64,T30] (  3,  4   )     ref  ->  rax         "Single return block return value"
 ;  V65 FramesRoot   [V65,T10] (  6, 10   )    long  ->  r14         "Pinvoke FrameListRoot"
 ;  V66 PInvokeFrame [V66    ] (  8, 12   )  struct (72) [rbp-0xF0]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
 ;  V67 tmp61        [V67    ] (  3, 17   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V02._delegate (fldOffset=0x0)" P-DEP
 ;  V68 tmp62        [V68    ] (  3, 11   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V02._current (fldOffset=0x8)" P-DEP
 ;  V69 tmp63        [V69    ] (  4, 21   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP
 ;* V70 tmp64        [V70    ] (  0,  0   )     ref  ->  zero-ref    "field V03._delegate (fldOffset=0x0)" P-INDEP
 ;* V71 tmp65        [V71    ] (  0,  0   )     ref  ->  zero-ref    "field V03._current (fldOffset=0x8)" P-INDEP
 ;* V72 tmp66        [V72    ] (  0,  0   )     int  ->  zero-ref    "field V03._index (fldOffset=0x10)" P-INDEP
 ;  V73 tmp67        [V73,T32] (  2,  2   )     ref  ->  rsi         single-def "field V31._delegate (fldOffset=0x0)" P-INDEP
 ;* V74 tmp68        [V74,T33] (  0,  0   )     ref  ->  zero-ref    single-def "field V31._current (fldOffset=0x8)" P-INDEP
 ;* V75 tmp69        [V75,T34] (  0,  0   )     int  ->  zero-ref    "field V31._index (fldOffset=0x10)" P-INDEP
 ;  V76 tmp70        [V76,T09] (  3, 12   )     ref  ->  rax         "argument with side effect"
 ;  V77 tmp71        [V77,T24] (  2,  8   )    long  ->   r8         "Cast away GC"
 ;  V78 tmp72        [V78,T25] (  2,  8   )    long  ->  rcx         "Cast away GC"
 ;  V79 tmp73        [V79,T26] (  2,  8   )    long  ->  rdx         "Cast away GC"
 ;  V80 tmp74        [V80,T27] (  2,  8   )    long  ->  rsi         "Cast away GC"
 ;  V81 tmp75        [V81,T28] (  2,  8   )    long  ->  rdi         "Cast away GC"
 ;  V82 tmp76        [V82,T29] (  2,  8   )    long  ->  rdi         "argument with side effect"
 ;  V83 cse0         [V83,T22] (  4,  8   )    long  ->  [rbp-0x70]  spill-single-def "CSE #02: moderate"
 ;
 ; Lcl frame size = 200
 
 G_M53640_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 200
        vzeroupper 
        lea      rbp, [rsp+0xF0]
        xor      ecx, ecx
        mov      qword ptr [rbp-0x68], rcx
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0x30], rcx
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=59 bbWeight=1 PerfScore 14.83
 G_M53640_IG02:
        lea      rdi, [rbp-0xE8]
        mov      rsi, r10
        call     CORINFO_HELP_INIT_PINVOKE_FRAME
        mov      r14, rax
        mov      rsi, rsp
        mov      qword ptr [rbp-0xC8], rsi
        mov      rsi, rbp
        mov      qword ptr [rbp-0xB8], rsi
        mov      rsi, gword ptr [rbx+0x18]
        mov      gword ptr [rbp-0x40], rsi
        xor      rsi, rsi
        mov      gword ptr [rbp-0x38], rsi
        mov      dword ptr [rbp-0x30], -1
        jmp      G_M53640_IG29
 						;; size=64 bbWeight=1 PerfScore 11.75
 G_M53640_IG03:
        mov      r13, gword ptr [rbp-0x38]
        mov      rsi, rbx
        mov      rdx, r15
        mov      rdi, gword ptr [r13+0x08]
        call     [r13+0x18]System.Func`3[System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon):System.__Canon:this
        mov      r12, rax
        call     System.Runtime.Loader.AssemblyLoadContext:IsTracingEnabled():ubyte
        test     eax, eax
        je       G_M53640_IG28
        mov      gword ptr [rbp-0x80], r15
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Reflection.AssemblyName:get_FullName():System.String:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Reflection.AssemblyName:get_FullName():System.String:this
        mov      gword ptr [rbp-0x90], rax
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
        mov      r13, rax
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M53640_IG42
 						;; size=114 bbWeight=2 PerfScore 71.50
 G_M53640_IG04:
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.Loader.DefaultAssemblyLoadContext:s_loadContext
        cmp      rbx, gword ptr [rdi]
        jne      SHORT G_M53640_IG05
        mov      rax, gword ptr [rbx+0x28]
        mov      rdx, rax
        jmp      SHORT G_M53640_IG06
 						;; size=24 bbWeight=2 PerfScore 17.00
 G_M53640_IG05:
        mov      rdi, rbx
        mov      gword ptr [rbp-0x78], rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x08]System.Object:ToString():System.String:this
        mov      gword ptr [rbp-0x98], rax
        mov      rdx, gword ptr [rbp-0x98]
        mov      rbx, gword ptr [rbp-0x78]
 						;; size=35 bbWeight=2 PerfScore 22.50
 G_M53640_IG06:
        test     r12, r12
        jne      SHORT G_M53640_IG07
        xor      rax, rax
        xor      rcx, rcx
        jmp      SHORT G_M53640_IG10
 						;; size=11 bbWeight=2 PerfScore 7.50
 G_M53640_IG07:
        mov      gword ptr [rbp-0x98], rdx
        mov      rdi, r12
        mov      rax, qword ptr [r12]
        mov      rax, qword ptr [rax+0x48]
        mov      qword ptr [rbp-0x70], rax
        call     [rax+0x18]System.Reflection.Assembly:get_FullName():System.String:this
        mov      gword ptr [rbp-0xA0], rax
        mov      rdi, r12
        mov      rax, qword ptr [rbp-0x70]
        call     [rax+0x28]System.Reflection.Assembly:get_IsDynamic():ubyte:this
        test     eax, eax
        jne      SHORT G_M53640_IG09
        mov      gword ptr [rbp-0x88], r12
        mov      rdi, r12
        mov      rax, qword ptr [rbp-0x70]
        call     [rax+0x30]System.Reflection.Assembly:get_Location():System.String:this
        test     rax, rax
        je       SHORT G_M53640_IG08
        add      rax, 12
        mov      r8, rax
        jmp      SHORT G_M53640_IG11
 						;; size=77 bbWeight=2 PerfScore 49.50
 G_M53640_IG08:
        mov      rcx, gword ptr [rbp-0xA0]
        mov      rdx, gword ptr [rbp-0x98]
        mov      r12, gword ptr [rbp-0x88]
        jmp      SHORT G_M53640_IG10
 						;; size=23 bbWeight=1 PerfScore 5.00
 G_M53640_IG09:
        mov      rcx, gword ptr [rbp-0xA0]
        mov      rdx, gword ptr [rbp-0x98]
 						;; size=14 bbWeight=1 PerfScore 2.00
 G_M53640_IG10:
        xor      r8d, r8d
        mov      gword ptr [rbp-0x88], r12
        mov      gword ptr [rbp-0x98], rdx
        mov      gword ptr [rbp-0xA0], rcx
 						;; size=24 bbWeight=2 PerfScore 6.50
 G_M53640_IG11:
        mov      bword ptr [rbp-0x48], r8
        mov      rcx, gword ptr [rbp-0xA0]
        test     rcx, rcx
        je       SHORT G_M53640_IG12
        add      rcx, 12
        jmp      SHORT G_M53640_IG13
 						;; size=22 bbWeight=2 PerfScore 11.00
 G_M53640_IG12:
        xor      ecx, ecx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M53640_IG13:
        mov      bword ptr [rbp-0x50], rcx
        mov      rdx, gword ptr [rbp-0x98]
        test     rdx, rdx
        je       SHORT G_M53640_IG14
        add      rdx, 12
        jmp      SHORT G_M53640_IG15
 						;; size=22 bbWeight=2 PerfScore 11.00
 G_M53640_IG14:
        xor      edx, edx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M53640_IG15:
        mov      bword ptr [rbp-0x58], rdx
        test     r13, r13
        je       SHORT G_M53640_IG16
        add      r13, 12
        mov      rsi, r13
        jmp      SHORT G_M53640_IG17
 						;; size=18 bbWeight=2 PerfScore 9.50
 G_M53640_IG16:
        xor      esi, esi
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M53640_IG17:
        mov      bword ptr [rbp-0x60], rsi
        mov      r13, gword ptr [rbp-0x90]
        test     r13, r13
        je       SHORT G_M53640_IG18
        add      r13, 12
        mov      gword ptr [rbp-0x78], rbx
        jmp      SHORT G_M53640_IG19
 						;; size=26 bbWeight=2 PerfScore 13.00
 G_M53640_IG18:
        xor      r13d, r13d
        mov      gword ptr [rbp-0x78], rbx
 						;; size=7 bbWeight=2 PerfScore 2.50
 G_M53640_IG19:
        mov      bword ptr [rbp-0x68], r13
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; function address
        mov      qword ptr [rbp-0xD8], rax
        lea      rax, G_M53640_IG22
        mov      qword ptr [rbp-0xC0], rax
        lea      rax, bword ptr [rbp-0xE8]
        mov      qword ptr [r14+0x10], rax
        mov      byte  ptr [r14+0x0C], 0
 						;; size=54 bbWeight=2 PerfScore 14.00
 G_M53640_IG20:
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Loader.AssemblyLoadContext:<TraceResolvingHandlerInvoked>g____PInvoke|9_0(ulong,ulong,ulong,ulong,ulong):int
 						;; size=10 bbWeight=2 PerfScore 0.50
 G_M53640_IG21:
        call     [rax]System.Runtime.Loader.AssemblyLoadContext:<TraceResolvingHandlerInvoked>g____PInvoke|9_0(ulong,ulong,ulong,ulong,ulong):int
 						;; size=2 bbWeight=2 PerfScore 6.00
 G_M53640_IG22:
        mov      byte  ptr [r14+0x0C], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M53640_IG23
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=32 bbWeight=2 PerfScore 17.00
 G_M53640_IG23:
        mov      rax, bword ptr [rbp-0xE0]
        mov      qword ptr [r14+0x10], rax
        xor      eax, eax
        mov      bword ptr [rbp-0x68], rax
 						;; size=17 bbWeight=2 PerfScore 6.50
 G_M53640_IG24:
        mov      bword ptr [rbp-0x60], rax
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M53640_IG25:
        mov      bword ptr [rbp-0x58], rax
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M53640_IG26:
        mov      bword ptr [rbp-0x50], rax
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M53640_IG27:
        mov      bword ptr [rbp-0x48], rax
        mov      rbx, gword ptr [rbp-0x78]
        mov      r12, gword ptr [rbp-0x88]
        mov      r15, gword ptr [rbp-0x80]
 						;; size=19 bbWeight=2 PerfScore 8.00
 G_M53640_IG28:
        test     r12, r12
-       jne      G_M53640_IG39
-						;; size=9 bbWeight=2 PerfScore 2.50
+       jne      SHORT G_M53640_IG39
+						;; size=5 bbWeight=2 PerfScore 2.50
 G_M53640_IG29:
        mov      r13d, dword ptr [rbp-0x30]
        inc      r13d
        mov      r12, gword ptr [rbp-0x40]
        lea      rax, bword ptr [rbp-0x40]
        mov      bword ptr [rbp-0xA8], rax
        test     r12, r12
        jne      SHORT G_M53640_IG31
 						;; size=27 bbWeight=8 PerfScore 40.00
 G_M53640_IG30:
        xor      rcx, rcx
        jmp      SHORT G_M53640_IG36
 						;; size=4 bbWeight=2 PerfScore 4.50
 G_M53640_IG31:
        mov      rsi, gword ptr [r12+0x28]
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
-       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFARRAY
-       call     [rcx]CORINFO_HELP_ISINSTANCEOFARRAY
+       call     CORINFO_HELP_ISINSTANCEOFARRAY
        test     rax, rax
        jne      SHORT G_M53640_IG34
        test     r13d, r13d
        je       SHORT G_M53640_IG33
-						;; size=37 bbWeight=2 PerfScore 16.00
+						;; size=30 bbWeight=2 PerfScore 11.50
 G_M53640_IG32:
        xor      rcx, rcx
        jmp      SHORT G_M53640_IG36
 						;; size=4 bbWeight=8 PerfScore 18.00
 G_M53640_IG33:
        mov      rcx, r12
        jmp      SHORT G_M53640_IG36
 						;; size=5 bbWeight=8 PerfScore 18.00
 G_M53640_IG34:
        cmp      r13d, dword ptr [r12+0x30]
        jae      SHORT G_M53640_IG32
 						;; size=7 bbWeight=16 PerfScore 64.00
 G_M53640_IG35:
        cmp      r13d, dword ptr [rax+0x08]
        jae      SHORT G_M53640_IG41
        mov      ecx, r13d
        mov      rcx, gword ptr [rax+8*rcx+0x10]
 						;; size=14 bbWeight=2 PerfScore 12.50
 G_M53640_IG36:
        mov      rax, bword ptr [rbp-0xA8]
        mov      gword ptr [rax+0x08], rcx
        test     rcx, rcx
        je       SHORT G_M53640_IG38
 						;; size=16 bbWeight=8 PerfScore 26.00
 G_M53640_IG37:
        mov      dword ptr [rbp-0x30], r13d
        jmp      G_M53640_IG03
 						;; size=9 bbWeight=4 PerfScore 12.00
 G_M53640_IG38:
        xor      rax, rax
        jmp      SHORT G_M53640_IG40
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M53640_IG39:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M53640_IG40:
        add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M53640_IG41:
        call     CORINFO_HELP_RNGCHKFAIL
 						;; size=5 bbWeight=0 PerfScore 0.00
 G_M53640_IG42:
        mov      rdi, 0xD1FFAB1E
        mov      esi, 0x4F7
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
        jmp      G_M53640_IG04
 						;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 879, prolog size 53, PerfScore 533.58, instruction count 217, allocated bytes for code 879 (MethodHash=69bc2e77) for method System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
+; Total bytes of code 868, prolog size 53, PerfScore 529.08, instruction count 216, allocated bytes for code 868 (MethodHash=69bc2e77) for method System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
-7 (-0.79 % of base) - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly
 ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (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; 15 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T07] (  6,  7.50)     ref  ->  [rbp-0x70]  class-hnd single-def <System.ResolveEventHandler>
 ;  V01 arg1         [V01,T29] (  3,  2.50)     ref  ->  r14         class-hnd single-def <System.Reflection.RuntimeAssembly>
 ;  V02 arg2         [V02,T09] (  5,  6.50)     ref  ->  [rbp-0x78]  class-hnd single-def <System.String>
 ;  V03 loc0         [V03,T33] (  2,  2.50)     ref  ->  [rbp-0x80]  class-hnd exact single-def <System.ResolveEventArgs>
 ;  V04 loc1         [V04    ] (  8, 19.50)  struct (24) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
 ;  V06 loc3         [V06,T10] (  4,  8   )     ref  ->  r14         class-hnd exact <System.ResolveEventHandler>
 ;  V07 loc4         [V07,T04] (  7, 14   )     ref  ->  [rbp-0x88]  class-hnd spill-single-def <System.Reflection.Assembly>
 ;  V08 loc5         [V08,T30] (  3,  4.50)     ref  ->  rax         class-hnd exact <System.Reflection.RuntimeAssembly>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V10 tmp1         [V10,T31] (  4,  4   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.ResolveEventArgs>
 ;* V11 tmp2         [V11    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V12 tmp3         [V12,T27] (  3,  6   )     ref  ->  r14        
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V14 tmp5         [V14    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V15 tmp6         [V15,T11] (  4,  8   )     ref  ->  [rbp-0x90] 
 ;* V16 tmp7         [V16    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V19 tmp10        [V19    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V22 tmp13        [V22,T12] (  3,  6   )     ref  ->  rax        
 ;* V23 tmp14        [V23    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
 ;  V24 tmp15        [V24,T28] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V25 tmp16        [V25,T03] (  4, 16   )     ref  ->  rdi         class-hnd exact "Inlining Arg" <System.ResolveEventHandler>
 ;* V26 tmp17        [V26    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V27 tmp18        [V27    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V28 tmp19        [V28    ] (  2,  4   )   byref  ->  [rbp-0x48]  must-init pinned "Inline stloc first use temp"
 ;* V29 tmp20        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V30 tmp21        [V30    ] (  2,  4   )   byref  ->  [rbp-0x50]  must-init pinned "Inline stloc first use temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V32 tmp23        [V32    ] (  2,  4   )   byref  ->  [rbp-0x58]  must-init pinned "Inline stloc first use temp"
 ;* V33 tmp24        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V34 tmp25        [V34    ] (  2,  4   )   byref  ->  [rbp-0x60]  must-init pinned "Inline stloc first use temp"
 ;* V35 tmp26        [V35    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V37 tmp28        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V38 tmp29        [V38,T13] (  4,  8   )   byref  ->  rcx         "Inline return value spill temp"
 ;  V39 tmp30        [V39,T14] (  4,  8   )   byref  ->  rdx         "Inline return value spill temp"
 ;  V40 tmp31        [V40,T15] (  4,  8   )   byref  ->  rsi         "Inline return value spill temp"
 ;  V41 tmp32        [V41,T16] (  4,  8   )   byref  ->  rdi         "Inline return value spill temp"
 ;* V42 tmp33        [V42    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V43 tmp34        [V43,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp35        [V44,T01] (  6, 30   )     int  ->  r14         "Inline stloc first use temp"
 ;  V45 tmp36        [V45,T00] (  5, 68   )     ref  ->  [rbp-0x98]  class-hnd spill-single-def "dup spill" <System.MulticastDelegate>
 ;  V46 tmp37        [V46,T19] (  2,  8   )   byref  ->  [rbp-0xA0]  spill-single-def
 ;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V48 tmp39        [V48    ] (  0,  0   )   byref  ->  zero-ref   
 ;  V49 tmp40        [V49,T05] (  4, 12   )     ref  ->  rdx        
 ;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.ResolveEventHandler>
 ;* V51 tmp42        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.ResolveEventHandler>
 ;  V52 tmp43        [V52,T02] (  4, 20   )     ref  ->  rdx         class-hnd "Inline return value spill temp" <System.Object>
 ;  V53 tmp44        [V53,T17] (  4,  8   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object[]>
 ;* V54 tmp45        [V54    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V55 tmp46        [V55,T32] (  3,  4   )     ref  ->  rax         "Single return block return value"
 ;  V56 FramesRoot   [V56,T08] (  6, 10   )    long  ->  r13         "Pinvoke FrameListRoot"
 ;  V57 PInvokeFrame [V57    ] (  8, 12   )  struct (72) [rbp-0xE8]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
 ;  V58 tmp49        [V58    ] (  3,  8.50)     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V04._delegate (fldOffset=0x0)" P-DEP
 ;  V59 tmp50        [V59    ] (  3,  6.50)     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V04._current (fldOffset=0x8)" P-DEP
 ;  V60 tmp51        [V60    ] (  4, 12.50)     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V04._index (fldOffset=0x10)" P-DEP
 ;* V61 tmp52        [V61    ] (  0,  0   )     ref  ->  zero-ref    "field V05._delegate (fldOffset=0x0)" P-INDEP
 ;* V62 tmp53        [V62    ] (  0,  0   )     ref  ->  zero-ref    "field V05._current (fldOffset=0x8)" P-INDEP
 ;* V63 tmp54        [V63    ] (  0,  0   )     int  ->  zero-ref    "field V05._index (fldOffset=0x10)" P-INDEP
 ;* V64 tmp55        [V64,T34] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._delegate (fldOffset=0x0)" P-INDEP
 ;* V65 tmp56        [V65,T35] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._current (fldOffset=0x8)" P-INDEP
 ;* V66 tmp57        [V66,T36] (  0,  0   )     int  ->  zero-ref    "field V23._index (fldOffset=0x10)" P-INDEP
 ;  V67 tmp58        [V67,T20] (  2,  8   )     ref  ->  rsi         "argument with side effect"
 ;  V68 tmp59        [V68,T06] (  3, 12   )     ref  ->  rax         "argument with side effect"
 ;  V69 tmp60        [V69,T22] (  2,  8   )    long  ->  rcx         "Cast away GC"
 ;  V70 tmp61        [V70,T23] (  2,  8   )    long  ->  rdx         "Cast away GC"
 ;  V71 tmp62        [V71,T24] (  2,  8   )    long  ->  rsi         "Cast away GC"
 ;  V72 tmp63        [V72,T25] (  2,  8   )    long  ->  rdi         "Cast away GC"
 ;  V73 tmp64        [V73,T26] (  2,  8   )    long  ->  rdi         "argument with side effect"
 ;  V74 cse0         [V74,T18] (  4,  8   )    long  ->  [rbp-0x68]  spill-single-def "CSE #02: moderate"
 ;
 ; Lcl frame size = 200
 
 G_M55783_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 200
        vzeroupper 
        lea      rbp, [rsp+0xF0]
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        xor      ecx, ecx
        mov      qword ptr [rbp-0x30], rcx
        mov      rbx, rdi
        mov      r14, rsi
        mov      r15, rdx
 						;; size=58 bbWeight=1 PerfScore 14.08
 G_M55783_IG02:
        lea      rdi, [rbp-0xE0]
        mov      rsi, r10
        call     CORINFO_HELP_INIT_PINVOKE_FRAME
        mov      r13, rax
        mov      rdi, rsp
        mov      qword ptr [rbp-0xC0], rdi
        mov      rdi, rbp
        mov      qword ptr [rbp-0xB0], rdi
        test     rbx, rbx
        jne      SHORT G_M55783_IG04
 						;; size=43 bbWeight=1 PerfScore 5.75
 G_M55783_IG03:
        xor      rax, rax
        jmp      G_M55783_IG37
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M55783_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.ResolveEventArgs
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      gword ptr [rbp-0x40], rbx
        xor      rsi, rsi
        mov      gword ptr [rbp-0x38], rsi
        mov      dword ptr [rbp-0x30], -1
        jmp      G_M55783_IG29
 						;; size=66 bbWeight=0.50 PerfScore 5.12
 G_M55783_IG05:
        mov      r14, gword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.AppDomain:get_CurrentDomain():System.AppDomain
        call     [rax]System.AppDomain:get_CurrentDomain():System.AppDomain
        mov      rsi, rax
        mov      gword ptr [rbp-0x80], r12
        mov      rdx, r12
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.ResolveEventHandler:Invoke(System.Object,System.ResolveEventArgs):System.Reflection.Assembly:this
        mov      gword ptr [rbp-0x88], rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.Loader.AssemblyLoadContext:AssemblyResolve
        mov      rdi, gword ptr [rdi]
        test     rdi, rdi
        je       SHORT G_M55783_IG09
        cmp      rdi, rbx
        je       SHORT G_M55783_IG06
        mov      gword ptr [rbp-0x70], rbx
        mov      rsi, rbx
        mov      rcx, 0xD1FFAB1E      ; code for System.MulticastDelegate:Equals(System.Object):ubyte:this
        call     [rcx]System.MulticastDelegate:Equals(System.Object):ubyte:this
        test     eax, eax
        mov      rbx, gword ptr [rbp-0x70]
        je       SHORT G_M55783_IG08
 						;; size=91 bbWeight=2 PerfScore 46.50
 G_M55783_IG06:
        call     System.Runtime.Loader.AssemblyLoadContext:IsTracingEnabled():ubyte
        test     eax, eax
        je       SHORT G_M55783_IG07
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
        mov      r14, rax
        mov      rax, gword ptr [rbp-0x88]
        test     rax, rax
        jne      SHORT G_M55783_IG10
        xor      rcx, rcx
        xor      rdx, rdx
        jmp      G_M55783_IG13
 						;; size=63 bbWeight=2 PerfScore 42.00
 G_M55783_IG07:
        mov      rax, gword ptr [rbp-0x88]
        jmp      G_M55783_IG28
 						;; size=12 bbWeight=1 PerfScore 3.00
 G_M55783_IG08:
        mov      rax, gword ptr [rbp-0x88]
        jmp      G_M55783_IG28
 						;; size=12 bbWeight=1 PerfScore 3.00
 G_M55783_IG09:
        mov      rax, gword ptr [rbp-0x88]
        jmp      G_M55783_IG28
 						;; size=12 bbWeight=1 PerfScore 3.00
 G_M55783_IG10:
        mov      rdi, rax
        mov      rcx, qword ptr [rax]
        mov      rcx, qword ptr [rcx+0x48]
        mov      qword ptr [rbp-0x68], rcx
        call     [rcx+0x18]System.Reflection.Assembly:get_FullName():System.String:this
        mov      gword ptr [rbp-0x90], rax
        mov      rdi, gword ptr [rbp-0x88]
        mov      rax, qword ptr [rbp-0x68]
        call     [rax+0x28]System.Reflection.Assembly:get_IsDynamic():ubyte:this
        test     eax, eax
        jne      SHORT G_M55783_IG12
        mov      rdi, gword ptr [rbp-0x88]
        mov      rax, qword ptr [rbp-0x68]
        call     [rax+0x30]System.Reflection.Assembly:get_Location():System.String:this
        test     rax, rax
        je       SHORT G_M55783_IG11
        add      rax, 12
        mov      rcx, rax
        mov      rax, gword ptr [rbp-0x88]
        jmp      SHORT G_M55783_IG14
 						;; size=77 bbWeight=2 PerfScore 50.50
 G_M55783_IG11:
        mov      rax, gword ptr [rbp-0x88]
        mov      rdx, gword ptr [rbp-0x90]
        jmp      SHORT G_M55783_IG13
 						;; size=16 bbWeight=1 PerfScore 4.00
 G_M55783_IG12:
        mov      rax, gword ptr [rbp-0x88]
        mov      rdx, gword ptr [rbp-0x90]
 						;; size=14 bbWeight=1 PerfScore 2.00
 G_M55783_IG13:
        xor      ecx, ecx
        mov      gword ptr [rbp-0x90], rdx
 						;; size=9 bbWeight=2 PerfScore 2.50
 G_M55783_IG14:
        mov      bword ptr [rbp-0x48], rcx
        mov      rdx, gword ptr [rbp-0x90]
        test     rdx, rdx
        je       SHORT G_M55783_IG15
        add      rdx, 12
        jmp      SHORT G_M55783_IG16
 						;; size=22 bbWeight=2 PerfScore 11.00
 G_M55783_IG15:
        xor      edx, edx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M55783_IG16:
        mov      bword ptr [rbp-0x50], rdx
        test     r14, r14
        je       SHORT G_M55783_IG17
        add      r14, 12
        mov      rsi, r14
        jmp      SHORT G_M55783_IG18
 						;; size=18 bbWeight=2 PerfScore 9.50
 G_M55783_IG17:
        xor      esi, esi
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M55783_IG18:
        mov      bword ptr [rbp-0x58], rsi
        test     r15, r15
        je       SHORT G_M55783_IG19
        mov      gword ptr [rbp-0x78], r15
        lea      rdi, bword ptr [r15+0x0C]
        mov      gword ptr [rbp-0x70], rbx
        jmp      SHORT G_M55783_IG20
 						;; size=23 bbWeight=2 PerfScore 13.50
 G_M55783_IG19:
        xor      edi, edi
        mov      gword ptr [rbp-0x70], rbx
        mov      gword ptr [rbp-0x78], r15
 						;; size=10 bbWeight=2 PerfScore 4.50
 G_M55783_IG20:
        mov      bword ptr [rbp-0x60], rdi
        mov      r8, 0xD1FFAB1E      ; function address
        mov      qword ptr [rbp-0xD0], r8
        lea      r8, G_M55783_IG23
        mov      qword ptr [rbp-0xB8], r8
        lea      r8, bword ptr [rbp-0xE0]
        mov      qword ptr [r13+0x10], r8
        mov      byte  ptr [r13+0x0C], 0
 						;; size=51 bbWeight=2 PerfScore 13.50
 G_M55783_IG21:
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Loader.AssemblyLoadContext:<TraceAssemblyResolveHandlerInvoked>g____PInvoke|10_0(ulong,ulong,ulong,ulong):int
 						;; size=10 bbWeight=2 PerfScore 0.50
 G_M55783_IG22:
        call     [rax]System.Runtime.Loader.AssemblyLoadContext:<TraceAssemblyResolveHandlerInvoked>g____PInvoke|10_0(ulong,ulong,ulong,ulong):int
 						;; size=2 bbWeight=2 PerfScore 6.00
 G_M55783_IG23:
        mov      byte  ptr [r13+0x0C], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M55783_IG24
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=32 bbWeight=2 PerfScore 17.00
 G_M55783_IG24:
        mov      rdi, bword ptr [rbp-0xD8]
        mov      qword ptr [r13+0x10], rdi
        xor      edi, edi
        mov      bword ptr [rbp-0x60], rdi
 						;; size=17 bbWeight=2 PerfScore 6.50
 G_M55783_IG25:
        mov      bword ptr [rbp-0x58], rdi
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M55783_IG26:
        mov      bword ptr [rbp-0x50], rdi
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M55783_IG27:
        mov      bword ptr [rbp-0x48], rdi
        mov      rax, gword ptr [rbp-0x88]
        mov      rbx, gword ptr [rbp-0x70]
        mov      r15, gword ptr [rbp-0x78]
 						;; size=19 bbWeight=2 PerfScore 8.00
 G_M55783_IG28:
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly
        call     [rax]System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly
        test     rax, rax
        mov      r12, gword ptr [rbp-0x80]
        jne      G_M55783_IG37
 						;; size=28 bbWeight=2 PerfScore 11.50
 G_M55783_IG29:
        mov      r14d, dword ptr [rbp-0x30]
        inc      r14d
        mov      rax, gword ptr [rbp-0x40]
        mov      gword ptr [rbp-0x98], rax
        lea      rcx, bword ptr [rbp-0x40]
        mov      bword ptr [rbp-0xA0], rcx
        test     rax, rax
        jne      SHORT G_M55783_IG31
 						;; size=34 bbWeight=4 PerfScore 24.00
 G_M55783_IG30:
        xor      rdx, rdx
        jmp      SHORT G_M55783_IG36
 						;; size=4 bbWeight=2 PerfScore 4.50
 G_M55783_IG31:
        mov      rsi, gword ptr [rax+0x28]
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
-       mov      rdx, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFARRAY
-       call     [rdx]CORINFO_HELP_ISINSTANCEOFARRAY
+       call     CORINFO_HELP_ISINSTANCEOFARRAY
        test     rax, rax
        jne      SHORT G_M55783_IG34
        test     r14d, r14d
        je       SHORT G_M55783_IG33
-						;; size=36 bbWeight=2 PerfScore 16.00
+						;; size=29 bbWeight=2 PerfScore 11.50
 G_M55783_IG32:
        xor      rdx, rdx
        jmp      SHORT G_M55783_IG36
 						;; size=4 bbWeight=8 PerfScore 18.00
 G_M55783_IG33:
        mov      rdx, gword ptr [rbp-0x98]
        jmp      SHORT G_M55783_IG36
 						;; size=9 bbWeight=8 PerfScore 24.00
 G_M55783_IG34:
        mov      rdx, gword ptr [rbp-0x98]
        cmp      r14d, dword ptr [rdx+0x30]
        jae      SHORT G_M55783_IG32
 						;; size=13 bbWeight=16 PerfScore 80.00
 G_M55783_IG35:
        cmp      r14d, dword ptr [rax+0x08]
        jae      SHORT G_M55783_IG38
        mov      edx, r14d
        mov      rdx, gword ptr [rax+8*rdx+0x10]
 						;; size=14 bbWeight=2 PerfScore 12.50
 G_M55783_IG36:
        mov      rcx, bword ptr [rbp-0xA0]
        mov      gword ptr [rcx+0x08], rdx
        test     rdx, rdx
        je       G_M55783_IG03
        mov      dword ptr [rbp-0x30], r14d
        jmp      G_M55783_IG05
 						;; size=29 bbWeight=4 PerfScore 25.00
 G_M55783_IG37:
        add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M55783_IG38:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 891, prolog size 49, PerfScore 497.33, instruction count 217, allocated bytes for code 891 (MethodHash=d34b2618) for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts)
+; Total bytes of code 884, prolog size 49, PerfScore 492.83, instruction count 216, allocated bytes for code 884 (MethodHash=d34b2618) for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment