{"Summary":"44 changed method listings; 44 examples across 5 assemblies.\n\nFound 89 files with textual diffs.\n\nSummary of Code Size diffs:\n(Lower is better)\n\nTotal bytes of base: 162221545\nTotal bytes of diff: 162219928\nTotal bytes of delta: -1617 (-0.00 % of base)\nTotal relative delta: -4.66\n    diff is an improvement.\n    relative diff is an improvement.\n\n\nTop file improvements (bytes):\n       -1580 : dnlib.dasm (-0.12 % of base)\n         -37 : SixLabors.ImageSharp.dasm (-0.00 % of base)\n\n2 total files with Code Size differences (2 improved, 0 regressed), 352 unchanged.\n\nTop method improvements (bytes):\n        -162 (-9.20 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n        -154 (-8.14 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n         -89 (-6.97 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n         -53 (-5.77 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n         -50 (-8.58 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n         -50 (-6.50 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n         -41 (-14.14 % of base) : dnlib.dasm - dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -41 (-14.91 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -41 (-3.56 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.80 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-19.42 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -38 (-7.29 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n         -37 (-7.13 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n         -37 (-100.00 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Memory.Buffer2D\u00601[long]:GetRequiredLength(int,int,int):long (FullOpts)\n         -33 (-3.14 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n         -33 (-3.37 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n         -33 (-2.62 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n         -33 (-9.82 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n         -32 (-11.81 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-11.51 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-7.19 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n         -32 (-12.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.85 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-2.93 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n         -32 (-3.75 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n         -28 (-5.35 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n\nTop method improvements (percentages):\n         -37 (-100.00 % of base) : SixLabors.ImageSharp.dasm - SixLabors.ImageSharp.Memory.Buffer2D\u00601[long]:GetRequiredLength(int,int,int):long (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.80 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.42 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n         -41 (-14.91 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -41 (-14.14 % of base) : dnlib.dasm - dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -32 (-12.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.85 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.81 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-11.51 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -33 (-9.82 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n        -162 (-9.20 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n         -50 (-8.58 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n        -154 (-8.14 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n         -38 (-7.29 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n         -32 (-7.19 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n         -37 (-7.13 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n         -89 (-6.97 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n         -50 (-6.50 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n         -53 (-5.77 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n         -28 (-5.35 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n         -32 (-3.75 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n         -41 (-3.56 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n         -33 (-3.37 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n         -33 (-3.14 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n         -32 (-2.93 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n         -33 (-2.62 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n\n36 total methods with Code Size differences (36 improved, 0 regressed), 833872 unchanged.\n\n--------------------------------------------------------------------------------","Notes":["1 new method listings are excluded. Use -includeNewMethodRegressions to include them.","5 incomplete method listings could not be compared."],"Entries":[{"Assembly":"Newtonsoft.Json.dasm","Method":"Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)","Category":"same-size","Description":"333 -\u003E 333 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,173 \u002B1,173 @@\n ; Assembly listing for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T07] (  4,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CNewtonsoft.Json.DefaultJsonNameTable\u003E\n ;  V01 arg1         [V01,T03] (  7,  9   )     ref  -\u003E  rbx         class-hnd single-def \u003Cchar[]\u003E\n ;  V02 arg2         [V02,T04] (  7,  6   )     int  -\u003E  r15         single-def\n ;  V03 arg3         [V03,T05] (  6,  6   )     int  -\u003E  r14         single-def\n ;  V04 loc0         [V04,T00] ( 21, 23   )     int  -\u003E  r13        \n ;  V05 loc1         [V05,T06] (  6,  6   )     int  -\u003E  rdx         single-def\n ;* V06 loc2         [V06    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;  V07 loc3         [V07,T10] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V08 loc4         [V08,T02] ( 11, 17.04)     int  -\u003E  rcx        \n ;  V09 loc5         [V09,T01] (  8, 19.50)     ref  -\u003E  r12         class-hnd \u003CNewtonsoft.Json.DefaultJsonNameTable\u002BEntry\u003E\n ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V11 tmp1         [V11,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n ;  V12 cse0         [V12,T09] (  4,  1.54)     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M29284_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x30]\n        mov      rbx, rsi\n        mov      r15d, edx\n        mov      r14d, ecx\n \t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 8.25\n G_M29284_IG02:\n        test     r14d, r14d\n        je       G_M29284_IG14\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M29284_IG03:\n-       lea      r13d, [r14\u002B0x000E7D66]\n\u002B       lea      r13d, [r14\u002B0x000E7B17]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      r15d, esi\n        jae      G_M29284_IG16\n        mov      edx, r15d\n        movzx    rdx, word  ptr [rbx\u002B2*rdx\u002B0x10]\n        mov      ecx, r13d\n        shl      ecx, 7\n        xor      edx, ecx\n        add      r13d, edx\n        lea      edx, [r15\u002Br14]\n        lea      ecx, [r15\u002B0x01]\n        cmp      ecx, edx\n        jge      SHORT G_M29284_IG05\n        test     edx, edx\n        jl       G_M29284_IG10\n        cmp      esi, edx\n        jl       G_M29284_IG10\n        align    [0 bytes for IG04]\n \t\t\t\t\t\t;; size=66 bbWeight=0.50 PerfScore 6.00\n G_M29284_IG04:\n        mov      esi, ecx\n        movzx    rsi, word  ptr [rbx\u002B2*rsi\u002B0x10]\n        mov      eax, r13d\n        shl      eax, 7\n        xor      esi, eax\n        add      r13d, esi\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M29284_IG04\n \t\t\t\t\t\t;; size=24 bbWeight=3.96 PerfScore 19.80\n G_M29284_IG05:\n        mov      esi, r13d\n        sar      esi, 17\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 11\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 5\n        sub      r13d, esi\n        mov      esi, r13d\n        and      esi, dword ptr [rdi\u002B0x14]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      esi, dword ptr [rdi\u002B0x08]\n        jae      G_M29284_IG16\n        mov      r12, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        test     r12, r12\n        je       SHORT G_M29284_IG12\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 6.75\n G_M29284_IG06:\n        cmp      dword ptr [r12\u002B0x18], r13d\n        jne      SHORT G_M29284_IG11\n \t\t\t\t\t\t;; size=7 bbWeight=4 PerfScore 12.00\n G_M29284_IG07:\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rsi, rbx\n        mov      edx, r15d\n        mov      ecx, r14d\n        mov      rax, 0xD1FFAB1E      ; code for Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        call     [rax]Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        test     eax, eax\n        je       SHORT G_M29284_IG11\n \t\t\t\t\t\t;; size=30 bbWeight=2 PerfScore 14.50\n G_M29284_IG08:\n        mov      rax, gword ptr [r12\u002B0x08]\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M29284_IG09:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG10:\n        cmp      ecx, esi\n        jae      SHORT G_M29284_IG16\n        mov      eax, ecx\n        movzx    rax, word  ptr [rbx\u002B2*rax\u002B0x10]\n        mov      r8d, r13d\n        shl      r8d, 7\n        xor      eax, r8d\n        add      eax, r13d\n        mov      r13d, eax\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M29284_IG10\n        jmp      G_M29284_IG05\n \t\t\t\t\t\t;; size=38 bbWeight=0.04 PerfScore 0.34\n G_M29284_IG11:\n        mov      r12, gword ptr [r12\u002B0x10]\n        test     r12, r12\n        jne      SHORT G_M29284_IG06\n \t\t\t\t\t\t;; size=10 bbWeight=4 PerfScore 13.00\n G_M29284_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M29284_IG13:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG14:\n        mov      rax, 0xD1FFAB1E      ; \u0027\u0027\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M29284_IG15:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n ; Total bytes of code 333, prolog size 25, PerfScore 89.52, instruction count 113, allocated bytes for code 333 (MethodHash=987c8d9b) for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":333,"DiffBytes":333},{"Assembly":"Silk.NET.Assimp.dasm","Method":"Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)","Category":"same-size","Description":"159 -\u003E 159 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,94 \u002B1,94 @@\n ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] (  7,  6.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V01 arg1         [V01,T01] (  3,  3   )     ref  -\u003E  r15         class-hnd single-def \u003CSilk.NET.Assimp.OpenFileCustomIOCallback\u003E\n ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V03 loc1         [V03    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op \u003CSilk.NET.Assimp.FileIO\u003E\n ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V05 tmp1         [V05,T03] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V07 tmp3         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V08 tmp4         [V08,T02] (  5,  4.50)    long  -\u003E  r14         \u0022Inline stloc first use temp\u0022\n ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileOpenProc\u003E\n ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileCloseProc\u003E\n ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V12 tmp8         [V12    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V13 tmp9         [V13    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V02._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp10        [V14    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.OpenProc (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp11        [V15    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.CloseProc (fldOffset=0x8)\u0022 P-INDEP\n ;* V16 tmp12        [V16    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.UserData (fldOffset=0x10)\u0022 P-INDEP\n ;* V17 tmp13        [V17    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V06._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V18 tmp14        [V18    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V09._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp15        [V19    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V10._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V20 tmp16        [V20    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V11._handle (fldOffset=0x0)\u0022 P-INDEP\n ;\n ; Lcl frame size = 8\n \n G_M23716_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n        mov      r15, rsi\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M23716_IG02:\n        mov      rdi, rbx\n        mov      esi, 2\n        call     System.Runtime.InteropServices.GCHandle:_InternalAlloc(System.Object,int):nint\n        mov      r14, rax\n        test     r14, r14\n        jne      SHORT G_M23716_IG04\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 3.00\n G_M23716_IG03:\n        mov      rdi, rbx\n        mov      esi, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint\n        call     [rax]System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint\n        mov      r14, rax\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M23716_IG04:\n        test     r14, r14\n        je       SHORT G_M23716_IG06\n        lea      rdi, bword ptr [rbx\u002B0x08]\n        mov      rsi, r15\n        call     CORINFO_HELP_ASSIGN_REF\n        vmovups  xmm0, xmmword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rbx\u002B0x10], xmm0\n        mov      qword ptr [rbx\u002B0x20], r14\n \t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 6.00\n G_M23716_IG05:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M23716_IG06:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Failed to allocate GCHandle for CustomFileIO\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t000079AA7D740AB0h, 000079AA7D740AC8h\n\u002BRWD00  \tdq\t00007BE5D0D40AB0h, 00007BE5D0D40AC8h\n \n \n ; Total bytes of code 159, prolog size 12, PerfScore 20.25, instruction count 43, allocated bytes for code 159 (MethodHash=57fda35b) for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":159,"DiffBytes":159},{"Assembly":"SixLabors.ImageSharp.dasm","Method":"SixLabors.ImageSharp.Memory.RowInterval:get_Max():int:this (FullOpts)","Category":"same-size","Description":"4 -\u003E 4 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,39 \u002B1,25 @@\n ; Assembly listing for method SixLabors.ImageSharp.Memory.RowInterval:get_Max():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] (  3,  3   )   byref  -\u003E  rdi         this single-def\n-;# V01 OutArgs      [V01    ] (  1,  1   )  struct ; Assembly listing for method SixLabors.ImageSharp.Memory.Internals.UniformUnmanagedMemoryPool\u002B\u003C\u003Ec:\u003CUpdateTimer\u003Eb__26_0(System.Object):this (FullOpts)\n-( 0) ; Emitting BLENDED_CODE for x64[rsp\u002B0x00]  \u002B VEX do-not-enreg[XS] addr-exposed \u002B EVEX \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;\n- on Unix; Lcl frame size = 0\n-\n-; FullOpts code\n-; optimized code\n-; rsp based frame\n-; fully interruptible\n-; No PGO data\n-; Final local variable assignments\n-;\n-;* V00 this         [V00    ] (  0,  0   )     ref  -\u003E  zero-ref    this class-hnd single-def \u003CSixLabors.ImageSharp.Memory.Internals.UniformUnmanagedMemoryPool\u002B\u003C\u003Ec\u003E\n-;* V01 arg1         [V01    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd single-def \u003CSystem.Object\u003E\n-;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n\u002B;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;\n ; Lcl frame size = 0\n \n G_M10991_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M10991_IG02:\n        mov      eax, dword ptr [rdi\u002B0x04]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 2.00\n G_M10991_IG03:\n        ret      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n \n ; Total bytes of code 4, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 4 (MethodHash=fc29d510) for method SixLabors.ImageSharp.Memory.RowInterval:get_Max():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":4,"DiffBytes":4},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Threading.Tasks.Task\u002B\u003C\u003Ec:.cctor() (FullOpts)","Category":"regression","Description":"40 -\u003E 163 bytes (\u002B123)","ExtraInfo":null,"Diff":"@@ -1,33 \u002B1,47 @@\n ; Assembly listing for method System.Threading.Tasks.Task\u002B\u003C\u003Ec:.cctor() (FullOpts)\n-; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n\u002B       mov      qword ptr [rbp-0x40]; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX, rcx on Unix\n\u002B\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n-; No PGO data\n-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data\n\u002B      ; No PGO data\n\u002B mov      ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data\n\u002Bbyte  ptr [r13\u002B0x04], 0\n ; Final local variable assignments\n-;\n-;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;* V01 tmp1         [V01    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.Threading.Tasks.Task\u002B\u003C\u003Ec\u003E\n-;\n-; Lcl frame size = 8\n\u002B\t\t\t\t\t\t;; size=78 bbWeight=1 PerfScore 13.00;\n\u002B\n\u002BG_M5081_IG03:\n\u002B;#        call     rax\n\u002BV00 OutArgs      [V00    ]\t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 3.00\n\u002BG_M5081_IG04:\n\u002B (  1,  1   )        struct  mov      ( 0) byte  ptr [r13\u002B0x04[rsp\u002B0x00] ] do-not-enreg[, XS1]\n\u002B addr-exposed \u0022OutgoingArgSpace\u0022       \u003CEmpty\u003E\n\u002B mov      ;* rcxV01 tmp1, 0xD1FFAB1E         [V01    ]      ; function address\n\u002B (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact       \u0022NewObj constructor temp\u0022 cmp      dword ptr [rcx], 0\n\u002B \u003CSystem.Threading.Tasks.Task\u002B\u003C\u003Ec\u003E\n\u002B      ;\n\u002B je       ; Lcl frame size = 8\n\u002BSHORT G_M5081_IG05\n\u002B       mov      rdi, 0xD1FFAB1E\n\u002B       call     [rdi]CORINFO_HELP_STOP_FOR_GC\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=1 PerfScore 7.50\n\u002BG_M5081_IG05:\n\u002B       mov      rcx, qword ptr [rbp-0x58]\n\u002B       mov      qword ptr [r13\u002B0x08], rcx\n\u002B\t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 2.00\n\u002BG_M5081_IG06:\n\u002B       add      rsp, 56\n\u002B       pop      rbx\n\u002B       pop      r12\n\u002B       pop      r13\n\u002B       pop      r14\n\u002B       pop      r15\n\u002B       pop      rbp\n\u002B       ret      \n\u002B\t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n\u002B\n \n G_M48410_IG01:\n-       push     rax\n-\t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n-G_M48410_IG02:\n-       mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task\u002B\u003C\u003Ec\n-       call     CORINFO_HELP_NEWSFAST\n-       mov      rsi, rax\n-       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task\u002B\u003C\u003Ec:\u003C\u003E9\n-       call     CORINFO_HELP_ASSIGN_REF\n-       nop      \n-\t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 3.00\n-G_M48410_IG03:\n-       add      rsp, 8\n-       ret      \n-\t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 1.25\n-\n-; Total bytes of code 40, prolog size 1, PerfScore 5.25, instruction count 9, allocated bytes for code 40 (MethodHash=ad5142e5) for method System.Threading.Tasks.Task\u002B\u003C\u003Ec:.cctor() (FullOpts)\n\u002B; Total bytes of code 163, prolog size 19, PerfScore 37.25, instruction count 47, allocated bytes for code 163 (MethodHash=4d67ec26) for method Interop\u002BSys:WaitForHandleEvents(nint,ptr,ptr):int (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":40,"DiffBytes":163},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)","Category":"same-size","Description":"23 -\u003E 23 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,32 \u002B1,32 @@\n ; Assembly listing for method System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Runtime.CompilerServices.ResumeInfo\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.Resume (fldOffset=0x0)\u0022 P-INDEP\n ;* V03 tmp2         [V03    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.DiagnosticIP (fldOffset=0x8)\u0022 P-INDEP\n ;  V04 cse0         [V04,T00] (  2,  2   )    long  -\u003E  rax         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 0\n \n G_M58358_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M58358_IG02:\n        mov      rax, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:ResumeInfo\n        vmovsd   xmm0, qword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rax], xmm0\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 3.25\n G_M58358_IG03:\n        ret      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n-RWD00  \tdq\t00007C3CA11115C0h\n\u002BRWD00  \tdq\t000079B478B115C0h\n \n \n ; Total bytes of code 23, prolog size 0, PerfScore 4.25, instruction count 4, allocated bytes for code 23 (MethodHash=bcd21c09) for method System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":23,"DiffBytes":23},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)","Category":"improvement","Description":"1,760 -\u003E 1,598 bytes (-162)","ExtraInfo":null,"Diff":"@@ -1,704 \u002B1,679 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 49 single block inlinees; 21 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 27, 14.50)     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 arg1         [V01,T17] (  4,  4   )     int  -\u003E  rsi         single-def\n\u002B;  V01 arg1         [V01,T18] (  4,  4   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03,T02] ( 26, 13.50)     int  -\u003E  rbx         single-def\n ;  V04 loc1         [V04,T01] ( 27, 14   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMDTokenProvider\u003E\n ;* V05 loc2         [V05    ] (  0,  0   )   ubyte  -\u003E  zero-ref   \n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V07 tmp1         [V07,T47] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V08 tmp2         [V08,T03] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V09 tmp3         [V09,T11] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n-;  V10 tmp4         [V10,T48] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V07 tmp1         [V07,T48] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V08 tmp2         [V08,T05] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp3         [V09,T12] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n\u002B;  V10 tmp4         [V10,T49] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V11 tmp5         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V12 tmp6         [V12,T20] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V13 tmp7         [V13,T60] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp6         [V12,T58] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V13 tmp7         [V13,T67] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V14 tmp8         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V15 tmp9         [V15,T49] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V16 tmp10        [V16,T04] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V17 tmp11        [V17,T12] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V18 tmp12        [V18,T46] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V15 tmp9         [V15,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V16 tmp10        [V16,T06] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V17 tmp11        [V17,T13] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V18 tmp12        [V18,T47] (  5,  2.50)     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V19 tmp13        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V20 tmp14        [V20,T21] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V20 tmp14        [V20,T59] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V21 tmp15        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V22 tmp16        [V22,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V23 tmp17        [V23,T05] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V24 tmp18        [V24,T13] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V25 tmp19        [V25,T51] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V22 tmp16        [V22,T51] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V23 tmp17        [V23,T07] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp18        [V24,T14] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V25 tmp19        [V25,T52] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V26 tmp20        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V27 tmp21        [V27,T22] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V28 tmp22        [V28,T61] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V27 tmp21        [V27,T60] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V28 tmp22        [V28,T68] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V29 tmp23        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V30 tmp24        [V30,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V31 tmp25        [V31,T06] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V32 tmp26        [V32,T14] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V33 tmp27        [V33,T19] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V30 tmp24        [V30,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V31 tmp25        [V31,T08] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V32 tmp26        [V32,T15] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n\u002B;  V33 tmp27        [V33,T20] (  7,  3.50)     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V34 tmp28        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V35 tmp29        [V35,T23] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V36 tmp30        [V36    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V37 tmp31        [V37,T62] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V38 tmp32        [V38,T57] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V35 tmp29        [V35,T61] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V36 tmp30        [V36    ] (  7,  3.50)  struct ( 8) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V37 tmp31        [V37,T69] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V38 tmp32        [V38,T64] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V39 tmp33        [V39    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V40 tmp34        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V41 tmp35        [V41,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V42 tmp36        [V42,T07] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V43 tmp37        [V43,T15] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n-;  V44 tmp38        [V44,T54] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V41 tmp35        [V41,T54] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V42 tmp36        [V42,T04] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V43 tmp37        [V43,T16] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n\u002B;  V44 tmp38        [V44,T55] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V45 tmp39        [V45    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V46 tmp40        [V46,T24] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V46 tmp40        [V46,T62] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V47 tmp41        [V47    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n-;  V48 tmp42        [V48,T44] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n-;  V49 tmp43        [V49,T45] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n-;  V50 tmp44        [V50    ] (  7,  3.50)  struct ( 8) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V51 tmp45        [V51,T59] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V52 tmp46        [V52,T58] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V48 tmp42        [V48,T45] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n\u002B;  V49 tmp43        [V49,T46] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n\u002B;  V50 tmp44        [V50    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V51 tmp45        [V51,T66] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V52 tmp46        [V52,T65] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V53 tmp47        [V53    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V54 tmp48        [V54    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V55 tmp49        [V55,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V56 tmp50        [V56,T08] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V57 tmp51        [V57,T16] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n-;  V58 tmp52        [V58,T56] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V55 tmp49        [V55,T56] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V56 tmp50        [V56,T09] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V57 tmp51        [V57,T17] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n\u002B;  V58 tmp52        [V58,T57] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V59 tmp53        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V60 tmp54        [V60,T25] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V61 tmp55        [V61,T63] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V60 tmp54        [V60,T63] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V61 tmp55        [V61,T70] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V62 tmp56        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V63 tmp57        [V63,T09] (  7,  4   )     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V64 tmp58        [V64,T10] (  7,  4   )     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V65 tmp59        [V65    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V36.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V66 tmp60        [V66    ] (  7,  3.50)     int  -\u003E  [rbp-0x28]  do-not-enreg[X] addr-exposed \u0022field V50.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V67 tmp61        [V67,T26] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V68 tmp62        [V68,T27] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V69 tmp63        [V69,T28] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V70 tmp64        [V70,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V71 tmp65        [V71,T30] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V72 tmp66        [V72,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V73 tmp67        [V73,T32] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V74 tmp68        [V74,T33] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V75 tmp69        [V75,T34] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V76 tmp70        [V76,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp71        [V77,T36] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V78 tmp72        [V78,T37] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V79 rat0         [V79,T18] (  3,  5.96)     int  -\u003E  rsi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V80 rat1         [V80,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V81 rat2         [V81,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V82 rat3         [V82,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V83 rat4         [V83,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V84 rat5         [V84,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V85 rat6         [V85,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V63 tmp57        [V63,T10] (  7,  4   )     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V64 tmp58        [V64,T11] (  7,  4   )     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V65 tmp59        [V65    ] (  7,  3.50)     int  -\u003E  [rbp-0x28]  do-not-enreg[X] addr-exposed \u0022field V36.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V66 tmp60        [V66    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V50.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V67 tmp61        [V67,T21] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V68 tmp62        [V68,T22] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V69 tmp63        [V69,T23] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V70 tmp64        [V70,T24] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp65        [V71,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V72 tmp66        [V72,T26] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V73 tmp67        [V73,T27] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V74 tmp68        [V74,T28] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp69        [V75,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp70        [V76,T30] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp71        [V77,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp72        [V78,T32] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V79 tmp73        [V79,T33] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V80 tmp74        [V80,T34] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V81 tmp75        [V81,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V82 tmp76        [V82,T36] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V83 tmp77        [V83,T37] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V84 tmp78        [V84,T38] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V85 cse0         [V85,T03] ( 25, 12.50)    long  -\u003E  r14         multi-def \u0022CSE #02: aggressive\u0022\n\u002B;  V86 rat0         [V86,T19] (  3,  5.96)     int  -\u003E  rsi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V87 rat1         [V87,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V88 rat2         [V88,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V89 rat3         [V89,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V90 rat4         [V90,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V91 rat5         [V91,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V92 rat6         [V92,T44] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 24\n\u002B; Lcl frame size = 16\n \n G_M52800_IG01:\n        push     rbp\n        push     r15\n        push     r14\n\u002B       push     r13\n        push     rbx\n-       sub      rsp, 24\n\u002B       sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n-       mov      qword ptr [rbp-0x20], rax\n        mov      qword ptr [rbp-0x28], rax\n-\t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 7.00\n\u002B       mov      qword ptr [rbp-0x30], rax\n\u002B\t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 8.00\n G_M52800_IG02:\n        mov      ebx, esi\n        and      ebx, 0xD1FFAB1E\n        shr      esi, 24\n        movzx    rsi, sil\n        cmp      esi, 44\n        ja       SHORT G_M52800_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 2.50\n G_M52800_IG03:\n        mov      esi, esi\n        lea      rax, [reloc @RWD00]\n        mov      eax, dword ptr [rax\u002B4*rsi]\n        lea      r8, G_M52800_IG02\n        add      rax, r8\n        jmp      rax\n \t\t\t\t\t\t;; size=24 bbWeight=0.98 PerfScore 5.87\n G_M52800_IG04:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG05:\n-       add      rsp, 24\n\u002B       add      rsp, 16\n        pop      rbx\n\u002B       pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n\u002B\t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 3.75\n G_M52800_IG06:\n        mov      r15, gword ptr [rdi\u002B0x210]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG09\n\u002B       jae      SHORT G_M52800_IG09\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG07\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x10]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG08\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG07:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdx\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG10\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG08:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG10\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG10:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG11:\n        mov      r15, gword ptr [rdi\u002B0x208]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n        jae      G_M52800_IG18\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      G_M52800_IG17\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rsi, gword ptr [r14\u002B0x10]\n\u002B       mov      r13, rax\n\u002B       mov      rsi, gword ptr [r13\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M52800_IG14\n-\t\t\t\t\t\t;; size=72 bbWeight=0.50 PerfScore 12.25\n\u002B\t\t\t\t\t\t;; size=73 bbWeight=0.50 PerfScore 12.25\n G_M52800_IG12:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M52800_IG14\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M52800_IG13:\n        jmp      SHORT G_M52800_IG15\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M52800_IG14:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M52800_IG15:\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        test     rsi, rsi\n        je       SHORT G_M52800_IG16\n-       cmp      dword ptr [rbp-0x28], 100\n\u002B       cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M52800_IG16\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n-       lea      rdi, [rbp-0x28]\n\u002B       lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        je       SHORT G_M52800_IG16\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG19\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M52800_IG16:\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=31 bbWeight=0.50 PerfScore 3.88\n G_M52800_IG17:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG19\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG18:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG19:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG20:\n        mov      rdi, gword ptr [rdi\u002B0x200]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG21:\n        mov      rdi, gword ptr [rdi\u002B0x1F8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG22:\n        mov      rdi, gword ptr [rdi\u002B0x1F0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG23:\n        mov      rdi, gword ptr [rdi\u002B0x1E8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG24:\n        mov      rdi, gword ptr [rdi\u002B0x1E0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG25:\n        mov      rdi, gword ptr [rdi\u002B0x1D8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG26:\n        mov      rdi, gword ptr [rdi\u002B0x1D0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG27:\n        mov      r15, gword ptr [rdi\u002B0x1C8]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n        jae      G_M52800_IG32\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n-       jne      G_M52800_IG30\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n\u002B       jne      SHORT G_M52800_IG30\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       cmp      byte  ptr [r14], r14b\n\u002B       mov      r13, rax\n\u002B       cmp      byte  ptr [r13], r13b\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x20], edi\n-       cmp      dword ptr [rbp-0x20], 100\n\u002B       mov      dword ptr [rbp-0x28], edi\n\u002B       cmp      dword ptr [rbp-0x28], 100\n        jge      SHORT G_M52800_IG29\n-       mov      edi, dword ptr [rbp-0x20]\n\u002B       mov      edi, dword ptr [rbp-0x28]\n        inc      edi\n-       mov      dword ptr [rbp-0x20], edi\n-       cmp      byte  ptr [r14\u002B0x34], 0\n\u002B       mov      dword ptr [rbp-0x28], edi\n\u002B       cmp      byte  ptr [r13\u002B0x34], 0\n        jne      SHORT G_M52800_IG28\n-       mov      rdi, r14\n\u002B       mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n-\t\t\t\t\t\t;; size=107 bbWeight=0.50 PerfScore 17.62\n\u002B\t\t\t\t\t\t;; size=105 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG28:\n-       mov      rsi, gword ptr [r14\u002B0x10]\n-       lea      rdi, [rbp-0x20]\n\u002B       mov      rsi, gword ptr [r13\u002B0x10]\n\u002B       lea      rdi, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n-       mov      edi, dword ptr [rbp-0x20]\n\u002B       mov      edi, dword ptr [rbp-0x28]\n        dec      edi\n-       mov      dword ptr [rbp-0x20], edi\n\u002B       mov      dword ptr [rbp-0x28], edi\n        test     eax, eax\n        jne      SHORT G_M52800_IG31\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M52800_IG29:\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.75\n G_M52800_IG30:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG33\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG31:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG33\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG32:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG33:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG34:\n        mov      rdi, gword ptr [rdi\u002B0x1C0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG35:\n        mov      rdi, gword ptr [rdi\u002B0x1B8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG36:\n        mov      rdi, gword ptr [rdi\u002B0x1B0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG37:\n        mov      r15, gword ptr [rdi\u002B0x1A8]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG40\n\u002B       jae      SHORT G_M52800_IG40\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG38\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG39\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG38:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG41\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG39:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG41\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG40:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG41:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG42:\n        mov      rdi, gword ptr [rdi\u002B0x1A0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG43:\n        mov      rdi, gword ptr [rdi\u002B0x198]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG44:\n        mov      rdi, gword ptr [rdi\u002B0x190]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG45:\n        mov      r15, gword ptr [rdi\u002B0x188]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG48\n\u002B       jae      SHORT G_M52800_IG48\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG46\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       cmp      byte  ptr [r14], r14b\n-       mov      rdi, r14\n\u002B       mov      r13, rax\n\u002B       cmp      byte  ptr [r13], r13b\n\u002B       mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG47\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=131 bbWeight=0.50 PerfScore 18.38\n\u002B\t\t\t\t\t\t;; size=107 bbWeight=0.50 PerfScore 17.75\n G_M52800_IG46:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdx\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG49\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG47:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG49\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG48:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG49:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG50:\n        mov      r15, gword ptr [rdi\u002B0x180]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG53\n\u002B       jae      SHORT G_M52800_IG53\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG51\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG52\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG51:\n-       mov      rax, gword ptr [r15\u002B0x08]\n-       cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r15\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG54\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG52:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG54\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG53:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG54:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG55:\n        mov      rdi, gword ptr [rdi\u002B0x178]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG56:\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG57:\n        mov      rdi, gword ptr [rdi\u002B0x168]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG58:\n        mov      rdi, gword ptr [rdi\u002B0x160]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG59:\n        mov      rdi, gword ptr [rdi\u002B0x158]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG60:\n        mov      rdi, gword ptr [rdi\u002B0x150]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG61:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M52800_IG62:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M52800_IG60 - G_M52800_IG02\n        \tdd\tG_M52800_IG59 - G_M52800_IG02\n        \tdd\tG_M52800_IG58 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG57 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG56 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG55 - G_M52800_IG02\n        \tdd\tG_M52800_IG50 - G_M52800_IG02\n        \tdd\tG_M52800_IG45 - G_M52800_IG02\n        \tdd\tG_M52800_IG44 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG43 - G_M52800_IG02\n        \tdd\tG_M52800_IG42 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG37 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG36 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG35 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG34 - G_M52800_IG02\n        \tdd\tG_M52800_IG27 - G_M52800_IG02\n        \tdd\tG_M52800_IG26 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG25 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG24 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG23 - G_M52800_IG02\n        \tdd\tG_M52800_IG22 - G_M52800_IG02\n        \tdd\tG_M52800_IG21 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG20 - G_M52800_IG02\n        \tdd\tG_M52800_IG11 - G_M52800_IG02\n        \tdd\tG_M52800_IG06 - G_M52800_IG02\n \n \n-; Total bytes of code 1760, prolog size 25, PerfScore 278.12, instruction count 432, allocated bytes for code 1760 (MethodHash=6ec631bf) for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n\u002B; Total bytes of code 1598, prolog size 27, PerfScore 275.24, instruction count 402, allocated bytes for code 1598 (MethodHash=6ec631bf) for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1760,"DiffBytes":1598},{"Assembly":"Silk.NET.Assimp.dasm","Method":"Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)","Category":"same-size","Description":"1,423 -\u003E 1,423 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,815 \u002B1,815 @@\n ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 88 single block inlinees; 22 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T13] (  3,  3   )    long  -\u003E  r14         single-def\n ;  V01 arg1         [V01,T01] (  5,  8   )    long  -\u003E  rbx         single-def\n ;  V02 arg2         [V02,T02] (  5,  8   )    long  -\u003E  r15         single-def\n ;  V03 loc0         [V03,T36] (  2,  2   )     ref  -\u003E  [rbp-0xA8]  class-hnd exact spill-single-def ptr \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V04 loc1         [V04,T00] ( 23, 38.50)     int  -\u003E  r13        \n ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Span\u00601[byte]\u003E\n ;* V06 loc3         [V06    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    \u003CSystem.Span\u00601[char]\u003E\n ;* V08 loc5         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Span\u00601[byte]\u003E\n ;  V09 loc6         [V09,T20] (  4,  3   )   ubyte  -\u003E  rbx         single-def\n ;  V10 loc7         [V10,T30] (  3,  2   )   ubyte  -\u003E  r14         single-def\n ;  V11 loc8         [V11,T31] (  3,  2   )   ubyte  -\u003E  r12         single-def\n ;  V12 loc9         [V12,T17] (  5,  3.50)   ubyte  -\u003E  r15         single-def\n ;* V13 loc10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V14 loc11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;  V15 loc12        [V15,T16] (  5,  3.50)     ref  -\u003E  r14         class-hnd single-def \u003CSystem.IO.Stream\u003E\n ;* V16 loc13        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;  V17 loc14        [V17,T25] (  5,  2.50)    long  -\u003E  r15         single-def\n ;* V18 loc15        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V19 loc16        [V19    ] (  0,  0   )  struct (16) zero-ref    \u003CSystem.Span\u00601[char]\u003E\n ;* V20 loc17        [V20    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V21 loc18        [V21    ] (  0,  0   )  struct (56) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSilk.NET.Assimp.File\u003E\n ;  V22 OutArgs      [V22    ] (  1,  1   )  struct (16) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;  V23 tmp1         [V23,T03] (  4,  7   )     ref  -\u003E  r14         single-def \u0022ISINST eval op1\u0022\n ;* V24 tmp2         [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022spilling qmarkNull\u0022 \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V25 tmp3         [V25,T23] (  2,  3   )     ref  -\u003E  [rbp-0xB0]  class-hnd exact spill-single-def ptr \u0022impAppendStmt\u0022 \u003CSystem.Text.UTF8Encoding\u002BUTF8EncodingSealed\u003E\n ;* V26 tmp4         [V26    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V27 tmp5         [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V28 tmp6         [V28,T24] (  2,  3   )     ref  -\u003E  r12         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003CSystem.Text.UTF8Encoding\u002BUTF8EncodingSealed\u003E\n ;* V29 tmp7         [V29    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V30 tmp8         [V30,T32] (  3,  2   )     int  -\u003E  r14        \n ;  V31 tmp9         [V31,T33] (  3,  2   )     int  -\u003E  r12        \n ;  V32 tmp10        [V32,T34] (  3,  2   )     int  -\u003E  rax        \n ;  V33 tmp11        [V33,T26] (  4,  2.50)     int  -\u003E  rcx        \n ;  V34 tmp12        [V34,T27] (  4,  2.50)     int  -\u003E   r8        \n ;  V35 tmp13        [V35,T08] (  3,  6   )     ref  -\u003E  rax         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003CSilk.NET.Assimp.OpenFileCustomIOCallback\u003E\n ;* V36 tmp14        [V36    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[char]\u003E\n ;  V37 tmp15        [V37,T43] (  3,  0   )     ref  -\u003E  r15         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;  V38 tmp16        [V38,T44] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V39 tmp17        [V39,T45] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V40 tmp18        [V40,T21] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;  V41 tmp19        [V41,T46] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;  V42 tmp20        [V42,T09] (  3,  6   )    long  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;* V43 tmp21        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V44 tmp22        [V44    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V45 tmp23        [V45    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V46 tmp24        [V46    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V47 tmp25        [V47    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V48 tmp26        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V49 tmp27        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V50 tmp28        [V50    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V51 tmp29        [V51    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V52 tmp30        [V52    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;* V53 tmp31        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V54 tmp32        [V54    ] (  2,  2   )   byref  -\u003E  [rbp-0x38]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V55 tmp33        [V55    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V56 tmp34        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V57 tmp35        [V57    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V58 tmp36        [V58    ] (  0,  0   )     int  -\u003E  zero-ref    ld-addr-op single-def \u0022Inline ldloca(s) first use temp\u0022\n ;  V59 tmp37        [V59,T11] (  9,  5.50)     int  -\u003E  [rbp-0x3C]  ptr \u0022Inline stloc first use temp\u0022\n ;  V60 tmp38        [V60    ] (  2,  2   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;  V61 tmp39        [V61    ] (  1,  1   )     int  -\u003E  [rbp-0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022\n ;  V62 tmp40        [V62,T18] (  4,  3.50)     int  -\u003E  rcx         single-def \u0022Inline stloc first use temp\u0022\n ;* V63 tmp41        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V64 tmp42        [V64,T37] (  2,  2   )    long  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V65 tmp43        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V66 tmp44        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V67 tmp45        [V67    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V68 tmp46        [V68    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V69 tmp47        [V69    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;* V70 tmp48        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V71 tmp49        [V71    ] (  2,  2   )   byref  -\u003E  [rbp-0x58]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V72 tmp50        [V72    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V73 tmp51        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V74 tmp52        [V74    ] (  2,  2   )   byref  -\u003E  [rbp-0x60]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V75 tmp53        [V75    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V76 tmp54        [V76    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V77 tmp55        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;* V78 tmp56        [V78    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V79 tmp57        [V79    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V80 tmp58        [V80    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V81 tmp59        [V81,T28] (  3,  2.50)     int  -\u003E   r9         ld-addr-op single-def \u0022Inline ldloca(s) first use temp\u0022\n ;  V82 tmp60        [V82,T39] (  2,  1.50)     int  -\u003E  rdi         single-def \u0022Inline stloc first use temp\u0022\n ;  V83 tmp61        [V83    ] (  2,  2   )    long  -\u003E  [rbp-0x68]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;  V84 tmp62        [V84    ] (  2,  2   )    long  -\u003E  [rbp-0x70]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;* V85 tmp63        [V85    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V86 tmp64        [V86    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V87 tmp65        [V87    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V88 tmp66        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V89 tmp67        [V89    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V90 tmp68        [V90    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V91 tmp69        [V91    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V92 tmp70        [V92    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V93 tmp71        [V93    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V94 tmp72        [V94    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V95 tmp73        [V95    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V96 tmp74        [V96    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V97 tmp75        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V98 tmp76        [V98    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V99 tmp77        [V99    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V100 tmp78       [V100    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V101 tmp79       [V101    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V102 tmp80       [V102    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V103 tmp81       [V103    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V104 tmp82       [V104    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V105 tmp83       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V106 tmp84       [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V107 tmp85       [V107    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V108 tmp86       [V108    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V109 tmp87       [V109    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V110 tmp88       [V110    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V111 tmp89       [V111    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V112 tmp90       [V112    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V113 tmp91       [V113    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V114 tmp92       [V114    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V115 tmp93       [V115    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V116 tmp94       [V116    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V117 tmp95       [V117    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V118 tmp96       [V118    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V119 tmp97       [V119    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V120 tmp98       [V120    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V121 tmp99       [V121    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V122 tmp100      [V122    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V123 tmp101      [V123    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V124 tmp102      [V124    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V125 tmp103      [V125    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V126 tmp104      [V126    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V127 tmp105      [V127    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V128 tmp106      [V128    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V129 tmp107      [V129    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V130 tmp108      [V130    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V131 tmp109      [V131    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V132 tmp110      [V132    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V133 tmp111      [V133    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V134 tmp112      [V134    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V135 tmp113      [V135    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V136 tmp114      [V136    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V137 tmp115      [V137    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V138 tmp116      [V138    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V139 tmp117      [V139    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V140 tmp118      [V140    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V141 tmp119      [V141    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V142 tmp120      [V142    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V143 tmp121      [V143    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V144 tmp122      [V144    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V145 tmp123      [V145    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V146 tmp124      [V146    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V147 tmp125      [V147    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V148 tmp126      [V148    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V149 tmp127      [V149    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V150 tmp128      [V150    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V151 tmp129      [V151    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V152 tmp130      [V152    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V153 tmp131      [V153    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V154 tmp132      [V154    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V155 tmp133      [V155    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V156 tmp134      [V156    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V157 tmp135      [V157    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V158 tmp136      [V158    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V159 tmp137      [V159    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V160 tmp138      [V160    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V161 tmp139      [V161    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V162 tmp140      [V162    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V163 tmp141      [V163    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V164 tmp142      [V164    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V165 tmp143      [V165    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V166 tmp144      [V166    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V167 tmp145      [V167    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V168 tmp146      [V168    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V169 tmp147      [V169    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V170 tmp148      [V170    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V171 tmp149      [V171    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V172 tmp150      [V172    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V173 tmp151      [V173    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V174 tmp152      [V174    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V175 tmp153      [V175    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V176 tmp154      [V176    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;* V177 tmp155      [V177    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[char]\u003E\n ;* V178 tmp156      [V178    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V179 tmp157      [V179    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V180 tmp158      [V180    ] (  3,  3   )  struct ( 8) [rbp-0x78]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V181 tmp159      [V181    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileReadProc\u003E\n ;* V182 tmp160      [V182    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileReadProc\u003E\n ;* V183 tmp161      [V183    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileTellProc\u003E\n ;* V184 tmp162      [V184    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileTellProc\u003E\n ;* V185 tmp163      [V185    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileFlushProc\u003E\n ;* V186 tmp164      [V186    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileSeek\u003E\n ;* V187 tmp165      [V187    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V188 tmp166      [V188    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V189 tmp167      [V189,T15] (  3,  4   )    long  -\u003E  r15         \u0022Single return block return value\u0022\n ;  V190 tmp168      [V190    ] (  3,  3   )  struct (16) [rbp-0x88]  do-not-enreg[XS] must-init addr-exposed \u0022Reverse Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;  V191 tmp169      [V191,T12] (  5,  5   )   byref  -\u003E  rbx         single-def \u0022field V05._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V192 tmp170      [V192    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V193 tmp171      [V193,T14] (  4,  4   )   byref  -\u003E  [rbp-0xB8]  spill-single-def ptr \u0022field V07._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V194 tmp172      [V194,T19] (  4,  3.50)     int  -\u003E  [rbp-0x8C]  spill-single-def ptr \u0022field V07._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V195 tmp173      [V195,T07] (  8,  6.50)   byref  -\u003E  r15         single-def \u0022field V08._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V196 tmp174      [V196    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V08._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V197 tmp175      [V197,T38] (  3,  1.50)    long  -\u003E  rbx         single-def \u0022field V16._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V198 tmp176      [V198    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V18._handle (fldOffset=0x0)\u0022 P-INDEP\n ;  V199 tmp177      [V199,T29] (  3,  2   )   byref  -\u003E  rax         \u0022field V19._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V200 tmp178      [V200,T35] (  3,  2   )     int  -\u003E  registers   ptr \u0022field V19._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V201 tmp179      [V201    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V26._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V202 tmp180      [V202    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V26._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V203 tmp181      [V203,T40] (  2,  1   )   byref  -\u003E  rax         single-def \u0022field V27._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V204 tmp182      [V204    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V27._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V205 tmp183      [V205    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V29._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V206 tmp184      [V206    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V29._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V207 tmp185      [V207    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V36._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V208 tmp186      [V208    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V36._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V209 tmp187      [V209    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V43._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V210 tmp188      [V210    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V48._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V211 tmp189      [V211    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V48._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V212 tmp190      [V212    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V49._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V213 tmp191      [V213    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V49._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V214 tmp192      [V214    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V53._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V215 tmp193      [V215    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V53._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V216 tmp194      [V216    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V56._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V217 tmp195      [V217    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V56._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V218 tmp196      [V218,T41] (  2,  1   )   byref  -\u003E   r8         single-def \u0022field V63._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V219 tmp197      [V219,T42] (  2,  1   )     int  -\u003E  rcx         single-def \u0022field V63._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V220 tmp198      [V220    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V65._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V221 tmp199      [V221    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V65._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V222 tmp200      [V222    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V66._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V223 tmp201      [V223    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V66._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V224 tmp202      [V224    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V70._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V225 tmp203      [V225    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V70._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V226 tmp204      [V226    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V73._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V227 tmp205      [V227    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V73._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V228 tmp206      [V228    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V76._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V229 tmp207      [V229    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V76._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V230 tmp208      [V230    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V77._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V231 tmp209      [V231    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V77._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V232 tmp210      [V232    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V85._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V233 tmp211      [V233    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V85._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V234 tmp212      [V234    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V86._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V235 tmp213      [V235    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V86._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V236 tmp214      [V236    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V87._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V237 tmp215      [V237    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V87._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V238 tmp216      [V238    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V88._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V239 tmp217      [V239    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V88._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V240 tmp218      [V240    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V92._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V241 tmp219      [V241    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V92._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V242 tmp220      [V242    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V93._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V243 tmp221      [V243    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V93._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V244 tmp222      [V244    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V97._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V245 tmp223      [V245    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V97._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V246 tmp224      [V246    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V98._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V247 tmp225      [V247    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V98._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V248 tmp226      [V248    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V99._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V249 tmp227      [V249    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V99._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V250 tmp228      [V250    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V100._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V251 tmp229      [V251    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V100._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V252 tmp230      [V252    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V101._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V253 tmp231      [V253    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V101._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V254 tmp232      [V254    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V105._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V255 tmp233      [V255    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V105._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V256 tmp234      [V256    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V106._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V257 tmp235      [V257    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V106._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V258 tmp236      [V258    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V110._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V259 tmp237      [V259    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V110._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V260 tmp238      [V260    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V111._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V261 tmp239      [V261    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V111._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V262 tmp240      [V262    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V112._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V263 tmp241      [V263    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V112._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V264 tmp242      [V264    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V113._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V265 tmp243      [V265    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V113._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V266 tmp244      [V266    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V114._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V267 tmp245      [V267    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V114._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V268 tmp246      [V268    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V118._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V269 tmp247      [V269    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V118._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V270 tmp248      [V270    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V119._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V271 tmp249      [V271    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V119._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V272 tmp250      [V272    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V123._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V273 tmp251      [V273    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V123._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V274 tmp252      [V274    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V124._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V275 tmp253      [V275    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V124._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V276 tmp254      [V276    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V125._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V277 tmp255      [V277    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V125._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V278 tmp256      [V278    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V126._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V279 tmp257      [V279    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V126._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V280 tmp258      [V280    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V127._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V281 tmp259      [V281    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V127._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V282 tmp260      [V282    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V131._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V283 tmp261      [V283    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V131._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V284 tmp262      [V284    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V132._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V285 tmp263      [V285    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V132._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V286 tmp264      [V286    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V136._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V287 tmp265      [V287    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V136._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V288 tmp266      [V288    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V137._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V289 tmp267      [V289    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V137._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V290 tmp268      [V290    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V138._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V291 tmp269      [V291    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V138._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V292 tmp270      [V292    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V139._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V293 tmp271      [V293    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V139._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V294 tmp272      [V294    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V140._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V295 tmp273      [V295    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V140._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V296 tmp274      [V296    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V144._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V297 tmp275      [V297    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V144._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V298 tmp276      [V298    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V145._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V299 tmp277      [V299    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V145._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V300 tmp278      [V300    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V149._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V301 tmp279      [V301    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V149._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V302 tmp280      [V302    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V150._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V303 tmp281      [V303    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V150._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V304 tmp282      [V304    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V151._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V305 tmp283      [V305    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V151._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V306 tmp284      [V306    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V152._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V307 tmp285      [V307    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V152._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V308 tmp286      [V308    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V153._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V309 tmp287      [V309    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V153._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V310 tmp288      [V310    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V157._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V311 tmp289      [V311    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V157._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V312 tmp290      [V312    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V158._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V313 tmp291      [V313    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V158._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V314 tmp292      [V314    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V162._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V315 tmp293      [V315    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V162._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V316 tmp294      [V316    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V163._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V317 tmp295      [V317    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V163._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V318 tmp296      [V318    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V164._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V319 tmp297      [V319    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V164._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V320 tmp298      [V320    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V165._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V321 tmp299      [V321    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V165._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V322 tmp300      [V322    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V166._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V323 tmp301      [V323    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V166._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V324 tmp302      [V324    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V170._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V325 tmp303      [V325    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V170._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V326 tmp304      [V326    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V171._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V327 tmp305      [V327    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V171._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V328 tmp306      [V328    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V175._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V329 tmp307      [V329    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V175._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V330 tmp308      [V330    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V176._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V331 tmp309      [V331    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V176._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V332 tmp310      [V332    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V177._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V333 tmp311      [V333    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V177._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V334 tmp312      [V334    ] (  3,  2.50)    long  -\u003E  [rbp-0x78]  do-not-enreg[X] addr-exposed \u0022field V180._handle (fldOffset=0x0)\u0022 P-DEP\n ;* V335 tmp313      [V335    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V181._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V336 tmp314      [V336    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V182._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V337 tmp315      [V337    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V183._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V338 tmp316      [V338    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V184._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V339 tmp317      [V339    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V185._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V340 tmp318      [V340    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V186._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V341 tmp319      [V341    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V187._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V342 tmp320      [V342    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[000..008)\u0022\n ;* V343 tmp321      [V343    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[008..016)\u0022\n ;* V344 tmp322      [V344    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[016..024)\u0022\n ;* V345 tmp323      [V345    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[024..032)\u0022\n ;* V346 tmp324      [V346    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[032..040)\u0022\n ;* V347 tmp325      [V347    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[040..048)\u0022\n ;* V348 tmp326      [V348    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V21.[048..056)\u0022\n ;  V349 tmp327      [V349,T04] (  4,  7   )    long  -\u003E  [rbp-0x98]  spill-single-def ptr \u0022Cast away GC\u0022\n ;  V350 tmp328      [V350,T05] (  4,  7   )    long  -\u003E  rbx         \u0022Cast away GC\u0022\n ;  V351 tmp329      [V351,T06] (  4,  7   )    long  -\u003E  [rbp-0xA0]  spill-single-def ptr \u0022Cast away GC\u0022\n ;  V352 cse0        [V352,T22] (  3,  3   )     ref  -\u003E  r12         \u0022CSE #01: moderate\u0022\n ;  V353 rat0        [V353    ] (  1,  1   )    long  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022GSSecurityCookie\u0022\n ;  V354 rat1        [V354,T10] (  3,  6   )    long  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n ;\n ; Lcl frame size = 168\n \n G_M44419_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 168\n        lea      rbp, [rsp\u002B0xD0]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x88], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu32 zmmword ptr [rbp-0x80], zmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        mov      rax, 0xD1FFAB1E\n        mov      qword ptr [rbp-0x30], rax\n        mov      r14, rdi\n        mov      rbx, rsi\n        mov      r15, rdx\n \t\t\t\t\t\t;; size=74 bbWeight=1 PerfScore 13.33\n G_M44419_IG02:\n        lea      rdi, [rbp-0x88]\n        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER\n        mov      rdx, qword ptr [r14\u002B0x10]\n        test     rdx, rdx\n        je       G_M44419_IG43\n        and      rdx, -2\n        mov      r14, gword ptr [rdx]\n        test     r14, r14\n        je       G_M44419_IG44\n \t\t\t\t\t\t;; size=41 bbWeight=1 PerfScore 8.25\n G_M44419_IG03:\n        mov      rdx, 0xD1FFAB1E      ; Silk.NET.Assimp.CustomFileIO\n        cmp      qword ptr [r14], rdx\n        jne      G_M44419_IG44\n \t\t\t\t\t\t;; size=19 bbWeight=0.50 PerfScore 1.62\n G_M44419_IG04:\n        mov      gword ptr [rbp-0xA8], r14\n        xor      r13d, r13d\n        cmp      byte  ptr [rbx], 0\n        je       SHORT G_M44419_IG06\n        align    [11 bytes for IG05]\n \t\t\t\t\t\t;; size=26 bbWeight=1 PerfScore 4.50\n G_M44419_IG05:\n        inc      r13d\n        movsxd   rdx, r13d\n        cmp      byte  ptr [rbx\u002Brdx], 0\n        jne      SHORT G_M44419_IG05\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 14.00\n G_M44419_IG06:\n        test     r13d, r13d\n        jl       G_M44419_IG45\n        mov      rdx, 0xD1FFAB1E      ; const ptr\n        mov      r12, gword ptr [rdx]\n        mov      gword ptr [rbp-0xB0], r12\n        mov      bword ptr [rbp-0x38], rbx\n        mov      r8, rbx\n        mov      qword ptr [rbp-0x98], r8\n        lea      rdx, [rbp-0x48]\n        lea      rcx, [rbp-0x50]\n        mov      rdi, r8\n        mov      esi, r13d\n        mov      r9, 0xD1FFAB1E      ; code for System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ptr,int,byref,byref):ptr\n        call     [r9]System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ptr,int,byref,byref):ptr\n        mov      rsi, qword ptr [rbp-0x98]\n        mov      ecx, eax\n        sub      ecx, esi\n        mov      eax, ecx\n        add      eax, dword ptr [rbp-0x48]\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      ecx, r13d\n        je       SHORT G_M44419_IG08\n \t\t\t\t\t\t;; size=94 bbWeight=1 PerfScore 16.50\n G_M44419_IG07:\n        mov      rdi, gword ptr [rbp-0xB0]\n        mov      edx, r13d\n        mov      r8, 0xD1FFAB1E      ; code for System.Text.Encoding:GetCharCountWithFallback(ptr,int,int):int:this\n        call     [r8]System.Text.Encoding:GetCharCountWithFallback(ptr,int,int):int:this\n        add      eax, dword ptr [rbp-0x3C]\n        mov      esi, eax\n        test     esi, esi\n        mov      dword ptr [rbp-0x3C], esi\n        jl       G_M44419_IG46\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.00\n G_M44419_IG08:\n        xor      rdx, rdx\n        mov      bword ptr [rbp-0x38], rdx\n        mov      eax, dword ptr [rbp-0x3C]\n        cmp      eax, 256\n        jg       SHORT G_M44419_IG12\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 3.50\n G_M44419_IG09:\n        mov      dword ptr [rbp-0x3C], eax\n        mov      esi, eax\n        mov      edi, 2\n        mov      rax, rsi\n        mul      rdx:rax, rdi\n        jb       G_M44419_IG50\n        test     rax, rax\n        je       SHORT G_M44419_IG11\n        add      rax, 15\n        shr      rax, 4\n        add      rsp, 16\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.00\n G_M44419_IG10:\n        push     0\n        push     0\n        dec      rax\n        jne      SHORT G_M44419_IG10\n        sub      rsp, 16\n        lea      rax, [rsp\u002B0x10]\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.00\n G_M44419_IG11:\n        mov      esi, dword ptr [rbp-0x3C]\n        test     esi, esi\n        jl       G_M44419_IG45\n        mov      ecx, esi\n        mov      r10d, ecx\n        jmp      SHORT G_M44419_IG13\n        align    [0 bytes for IG18]\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.38\n G_M44419_IG12:\n        mov      esi, eax\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        call     CORINFO_HELP_NEWARR_1_VC\n        lea      r8, bword ptr [rax\u002B0x10]\n        mov      ecx, dword ptr [rax\u002B0x08]\n        mov      rax, r8\n        mov      r10d, ecx\n \t\t\t\t\t\t;; size=30 bbWeight=0.50 PerfScore 2.25\n G_M44419_IG13:\n        mov      bword ptr [rbp-0xB8], rax\n        mov      dword ptr [rbp-0x8C], r10d\n        mov      bword ptr [rbp-0x58], rbx\n        mov      bword ptr [rbp-0x60], rax\n        mov      r11, rax\n        mov      qword ptr [rbp-0xA0], r11\n        lea      r8, [rbp-0x68]\n        lea      r9, [rbp-0x70]\n        mov      rdi, rbx\n        mov      esi, r13d\n        mov      rdx, r11\n        mov      ecx, r10d\n        mov      r14, 0xD1FFAB1E      ; code for System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ptr,int,ptr,int,byref,byref):int\n        call     [r14]System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ptr,int,ptr,int,byref,byref):int\n        mov      r9d, dword ptr [rbp-0x68]\n        sub      r9d, ebx\n        mov      rdi, qword ptr [rbp-0x70]\n        mov      r14, qword ptr [rbp-0xA0]\n        sub      rdi, r14\n        mov      rsi, rdi\n        shr      rsi, 63\n        add      rdi, rsi\n        sar      rdi, 1\n        cmp      r9d, r13d\n        je       SHORT G_M44419_IG15\n \t\t\t\t\t\t;; size=104 bbWeight=1 PerfScore 16.75\n G_M44419_IG14:\n        mov      dword ptr [rsp], edi\n        mov      dword ptr [rsp\u002B0x08], 1\n        mov      rdi, r12\n        mov      rsi, rbx\n        mov      edx, r13d\n        mov      rcx, r14\n        mov      r8d, dword ptr [rbp-0x8C]\n        mov      rax, 0xD1FFAB1E      ; code for System.Text.Encoding:GetCharsWithFallback(ptr,int,ptr,int,int,int,bool):int:this\n        call     [rax]System.Text.Encoding:GetCharsWithFallback(ptr,int,ptr,int,int,int,bool):int:this\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 3.62\n G_M44419_IG15:\n        xor      rdi, rdi\n        mov      bword ptr [rbp-0x58], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=1 PerfScore 1.25\n G_M44419_IG16:\n        mov      bword ptr [rbp-0x60], rdi\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.00\n G_M44419_IG17:\n        xor      r13d, r13d\n        cmp      byte  ptr [r15], 0\n        je       SHORT G_M44419_IG19\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.25\n G_M44419_IG18:\n        inc      r13d\n        movsxd   rdi, r13d\n        cmp      byte  ptr [r15\u002Brdi], 0\n        jne      SHORT G_M44419_IG18\n \t\t\t\t\t\t;; size=13 bbWeight=4 PerfScore 14.00\n G_M44419_IG19:\n        test     r13d, r13d\n        jl       G_M44419_IG45\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 43\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      ebx, eax\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 119\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG21\n \t\t\t\t\t\t;; size=61 bbWeight=1 PerfScore 10.75\n G_M44419_IG20:\n        mov      r14d, 1\n        jmp      SHORT G_M44419_IG22\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG21:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 87\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      r14d, eax\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.12\n G_M44419_IG22:\n        movzx    r14, r14b\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 114\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG24\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 5.50\n G_M44419_IG23:\n        mov      r12d, 1\n        jmp      SHORT G_M44419_IG25\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG24:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 82\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      r12d, eax\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.12\n G_M44419_IG25:\n        movzx    r12, r12b\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 97\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG27\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 5.50\n G_M44419_IG26:\n        mov      eax, 1\n        jmp      SHORT G_M44419_IG28\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG27:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 65\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M44419_IG28:\n        movzx    r15, al\n        test     ebx, ebx\n        je       SHORT G_M44419_IG30\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 1.50\n G_M44419_IG29:\n        mov      ecx, 3\n        jmp      SHORT G_M44419_IG32\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG30:\n        mov      ecx, r14d\n        or       ecx, r15d\n        je       SHORT G_M44419_IG31\n        mov      ecx, 2\n        jmp      SHORT G_M44419_IG32\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 1.88\n G_M44419_IG31:\n        test     r12d, r12d\n        je       G_M44419_IG47\n        mov      ecx, 1\n \t\t\t\t\t\t;; size=14 bbWeight=0.50 PerfScore 0.75\n G_M44419_IG32:\n        test     r15d, r15d\n        je       SHORT G_M44419_IG34\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 1.25\n G_M44419_IG33:\n        test     ebx, ebx\n        jne      SHORT G_M44419_IG34\n        mov      r8d, 6\n        jmp      SHORT G_M44419_IG36\n \t\t\t\t\t\t;; size=12 bbWeight=0.50 PerfScore 1.75\n G_M44419_IG34:\n        or       r12d, r15d\n        je       SHORT G_M44419_IG35\n        mov      r8d, 3\n        jmp      SHORT G_M44419_IG36\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.75\n G_M44419_IG35:\n        test     r14d, r14d\n        je       G_M44419_IG48\n        mov      r8d, 2\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 0.75\n G_M44419_IG36:\n        mov      r14, gword ptr [rbp-0xA8]\n        mov      rax, gword ptr [r14\u002B0x08]\n        mov      rsi, bword ptr [rbp-0xB8]\n        mov      edx, dword ptr [rbp-0x8C]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]Silk.NET.Assimp.OpenFileCustomIOCallback:Invoke(System.ReadOnlySpan\u00601[char],int,int):System.IO.Stream:this\n        mov      r14, rax\n        test     r14, r14\n        je       G_M44419_IG39\n \t\t\t\t\t\t;; size=43 bbWeight=1 PerfScore 11.50\n G_M44419_IG37:\n        test     r15d, ebx\n        je       SHORT G_M44419_IG38\n        mov      rdi, r14\n        xor      esi, esi\n        mov      edx, 2\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x68]\n        call     [rax]System.IO.Stream:Seek(long,int):long:this\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.50\n G_M44419_IG38:\n        xor      edi, edi\n        mov      qword ptr [rbp-0x78], rdi\n        lea      rdi, [rbp-0x78]\n        mov      rsi, r14\n        mov      edx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this\n        call     [rax]System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this\n        mov      rbx, qword ptr [rbp-0x78]\n        test     rbx, rbx\n        je       G_M44419_IG49\n        mov      edi, 56\n        mov      rax, 0xD1FFAB1E      ; code for Silk.NET.Core.Native.GlobalMemory:Allocate(int):Silk.NET.Core.Native.GlobalMemory\n        call     [rax]Silk.NET.Core.Native.GlobalMemory:Allocate(int):Silk.NET.Core.Native.GlobalMemory\n        mov      rdi, rax\n        mov      rax, 0xD1FFAB1E      ; code for Silk.NET.Core.Native.SilkMarshal:RegisterMemory(Silk.NET.Core.Native.GlobalMemory):nint\n        call     [rax]Silk.NET.Core.Native.SilkMarshal:RegisterMemory(Silk.NET.Core.Native.GlobalMemory):nint\n        mov      r15, rax\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [r15], ymm0\n        vmovups  xmm0, xmmword ptr [reloc @RWD32]\n        vmovups  xmmword ptr [r15\u002B0x20], xmm0\n        mov      qword ptr [r15\u002B0x30], rbx\n        jmp      SHORT G_M44419_IG40\n \t\t\t\t\t\t;; size=111 bbWeight=0.50 PerfScore 11.50\n G_M44419_IG39:\n        xor      r15d, r15d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M44419_IG40:\n        lea      rdi, [rbp-0x88]\n        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT\n        mov      rax, r15\n        mov      r9, 0xD1FFAB1E\n        cmp      qword ptr [rbp-0x30], r9\n        je       SHORT G_M44419_IG41\n        call     CORINFO_HELP_FAIL_FAST\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 5.00\n G_M44419_IG41:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M44419_IG42:\n        vzeroupper \n        lea      rsp, [rbp-0x28]\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 5.50\n G_M44419_IG43:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        call     [rax]System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG44:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid UserData for FileIO.\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M44419_IG45:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG46:\n        mov      rax, 0xD1FFAB1E      ; code for System.Text.Encoding:ThrowConversionOverflow()\n        call     [rax]System.Text.Encoding:ThrowConversionOverflow()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG47:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid mode, must have \u0027r\u0027, \u0027w\u0027, \u0027a\u0027, or \u0027\u002B\u0027 set.\u0027\n        mov      rdx, 0xD1FFAB1E      ; \u0027pMode\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=62 bbWeight=0 PerfScore 0.00\n G_M44419_IG48:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid mode\u0027\n        mov      rdx, 0xD1FFAB1E      ; \u0027pMode\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=62 bbWeight=0 PerfScore 0.00\n G_M44419_IG49:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      r15, rax\n        mov      rdi, r15\n        mov      rsi, 0xD1FFAB1E      ; \u0027Failed to allocate GCHandle.\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, r15\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M44419_IG50:\n        call     CORINFO_HELP_OVERFLOW\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t000079AA7D740A20h, 000079AA7D740A38h, 000079AA7D740A68h, 000079AA7D740A50h\n-RWD32  \tdq\t000079AA7D740A98h, 000079AA7D740A80h\n\u002BRWD00  \tdq\t00007BE5D0D40A20h, 00007BE5D0D40A38h, 00007BE5D0D40A68h, 00007BE5D0D40A50h\n\u002BRWD32  \tdq\t00007BE5D0D40A98h, 00007BE5D0D40A80h\n \n \n ; Total bytes of code 1423, prolog size 74, PerfScore 196.71, instruction count 341, allocated bytes for code 1423 (MethodHash=5738527c) for method Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1423,"DiffBytes":1423},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Threading.WaitSubsystem:.cctor() (FullOpts)","Category":"regression","Description":"70 -\u003E 72 bytes (\u002B2)","ExtraInfo":null,"Diff":"@@ -1,43 \u002B1,26 @@\n ; Assembly listing for method System.Threading.WaitSubsystem:.cctor() (FullOpts)\n-; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n-; FullOpts code\n-; optimized code\n\u002B\t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.25\n\u002BG_M6161_IG05:\n\u002B; Emitting        mov      rax, 0xD1FFAB1EBLENDED_CODE for x64      ; code for System.Globalization.CultureInfo:set_CurrentUICulture(System.Globalization.CultureInfo)\n\u002B \u002B VEX \u002B EVEX on Unix\n\u002B      ; FullOpts code\n\u002B call     ; optimized code\n ; rsp based frame\n ; partially interruptible\n-; No PGO data\n-; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data\n-; Final local variable assignments\n-;\n-;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V01 tmp1         [V01,T00] (  3,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Threading.LowLevelLock\u003E\n-;* V02 tmp2         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Threading.LowLevelThreadBlocker\u003E\n-;  V03 tmp3         [V03,T01] (  3,  3   )    long  -\u003E  rax         \u0022field V02._pState (fldOffset=0x0)\u0022 P-INDEP\n-;\n-; Lcl frame size = 0\n\u002B[; No PGO data\n\u002Brax]; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data\n\u002BSystem.Globalization.CultureInfo:set_CurrentUICulture(System.Globalization.CultureInfo)\n\u002B       xor      rax, rax\n\u002B       mov      gword ptr [rbx\u002B0x20], rax\n\u002B\t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.25; Final\n\u002BG_M6161_IG06: local variable assignments\n \n-G_M50791_IG01:\n-       push     rbx\n-\t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n-G_M50791_IG02:\n-       mov      rdi, 0xD1FFAB1E      ; System.Threading.LowLevelLock\n-       call     CORINFO_HELP_NEWFAST\n-       mov      rbx, rax\n-       mov      edi, 64\n-       mov      esi, 64\n-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:AlignedAlloc(nuint,nuint):ptr\n-       call     [rax]System.Runtime.InteropServices.NativeMemory:AlignedAlloc(nuint,nuint):ptr\n-       xor      edi, edi\n-       mov      dword ptr [rax], edi\n-       mov      qword ptr [rbx\u002B0x10], rax\n-       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.WaitSubsystem:s_lock\n-       mov      rsi, rbx\n-       call     CORINFO_HELP_ASSIGN_REF\n-       nop      \n-\t\t\t\t\t\t;; size=67 bbWeight=1 PerfScore 9.25\n-G_M50791_IG03:\n-       pop      rbx\n-       ret      \n-\t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 1.50\n\u002B;\n\u002B       add      rsp, 8\n\u002B      ;#  pop      rbx\n\u002BV00 OutArgs       pop            rbp\n\u002B[V00    ]       ret      \n\u002B (  1,  1   )  struct \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n \n-; Total bytes of code 70, prolog size 1, PerfScore 11.75, instruction count 17, allocated bytes for code 70 (MethodHash=494b3998) for method System.Threading.WaitSubsystem:.cctor() (FullOpts)\n\u002B; Total bytes of code 72, prolog size 8, PerfScore 17.00, instruction count 23, allocated bytes for code 72 (MethodHash=f28fe7ee) for method System.Threading.Thread\u002BStartHelper:InitializeCulture():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":70,"DiffBytes":72},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)","Category":"same-size","Description":"79 -\u003E 79 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,76 \u002B1,76 @@\n ; Assembly listing for method System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 32 single block inlinees; 0 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 RetBuf       [V00,T00] (  7,  7   )    long  -\u003E  rdi         single-def\n ;* V01 loc0         [V01    ] (  0,  0   )  struct (256) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSystem.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable\u003E\n ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V03 tmp1         [V03    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[000..008)\u0022\n ;* V04 tmp2         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[008..016)\u0022\n ;* V05 tmp3         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[016..024)\u0022\n ;* V06 tmp4         [V06    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[024..032)\u0022\n ;* V07 tmp5         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[032..040)\u0022\n ;* V08 tmp6         [V08    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[040..048)\u0022\n ;* V09 tmp7         [V09    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[048..056)\u0022\n ;* V10 tmp8         [V10    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[056..064)\u0022\n ;* V11 tmp9         [V11    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[064..072)\u0022\n ;* V12 tmp10        [V12    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[072..080)\u0022\n ;* V13 tmp11        [V13    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[080..088)\u0022\n ;* V14 tmp12        [V14    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[088..096)\u0022\n ;* V15 tmp13        [V15    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[096..104)\u0022\n ;* V16 tmp14        [V16    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[104..112)\u0022\n ;* V17 tmp15        [V17    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[112..120)\u0022\n ;* V18 tmp16        [V18    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[120..128)\u0022\n ;* V19 tmp17        [V19    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[128..136)\u0022\n ;* V20 tmp18        [V20    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[136..144)\u0022\n ;* V21 tmp19        [V21    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[144..152)\u0022\n ;* V22 tmp20        [V22    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[152..160)\u0022\n ;* V23 tmp21        [V23    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[160..168)\u0022\n ;* V24 tmp22        [V24    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[168..176)\u0022\n ;* V25 tmp23        [V25    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[176..184)\u0022\n ;* V26 tmp24        [V26    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[184..192)\u0022\n ;* V27 tmp25        [V27    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[192..200)\u0022\n ;* V28 tmp26        [V28    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[200..208)\u0022\n ;* V29 tmp27        [V29    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[208..216)\u0022\n ;* V30 tmp28        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[216..224)\u0022\n ;* V31 tmp29        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[224..232)\u0022\n ;* V32 tmp30        [V32    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[232..240)\u0022\n ;* V33 tmp31        [V33    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[240..248)\u0022\n ;* V34 tmp32        [V34    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[248..256)\u0022\n ;\n ; Lcl frame size = 0\n \n G_M36615_IG01:\n        push     rbp\n        mov      rbp, rsp\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.25\n G_M36615_IG02:\n        vmovups  zmm0, zmmword ptr [reloc @RWD00]\n        vmovups  zmmword ptr [rdi], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD64]\n        vmovups  zmmword ptr [rdi\u002B0x40], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD128]\n        vmovups  zmmword ptr [rdi\u002B0x80], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD192]\n        vmovups  zmmword ptr [rdi\u002B0xC0], zmm0\n        mov      rax, rdi\n \t\t\t\t\t\t;; size=70 bbWeight=1 PerfScore 20.25\n G_M36615_IG03:\n        vzeroupper \n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 2.50\n-RWD00  \tdq\t00007C3CA11116B0h, 00007C3CA11116C8h, 00007C3CA11116E0h, 00007C3CA11116F8h, 00007C3CA1111710h, 00007C3CA1111728h, 00007C3CA1111740h, 00007C3CA1111758h\n-RWD64  \tdq\t00007C3CA1111770h, 00007C3CA1111788h, 00007C3CA11117A0h, 00007C3CA11117B8h, 00007C3CA11117D0h, 00007C3CA11117E8h, 00007C3CA1111800h, 00007C3CA1111818h\n-RWD128 \tdq\t00007C3CA1111830h, 00007C3CA1111848h, 00007C3CA1111860h, 00007C3CA1111878h, 00007C3CA1111890h, 00007C3CA11118A8h, 00007C3CA11118C0h, 00007C3CA11118D8h\n-RWD192 \tdq\t00007C3CA11118F0h, 00007C3CA1111908h, 00007C3CA1111920h, 00007C3CA1111938h, 00007C3CA1111950h, 00007C3CA1111968h, 00007C3CA1111980h, 00007C3CA1111998h\n\u002BRWD00  \tdq\t000079B478B116B0h, 000079B478B116C8h, 000079B478B116E0h, 000079B478B116F8h, 000079B478B11710h, 000079B478B11728h, 000079B478B11740h, 000079B478B11758h\n\u002BRWD64  \tdq\t000079B478B11770h, 000079B478B11788h, 000079B478B117A0h, 000079B478B117B8h, 000079B478B117D0h, 000079B478B117E8h, 000079B478B11800h, 000079B478B11818h\n\u002BRWD128 \tdq\t000079B478B11830h, 000079B478B11848h, 000079B478B11860h, 000079B478B11878h, 000079B478B11890h, 000079B478B118A8h, 000079B478B118C0h, 000079B478B118D8h\n\u002BRWD192 \tdq\t000079B478B118F0h, 000079B478B11908h, 000079B478B11920h, 000079B478B11938h, 000079B478B11950h, 000079B478B11968h, 000079B478B11980h, 000079B478B11998h\n \n \n ; Total bytes of code 79, prolog size 4, PerfScore 24.00, instruction count 14, allocated bytes for code 79 (MethodHash=14f070f8) for method System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":79,"DiffBytes":79},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)","Category":"improvement","Description":"1,891 -\u003E 1,737 bytes (-154)","ExtraInfo":null,"Diff":"@@ -1,744 \u002B1,720 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 46 single block inlinees; 21 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 24, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 arg1         [V01,T17] (  3,  3   )     int  -\u003E  rsi         single-def\n\u002B;  V01 arg1         [V01,T18] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T02] ( 23, 11.50)     int  -\u003E  rsi         single-def\n-;  V05 loc2         [V05,T01] ( 24, 12   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IHasCustomAttribute\u003E\n-;  V06 loc3         [V06,T48] (  5,  2.48)   ubyte  -\u003E  r13         single-def\n\u002B;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n\u002B;  V04 loc1         [V04,T03] ( 23, 11.50)     int  -\u003E  rsi         single-def\n\u002B;  V05 loc2         [V05,T02] ( 24, 12   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IHasCustomAttribute\u003E\n\u002B;  V06 loc3         [V06,T49] (  5,  2.48)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T59] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T60] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V10 tmp3         [V10,T49] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V11 tmp4         [V11,T03] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V12 tmp5         [V12,T11] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n-;  V13 tmp6         [V13,T50] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V08 tmp1         [V08,T66] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T67] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V10 tmp3         [V10,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V11 tmp4         [V11,T05] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V12 tmp5         [V12,T12] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n\u002B;  V13 tmp6         [V13,T51] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V15 tmp8         [V15,T19] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V16 tmp9         [V16,T64] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp8         [V15,T60] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V16 tmp9         [V16,T71] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V17 tmp10        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V18 tmp11        [V18,T51] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V19 tmp12        [V19,T04] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V20 tmp13        [V20,T12] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V21 tmp14        [V21,T47] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V18 tmp11        [V18,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V19 tmp12        [V19,T06] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp13        [V20,T13] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V21 tmp14        [V21,T48] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V22 tmp15        [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V23 tmp16        [V23,T20] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V23 tmp16        [V23,T61] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V24 tmp17        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V25 tmp18        [V25,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V26 tmp19        [V26,T05] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V27 tmp20        [V27,T13] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V28 tmp21        [V28,T53] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V25 tmp18        [V25,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V26 tmp19        [V26,T07] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V27 tmp20        [V27,T14] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V28 tmp21        [V28,T54] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V29 tmp22        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V30 tmp23        [V30,T21] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V31 tmp24        [V31,T65] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V30 tmp23        [V30,T62] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V31 tmp24        [V31,T72] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V32 tmp25        [V32    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V33 tmp26        [V33,T54] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V34 tmp27        [V34,T06] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V35 tmp28        [V35,T14] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V36 tmp29        [V36,T18] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V33 tmp26        [V33,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V34 tmp27        [V34,T08] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V35 tmp28        [V35,T15] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n\u002B;  V36 tmp29        [V36,T19] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V37 tmp30        [V37    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V38 tmp31        [V38,T22] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V39 tmp32        [V39    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V40 tmp33        [V40,T66] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V41 tmp34        [V41,T61] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V38 tmp31        [V38,T63] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V39 tmp32        [V39    ] (  7,  3.50)  struct ( 8) [rbp-0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V40 tmp33        [V40,T73] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V41 tmp34        [V41,T68] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V42 tmp35        [V42    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V43 tmp36        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V44 tmp37        [V44,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V45 tmp38        [V45,T07] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V46 tmp39        [V46,T15] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n-;  V47 tmp40        [V47,T56] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V44 tmp37        [V44,T56] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V45 tmp38        [V45,T04] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp39        [V46,T16] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n\u002B;  V47 tmp40        [V47,T57] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V48 tmp41        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V49 tmp42        [V49,T23] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V49 tmp42        [V49,T64] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V50 tmp43        [V50    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n-;  V51 tmp44        [V51,T45] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n-;  V52 tmp45        [V52,T46] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n-;  V53 tmp46        [V53    ] (  7,  3.50)  struct ( 8) [rbp-0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V54 tmp47        [V54,T63] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V55 tmp48        [V55,T62] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V51 tmp44        [V51,T46] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n\u002B;  V52 tmp45        [V52,T47] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n\u002B;  V53 tmp46        [V53    ] (  7,  3.50)  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V54 tmp47        [V54,T70] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V55 tmp48        [V55,T69] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V56 tmp49        [V56    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V57 tmp50        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V58 tmp51        [V58,T57] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V59 tmp52        [V59,T08] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V60 tmp53        [V60,T16] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n-;  V61 tmp54        [V61,T58] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V58 tmp51        [V58,T58] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V59 tmp52        [V59,T09] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V60 tmp53        [V60,T17] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n\u002B;  V61 tmp54        [V61,T59] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V62 tmp55        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V63 tmp56        [V63,T24] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V64 tmp57        [V64,T67] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V63 tmp56        [V63,T65] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V64 tmp57        [V64,T74] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V65 tmp58        [V65    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V66 tmp59        [V66,T09] (  7,  4   )     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V67 tmp60        [V67,T10] (  7,  4   )     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V68 tmp61        [V68    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V39.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V69 tmp62        [V69    ] (  7,  3.50)     int  -\u003E  [rbp-0x38]  do-not-enreg[X] addr-exposed \u0022field V53.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V70 tmp63        [V70,T25] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V71 tmp64        [V71,T26] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V72 tmp65        [V72,T27] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V73 tmp66        [V73,T28] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V74 tmp67        [V74,T29] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V75 tmp68        [V75,T30] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V76 tmp69        [V76,T31] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp70        [V77,T32] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V78 tmp71        [V78,T33] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V79 tmp72        [V79,T34] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V80 tmp73        [V80,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V81 tmp74        [V81,T36] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V82 rat0         [V82,T44] (  3,  2.83)     int  -\u003E  rdx         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V83 rat1         [V83,T43] (  3,  2.93)     int  -\u003E  r13         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V84 rat2         [V84,T37] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V85 rat3         [V85,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V86 rat4         [V86,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V87 rat5         [V87,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V88 rat6         [V88,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V89 rat7         [V89,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V66 tmp59        [V66,T10] (  7,  4   )     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V67 tmp60        [V67,T11] (  7,  4   )     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V68 tmp61        [V68    ] (  7,  3.50)     int  -\u003E  [rbp-0x38]  do-not-enreg[X] addr-exposed \u0022field V39.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V69 tmp62        [V69    ] (  7,  3.50)     int  -\u003E  [rbp-0x40]  do-not-enreg[X] addr-exposed \u0022field V53.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V70 tmp63        [V70,T20] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp64        [V71,T21] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V72 tmp65        [V72,T22] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V73 tmp66        [V73,T23] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V74 tmp67        [V74,T24] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp68        [V75,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp69        [V76,T26] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp70        [V77,T27] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp71        [V78,T28] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V79 tmp72        [V79,T29] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V80 tmp73        [V80,T30] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V81 tmp74        [V81,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V82 tmp75        [V82,T32] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V83 tmp76        [V83,T33] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V84 tmp77        [V84,T34] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V85 tmp78        [V85,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V86 tmp79        [V86,T36] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V87 tmp80        [V87,T37] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V88 cse0         [V88,T01] ( 25, 12.50)    long  -\u003E  r12         multi-def \u0022CSE #02: aggressive\u0022\n\u002B;  V89 rat0         [V89,T45] (  3,  2.83)     int  -\u003E  rdx         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V90 rat1         [V90,T44] (  3,  2.93)     int  -\u003E  r13         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V91 rat2         [V91,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V92 rat3         [V92,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V93 rat4         [V93,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V94 rat5         [V94,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V95 rat6         [V95,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V96 rat7         [V96,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 32\n\u002B; Lcl frame size = 24\n \n G_M58568_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n\u002B       push     r12\n        push     rbx\n-       sub      rsp, 32\n\u002B       sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        vxorps   xmm8, xmm8, xmm8\n-       vmovdqu  xmmword ptr [rbp-0x38], xmm8\n\u002B       vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        xor      eax, eax\n-       mov      qword ptr [rbp-0x28], rax\n\u002B       mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n-\t\t\t\t\t\t;; size=42 bbWeight=1 PerfScore 9.08\n\u002B\t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M58568_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n-       lea      rdx, [rbp-0x28]\n\u002B       lea      rdx, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       SHORT G_M58568_IG07\n \t\t\t\t\t\t;; size=33 bbWeight=1 PerfScore 7.25\n G_M58568_IG03:\n-       mov      esi, dword ptr [rbp-0x28]\n\u002B       mov      esi, dword ptr [rbp-0x30]\n        and      esi, 0xD1FFAB1E\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 20\n        ja       G_M58568_IG32\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG04:\n        mov      edi, r13d\n        lea      rax, [reloc @RWD00]\n        mov      eax, dword ptr [rax\u002B4*rdi]\n        lea      rcx, G_M58568_IG02\n        add      rax, rcx\n        jmp      rax\n \t\t\t\t\t\t;; size=25 bbWeight=0.48 PerfScore 2.86\n G_M58568_IG05:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG06:\n-       add      rsp, 32\n\u002B       add      rsp, 24\n        pop      rbx\n\u002B       pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG08:\n-       add      rsp, 32\n\u002B       add      rsp, 24\n        pop      rbx\n\u002B       pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x1B0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      SHORT G_M58568_IG06\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG10:\n        mov      rbx, gword ptr [rbx\u002B0x1A8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG13\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG11\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG12\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG14\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG12:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG14\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG13:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG14:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG15:\n        mov      rdi, gword ptr [rbx\u002B0x198]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG16:\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG19\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG17\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG18\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=143 bbWeight=0.50 PerfScore 18.75\n\u002B\t\t\t\t\t\t;; size=121 bbWeight=0.50 PerfScore 18.12\n G_M58568_IG17:\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdx\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG20\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG18:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG20\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG19:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG20:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG21:\n        mov      rbx, gword ptr [rbx\u002B0x180]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG24\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG22\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG23\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG22:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG25\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG23:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG25\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG24:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG25:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG26:\n        mov      rdi, gword ptr [rbx\u002B0x178]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG27:\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG28:\n        mov      rdi, gword ptr [rbx\u002B0x168]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG29:\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG30:\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG31:\n        mov      rdi, gword ptr [rbx\u002B0x150]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG32:\n        lea      edx, [r13-0x17]\n        cmp      edx, 4\n        ja       G_M58568_IG43\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 0.88\n G_M58568_IG33:\n        mov      edx, edx\n        lea      rcx, [reloc @RWD84]\n        mov      ecx, dword ptr [rcx\u002B4*rdx]\n        lea      rdi, G_M58568_IG02\n        add      rcx, rdi\n        jmp      rcx\n \t\t\t\t\t\t;; size=24 bbWeight=0.42 PerfScore 2.50\n G_M58568_IG34:\n        mov      rbx, gword ptr [rbx\u002B0x1C8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG39\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      G_M58568_IG37\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x30], edi\n-       cmp      dword ptr [rbp-0x30], 100\n\u002B       mov      dword ptr [rbp-0x38], edi\n\u002B       cmp      dword ptr [rbp-0x38], 100\n        jge      SHORT G_M58568_IG36\n-       mov      edi, dword ptr [rbp-0x30]\n\u002B       mov      edi, dword ptr [rbp-0x38]\n        inc      edi\n-       mov      dword ptr [rbp-0x30], edi\n\u002B       mov      dword ptr [rbp-0x38], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M58568_IG35\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=118 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG35:\n        mov      rsi, gword ptr [r15\u002B0x10]\n-       lea      rdi, [rbp-0x30]\n\u002B       lea      rdi, [rbp-0x38]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n-       mov      edi, dword ptr [rbp-0x30]\n\u002B       mov      edi, dword ptr [rbp-0x38]\n        dec      edi\n-       mov      dword ptr [rbp-0x30], edi\n\u002B       mov      dword ptr [rbp-0x38], edi\n        test     eax, eax\n        jne      SHORT G_M58568_IG38\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M58568_IG36:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 3.75\n G_M58568_IG37:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG40\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG38:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG40\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG39:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG40:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG41:\n        mov      rdi, gword ptr [rbx\u002B0x1C0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG42:\n        mov      rdi, gword ptr [rbx\u002B0x1B8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG43:\n        add      r13d, -32\n        cmp      r13d, 12\n        ja       G_M58568_IG05\n \t\t\t\t\t\t;; size=14 bbWeight=0.50 PerfScore 0.75\n G_M58568_IG44:\n        mov      edx, r13d\n        lea      rcx, [reloc @RWD104]\n        mov      ecx, dword ptr [rcx\u002B4*rdx]\n        lea      rdi, G_M58568_IG02\n        add      rcx, rdi\n        jmp      rcx\n \t\t\t\t\t\t;; size=25 bbWeight=0.46 PerfScore 2.79\n G_M58568_IG45:\n        mov      rbx, gword ptr [rbx\u002B0x210]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG48\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG46\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG47\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG46:\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdx\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG49\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG47:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG49\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG48:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG49:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG50:\n        mov      rbx, gword ptr [rbx\u002B0x208]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG57\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      G_M58568_IG56\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rsi, gword ptr [r15\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M58568_IG53\n \t\t\t\t\t\t;; size=83 bbWeight=0.50 PerfScore 12.62\n G_M58568_IG51:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M58568_IG53\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M58568_IG52:\n        jmp      SHORT G_M58568_IG54\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M58568_IG53:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M58568_IG54:\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        test     rsi, rsi\n        je       SHORT G_M58568_IG55\n-       cmp      dword ptr [rbp-0x38], 100\n\u002B       cmp      dword ptr [rbp-0x40], 100\n        jge      SHORT G_M58568_IG55\n-       mov      edi, dword ptr [rbp-0x38]\n\u002B       mov      edi, dword ptr [rbp-0x40]\n        inc      edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n-       lea      rdi, [rbp-0x38]\n\u002B       lea      rdi, [rbp-0x40]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n-       mov      edi, dword ptr [rbp-0x38]\n\u002B       mov      edi, dword ptr [rbp-0x40]\n        dec      edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        test     eax, eax\n        je       SHORT G_M58568_IG55\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG58\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M58568_IG55:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M58568_IG56:\n-       mov      rax, gword ptr [rbx\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG58\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG57:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG58:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG59:\n        mov      rdi, gword ptr [rbx\u002B0x200]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG60:\n        mov      rdi, gword ptr [rbx\u002B0x1F8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG61:\n        mov      rdi, gword ptr [rbx\u002B0x1F0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG62:\n        mov      rdi, gword ptr [rbx\u002B0x1E8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG63:\n        mov      rdi, gword ptr [rbx\u002B0x1E0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG64:\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG65:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M58568_IG66:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M58568_IG31 - G_M58568_IG02\n        \tdd\tG_M58568_IG30 - G_M58568_IG02\n        \tdd\tG_M58568_IG29 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG28 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG27 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG26 - G_M58568_IG02\n        \tdd\tG_M58568_IG21 - G_M58568_IG02\n        \tdd\tG_M58568_IG16 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG15 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG10 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG09 - G_M58568_IG02\n RWD84  \tdd\tG_M58568_IG42 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG41 - G_M58568_IG02\n        \tdd\tG_M58568_IG34 - G_M58568_IG02\n RWD104 \tdd\tG_M58568_IG64 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG63 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG62 - G_M58568_IG02\n        \tdd\tG_M58568_IG61 - G_M58568_IG02\n        \tdd\tG_M58568_IG60 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG59 - G_M58568_IG02\n        \tdd\tG_M58568_IG50 - G_M58568_IG02\n        \tdd\tG_M58568_IG45 - G_M58568_IG02\n \n \n-; Total bytes of code 1891, prolog size 33, PerfScore 277.23, instruction count 466, allocated bytes for code 1891 (MethodHash=d1671b37) for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n\u002B; Total bytes of code 1737, prolog size 35, PerfScore 274.36, instruction count 437, allocated bytes for code 1737 (MethodHash=d1671b37) for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1891,"DiffBytes":1737},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)","Category":"same-size","Description":"167 -\u003E 167 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,73 \u002B1,73 @@\n ; Assembly listing for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Runtime.CompilerServices.ResumeInfo\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V02 tmp1         [V02,T00] (  4,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Threading.SendOrPostCallback\u003E\n ;  V03 tmp2         [V03,T01] (  3,  6   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CSystem.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.Resume (fldOffset=0x0)\u0022 P-INDEP\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.DiagnosticIP (fldOffset=0x8)\u0022 P-INDEP\n ;  V06 cse0         [V06,T02] (  2,  2   )    long  -\u003E  rdi         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 8\n \n G_M63124_IG01:\n        push     rbp\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x10]\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 3.50\n G_M63124_IG02:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:ResumeInfo\n        vmovsd   xmm0, qword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rdi], xmm0\n        mov      rdi, 0xD1FFAB1E      ; System.Threading.SendOrPostCallback\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       SHORT G_M63124_IG05\n \t\t\t\t\t\t;; size=55 bbWeight=1 PerfScore 8.00\n G_M63124_IG03:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec:\u003C\u003E9\n        mov      rsi, gword ptr [rdi]\n        test     rsi, rsi\n        je       SHORT G_M63124_IG06\n        lea      rdi, bword ptr [rbx\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec:\u003C.cctor\u003Eb__3_0(System.Object):this\n        mov      qword ptr [rbx\u002B0x18], rdi\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:s_postCallback\n        mov      rsi, rbx\n        call     CORINFO_HELP_ASSIGN_REF\n        nop      \n \t\t\t\t\t\t;; size=60 bbWeight=1 PerfScore 8.00\n G_M63124_IG04:\n        add      rsp, 8\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M63124_IG05:\n        mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      SHORT G_M63124_IG03\n \t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n G_M63124_IG06:\n        mov      rax, 0xD1FFAB1E      ; code for System.Delegate:ThrowNullThisInDelegateToInstance()\n        call     [rax]System.Delegate:ThrowNullThisInDelegateToInstance()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007C3CA1111A88h\n\u002BRWD00  \tdq\t000079B478B11A88h\n \n \n ; Total bytes of code 167, prolog size 8, PerfScore 21.75, instruction count 36, allocated bytes for code 167 (MethodHash=4e05096b) for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":167,"DiffBytes":167},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)","Category":"improvement","Description":"1,276 -\u003E 1,187 bytes (-89)","ExtraInfo":null,"Diff":"@@ -1,469 \u002B1,455 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 22 single block inlinees; 12 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T17] (  9, 25   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 loc0         [V01,T18] (  5, 26   )     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T12] (  8, 32.50)     ref  -\u003E  r14         class-hnd \u003Cdnlib.DotNet.AssemblyRef\u003E\n-;  V03 loc2         [V03,T43] (  3,  5   )     int  -\u003E  r13        \n-;  V04 loc3         [V04,T46] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.AssemblyDef\u003E\n-;  V05 loc4         [V05,T23] (  5, 17   )     int  -\u003E  r12        \n\u002B;  V00 this         [V00,T18] (  9, 25   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V01 loc0         [V01,T19] (  5, 26   )     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T11] (  8, 32.50)     ref  -\u003E  r14         class-hnd \u003Cdnlib.DotNet.AssemblyRef\u003E\n\u002B;  V03 loc2         [V03,T46] (  3,  5   )     int  -\u003E  r13        \n\u002B;  V04 loc3         [V04,T49] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.AssemblyDef\u003E\n\u002B;  V05 loc4         [V05,T24] (  5, 17   )     int  -\u003E  r12        \n ;* V06 loc5         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V07 loc6         [V07,T42] (  3,  6   )     int  -\u003E  rdi         ld-addr-op\n-;  V08 loc7         [V08,T44] (  2,  4.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String[]\u003E\n-;* V09 loc8         [V09,T48] (  0,  0   )     int  -\u003E  zero-ref   \n-;  V10 loc9         [V10,T22] (  2, 20   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u003CSystem.String\u003E\n\u002B;  V07 loc6         [V07,T45] (  3,  6   )     int  -\u003E  rsi         ld-addr-op\n\u002B;  V08 loc7         [V08,T47] (  2,  4.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String[]\u003E\n\u002B;* V09 loc8         [V09,T51] (  0,  0   )     int  -\u003E  zero-ref   \n\u002B;  V10 loc9         [V10,T23] (  2, 20   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u003CSystem.String\u003E\n ;  V11 loc10        [V11,T03] (  5, 68   )     int  -\u003E  [rbp-0x2C] \n ;* V12 loc11        [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V14 tmp1         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Nullable\u00601[bool]\u003E\n-;  V15 tmp2         [V15,T45] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.AssemblyRefUser\u003E\n\u002B;  V15 tmp2         [V15,T48] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.AssemblyRefUser\u003E\n ;* V16 tmp3         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V17 tmp4         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n-;  V18 tmp5         [V18,T30] (  5, 14   )     ref  -\u003E  [rbp-0x68]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V19 tmp6         [V19,T10] (  8, 40   )     int  -\u003E  [rbp-0x30]  spill-single-def \u0022Inlining Arg\u0022\n-;  V20 tmp7         [V20,T16] (  5, 28   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n-;  V21 tmp8         [V21,T34] (  3, 12   )   byref  -\u003E  [rbp-0x78]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V18 tmp5         [V18,T32] (  5, 14   )     ref  -\u003E  [rbp-0x68]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n\u002B;  V19 tmp6         [V19,T09] (  9, 44   )     int  -\u003E  [rbp-0x30]  spill-single-def \u0022Inlining Arg\u0022\n\u002B;  V20 tmp7         [V20,T17] (  5, 28   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n\u002B;  V21 tmp8         [V21,T41] (  2,  8   )   byref  -\u003E  [rbp-0x78]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V22 tmp9         [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V23 tmp10        [V23,T39] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V23 tmp10        [V23,T42] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V24 tmp11        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V25 tmp12        [V25    ] (  8, 32   )  struct (32) [rbp-0x50]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.FullNameFactory\u003E\n-;  V26 tmp13        [V26,T25] (  2, 16   )     ref  -\u003E  rdi         class-hnd exact \u0022dup spill\u0022 \u003CSystem.Text.StringBuilder\u003E\n-;  V27 tmp14        [V27,T31] (  4, 14   )     ref  -\u003E  rdi        \n-;  V28 tmp15        [V28,T24] (  4, 16   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V26 tmp13        [V26,T26] (  2, 16   )     ref  -\u003E  rdi         class-hnd exact \u0022dup spill\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V27 tmp14        [V27,T33] (  4, 14   )     ref  -\u003E  rdi        \n\u002B;  V28 tmp15        [V28,T25] (  4, 16   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n ;* V29 tmp16        [V29    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V30 tmp17        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref   \n-;  V31 tmp18        [V31,T13] (  4, 32   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V31 tmp18        [V31,T12] (  4, 32   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n ;* V32 tmp19        [V32    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V33 tmp20        [V33    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V34 tmp21        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;* V35 tmp22        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;* V36 tmp23        [V36    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V37 tmp24        [V37,T26] (  2, 16   )     ref  -\u003E  [rbp-0x90]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,int]\u003E\n-;  V38 tmp25        [V38,T27] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n-;  V39 tmp26        [V39,T38] (  3, 10   )   byref  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V37 tmp24        [V37,T27] (  2, 16   )     ref  -\u003E  [rbp-0x90]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,int]\u003E\n\u002B;  V38 tmp25        [V38,T28] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n\u002B;  V39 tmp26        [V39,T40] (  3, 10   )   byref  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V40 tmp27        [V40,T05] (  5, 48   )     ref  -\u003E  [rbp-0x98]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V41 tmp28        [V41,T00] (  8,160   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V42 tmp29        [V42,T02] (  5,112   )     ref  -\u003E  [rbp-0xA0]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n-;  V43 tmp30        [V43,T06] (  3, 48   )   byref  -\u003E  [rbp-0xA8]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V43 tmp30        [V43,T14] (  2, 32   )   byref  -\u003E  [rbp-0xA8]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V44 tmp31        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V45 tmp32        [V45,T15] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V46 tmp33        [V46    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V47 tmp34        [V47,T01] (  6,128   )     ref  -\u003E  [rbp-0xB0]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.UTF8String\u003E\n ;* V48 tmp35        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022dup spill\u0022 \u003CSystem.String\u003E\n-;  V49 tmp36        [V49,T04] (  4, 56   )     ref  -\u003E  rsi        \n-;  V50 tmp37        [V50,T11] (  4, 40   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n-;  V51 tmp38        [V51,T28] (  2, 16   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V52 tmp39        [V52,T19] (  3, 24   )     ref  -\u003E  rdi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n-;  V53 tmp40        [V53,T20] (  3, 24   )     ref  -\u003E  rsi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n-;  V54 tmp41        [V54,T29] (  2, 16   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V49 tmp36        [V49,T04] (  4, 56   )     ref  -\u003E  rdi        \n\u002B;  V50 tmp37        [V50,T10] (  4, 40   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n\u002B;  V51 tmp38        [V51,T29] (  2, 16   )   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n\u002B;  V52 tmp39        [V52,T20] (  3, 24   )     ref  -\u003E  rdi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n\u002B;  V53 tmp40        [V53,T21] (  3, 24   )     ref  -\u003E  rsi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n\u002B;  V54 tmp41        [V54,T30] (  2, 16   )   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n ;* V55 tmp42        [V55    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Nullable\u00601[bool]\u003E\n ;* V56 tmp43        [V56    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022field V14.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V57 tmp44        [V57    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022field V14.value (fldOffset=0x1)\u0022 P-INDEP\n ;* V58 tmp45        [V58    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022field V55.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp46        [V59    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022field V55.value (fldOffset=0x1)\u0022 P-INDEP\n-;  V60 tmp47        [V60,T40] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V61 tmp48        [V61,T35] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V62 tmp49        [V62,T36] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V63 tmp50        [V63,T07] (  3, 48   )     ref  -\u003E  rdx         \u0022arr expr\u0022\n-;  V64 tmp51        [V64,T08] (  3, 48   )     ref  -\u003E  rdx         \u0022arr expr\u0022\n-;  V65 tmp52        [V65,T47] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V66 cse0         [V66,T14] (  4, 32   )     ref  -\u003E   r8         \u0022CSE #08: moderate\u0022\n-;  V67 cse1         [V67,T21] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #05: moderate\u0022\n-;  V68 cse2         [V68,T41] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: conservative\u0022\n-;  V69 rat0         [V69,T32] (  4, 12.50)    long  -\u003E  r12         \u0022Strength reduced derived IV\u0022\n-;  V70 rat1         [V70,T33] (  4, 12.50)     int  -\u003E  [rbp-0x58]  \u0022Trip count IV\u0022\n-;  V71 rat2         [V71,T37] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n-;  V72 rat3         [V72,T09] (  3, 48   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V60 tmp47        [V60,T43] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V61 tmp48        [V61,T36] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V62 tmp49        [V62,T37] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V63 tmp50        [V63,T38] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V64 tmp51        [V64,T06] (  3, 48   )     ref  -\u003E   r9         \u0022arr expr\u0022\n\u002B;  V65 tmp52        [V65,T16] (  2, 32   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V66 tmp53        [V66,T07] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V67 tmp54        [V67,T50] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V68 cse0         [V68,T13] (  4, 32   )     ref  -\u003E  rdi         \u0022CSE #09: moderate\u0022\n\u002B;  V69 cse1         [V69,T22] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #06: moderate\u0022\n\u002B;  V70 cse2         [V70,T44] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: conservative\u0022\n\u002B;  V71 cse3         [V71,T31] (  2, 16   )     int  -\u003E  r10         \u0022CSE #07: moderate\u0022\n\u002B;  V72 rat0         [V72,T34] (  4, 12.50)    long  -\u003E  r12         \u0022Strength reduced derived IV\u0022\n\u002B;  V73 rat1         [V73,T35] (  4, 12.50)     int  -\u003E  [rbp-0x58]  \u0022Trip count IV\u0022\n\u002B;  V74 rat2         [V74,T39] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V75 rat3         [V75,T08] (  3, 48   )     ref  -\u003E  r10         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 136\n \n G_M27023_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 136\n        lea      rbp, [rsp\u002B0xB0]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 8.33\n G_M27023_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n-       mov      rdi, gword ptr [rax\u002B0x168]\n-       mov      r15d, dword ptr [rdi\u002B0x58]\n\u002B       mov      rsi, gword ptr [rax\u002B0x168]\n\u002B       mov      r15d, dword ptr [rsi\u002B0x58]\n        xor      r14, r14\n        mov      r13d, 0xD1FFAB1E\n        mov      r12d, 1\n        test     r15d, r15d\n        je       G_M27023_IG14\n \t\t\t\t\t\t;; size=52 bbWeight=1 PerfScore 15.00\n G_M27023_IG03:\n        mov      rax, gword ptr [rbx\u002B0x1E0]\n        mov      gword ptr [rbp-0x70], rax\n        lea      ecx, [r12-0x01]\n        mov      dword ptr [rbp-0x30], ecx\n        cmp      ecx, dword ptr [rax\u002B0x18]\n-       jae      G_M27023_IG06\n-\t\t\t\t\t\t;; size=28 bbWeight=4 PerfScore 30.00\n\u002B       jae      SHORT G_M27023_IG06\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M27023_IG04:\n-       mov      rdi, gword ptr [rax\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      ecx, dword ptr [rsi\u002B0x08]\n-       jae      G_M27023_IG40\n\u002B       mov      rsi, gword ptr [rax\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      ecx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n        mov      edx, ecx\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M27023_IG05\n-       mov      esi, ecx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x78], rax\n-       mov      rcx, gword ptr [rbp-0x70]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x30]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       cmp      ecx, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n\u002B       mov      edi, ecx\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x78], rdx\n\u002B       mov      r8, gword ptr [rax\u002B0x10]\n\u002B       lea      esi, [rcx\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x78]\n-       test     rdi, rdi\n-       je       G_M27023_IG39\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-       mov      ecx, dword ptr [rbp-0x30]\n-\t\t\t\t\t\t;; size=104 bbWeight=2 PerfScore 55.00\n-G_M27023_IG05:\n        mov      rax, gword ptr [rbp-0x70]\n\u002B       mov      ecx, dword ptr [rbp-0x30]\n\u002B\t\t\t\t\t\t;; size=82 bbWeight=2 PerfScore 51.50\n\u002BG_M27023_IG05:\n        mov      rdi, gword ptr [rax\u002B0x08]\n        cmp      ecx, dword ptr [rdi\u002B0x08]\n-       jae      G_M27023_IG40\n\u002B       jae      G_M27023_IG39\n        mov      eax, ecx\n        mov      rax, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M27023_IG07\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M27023_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M27023_IG07:\n        mov      gword ptr [rbp-0x68], rax\n        cmp      byte  ptr [rax], al\n        vxorps   xmm0, xmm0, xmm0\n        vmovdqu  ymmword ptr [rbp-0x50], ymm0\n        mov      rdi, 0xD1FFAB1E      ; System.Text.StringBuilder\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x88], rax\n        mov      dword ptr [rax\u002B0x20], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        mov      esi, 16\n        call     CORINFO_HELP_NEWARR_1_VC\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0x88]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbp-0x88]\n        mov      gword ptr [rbp-0x50], rdi\n        mov      byte  ptr [rbp-0x38], 0\n        xor      rdi, rdi\n        mov      gword ptr [rbp-0x48], rdi\n \t\t\t\t\t\t;; size=104 bbWeight=4 PerfScore 64.33\n G_M27023_IG08:\n        mov      gword ptr [rbp-0x40], rdi\n \t\t\t\t\t\t;; size=4 bbWeight=4 PerfScore 4.00\n G_M27023_IG09:\n        mov      dword ptr [rbp-0x34], edi\n        lea      rdi, [rbp-0x50]\n        mov      rsi, gword ptr [rbp-0x68]\n        mov      edx, 1\n        xor      ecx, ecx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.FullNameFactory:CreateAssemblyFullName(dnlib.DotNet.IAssembly,bool,bool):this\n        call     [rax]dnlib.DotNet.FullNameFactory:CreateAssemblyFullName(dnlib.DotNet.IAssembly,bool,bool):this\n        mov      rdi, gword ptr [rbp-0x50]\n        test     rdi, rdi\n        jne      SHORT G_M27023_IG11\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 34.00\n G_M27023_IG10:\n        mov      rdi, 0xD1FFAB1E      ; System.Text.StringBuilder\n        call     CORINFO_HELP_NEWSFAST\n        mov      rdi, rax\n        mov      gword ptr [rbp-0x80], rdi\n        mov      dword ptr [rdi\u002B0x20], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        mov      esi, 16\n        call     CORINFO_HELP_NEWARR_1_VC\n        mov      rsi, rax\n        mov      rdi, gword ptr [rbp-0x80]\n        lea      rdi, bword ptr [rdi\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbp-0x80]\n \t\t\t\t\t\t;; size=69 bbWeight=2 PerfScore 17.50\n G_M27023_IG11:\n        mov      rax, 0xD1FFAB1E      ; const ptr\n        mov      rax, gword ptr [rax]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rcx, 0xD1FFAB1E      ; code for System.Text.StringBuilder:ToString():System.String:this\n        call     [rcx]System.Text.StringBuilder:ToString():System.String:this\n        mov      rsi, rax\n        mov      rdi, gword ptr [rbp-0x90]\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,int]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,int]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        je       SHORT G_M27023_IG13\n \t\t\t\t\t\t;; size=59 bbWeight=4 PerfScore 49.00\n G_M27023_IG12:\n-       mov      edi, dword ptr [rax]\n-       cmp      edi, r13d\n\u002B       mov      esi, dword ptr [rax]\n\u002B       cmp      esi, r13d\n        jle      SHORT G_M27023_IG13\n-       mov      r13d, edi\n\u002B       mov      r13d, esi\n        mov      r14, gword ptr [rbp-0x68]\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 9.00\n G_M27023_IG13:\n        inc      r12d\n        cmp      r12d, r15d\n        jbe      G_M27023_IG03\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M27023_IG14:\n        test     r14, r14\n        jne      G_M27023_IG34\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M27023_IG15:\n-       mov      rdi, 0xD1FFAB1E      ; const ptr\n-       mov      r13, gword ptr [rdi]\n\u002B       mov      rsi, 0xD1FFAB1E      ; const ptr\n\u002B       mov      r13, gword ptr [rsi]\n        mov      r12d, 16\n-       mov      edi, 5\n\u002B       mov      esi, 5\n        jmp      SHORT G_M27023_IG17\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.38\n G_M27023_IG16:\n        add      r12, 8\n-       mov      edi, dword ptr [rbp-0x58]\n\u002B       mov      esi, dword ptr [rbp-0x58]\n \t\t\t\t\t\t;; size=7 bbWeight=4 PerfScore 5.00\n G_M27023_IG17:\n-       dec      edi\n-       mov      dword ptr [rbp-0x58], edi\n-       test     edi, edi\n\u002B       dec      esi\n\u002B       mov      dword ptr [rbp-0x58], esi\n\u002B       test     esi, esi\n        je       G_M27023_IG36\n        mov      rax, gword ptr [r12\u002Br13]\n        mov      gword ptr [rbp-0x60], rax\n        mov      ecx, 1\n        test     r15d, r15d\n        mov      rax, gword ptr [rbp-0x60]\n        je       G_M27023_IG33\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 32.00\n G_M27023_IG18:\n-       mov      r8, gword ptr [rbx\u002B0x1E0]\n-       mov      gword ptr [rbp-0xA0], r8\n\u002B       mov      rdx, gword ptr [rbx\u002B0x1E0]\n\u002B       mov      gword ptr [rbp-0xA0], rdx\n        mov      dword ptr [rbp-0x2C], ecx\n-       lea      r9d, [rcx-0x01]\n-       mov      dword ptr [rbp-0x54], r9d\n-       cmp      r9d, dword ptr [r8\u002B0x18]\n-       jae      G_M27023_IG21\n-\t\t\t\t\t\t;; size=35 bbWeight=16 PerfScore 136.00\n\u002B       lea      r8d, [rcx-0x01]\n\u002B       mov      dword ptr [rbp-0x54], r8d\n\u002B       cmp      r8d, dword ptr [rdx\u002B0x18]\n\u002B       jae      SHORT G_M27023_IG21\n\u002B\t\t\t\t\t\t;; size=31 bbWeight=16 PerfScore 136.00\n G_M27023_IG19:\n-       mov      rsi, gword ptr [r8\u002B0x08]\n-       mov      rdx, rsi\n-       cmp      r9d, dword ptr [rdx\u002B0x08]\n-       jae      G_M27023_IG40\n-       mov      r10d, r9d\n-       cmp      qword ptr [rdx\u002B8*r10\u002B0x10], 0\n\u002B       mov      rdi, gword ptr [rdx\u002B0x08]\n\u002B       mov      r9, rdi\n\u002B       mov      r10d, dword ptr [r9\u002B0x08]\n\u002B       cmp      r8d, r10d\n\u002B       jae      G_M27023_IG39\n\u002B       mov      r10d, r8d\n\u002B       cmp      qword ptr [r9\u002B8*r10\u002B0x10], 0\n        jne      SHORT G_M27023_IG20\n-       mov      rdi, rsi\n-       mov      esi, r9d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefMD\n-       mov      r10, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r10]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0xA8], rax\n-       mov      rcx, gword ptr [rbp-0xA0]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n\u002B       mov      r9d, r8d\n\u002B       lea      r9, bword ptr [rdi\u002B8*r9\u002B0x10]\n\u002B       mov      bword ptr [rbp-0xA8], r9\n\u002B       mov      r10, gword ptr [rdx\u002B0x10]\n        lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r10\u002B0x10]\n\u002B       call     [r10\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0xA8]\n-       test     rdi, rdi\n-       je       G_M27023_IG39\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      rax, gword ptr [rbp-0x60]\n-       mov      r9d, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=124 bbWeight=8 PerfScore 230.00\n\u002B       mov      rdx, gword ptr [rbp-0xA0]\n\u002B       mov      r8d, dword ptr [rbp-0x54]\n\u002B\t\t\t\t\t\t;; size=94 bbWeight=8 PerfScore 192.00\n G_M27023_IG20:\n-       mov      r8, gword ptr [rbp-0xA0]\n-       mov      rdx, gword ptr [r8\u002B0x08]\n-       cmp      r9d, dword ptr [rdx\u002B0x08]\n-       jae      G_M27023_IG40\n-       mov      esi, r9d\n-       mov      rdx, gword ptr [rdx\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [rdx\u002B0x08]\n\u002B       cmp      r8d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n\u002B       mov      edx, r8d\n\u002B       mov      rdx, gword ptr [rdi\u002B8*rdx\u002B0x10]\n        jmp      SHORT G_M27023_IG22\n-\t\t\t\t\t\t;; size=31 bbWeight=8 PerfScore 82.00\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=8 PerfScore 74.00\n G_M27023_IG21:\n        xor      rdx, rdx\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M27023_IG22:\n        mov      gword ptr [rbp-0x98], rdx\n-       mov      rsi, gword ptr [rdx\u002B0x18]\n-       mov      gword ptr [rbp-0xB0], rsi\n-       test     rsi, rsi\n\u002B       mov      r8, gword ptr [rdx\u002B0x18]\n\u002B       mov      gword ptr [rbp-0xB0], r8\n\u002B       test     r8, r8\n        je       SHORT G_M27023_IG26\n \t\t\t\t\t\t;; size=23 bbWeight=16 PerfScore 84.00\n G_M27023_IG23:\n-       mov      r8, gword ptr [rsi\u002B0x08]\n-       test     r8, r8\n\u002B       mov      rdi, gword ptr [r8\u002B0x08]\n\u002B       test     rdi, rdi\n        je       SHORT G_M27023_IG26\n-       cmp      dword ptr [r8\u002B0x08], 0\n\u002B       cmp      dword ptr [rdi\u002B0x08], 0\n        je       SHORT G_M27023_IG25\n-       cmp      qword ptr [rsi\u002B0x10], 0\n\u002B       cmp      qword ptr [r8\u002B0x10], 0\n        jne      SHORT G_M27023_IG24\n-       mov      rdi, r8\n-       mov      r8, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n-       call     [r8]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n\u002B       mov      r9, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n\u002B       call     [r9]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0xB0]\n        lea      rdi, bword ptr [rax\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rax, gword ptr [rbp-0x60]\n-\t\t\t\t\t\t;; size=62 bbWeight=8 PerfScore 132.00\n\u002B\t\t\t\t\t\t;; size=58 bbWeight=8 PerfScore 130.00\n G_M27023_IG24:\n-       mov      rsi, gword ptr [rbp-0xB0]\n-       mov      rsi, gword ptr [rsi\u002B0x10]\n\u002B       mov      r8, gword ptr [rbp-0xB0]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n        jmp      SHORT G_M27023_IG27\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 40.00\n G_M27023_IG25:\n-       mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n\u002B       mov      rdi, 0xD1FFAB1E      ; \u0027\u0027\n        jmp      SHORT G_M27023_IG27\n \t\t\t\t\t\t;; size=12 bbWeight=8 PerfScore 18.00\n G_M27023_IG26:\n-       xor      rsi, rsi\n\u002B       xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M27023_IG27:\n-       test     rsi, rsi\n\u002B       test     rdi, rdi\n        jne      SHORT G_M27023_IG29\n \t\t\t\t\t\t;; size=5 bbWeight=16 PerfScore 20.00\n G_M27023_IG28:\n-       mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n\u002B       mov      rdi, 0xD1FFAB1E      ; \u0027\u0027\n \t\t\t\t\t\t;; size=10 bbWeight=8 PerfScore 2.00\n G_M27023_IG29:\n-       mov      rdi, rsi\n        mov      rsi, rax\n        mov      edx, 5\n        mov      r8, 0xD1FFAB1E      ; code for System.String:Equals(System.String,int):bool:this\n        call     [r8]System.String:Equals(System.String,int):bool:this\n        test     eax, eax\n        je       SHORT G_M27023_IG32\n-\t\t\t\t\t\t;; size=28 bbWeight=16 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=25 bbWeight=16 PerfScore 80.00\n G_M27023_IG30:\n        test     r14, r14\n        je       SHORT G_M27023_IG31\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, gword ptr [rbp-0x98]\n        mov      rsi, gword ptr [rax\u002B0x08]\n        test     rdi, rdi\n        je       SHORT G_M27023_IG31\n        test     rsi, rsi\n        je       SHORT G_M27023_IG32\n        mov      rcx, 0xD1FFAB1E      ; code for System.Version:CompareTo(System.Version):int:this\n        call     [rcx]System.Version:CompareTo(System.Version):int:this\n        test     eax, eax\n-       setle    al\n-       movzx    rax, al\n-       test     eax, eax\n\u002B       setle    dil\n\u002B       movzx    rdi, dil\n\u002B       test     edi, edi\n        je       SHORT G_M27023_IG32\n-\t\t\t\t\t\t;; size=54 bbWeight=8 PerfScore 114.00\n\u002B\t\t\t\t\t\t;; size=56 bbWeight=8 PerfScore 114.00\n G_M27023_IG31:\n        mov      r14, gword ptr [rbp-0x98]\n \t\t\t\t\t\t;; size=7 bbWeight=8 PerfScore 8.00\n G_M27023_IG32:\n        mov      ecx, dword ptr [rbp-0x2C]\n        inc      ecx\n        cmp      ecx, r15d\n        mov      rax, gword ptr [rbp-0x60]\n        jbe      G_M27023_IG18\n \t\t\t\t\t\t;; size=18 bbWeight=16 PerfScore 56.00\n G_M27023_IG33:\n        test     r14, r14\n        je       G_M27023_IG16\n \t\t\t\t\t\t;; size=9 bbWeight=4 PerfScore 5.00\n G_M27023_IG34:\n        mov      rax, r14\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M27023_IG35:\n        add      rsp, 136\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.12\n G_M27023_IG36:\n        mov      r15, gword ptr [rbx\u002B0x58]\n        test     r15, r15\n        je       SHORT G_M27023_IG34\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Extensions:IsCorLib(dnlib.DotNet.IAssembly):bool\n        call     [rax]dnlib.DotNet.Extensions:IsCorLib(dnlib.DotNet.IAssembly):bool\n        test     eax, eax\n        jne      SHORT G_M27023_IG37\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDef:get_TypeDefFinder():dnlib.DotNet.TypeDefFinder:this\n        call     [rax]dnlib.DotNet.ModuleDef:get_TypeDefFinder():dnlib.DotNet.TypeDefFinder:this\n        mov      rdi, rax\n        mov      rsi, 0xD1FFAB1E      ; \u0027System.Object\u0027\n        xor      edx, edx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeDefFinder:Find(System.String,bool):dnlib.DotNet.TypeDef:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.TypeDefFinder:Find(System.String,bool):dnlib.DotNet.TypeDef:this\n        test     rax, rax\n        je       SHORT G_M27023_IG34\n \t\t\t\t\t\t;; size=77 bbWeight=0.50 PerfScore 9.38\n G_M27023_IG37:\n        mov      word  ptr [rbx\u002B0x108], 257\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefUser\n        call     CORINFO_HELP_NEWSFAST\n        mov      r14, rax\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.AssemblyRefUser:.ctor(dnlib.DotNet.IAssembly):this\n        call     [rax]dnlib.DotNet.AssemblyRefUser:.ctor(dnlib.DotNet.IAssembly):this\n        mov      rdi, rbx\n        mov      rdx, r14\n        mov      rsi, 0xD1FFAB1E      ; dnlib.DotNet.ModuleDef:UpdateRowId[dnlib.DotNet.AssemblyRefUser](dnlib.DotNet.AssemblyRefUser):dnlib.DotNet.AssemblyRefUser:this\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDef:UpdateRowId[System.__Canon](System.__Canon):System.__Canon:this\n        call     [rax]dnlib.DotNet.ModuleDef:UpdateRowId[System.__Canon](System.__Canon):System.__Canon:this\n        nop      \n \t\t\t\t\t\t;; size=74 bbWeight=0.50 PerfScore 5.25\n G_M27023_IG38:\n        add      rsp, 136\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.12\n G_M27023_IG39:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M27023_IG40:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1276, prolog size 38, PerfScore 1387.79, instruction count 300, allocated bytes for code 1276 (MethodHash=24989670) for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n\u002B; Total bytes of code 1187, prolog size 38, PerfScore 1330.29, instruction count 285, allocated bytes for code 1187 (MethodHash=24989670) for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1276,"DiffBytes":1187},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)","Category":"improvement","Description":"918 -\u003E 865 bytes (-53)","ExtraInfo":null,"Diff":"@@ -1,330 \u002B1,322 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 14 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T11] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 arg1         [V01,T20] (  5,  5.50)     ref  -\u003E  r12         class-hnd single-def \u003Cdnlib.DotNet.PropertyDefMD\u003E\n-;  V02 arg2         [V02,T13] (  5,  7   )   byref  -\u003E  r15         single-def\n-;  V03 arg3         [V03,T14] (  5,  7   )   byref  -\u003E  r14         single-def\n-;  V04 arg4         [V04,T15] (  5,  7   )   byref  -\u003E  r13         single-def\n\u002B;  V00 this         [V00,T10] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n\u002B;  V01 arg1         [V01,T21] (  5,  5.50)     ref  -\u003E  r12         class-hnd single-def \u003Cdnlib.DotNet.PropertyDefMD\u003E\n\u002B;  V02 arg2         [V02,T12] (  5,  7   )   byref  -\u003E  r15         single-def\n\u002B;  V03 arg3         [V03,T13] (  5,  7   )   byref  -\u003E  r14         single-def\n\u002B;  V04 arg4         [V04,T14] (  5,  7   )   byref  -\u003E  r13         single-def\n ;  V05 loc0         [V05    ] (  8, 17   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V06 loc1         [V06,T02] (  8, 20.50)     int  -\u003E  [rbp-0x3C] \n ;  V07 loc2         [V07    ] (  3,  8   )  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V08 loc3         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V09 loc4         [V09,T28] (  2,  4   )  ushort  -\u003E  rdi        \n\u002B;  V09 loc4         [V09,T29] (  2,  4   )  ushort  -\u003E  rdi        \n ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V11 tmp1         [V11,T22] (  3,  6   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n-;  V12 tmp2         [V12,T23] (  3,  6   )     ref  -\u003E  [rbp-0x78]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n-;  V13 tmp3         [V13,T24] (  3,  6   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V11 tmp1         [V11,T23] (  3,  6   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V12 tmp2         [V12,T24] (  3,  6   )     ref  -\u003E  [rbp-0x78]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V13 tmp3         [V13,T25] (  3,  6   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n ;* V14 tmp4         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V15 tmp5         [V15    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V16 tmp6         [V16,T05] (  2, 16   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V17 tmp7         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeDef\u003E\n ;* V18 tmp8         [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V19 tmp9         [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V20 tmp10        [V20,T12] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V21 tmp11        [V21,T17] (  2,  8   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V22 tmp12        [V22,T19] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp10        [V20,T11] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V21 tmp11        [V21,T16] (  2,  8   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V22 tmp12        [V22,T20] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;  V23 tmp13        [V23,T03] ( 10, 20   )     ref  -\u003E  [rbp-0x90]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V24 tmp14        [V24,T00] (  8, 32   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V25 tmp15        [V25,T04] (  5, 20   )     ref  -\u003E  [rbp-0x98]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V26 tmp16        [V26,T06] (  3, 12   )   byref  -\u003E  [rbp-0xA0]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V26 tmp16        [V26,T17] (  2,  8   )   byref  -\u003E  [rbp-0xA0]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V27 tmp17        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V28 tmp18        [V28,T18] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V29 tmp19        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V30 tmp20        [V30,T16] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V05.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V31 tmp21        [V31,T30] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V05.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V32 tmp22        [V32,T21] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V05.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V30 tmp20        [V30,T15] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V05.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V31 tmp21        [V31,T32] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V05.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V32 tmp22        [V32,T22] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V05.length (fldOffset=0xc)\u0022 P-DEP\n ;  V33 tmp23        [V33    ] (  2,  6   )  ushort  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V07.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V34 tmp24        [V34    ] (  2,  6   )     int  -\u003E  [rbp-0x4C]  do-not-enreg[X] addr-exposed \u0022field V07.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V35 tmp25        [V35    ] (  1,  4   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] addr-exposed \u0022field V07.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V36 tmp26        [V36,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V36 tmp26        [V36,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V37 tmp27        [V37,T01] (  3, 24   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V38 tmp28        [V38,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V39 tmp29        [V39,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;* V40 cse0         [V40,T31] (  0,  0   )   byref  -\u003E  zero-ref    \u0022CSE #02: moderate\u0022\n-;  V41 cse1         [V41,T25] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n-;  V42 cse2         [V42,T26] (  5,  4   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022CSE #01: moderate\u0022\n-;  V43 cse3         [V43,T27] (  4,  4   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022CSE #03: moderate\u0022\n-;  V44 rat0         [V44,T09] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n-;  V45 rat1         [V45,T10] (  3, 11.20)     int  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V38 tmp28        [V38,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V39 tmp29        [V39,T19] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V40 tmp30        [V40,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;* V41 cse0         [V41,T33] (  0,  0   )   byref  -\u003E  zero-ref    \u0022CSE #02: moderate\u0022\n\u002B;  V42 cse1         [V42,T26] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #04: moderate\u0022\n\u002B;  V43 cse2         [V43,T27] (  5,  4   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022CSE #01: moderate\u0022\n\u002B;  V44 cse3         [V44,T28] (  4,  4   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022CSE #03: moderate\u0022\n\u002B;  V45 cse4         [V45,T30] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #05: moderate\u0022\n\u002B;  V46 rat0         [V46,T08] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V47 rat1         [V47,T09] (  3, 11.20)     int  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n ;\n ; Lcl frame size = 120\n \n G_M22475_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 120\n        lea      rbp, [rsp\u002B0xA0]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r12, rsi\n        mov      r15, rdx\n        mov      r14, rcx\n        mov      r13, r8\n \t\t\t\t\t\t;; size=53 bbWeight=1 PerfScore 10.58\n G_M22475_IG02:\n        mov      rax, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        mov      qword ptr [rbp-0x60], rax\n        mov      rdi, rax\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x70], rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M22475_IG20\n \t\t\t\t\t\t;; size=45 bbWeight=1 PerfScore 6.75\n G_M22475_IG03:\n        mov      rcx, 0xD1FFAB1E      ; data for System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]:s_emptyArray\n        mov      qword ptr [rbp-0x68], rcx\n        mov      rsi, gword ptr [rcx]\n        mov      rax, gword ptr [rbp-0x70]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x70]\n        mov      rdi, r15\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rdi, qword ptr [rbp-0x60]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x78], rax\n        mov      rcx, qword ptr [rbp-0x68]\n        mov      rsi, gword ptr [rcx]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x78]\n        mov      rdi, r14\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rdi, qword ptr [rbp-0x60]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x80], rax\n        mov      rdi, qword ptr [rbp-0x68]\n        mov      rsi, gword ptr [rdi]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x80]\n        mov      rdi, r13\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        test     r12, r12\n        je       G_M22475_IG19\n \t\t\t\t\t\t;; size=133 bbWeight=1 PerfScore 28.75\n G_M22475_IG04:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      edx, dword ptr [r12\u002B0x70]\n        mov      esi, 23\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      eax, eax\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      dword ptr [rbp-0x2C], 0\n        jle      G_M22475_IG19\n \t\t\t\t\t\t;; size=57 bbWeight=0.50 PerfScore 9.25\n G_M22475_IG05:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x48]\n        call     [rcx\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      gword ptr [rbp-0x88], rax\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M22475_IG07\n \t\t\t\t\t\t;; size=38 bbWeight=4 PerfScore 56.00\n G_M22475_IG06:\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      ecx, dword ptr [rbp-0x2C]\n        jae      SHORT G_M22475_IG08\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        add      esi, dword ptr [rbp-0x30]\n        jmp      SHORT G_M22475_IG09\n \t\t\t\t\t\t;; size=18 bbWeight=2 PerfScore 14.50\n G_M22475_IG07:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      eax, ecx\n        jbe      SHORT G_M22475_IG08\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M22475_IG09\n \t\t\t\t\t\t;; size=50 bbWeight=2 PerfScore 28.50\n G_M22475_IG08:\n        xor      esi, esi\n        mov      dword ptr [rbp-0x3C], ecx\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M22475_IG09:\n        lea      rdx, [rbp-0x50]\n        mov      rdi, gword ptr [rbp-0x88]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M22475_IG18\n \t\t\t\t\t\t;; size=33 bbWeight=4 PerfScore 32.00\n G_M22475_IG10:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      eax, dword ptr [rbp-0x4C]\n-       mov      rcx, gword ptr [rdi\u002B0x170]\n\u002B       mov      rcx, gword ptr [rsi\u002B0x170]\n        mov      gword ptr [rbp-0x98], rcx\n        dec      eax\n        mov      dword ptr [rbp-0x54], eax\n        cmp      eax, dword ptr [rcx\u002B0x18]\n-       jae      G_M22475_IG12\n-       mov      rdi, gword ptr [rcx\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      eax, dword ptr [rsi\u002B0x08]\n-       jae      G_M22475_IG22\n\u002B       jae      SHORT G_M22475_IG12\n\u002B       mov      rsi, gword ptr [rcx\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      eax, edx\n\u002B       jae      G_M22475_IG21\n        mov      edx, eax\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M22475_IG11\n-       mov      esi, eax\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0xA0], rax\n-       mov      rcx, gword ptr [rbp-0x98]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, eax\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0xA0], rdx\n\u002B       mov      r8, gword ptr [rcx\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0xA0]\n-       test     rdi, rdi\n-       je       G_M22475_IG21\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      eax, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=151 bbWeight=2 PerfScore 75.50\n-G_M22475_IG11:\n        mov      rcx, gword ptr [rbp-0x98]\n\u002B\t\t\t\t\t\t;; size=118 bbWeight=2 PerfScore 66.50\n\u002BG_M22475_IG11:\n        mov      rdi, gword ptr [rcx\u002B0x08]\n        cmp      eax, dword ptr [rdi\u002B0x08]\n-       jae      G_M22475_IG22\n\u002B       jae      G_M22475_IG21\n        mov      esi, eax\n        mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M22475_IG13\n-\t\t\t\t\t\t;; size=29 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M22475_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M22475_IG13:\n        test     rax, rax\n        je       G_M22475_IG18\n        mov      rdi, gword ptr [rax\u002B0x70]\n        cmp      rdi, qword ptr [r12\u002B0x50]\n        jne      G_M22475_IG18\n        movzx    rdi, word  ptr [rbp-0x50]\n        dec      edi\n        cmp      edi, 3\n        ja       G_M22475_IG18\n \t\t\t\t\t\t;; size=39 bbWeight=2 PerfScore 17.50\n G_M22475_IG14:\n        mov      edi, edi\n        lea      rsi, [reloc @RWD00]\n        mov      esi, dword ptr [rsi\u002B4*rdi]\n        lea      r11, G_M22475_IG02\n        add      rsi, r11\n        jmp      rsi\n \t\t\t\t\t\t;; size=24 bbWeight=1.60 PerfScore 9.60\n G_M22475_IG15:\n        mov      rdi, gword ptr [r13]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      G_M22475_IG18\n        mov      rdi, gword ptr [r13]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M22475_IG18\n \t\t\t\t\t\t;; size=61 bbWeight=2 PerfScore 32.00\n G_M22475_IG16:\n        mov      rdi, gword ptr [r15]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M22475_IG18\n        mov      rdi, gword ptr [r15]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M22475_IG18\n \t\t\t\t\t\t;; size=55 bbWeight=2 PerfScore 32.00\n G_M22475_IG17:\n        mov      rdi, gword ptr [r14]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M22475_IG18\n        mov      rdi, gword ptr [r14]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n \t\t\t\t\t\t;; size=53 bbWeight=2 PerfScore 28.00\n G_M22475_IG18:\n        mov      ecx, dword ptr [rbp-0x3C]\n        inc      ecx\n        cmp      ecx, dword ptr [rbp-0x2C]\n        mov      dword ptr [rbp-0x3C], ecx\n        jl       G_M22475_IG05\n \t\t\t\t\t\t;; size=17 bbWeight=4 PerfScore 17.00\n G_M22475_IG19:\n        add      rsp, 120\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M22475_IG20:\n        mov      rdi, qword ptr [rbp-0x60]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rcx]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M22475_IG03\n \t\t\t\t\t\t;; size=21 bbWeight=0 PerfScore 0.00\n G_M22475_IG21:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M22475_IG22:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M22475_IG17 - G_M22475_IG02\n        \tdd\tG_M22475_IG16 - G_M22475_IG02\n        \tdd\tG_M22475_IG18 - G_M22475_IG02\n        \tdd\tG_M22475_IG15 - G_M22475_IG02\n \n \n-; Total bytes of code 918, prolog size 38, PerfScore 425.68, instruction count 219, allocated bytes for code 918 (MethodHash=5b52a834) for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n\u002B; Total bytes of code 865, prolog size 38, PerfScore 414.68, instruction count 211, allocated bytes for code 865 (MethodHash=5b52a834) for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":918,"DiffBytes":865},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)","Category":"improvement","Description":"583 -\u003E 533 bytes (-50)","ExtraInfo":null,"Diff":"@@ -1,246 \u002B1,238 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 7 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T10] (  7,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 loc0         [V01,T17] (  4,  5.50)     int  -\u003E  r15         single-def\n\u002B;  V00 this         [V00,T09] (  7,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V01 loc0         [V01,T18] (  4,  5.50)     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T04] (  9, 13.50)     ref  -\u003E  r14         class-hnd exact single-def \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n-;  V03 loc2         [V03,T22] (  2,  2.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String\u003E\n\u002B;  V03 loc2         [V03,T24] (  2,  2.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String\u003E\n ;  V04 loc3         [V04,T03] (  7, 20.50)     int  -\u003E  r12        \n ;* V05 loc4         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.FileDefMD\u003E\n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V07 tmp1         [V07,T20] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n-;  V08 tmp2         [V08,T23] (  2,  2   )   byref  -\u003E  rbx         single-def \u0022impAppendStmt\u0022\n-;  V09 tmp3         [V09,T18] (  5,  5   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\u003E\n\u002B;  V07 tmp1         [V07,T22] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n\u002B;  V08 tmp2         [V08,T25] (  2,  2   )   byref  -\u003E  rbx         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp3         [V09,T19] (  5,  5   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\u003E\n ;* V10 tmp4         [V10    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;* V11 tmp5         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V12 tmp6         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;  V13 tmp7         [V13,T05] (  5, 12   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n ;  V14 tmp8         [V14,T00] (  8, 40   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;  V15 tmp9         [V15,T01] (  5, 28   )     ref  -\u003E  [rbp-0x38]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.FileDefMD]\u003E\n-;  V16 tmp10        [V16,T06] (  3, 12   )   byref  -\u003E  [rbp-0x40]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V16 tmp10        [V16,T13] (  2,  8   )   byref  -\u003E  [rbp-0x40]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V17 tmp11        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n ;  V18 tmp12        [V18,T14] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V19 tmp13        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n-;  V20 tmp14        [V20,T11] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n\u002B;  V20 tmp14        [V20,T10] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n ;  V21 tmp15        [V21,T02] (  6, 24   )     ref  -\u003E  [rbp-0x48]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.UTF8String\u003E\n-;  V22 tmp16        [V22,T15] (  3,  6   )     ref  -\u003E  rax         class-hnd \u0022Inline stloc first use temp\u0022 \u003Cuint[]\u003E\n-;  V23 tmp17        [V23,T13] (  4,  8   )     int  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n\u002B;  V22 tmp16        [V22,T16] (  3,  6   )     ref  -\u003E  rax         class-hnd \u0022Inline stloc first use temp\u0022 \u003Cuint[]\u003E\n\u002B;  V23 tmp17        [V23,T12] (  4,  8   )     int  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;* V24 tmp18        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;* V25 tmp19        [V25    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V26 tmp20        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;* V27 tmp21        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentNullException\u003E\n ;* V28 tmp22        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V10.rids (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp23        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V10.startRid (fldOffset=0x8)\u0022 P-INDEP\n ;* V30 tmp24        [V30    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V10.length (fldOffset=0xc)\u0022 P-INDEP\n ;* V31 tmp25        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.rids (fldOffset=0x0)\u0022 P-INDEP\n ;* V32 tmp26        [V32    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V24.startRid (fldOffset=0x8)\u0022 P-INDEP\n-;  V33 tmp27        [V33,T24] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V24.length (fldOffset=0xc)\u0022 P-INDEP\n-;  V34 tmp28        [V34,T21] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V35 tmp29        [V35,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V36 tmp30        [V36,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V37 cse0         [V37,T12] (  4,  8   )     ref  -\u003E  rdi         \u0022CSE #03: moderate\u0022\n-;  V38 cse1         [V38,T16] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n-;  V39 cse2         [V39,T19] (  2,  4   )     int  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n-;  V40 rat0         [V40,T09] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V33 tmp27        [V33,T26] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V24.length (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V34 tmp28        [V34,T23] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp29        [V35,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V36 tmp30        [V36,T15] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V37 tmp31        [V37,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V38 cse0         [V38,T11] (  4,  8   )     ref  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n\u002B;  V39 cse1         [V39,T17] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V40 cse2         [V40,T20] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #02: moderate\u0022\n\u002B;  V41 cse3         [V41,T21] (  2,  4   )     int  -\u003E  rdi         \u0022CSE #05: moderate\u0022\n\u002B;  V42 rat0         [V42,T08] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M40564_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M40564_IG02:\n        cmp      qword ptr [rbx\u002B0x148], 0\n        jne      G_M40564_IG17\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 3.00\n G_M40564_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rdi, gword ptr [rax\u002B0x180]\n        mov      r15d, dword ptr [rdi\u002B0x58]\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[uint]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r14, rax\n        mov      rdi, r14\n        mov      esi, r15d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[uint]:.ctor(int):this\n        call     [rax]System.Collections.Generic.List\u00601[uint]:.ctor(int):this\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDefMD:GetBaseDirectoryOfImage():System.String:this\n        call     [rax]dnlib.DotNet.ModuleDefMD:GetBaseDirectoryOfImage():System.String:this\n        mov      r13, rax\n        mov      r12d, 1\n        test     r15d, r15d\n        je       G_M40564_IG16\n \t\t\t\t\t\t;; size=97 bbWeight=0.50 PerfScore 11.75\n G_M40564_IG04:\n        mov      rax, gword ptr [rbx\u002B0x1E8]\n        mov      gword ptr [rbp-0x38], rax\n        lea      ecx, [r12-0x01]\n        mov      dword ptr [rbp-0x2C], ecx\n        cmp      ecx, dword ptr [rax\u002B0x18]\n-       jae      G_M40564_IG07\n-\t\t\t\t\t\t;; size=28 bbWeight=4 PerfScore 30.00\n\u002B       jae      SHORT G_M40564_IG07\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M40564_IG05:\n-       mov      rdi, gword ptr [rax\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      ecx, dword ptr [rsi\u002B0x08]\n-       jae      G_M40564_IG20\n\u002B       mov      rsi, gword ptr [rax\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      ecx, edx\n\u002B       jae      G_M40564_IG19\n        mov      edx, ecx\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M40564_IG06\n-       mov      esi, ecx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.FileDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x40], rax\n-       mov      rcx, gword ptr [rbp-0x38]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x2C]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, ecx\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x40], rdx\n\u002B       mov      r8, gword ptr [rax\u002B0x10]\n\u002B       lea      esi, [rcx\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x40]\n-       test     rdi, rdi\n-       je       G_M40564_IG19\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-       mov      ecx, dword ptr [rbp-0x2C]\n-\t\t\t\t\t\t;; size=104 bbWeight=2 PerfScore 55.00\n-G_M40564_IG06:\n        mov      rax, gword ptr [rbp-0x38]\n\u002B       mov      ecx, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=75 bbWeight=2 PerfScore 46.00\n\u002BG_M40564_IG06:\n        mov      rdi, gword ptr [rax\u002B0x08]\n        cmp      ecx, dword ptr [rdi\u002B0x08]\n-       jae      G_M40564_IG20\n\u002B       jae      G_M40564_IG19\n        mov      eax, ecx\n        mov      rdi, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M40564_IG08\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M40564_IG07:\n        xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40564_IG08:\n        test     rdi, rdi\n        je       G_M40564_IG15\n \t\t\t\t\t\t;; size=9 bbWeight=4 PerfScore 5.00\n G_M40564_IG09:\n        test     byte  ptr [rdi\u002B0x2C], 1\n        jne      G_M40564_IG15\n        mov      rax, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x48], rax\n        test     rax, rax\n        je       SHORT G_M40564_IG12\n        mov      rdi, gword ptr [rax\u002B0x08]\n        test     rdi, rdi\n        je       SHORT G_M40564_IG12\n        cmp      dword ptr [rdi\u002B0x08], 0\n        je       SHORT G_M40564_IG11\n        cmp      qword ptr [rax\u002B0x10], 0\n        jne      SHORT G_M40564_IG10\n        mov      rcx, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        call     [rcx]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0x48]\n        lea      rdi, bword ptr [rax\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=73 bbWeight=2 PerfScore 45.00\n G_M40564_IG10:\n        mov      rax, gword ptr [rbp-0x48]\n        mov      rsi, gword ptr [rax\u002B0x10]\n        jmp      SHORT G_M40564_IG13\n \t\t\t\t\t\t;; size=10 bbWeight=2 PerfScore 10.00\n G_M40564_IG11:\n        mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n        jmp      SHORT G_M40564_IG13\n \t\t\t\t\t\t;; size=12 bbWeight=2 PerfScore 4.50\n G_M40564_IG12:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40564_IG13:\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDefMD:GetValidFilename(System.String,System.String):System.String\n        call     [rax]dnlib.DotNet.ModuleDefMD:GetValidFilename(System.String,System.String):System.String\n        test     rax, rax\n        je       SHORT G_M40564_IG15\n        inc      dword ptr [r14\u002B0x14]\n        mov      rax, gword ptr [r14\u002B0x08]\n        mov      ecx, dword ptr [r14\u002B0x10]\n        mov      edi, dword ptr [rax\u002B0x08]\n        cmp      edi, ecx\n        ja       SHORT G_M40564_IG14\n        mov      rdi, r14\n        mov      esi, r12d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[uint]:AddWithResize(uint):this\n        call     [rax]System.Collections.Generic.List\u00601[uint]:AddWithResize(uint):this\n        jmp      SHORT G_M40564_IG15\n \t\t\t\t\t\t;; size=59 bbWeight=2 PerfScore 41.50\n G_M40564_IG14:\n-       lea      edx, [rcx\u002B0x01]\n-       mov      dword ptr [r14\u002B0x10], edx\n-       mov      ecx, ecx\n-       mov      dword ptr [rax\u002B4*rcx\u002B0x10], r12d\n\u002B       lea      edi, [rcx\u002B0x01]\n\u002B       mov      dword ptr [r14\u002B0x10], edi\n\u002B       mov      edi, ecx\n\u002B       mov      dword ptr [rax\u002B4*rdi\u002B0x10], r12d\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 5.50\n G_M40564_IG15:\n        inc      r12d\n        cmp      r12d, r15d\n        jbe      G_M40564_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M40564_IG16:\n        add      rbx, 328\n        mov      r15d, dword ptr [r14\u002B0x10]\n        mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        lea      rdi, bword ptr [r13\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        xor      edi, edi\n        mov      dword ptr [r13\u002B0x10], edi\n        mov      dword ptr [r13\u002B0x14], r15d\n        mov      rdi, rbx\n        mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n \t\t\t\t\t\t;; size=64 bbWeight=0.50 PerfScore 4.75\n G_M40564_IG17:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M40564_IG18:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M40564_IG19:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M40564_IG20:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 583, prolog size 22, PerfScore 255.00, instruction count 149, allocated bytes for code 583 (MethodHash=7886618b) for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n\u002B; Total bytes of code 533, prolog size 22, PerfScore 244.00, instruction count 141, allocated bytes for code 533 (MethodHash=7886618b) for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":583,"DiffBytes":533},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)","Category":"improvement","Description":"769 -\u003E 719 bytes (-50)","ExtraInfo":null,"Diff":"@@ -1,302 \u002B1,294 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 10 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T11] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 arg1         [V01,T21] (  5,  5.50)     ref  -\u003E  [rbp-0x60]  class-hnd single-def \u003Cdnlib.DotNet.EventDefMD\u003E\n-;  V02 arg2         [V02,T13] (  5,  7   )   byref  -\u003E  r15         single-def\n-;  V03 arg3         [V03,T14] (  5,  7   )   byref  -\u003E  r14         single-def\n-;  V04 arg4         [V04,T15] (  5,  7   )   byref  -\u003E  r13         single-def\n-;  V05 arg5         [V05,T16] (  5,  7   )   byref  -\u003E  r12         single-def\n\u002B;  V00 this         [V00,T10] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n\u002B;  V01 arg1         [V01,T22] (  5,  5.50)     ref  -\u003E  [rbp-0x60]  class-hnd single-def \u003Cdnlib.DotNet.EventDefMD\u003E\n\u002B;  V02 arg2         [V02,T12] (  5,  7   )   byref  -\u003E  r15         single-def\n\u002B;  V03 arg3         [V03,T13] (  5,  7   )   byref  -\u003E  r14         single-def\n\u002B;  V04 arg4         [V04,T14] (  5,  7   )   byref  -\u003E  r13         single-def\n\u002B;  V05 arg5         [V05,T15] (  5,  7   )   byref  -\u003E  r12         single-def\n ;  V06 loc0         [V06    ] (  8, 17   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V07 loc1         [V07,T02] (  8, 20.50)     int  -\u003E  [rbp-0x3C] \n ;  V08 loc2         [V08    ] (  3,  8   )  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V09 loc3         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V10 loc4         [V10,T06] (  6, 12   )  ushort  -\u003E  rdx        \n ;# V11 OutArgs      [V11    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V12 tmp1         [V12,T23] (  3,  6   )     ref  -\u003E  [rbp-0x68]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V12 tmp1         [V12,T24] (  3,  6   )     ref  -\u003E  [rbp-0x68]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n ;* V13 tmp2         [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V14 tmp3         [V14    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V15 tmp4         [V15,T05] (  2, 16   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V16 tmp5         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeDef\u003E\n ;* V17 tmp6         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V18 tmp7         [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V19 tmp8         [V19,T12] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V20 tmp9         [V20,T18] (  2,  8   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V21 tmp10        [V21,T20] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V19 tmp8         [V19,T11] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V20 tmp9         [V20,T17] (  2,  8   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V21 tmp10        [V21,T21] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;  V22 tmp11        [V22,T04] (  9, 18   )     ref  -\u003E  [rbp-0x78]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V23 tmp12        [V23,T00] (  8, 32   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V24 tmp13        [V24,T03] (  5, 20   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V25 tmp14        [V25,T07] (  3, 12   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V25 tmp14        [V25,T18] (  2,  8   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V26 tmp15        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V27 tmp16        [V27,T19] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V28 tmp17        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V29 tmp18        [V29,T17] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V06.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V30 tmp19        [V30,T26] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V06.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V31 tmp20        [V31,T22] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V06.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V29 tmp18        [V29,T16] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V06.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V30 tmp19        [V30,T28] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V06.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V31 tmp20        [V31,T23] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V06.length (fldOffset=0xc)\u0022 P-DEP\n ;  V32 tmp21        [V32    ] (  2,  6   )  ushort  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V08.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V33 tmp22        [V33    ] (  2,  6   )     int  -\u003E  [rbp-0x4C]  do-not-enreg[X] addr-exposed \u0022field V08.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V34 tmp23        [V34    ] (  1,  4   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] addr-exposed \u0022field V08.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V35 tmp24        [V35,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp24        [V35,T27] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V36 tmp25        [V36,T01] (  3, 24   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V37 tmp26        [V37,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V38 tmp27        [V38,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V39 cse0         [V39,T24] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #02: moderate\u0022\n-;  V40 rat0         [V40,T10] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V37 tmp26        [V37,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V38 tmp27        [V38,T20] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V39 tmp28        [V39,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V40 cse0         [V40,T25] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #02: moderate\u0022\n\u002B;  V41 cse1         [V41,T26] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n\u002B;  V42 rat0         [V42,T09] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 104\n \n G_M4781_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      gword ptr [rbp-0x60], rsi\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n        mov      r13, r8\n        mov      r12, r9\n \t\t\t\t\t\t;; size=57 bbWeight=1 PerfScore 11.58\n G_M4781_IG02:\n        xor      rdi, rdi\n        mov      gword ptr [r15], rdi\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 1.25\n G_M4781_IG03:\n        mov      gword ptr [r14], rdi\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 1.00\n G_M4781_IG04:\n        mov      gword ptr [r13], rdi\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x68], rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M4781_IG21\n \t\t\t\t\t\t;; size=42 bbWeight=1 PerfScore 6.50\n G_M4781_IG05:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]:s_emptyArray\n        mov      rsi, gword ptr [rdi]\n        mov      rax, gword ptr [rbp-0x68]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x68]\n        mov      rdi, r12\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rax, gword ptr [rbp-0x60]\n        test     rax, rax\n        je       G_M4781_IG20\n \t\t\t\t\t\t;; size=51 bbWeight=1 PerfScore 9.25\n G_M4781_IG06:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      gword ptr [rbp-0x60], rax\n        mov      edx, dword ptr [rax\u002B0x68]\n        mov      esi, 20\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x58]\n        call     [rcx\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      eax, eax\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      dword ptr [rbp-0x2C], 0\n        jle      G_M4781_IG20\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.75\n G_M4781_IG07:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x48]\n        call     [rcx\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      gword ptr [rbp-0x70], rax\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M4781_IG09\n \t\t\t\t\t\t;; size=35 bbWeight=4 PerfScore 56.00\n G_M4781_IG08:\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      ecx, dword ptr [rbp-0x2C]\n        jae      SHORT G_M4781_IG10\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        add      esi, dword ptr [rbp-0x30]\n        jmp      SHORT G_M4781_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=2 PerfScore 14.50\n G_M4781_IG09:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      eax, ecx\n        jbe      SHORT G_M4781_IG10\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M4781_IG11\n \t\t\t\t\t\t;; size=50 bbWeight=2 PerfScore 28.50\n G_M4781_IG10:\n        xor      esi, esi\n        mov      dword ptr [rbp-0x3C], ecx\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M4781_IG11:\n        lea      rdx, [rbp-0x50]\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M4781_IG19\n \t\t\t\t\t\t;; size=30 bbWeight=4 PerfScore 32.00\n G_M4781_IG12:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      eax, dword ptr [rbp-0x4C]\n-       mov      rcx, gword ptr [rdi\u002B0x170]\n\u002B       mov      rcx, gword ptr [rsi\u002B0x170]\n        mov      gword ptr [rbp-0x80], rcx\n        dec      eax\n        mov      dword ptr [rbp-0x54], eax\n        cmp      eax, dword ptr [rcx\u002B0x18]\n-       jae      G_M4781_IG14\n-       mov      rdi, gword ptr [rcx\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      eax, dword ptr [rsi\u002B0x08]\n-       jae      G_M4781_IG23\n\u002B       jae      SHORT G_M4781_IG14\n\u002B       mov      rsi, gword ptr [rcx\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      eax, edx\n\u002B       jae      G_M4781_IG22\n        mov      edx, eax\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M4781_IG13\n-       mov      esi, eax\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x88], rax\n-       mov      rcx, gword ptr [rbp-0x80]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, eax\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x88], rdx\n\u002B       mov      r8, gword ptr [rcx\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x88]\n-       test     rdi, rdi\n-       je       G_M4781_IG22\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      eax, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=145 bbWeight=2 PerfScore 75.50\n-G_M4781_IG13:\n        mov      rcx, gword ptr [rbp-0x80]\n\u002B\t\t\t\t\t\t;; size=112 bbWeight=2 PerfScore 66.50\n\u002BG_M4781_IG13:\n        mov      rdi, gword ptr [rcx\u002B0x08]\n        cmp      eax, dword ptr [rdi\u002B0x08]\n-       jae      G_M4781_IG23\n\u002B       jae      G_M4781_IG22\n        mov      esi, eax\n        mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M4781_IG15\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M4781_IG14:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M4781_IG15:\n        test     rax, rax\n        je       G_M4781_IG19\n        mov      rdi, gword ptr [rax\u002B0x70]\n        mov      rcx, gword ptr [rbp-0x60]\n        cmp      rdi, qword ptr [rcx\u002B0x50]\n        jne      G_M4781_IG19\n        movzx    rdx, word  ptr [rbp-0x50]\n        cmp      edx, 8\n        jle      SHORT G_M4781_IG17\n        cmp      edx, 16\n        jne      SHORT G_M4781_IG16\n        cmp      qword ptr [r13], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r13\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=61 bbWeight=2 PerfScore 34.50\n G_M4781_IG16:\n        cmp      edx, 32\n        jne      SHORT G_M4781_IG19\n        cmp      qword ptr [r14], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r14\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 15.50\n G_M4781_IG17:\n        cmp      edx, 4\n        jne      SHORT G_M4781_IG18\n        mov      rdi, gword ptr [r12]\n        mov      gword ptr [rbp-0x78], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M4781_IG19\n        mov      rdi, gword ptr [r12]\n        mov      rsi, gword ptr [rbp-0x78]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=56 bbWeight=2 PerfScore 34.50\n G_M4781_IG18:\n        cmp      edx, 8\n        jne      SHORT G_M4781_IG19\n        cmp      qword ptr [r15], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r15\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n \t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 11.50\n G_M4781_IG19:\n        mov      ecx, dword ptr [rbp-0x3C]\n        inc      ecx\n        cmp      ecx, dword ptr [rbp-0x2C]\n        mov      dword ptr [rbp-0x3C], ecx\n        jl       G_M4781_IG07\n \t\t\t\t\t\t;; size=17 bbWeight=4 PerfScore 17.00\n G_M4781_IG20:\n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M4781_IG21:\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rcx]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M4781_IG05\n \t\t\t\t\t\t;; size=27 bbWeight=0 PerfScore 0.00\n G_M4781_IG22:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4781_IG23:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 769, prolog size 38, PerfScore 386.58, instruction count 199, allocated bytes for code 769 (MethodHash=0ee3ed52) for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n\u002B; Total bytes of code 719, prolog size 38, PerfScore 375.58, instruction count 191, allocated bytes for code 719 (MethodHash=0ee3ed52) for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":769,"DiffBytes":719},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"290 -\u003E 249 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,153 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  4,  4   )     ref  -\u003E  r15         this class-hnd single-def \u003Cdnlib.DotNet.GenericParamMD\u003E\n ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V02 arg2         [V02,T02] (  6,  4   )     int  -\u003E  rbx         single-def\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T05] (  2,  4   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V05 tmp2         [V05,T04] (  4,  5   )     int  -\u003E  rbx         \u0022impAppendStmt\u0022\n ;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret multireg-dest single-def \u0022spilled call-like call argument\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V07 tmp4         [V07,T13] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V08 tmp5         [V08,T00] (  8, 10   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp5         [V08,T00] (  9, 11   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V09 tmp6         [V09,T01] (  6,  8   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V10 tmp7         [V10,T14] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V12 tmp9         [V12,T08] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V13 tmp10        [V13,T17] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp9         [V12,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V13 tmp10        [V13,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V15 tmp12        [V15,T15] (  2,  1.50)     ref  -\u003E  rax         \u0022field V06.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V16 tmp13        [V16,T16] (  2,  1.50)     ref  -\u003E  rcx         \u0022field V06.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V15 tmp12        [V15,T16] (  2,  1.50)     ref  -\u003E  rax         \u0022field V06.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V16 tmp13        [V16,T17] (  2,  1.50)     ref  -\u003E  rcx         \u0022field V06.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V17 tmp14        [V17,T06] (  4,  3   )     ref  -\u003E  r13         single-def \u0022V01.[000..008)\u0022\n ;* V18 tmp15        [V18    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[008..012)\u0022\n ;* V19 tmp16        [V19    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[012..016)\u0022\n-;  V20 tmp17        [V20,T09] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V21 tmp18        [V21,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V22 rat0         [V22,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n-;  V23 rat1         [V23,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n-;  V24 rat2         [V24,T12] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V20 tmp17        [V20,T08] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp18        [V21,T09] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V23 rat0         [V23,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n\u002B;  V24 rat1         [V24,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n\u002B;  V25 rat2         [V25,T12] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 0\n \n G_M33850_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        lea      rbp, [rsp\u002B0x20]\n        mov      r15, rdi\n        mov      ebx, ecx\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M33850_IG02:\n        mov      r14, gword ptr [r15\u002B0x48]\n        mov      r13, rsi\n        test     r13, r13\n        jne      SHORT G_M33850_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 3.50\n G_M33850_IG03:\n        mov      rdi, rdx\n        shr      rdi, 32\n        cmp      ebx, edi\n        jae      SHORT G_M33850_IG05\n        add      ebx, edx\n        jmp      SHORT G_M33850_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M33850_IG04:\n        mov      rdi, r13\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, ebx\n        jbe      SHORT G_M33850_IG05\n        mov      rdi, r13\n        mov      esi, ebx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      ebx, eax\n        jmp      SHORT G_M33850_IG06\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 5.38\n G_M33850_IG05:\n        xor      ebx, ebx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M33850_IG06:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.GenericParamMD:GetGenericParamContext(dnlib.DotNet.ITypeOrMethodDef):dnlib.DotNet.GenericParamContext\n        call     [rax]dnlib.DotNet.GenericParamMD:GetGenericParamContext(dnlib.DotNet.ITypeOrMethodDef):dnlib.DotNet.GenericParamContext\n        mov      rcx, rdx\n        mov      r15, gword ptr [r14\u002B0x210]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M33850_IG10\n-\t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 10.75\n\u002B       jae      SHORT G_M33850_IG10\n\u002B\t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 10.75\n G_M33850_IG07:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M33850_IG13\n\u002B       jae      SHORT G_M33850_IG12\n        mov      esi, ebx\n        cmp      qword ptr [rdx\u002B8*rsi\u002B0x10], 0\n        jne      SHORT G_M33850_IG08\n        mov      r8, gword ptr [r15\u002B0x10]\n        mov      rdx, rax\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [r8\u002B0x10]\n        call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M33850_IG09\n        mov      rdi, gword ptr [r15\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M33850_IG12\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M33850_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.75\n\u002B\t\t\t\t\t\t;; size=86 bbWeight=0.50 PerfScore 15.25\n G_M33850_IG08:\n        mov      rax, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M33850_IG13\n\u002B       jae      SHORT G_M33850_IG12\n        mov      ecx, ebx\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M33850_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M33850_IG09:\n        mov      rax, r14\n        jmp      SHORT G_M33850_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M33850_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M33850_IG11:\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.50\n G_M33850_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M33850_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 290, prolog size 13, PerfScore 53.00, instruction count 86, allocated bytes for code 290 (MethodHash=4c257bc5) for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 249, prolog size 13, PerfScore 52.50, instruction count 80, allocated bytes for code 249 (MethodHash=4c257bc5) for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":290,"DiffBytes":249},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"275 -\u003E 234 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,153 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  4,  3.50)     ref  -\u003E  r15         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V02 arg2         [V02,T02] (  6,  4   )     int  -\u003E  rbx         single-def\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T05] (  2,  4   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V06 tmp3         [V06,T04] (  4,  5   )     int  -\u003E  rbx         \u0022impAppendStmt\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T13] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V09 tmp6         [V09,T00] (  8, 10   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  9, 11   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T01] (  6,  8   )     ref  -\u003E  r14         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V11 tmp8         [V11,T14] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V13 tmp10        [V13,T08] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V14 tmp11        [V14,T15] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V13 tmp10        [V13,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V14 tmp11        [V14,T16] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V05.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V05.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20,T06] (  4,  3   )     ref  -\u003E  r13         single-def \u0022V01.[000..008)\u0022\n ;* V21 tmp18        [V21    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[008..012)\u0022\n ;* V22 tmp19        [V22    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[012..016)\u0022\n-;  V23 tmp20        [V23,T09] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V24 tmp21        [V24,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V25 rat0         [V25,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n-;  V26 rat1         [V26,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n-;  V27 rat2         [V27,T12] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V23 tmp20        [V23,T08] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V24 tmp21        [V24,T09] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp22        [V25,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V26 rat0         [V26,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n\u002B;  V27 rat1         [V27,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n\u002B;  V28 rat2         [V28,T12] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 0\n \n G_M1526_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        lea      rbp, [rsp\u002B0x20]\n        mov      r15, rdi\n        mov      ebx, ecx\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M1526_IG02:\n        mov      r14, gword ptr [r15\u002B0xA0]\n        mov      r13, rsi\n        test     r13, r13\n        jne      SHORT G_M1526_IG04\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 3.50\n G_M1526_IG03:\n        mov      rdi, rdx\n        shr      rdi, 32\n        cmp      ebx, edi\n        jae      SHORT G_M1526_IG05\n        add      ebx, edx\n        jmp      SHORT G_M1526_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M1526_IG04:\n        mov      rdi, r13\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, ebx\n        jbe      SHORT G_M1526_IG05\n        mov      rdi, r13\n        mov      esi, ebx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      ebx, eax\n        jmp      SHORT G_M1526_IG06\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 5.38\n G_M1526_IG05:\n        xor      ebx, ebx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M1526_IG06:\n        mov      r14, gword ptr [r14\u002B0x180]\n        dec      ebx\n        cmp      ebx, dword ptr [r14\u002B0x18]\n-       jae      G_M1526_IG10\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 5.25\n\u002B       jae      SHORT G_M1526_IG10\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.25\n G_M1526_IG07:\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M1526_IG13\n\u002B       jae      SHORT G_M1526_IG12\n        mov      edx, ebx\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M1526_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdx, r15\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M1526_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M1526_IG12\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M1526_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=111 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.38\n G_M1526_IG08:\n        mov      rax, gword ptr [r14\u002B0x08]\n        cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M1526_IG13\n\u002B       jae      SHORT G_M1526_IG12\n        mov      ecx, ebx\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M1526_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M1526_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M1526_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M1526_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M1526_IG11:\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.50\n G_M1526_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M1526_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 275, prolog size 13, PerfScore 47.62, instruction count 83, allocated bytes for code 275 (MethodHash=84defa09) for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 234, prolog size 13, PerfScore 47.12, instruction count 77, allocated bytes for code 234 (MethodHash=84defa09) for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":275,"DiffBytes":234},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)","Category":"improvement","Description":"1,153 -\u003E 1,112 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,448 \u002B1,441 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 16 single block inlinees; 8 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T08] ( 14, 64   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 loc0         [V01,T50] (  4,  4   )     int  -\u003E  rax        \n\u002B;  V01 loc0         [V01,T52] (  4,  4   )     int  -\u003E  rax        \n ;  V02 loc1         [V02    ] ( 16, 44   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V03 loc2         [V03,T23] (  9, 34   )     int  -\u003E  r15        \n ;  V04 loc3         [V04    ] (  8, 72   )  struct (16) [rbp-0x48]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V05 loc4         [V05,T04] (  8, 84   )     int  -\u003E  r14        \n ;  V06 loc5         [V06    ] (  3, 32   )  struct (16) [rbp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V07 loc6         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V08 loc7         [V08,T24] (  9, 34   )     int  -\u003E  r15        \n ;  V09 loc8         [V09    ] (  8, 72   )  struct (16) [rbp-0x68]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V10 loc9         [V10,T05] (  8, 84   )     int  -\u003E  r14        \n ;  V11 loc10        [V11    ] (  3, 32   )  struct (16) [rbp-0x78]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V12 loc11        [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V14 tmp1         [V14    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n-;  V15 tmp2         [V15,T36] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n\u002B;  V15 tmp2         [V15,T38] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V16 tmp3         [V16    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V17 tmp4         [V17,T09] (  2, 64   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V18 tmp5         [V18    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n-;  V19 tmp6         [V19,T37] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n\u002B;  V19 tmp6         [V19,T39] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V20 tmp7         [V20    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V21 tmp8         [V21,T10] (  2, 64   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V22 tmp9         [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V23 tmp10        [V23    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V24 tmp11        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V25 tmp12        [V25,T43] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n\u002B;  V25 tmp12        [V25,T45] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V26 tmp13        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V27 tmp14        [V27,T19] (  4, 40   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V28 tmp15        [V28,T29] (  2, 32   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V29 tmp16        [V29,T33] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V28 tmp15        [V28,T29] (  2, 32   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V29 tmp16        [V29,T35] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V30 tmp17        [V30,T25] (  3, 24   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V31 tmp18        [V31,T00] (  8,128   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V31 tmp18        [V31,T00] (  9,144   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V32 tmp19        [V32,T06] (  5, 80   )     ref  -\u003E  r12         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V33 tmp20        [V33,T11] (  3, 48   )   byref  -\u003E  [rbp-0x80]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V33 tmp20        [V33,T30] (  2, 32   )   byref  -\u003E  [rbp-0x80]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V34 tmp21        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V35 tmp22        [V35,T30] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V35 tmp22        [V35,T31] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V36 tmp23        [V36    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;* V37 tmp24        [V37    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V38 tmp25        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V39 tmp26        [V39    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V40 tmp27        [V40,T44] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n\u002B;  V40 tmp27        [V40,T46] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V41 tmp28        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V42 tmp29        [V42,T20] (  4, 40   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V43 tmp30        [V43,T31] (  2, 32   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V44 tmp31        [V44,T34] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V43 tmp30        [V43,T32] (  2, 32   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V44 tmp31        [V44,T36] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V45 tmp32        [V45,T26] (  3, 24   )     ref  -\u003E  rcx         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V46 tmp33        [V46,T01] (  8,128   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp33        [V46,T01] (  9,144   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V47 tmp34        [V47,T07] (  5, 80   )     ref  -\u003E  r12         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V48 tmp35        [V48,T12] (  3, 48   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V48 tmp35        [V48,T33] (  2, 32   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V49 tmp36        [V49    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V50 tmp37        [V50,T32] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V50 tmp37        [V50,T34] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V51 tmp38        [V51    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V52 tmp39        [V52,T40] (  8, 18   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V02.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V53 tmp40        [V53,T45] (  4,  6   )     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V02.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V54 tmp41        [V54,T35] (  8, 24   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V02.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V52 tmp39        [V52,T42] (  8, 18   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V02.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V53 tmp40        [V53,T47] (  4,  6   )     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V02.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V54 tmp41        [V54,T37] (  8, 24   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V02.length (fldOffset=0xc)\u0022 P-DEP\n ;  V55 tmp42        [V55,T21] (  4, 36   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[] \u0022field V04.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V56 tmp43        [V56,T41] (  2, 12   )     int  -\u003E  [rbp-0x40]  do-not-enreg[] \u0022field V04.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V56 tmp43        [V56,T43] (  2, 12   )     int  -\u003E  [rbp-0x40]  do-not-enreg[] \u0022field V04.startRid (fldOffset=0x8)\u0022 P-DEP\n ;  V57 tmp44        [V57,T27] (  4, 32   )     int  -\u003E  [rbp-0x3C]  do-not-enreg[] \u0022field V04.length (fldOffset=0xc)\u0022 P-DEP\n ;  V58 tmp45        [V58    ] (  2, 24   )  ushort  -\u003E  [rbp-0x58]  do-not-enreg[X] addr-exposed \u0022field V06.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V59 tmp46        [V59    ] (  2, 24   )     int  -\u003E  [rbp-0x54]  do-not-enreg[X] addr-exposed \u0022field V06.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V60 tmp47        [V60    ] (  1, 16   )     int  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V06.Association (fldOffset=0x8)\u0022 P-DEP\n ;  V61 tmp48        [V61,T22] (  4, 36   )     ref  -\u003E  [rbp-0x68]  do-not-enreg[] \u0022field V09.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V62 tmp49        [V62,T42] (  2, 12   )     int  -\u003E  [rbp-0x60]  do-not-enreg[] \u0022field V09.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V62 tmp49        [V62,T44] (  2, 12   )     int  -\u003E  [rbp-0x60]  do-not-enreg[] \u0022field V09.startRid (fldOffset=0x8)\u0022 P-DEP\n ;  V63 tmp50        [V63,T28] (  4, 32   )     int  -\u003E  [rbp-0x5C]  do-not-enreg[] \u0022field V09.length (fldOffset=0xc)\u0022 P-DEP\n ;  V64 tmp51        [V64    ] (  2, 24   )  ushort  -\u003E  [rbp-0x78]  do-not-enreg[X] addr-exposed \u0022field V11.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V65 tmp52        [V65    ] (  2, 24   )     int  -\u003E  [rbp-0x74]  do-not-enreg[X] addr-exposed \u0022field V11.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V66 tmp53        [V66    ] (  1, 16   )     int  -\u003E  [rbp-0x70]  do-not-enreg[X] addr-exposed \u0022field V11.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V67 tmp54        [V67,T46] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V68 tmp55        [V68,T47] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V67 tmp54        [V67,T48] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V68 tmp55        [V68,T49] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V69 tmp56        [V69,T02] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V70 tmp57        [V70,T13] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V71 tmp58        [V71,T14] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n-;  V72 tmp59        [V72,T48] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V73 tmp60        [V73,T49] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V74 tmp61        [V74,T03] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V75 tmp62        [V75,T15] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V76 tmp63        [V76,T16] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n-;  V77 cse0         [V77,T38] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #01: conservative\u0022\n-;  V78 cse1         [V78,T39] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #06: conservative\u0022\n-;  V79 rat0         [V79,T17] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n-;  V80 rat1         [V80,T18] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V70 tmp57        [V70,T11] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V71 tmp58        [V71,T12] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V72 tmp59        [V72,T13] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V73 tmp60        [V73,T50] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V74 tmp61        [V74,T51] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V75 tmp62        [V75,T03] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n\u002B;  V76 tmp63        [V76,T14] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V77 tmp64        [V77,T15] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V78 tmp65        [V78,T16] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V79 cse0         [V79,T40] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #01: conservative\u0022\n\u002B;  V80 cse1         [V80,T41] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n\u002B;  V81 rat0         [V81,T17] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V82 rat1         [V82,T18] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 104\n \n G_M9959_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x78], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu32 zmmword ptr [rbp-0x70], zmm8\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=50 bbWeight=1 PerfScore 11.58\n G_M9959_IG02:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, dword ptr [rbx\u002B0x9C]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x60]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:GetPropertyMapRid(uint):uint:this\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, eax\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax]dnlib.DotNet.MD.Metadata:GetPropertyRidList(uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      r15d, r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jge      G_M9959_IG17\n \t\t\t\t\t\t;; size=76 bbWeight=1 PerfScore 28.50\n G_M9959_IG03:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      r14, gword ptr [rdi\u002B0x130]\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M9959_IG05\n \t\t\t\t\t\t;; size=21 bbWeight=4 PerfScore 24.00\n G_M9959_IG04:\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jae      SHORT G_M9959_IG06\n        mov      edx, r15d\n        add      edx, dword ptr [rbp-0x30]\n        jmp      SHORT G_M9959_IG07\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 10.50\n G_M9959_IG05:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r15d\n        jbe      SHORT G_M9959_IG06\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      esi, r15d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      edx, eax\n        jmp      SHORT G_M9959_IG07\n \t\t\t\t\t\t;; size=46 bbWeight=2 PerfScore 24.50\n G_M9959_IG06:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M9959_IG07:\n        mov      rdi, r14\n        mov      esi, 23\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x48], rax\n        mov      qword ptr [rbp-0x40], rdx\n        xor      r14d, r14d\n        cmp      dword ptr [rbp-0x3C], 0\n        jle      G_M9959_IG16\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 47.00\n G_M9959_IG08:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      r13, rax\n        cmp      qword ptr [rbp-0x48], 0\n        jne      SHORT G_M9959_IG10\n \t\t\t\t\t\t;; size=34 bbWeight=16 PerfScore 212.00\n G_M9959_IG09:\n        cmp      r14d, dword ptr [rbp-0x3C]\n        jae      SHORT G_M9959_IG11\n        mov      esi, r14d\n        add      esi, dword ptr [rbp-0x40]\n        jmp      SHORT G_M9959_IG12\n \t\t\t\t\t\t;; size=14 bbWeight=8 PerfScore 42.00\n G_M9959_IG10:\n        mov      rdi, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r14d\n        jbe      SHORT G_M9959_IG11\n        mov      rdi, gword ptr [rbp-0x48]\n        mov      esi, r14d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M9959_IG12\n \t\t\t\t\t\t;; size=46 bbWeight=8 PerfScore 98.00\n G_M9959_IG11:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M9959_IG12:\n        lea      rdx, [rbp-0x58]\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M9959_IG15\n \t\t\t\t\t\t;; size=29 bbWeight=16 PerfScore 116.00\n G_M9959_IG13:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      r13d, dword ptr [rbp-0x54]\n-       mov      r12, gword ptr [rdi\u002B0x170]\n\u002B       mov      r12, gword ptr [rsi\u002B0x170]\n        dec      r13d\n        cmp      r13d, dword ptr [r12\u002B0x18]\n        jae      G_M9959_IG15\n-       mov      rdi, gword ptr [r12\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M9959_IG34\n-       mov      edx, r13d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      eax, r13d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M9959_IG14\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      edi, r13d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x80], rax\n        mov      rcx, gword ptr [r12\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x80]\n-       test     rdi, rdi\n-       je       G_M9959_IG33\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=8 PerfScore 262.00\n\u002B\t\t\t\t\t\t;; size=113 bbWeight=8 PerfScore 256.00\n G_M9959_IG14:\n        mov      rax, gword ptr [r12\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M9959_IG34\n\u002B       jae      G_M9959_IG33\n        mov      edi, r13d\n        mov      rdi, gword ptr [rax\u002B8*rdi\u002B0x10]\n        test     rdi, rdi\n        je       SHORT G_M9959_IG15\n        add      rdi, 136\n        movzx    rsi, word  ptr [rbp-0x58]\n        mov      rax, 0xD1FFAB1E      ; data for dnlib.DotNet.MethodDef:SEMATTRS_INITD\n        or       esi, dword ptr [rax]\n        xor      eax, eax\n        lock     \n        cmpxchg  dword ptr [rdi], esi\n \t\t\t\t\t\t;; size=57 bbWeight=8 PerfScore 242.00\n G_M9959_IG15:\n        inc      r14d\n        cmp      r14d, dword ptr [rbp-0x3C]\n        jl       G_M9959_IG08\n \t\t\t\t\t\t;; size=13 bbWeight=16 PerfScore 36.00\n G_M9959_IG16:\n        inc      r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jl       G_M9959_IG03\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 18.00\n G_M9959_IG17:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, dword ptr [rbx\u002B0x9C]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x60]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetEventMapRid(uint):uint:this\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, eax\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x50]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:GetEventRidList(uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      r15d, r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jge      G_M9959_IG32\n \t\t\t\t\t\t;; size=77 bbWeight=1 PerfScore 28.50\n G_M9959_IG18:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      r14, gword ptr [rdi\u002B0x130]\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M9959_IG20\n \t\t\t\t\t\t;; size=21 bbWeight=4 PerfScore 24.00\n G_M9959_IG19:\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jae      SHORT G_M9959_IG21\n        mov      edx, r15d\n        add      edx, dword ptr [rbp-0x30]\n        jmp      SHORT G_M9959_IG22\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 10.50\n G_M9959_IG20:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r15d\n        jbe      SHORT G_M9959_IG21\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      esi, r15d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      edx, eax\n        jmp      SHORT G_M9959_IG22\n \t\t\t\t\t\t;; size=46 bbWeight=2 PerfScore 24.50\n G_M9959_IG21:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M9959_IG22:\n        mov      rdi, r14\n        mov      esi, 20\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x68], rax\n        mov      qword ptr [rbp-0x60], rdx\n        xor      r14d, r14d\n        cmp      dword ptr [rbp-0x5C], 0\n        jle      G_M9959_IG31\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 47.00\n G_M9959_IG23:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      r13, rax\n        cmp      qword ptr [rbp-0x68], 0\n        jne      SHORT G_M9959_IG25\n \t\t\t\t\t\t;; size=34 bbWeight=16 PerfScore 212.00\n G_M9959_IG24:\n        cmp      r14d, dword ptr [rbp-0x5C]\n        jae      SHORT G_M9959_IG26\n        mov      esi, r14d\n        add      esi, dword ptr [rbp-0x60]\n        jmp      SHORT G_M9959_IG27\n \t\t\t\t\t\t;; size=14 bbWeight=8 PerfScore 42.00\n G_M9959_IG25:\n        mov      rdi, gword ptr [rbp-0x68]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r14d\n        jbe      SHORT G_M9959_IG26\n        mov      rdi, gword ptr [rbp-0x68]\n        mov      esi, r14d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M9959_IG27\n \t\t\t\t\t\t;; size=46 bbWeight=8 PerfScore 98.00\n G_M9959_IG26:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M9959_IG27:\n        lea      rdx, [rbp-0x78]\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M9959_IG30\n \t\t\t\t\t\t;; size=29 bbWeight=16 PerfScore 116.00\n G_M9959_IG28:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      r13d, dword ptr [rbp-0x74]\n-       mov      r12, gword ptr [rdi\u002B0x170]\n\u002B       mov      r12, gword ptr [rsi\u002B0x170]\n        dec      r13d\n        cmp      r13d, dword ptr [r12\u002B0x18]\n        jae      G_M9959_IG30\n-       mov      rdi, gword ptr [r12\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M9959_IG34\n-       mov      edx, r13d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      eax, r13d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M9959_IG29\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      edi, r13d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x88], rax\n        mov      rcx, gword ptr [r12\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x88]\n-       test     rdi, rdi\n-       je       SHORT G_M9959_IG33\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=131 bbWeight=8 PerfScore 262.00\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=8 PerfScore 256.00\n G_M9959_IG29:\n        mov      rax, gword ptr [r12\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M9959_IG34\n\u002B       jae      SHORT G_M9959_IG33\n        mov      ecx, r13d\n        mov      rcx, gword ptr [rax\u002B8*rcx\u002B0x10]\n        test     rcx, rcx\n        je       SHORT G_M9959_IG30\n        add      rcx, 136\n        movzx    rdx, word  ptr [rbp-0x78]\n        mov      rax, 0xD1FFAB1E      ; data for dnlib.DotNet.MethodDef:SEMATTRS_INITD\n        or       edx, dword ptr [rax]\n        xor      eax, eax\n        lock     \n        cmpxchg  dword ptr [rcx], edx\n \t\t\t\t\t\t;; size=53 bbWeight=8 PerfScore 242.00\n G_M9959_IG30:\n        inc      r14d\n        cmp      r14d, dword ptr [rbp-0x5C]\n        jl       G_M9959_IG23\n \t\t\t\t\t\t;; size=13 bbWeight=16 PerfScore 36.00\n G_M9959_IG31:\n        inc      r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jl       G_M9959_IG18\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 18.00\n G_M9959_IG32:\n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M9959_IG33:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M9959_IG34:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1153, prolog size 47, PerfScore 2341.83, instruction count 283, allocated bytes for code 1153 (MethodHash=6bf5d918) for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n\u002B; Total bytes of code 1112, prolog size 47, PerfScore 2329.83, instruction count 276, allocated bytes for code 1112 (MethodHash=6bf5d918) for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1153,"DiffBytes":1112},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M21025_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M21025_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x210]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M21025_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M21025_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M21025_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M21025_IG09\n\u002B       jae      SHORT G_M21025_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M21025_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M21025_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M21025_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M21025_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M21025_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M21025_IG09\n\u002B       jae      SHORT G_M21025_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M21025_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M21025_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M21025_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M21025_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M21025_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M21025_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M21025_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=8785adde) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=8785adde) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M41537_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M41537_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x210]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M41537_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M41537_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M41537_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M41537_IG09\n\u002B       jae      SHORT G_M41537_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M41537_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M41537_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M41537_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M41537_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M41537_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M41537_IG09\n\u002B       jae      SHORT G_M41537_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M41537_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M41537_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M41537_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M41537_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M41537_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M41537_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M41537_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=c1515dbe) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=c1515dbe) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M6401_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M6401_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x180]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M6401_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M6401_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M6401_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M6401_IG09\n\u002B       jae      SHORT G_M6401_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M6401_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M6401_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M6401_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M6401_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M6401_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M6401_IG09\n\u002B       jae      SHORT G_M6401_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M6401_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M6401_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M6401_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M6401_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6401_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M6401_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M6401_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=3206e6fe) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=3206e6fe) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M45793_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M45793_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x180]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M45793_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M45793_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M45793_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M45793_IG09\n\u002B       jae      SHORT G_M45793_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M45793_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M45793_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M45793_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M45793_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M45793_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M45793_IG09\n\u002B       jae      SHORT G_M45793_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M45793_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M45793_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M45793_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M45793_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M45793_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M45793_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M45793_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=8a5f4d1e) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=8a5f4d1e) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)","Category":"improvement","Description":"206 -\u003E 166 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V05 tmp2         [V05,T09] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T08] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V16 tmp13        [V16,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V17 tmp14        [V17,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V18 rat0         [V18,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M34817_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M34817_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x188]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M34817_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M34817_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M34817_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M34817_IG09\n\u002B       jae      SHORT G_M34817_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M34817_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M34817_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M34817_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M34817_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 16.00\n\u002B\t\t\t\t\t\t;; size=93 bbWeight=0.50 PerfScore 15.50\n G_M34817_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M34817_IG09\n\u002B       jae      SHORT G_M34817_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M34817_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M34817_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M34817_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M34817_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M34817_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M34817_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M34817_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 206, prolog size 12, PerfScore 36.12, instruction count 60, allocated bytes for code 206 (MethodHash=139a77fe) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n\u002B; Total bytes of code 166, prolog size 12, PerfScore 35.62, instruction count 54, allocated bytes for code 166 (MethodHash=139a77fe) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":206,"DiffBytes":166},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)","Category":"improvement","Description":"202 -\u003E 162 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T11] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V07 tmp4         [V07,T10] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V10 tmp7         [V10    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V11 tmp8         [V11,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V12 tmp9         [V12,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V13 tmp10        [V13,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V15 rat0         [V15,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V13 tmp10        [V13,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M2273_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M2273_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x188]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M2273_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M2273_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M2273_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M2273_IG09\n\u002B       jae      SHORT G_M2273_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M2273_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M2273_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M2273_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M2273_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=112 bbWeight=0.50 PerfScore 15.75\n\u002B\t\t\t\t\t\t;; size=89 bbWeight=0.50 PerfScore 15.25\n G_M2273_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M2273_IG09\n\u002B       jae      SHORT G_M2273_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M2273_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M2273_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M2273_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M2273_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M2273_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M2273_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M2273_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 202, prolog size 12, PerfScore 35.88, instruction count 58, allocated bytes for code 202 (MethodHash=e608f71e) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n\u002B; Total bytes of code 162, prolog size 12, PerfScore 35.38, instruction count 52, allocated bytes for code 162 (MethodHash=e608f71e) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":202,"DiffBytes":162},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M42721_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M42721_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1A8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M42721_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M42721_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M42721_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M42721_IG09\n\u002B       jae      SHORT G_M42721_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M42721_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M42721_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M42721_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M42721_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M42721_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M42721_IG09\n\u002B       jae      SHORT G_M42721_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M42721_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M42721_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M42721_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M42721_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M42721_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M42721_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M42721_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=9e01591e) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=9e01591e) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M3873_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M3873_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1A8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M3873_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M3873_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M3873_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M3873_IG09\n\u002B       jae      SHORT G_M3873_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M3873_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M3873_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M3873_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M3873_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M3873_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M3873_IG09\n\u002B       jae      SHORT G_M3873_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M3873_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M3873_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M3873_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M3873_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M3873_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M3873_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M3873_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=194ff0de) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=194ff0de) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)","Category":"improvement","Description":"521 -\u003E 483 bytes (-38)","ExtraInfo":null,"Diff":"@@ -1,226 \u002B1,213 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 11 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T15] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V15 tmp12        [V15,T00] (  9, 36   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V17 tmp14        [V17,T07] (  7, 14   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V19 tmp16        [V19,T08] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T13] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;  V20 tmp17        [V20    ] (  8, 16   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V21 tmp18        [V21,T16] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V22 tmp19        [V22,T13] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V21 tmp18        [V21,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V22 tmp19        [V22,T14] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V23 tmp20        [V23    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V25 tmp22        [V25,T14] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V25 tmp22        [V25,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V28 tmp25        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp26        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V30 tmp27        [V30    ] (  8, 16   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V20.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V31 tmp28        [V31,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V31 tmp28        [V31,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V32 tmp29        [V32,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V33 tmp30        [V33,T09] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V34 tmp31        [V34,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V35 rat0         [V35,T11] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V33 tmp30        [V33,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V34 tmp31        [V34,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V35 tmp32        [V35,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V36 rat0         [V36,T11] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M36886_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=28 bbWeight=1 PerfScore 8.25\n G_M36886_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rdi\u002B0x30], 512\n-       je       G_M36886_IG17\n\u002B       je       G_M36886_IG15\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.00\n G_M36886_IG03:\n        cmp      byte  ptr [rbx\u002B0x246], 0\n-       jne      G_M36886_IG17\n\u002B       jne      G_M36886_IG15\n        mov      byte  ptr [rbx\u002B0x246], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0x128]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n-       je       G_M36886_IG16\n\u002B       je       G_M36886_IG14\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M36886_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xF0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n-       jae      G_M36886_IG19\n\u002B       jae      G_M36886_IG17\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n        mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n        test     esi, esi\n-       jne      G_M36886_IG15\n\u002B       jne      G_M36886_IG13\n \t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n G_M36886_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13, gword ptr [rsi\u002B0x1C8]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n-       jae      G_M36886_IG13\n\u002B       jae      G_M36886_IG11\n        mov      rsi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n-       jne      G_M36886_IG11\n\u002B       jne      G_M36886_IG09\n        mov      rax, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n        mov      gword ptr [rbp-0x38], rsi\n        cmp      byte  ptr [rsi], sil\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n \t\t\t\t\t\t;; size=92 bbWeight=2 PerfScore 56.50\n G_M36886_IG06:\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n-       jl       SHORT G_M36886_IG08\n-\t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.00\n-G_M36886_IG07:\n-       jmp      SHORT G_M36886_IG10\n-\t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 2.00\n-G_M36886_IG08:\n\u002B       jge      SHORT G_M36886_IG08\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [rsi\u002B0x34], 0\n-       jne      SHORT G_M36886_IG09\n\u002B       jne      SHORT G_M36886_IG07\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        mov      rsi, gword ptr [rbp-0x38]\n-\t\t\t\t\t\t;; size=33 bbWeight=2 PerfScore 19.50\n-G_M36886_IG09:\n\u002B\t\t\t\t\t\t;; size=42 bbWeight=2 PerfScore 25.50\n\u002BG_M36886_IG07:\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n-       jne      SHORT G_M36886_IG12\n-\t\t\t\t\t\t;; size=32 bbWeight=2 PerfScore 18.50\n-G_M36886_IG10:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M36886_IG20\n-       mov      rdi, rax\n        mov      rsi, gword ptr [rbp-0x38]\n-       xor      rdx, rdx\n-       call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=52 bbWeight=2 PerfScore 19.00\n-G_M36886_IG11:\n\u002B       jne      SHORT G_M36886_IG10\n\u002B\t\t\t\t\t\t;; size=36 bbWeight=2 PerfScore 20.50\n\u002BG_M36886_IG08:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n\u002B       mov      edx, r12d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rdx\u002B0x10]\n\u002B       xor      rdx, rdx\n\u002B       call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n\u002B\t\t\t\t\t\t;; size=29 bbWeight=2 PerfScore 15.00\n\u002BG_M36886_IG09:\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M36886_IG18\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n-       jmp      SHORT G_M36886_IG14\n\u002B       jmp      SHORT G_M36886_IG12\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n-G_M36886_IG12:\n-       mov      rsi, gword ptr [rbp-0x38]\n-       jmp      SHORT G_M36886_IG14\n-\t\t\t\t\t\t;; size=6 bbWeight=2 PerfScore 6.00\n-G_M36886_IG13:\n\u002BG_M36886_IG10:\n\u002B       jmp      SHORT G_M36886_IG12\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 4.00\n\u002BG_M36886_IG11:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n-G_M36886_IG14:\n\u002BG_M36886_IG12:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n-G_M36886_IG15:\n\u002BG_M36886_IG13:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M36886_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n-G_M36886_IG16:\n\u002BG_M36886_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xF0]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.62\n-G_M36886_IG17:\n\u002BG_M36886_IG15:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n-G_M36886_IG18:\n\u002BG_M36886_IG16:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n-G_M36886_IG19:\n\u002BG_M36886_IG17:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M36886_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M36886_IG21:\n\u002BG_M36886_IG18:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 521, prolog size 28, PerfScore 263.62, instruction count 132, allocated bytes for code 521 (MethodHash=613b6fe9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n\u002B; Total bytes of code 483, prolog size 28, PerfScore 257.62, instruction count 124, allocated bytes for code 483 (MethodHash=613b6fe9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":521,"DiffBytes":483},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)","Category":"improvement","Description":"519 -\u003E 482 bytes (-37)","ExtraInfo":null,"Diff":"@@ -1,228 \u002B1,221 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T01] (  7,  4.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n ;  V04 loc1         [V04,T09] (  6,  3   )     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T04] (  7,  3.50)     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMemberRefParent\u003E\n ;  V06 loc3         [V06,T06] (  7,  3.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T15] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T16] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T16] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T17] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T14] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T02] (  6,  6   )     ref  -\u003E  r13         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V13 tmp6         [V13,T05] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp8         [V15,T10] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V16 tmp9         [V16    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V17 tmp10        [V17,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V18 tmp11        [V18,T17] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V17 tmp10        [V17,T19] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp11        [V18,T18] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V19 tmp12        [V19    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V20 tmp13        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V21 tmp14        [V21,T07] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V22 tmp15        [V22,T08] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp16        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V16.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp17        [V24,T11] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V25 tmp18        [V25,T12] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T13] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp17        [V24,T10] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp18        [V25,T11] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp19        [V26,T12] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T13] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M56840_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 8.75\n G_M56840_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M56840_IG18\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M56840_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 2\n        jle      G_M56840_IG12\n        cmp      r13d, 6\n        jne      SHORT G_M56840_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M56840_IG16\n \t\t\t\t\t\t;; size=63 bbWeight=0.50 PerfScore 7.50\n G_M56840_IG04:\n        cmp      r13d, 26\n        jne      SHORT G_M56840_IG05\n        mov      rdi, gword ptr [rbx\u002B0x1C0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M56840_IG16\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 5.38\n G_M56840_IG05:\n        cmp      r13d, 27\n        jne      G_M56840_IG14\n        mov      r13, gword ptr [rbx\u002B0x1C8]\n        lea      ebx, [rsi-0x01]\n        cmp      ebx, dword ptr [r13\u002B0x18]\n        jae      G_M56840_IG10\n        mov      rdx, gword ptr [r13\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M56840_IG21\n\u002B       jae      G_M56840_IG20\n        mov      ecx, ebx\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      G_M56840_IG08\n        mov      rax, gword ptr [r13\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M56840_IG07\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M56840_IG06\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=124 bbWeight=0.50 PerfScore 18.62\n G_M56840_IG06:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        jne      SHORT G_M56840_IG09\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M56840_IG07:\n        mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M56840_IG20\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M56840_IG20\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=30 bbWeight=0.50 PerfScore 3.88\n G_M56840_IG08:\n-       mov      rax, gword ptr [r13\u002B0x08]\n-       cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      G_M56840_IG21\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M56840_IG20\n\u002B       mov      esi, ebx\n\u002B       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M56840_IG11\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M56840_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M56840_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M56840_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG11:\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M56840_IG12:\n        cmp      r13d, 1\n        jne      SHORT G_M56840_IG13\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=31 bbWeight=0.50 PerfScore 5.38\n G_M56840_IG13:\n        cmp      r13d, 2\n        je       SHORT G_M56840_IG15\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M56840_IG14:\n        xor      rax, rax\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 1.12\n G_M56840_IG15:\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.75\n G_M56840_IG16:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG17:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M56840_IG18:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG19:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M56840_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M56840_IG21:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 519, prolog size 27, PerfScore 78.25, instruction count 143, allocated bytes for code 519 (MethodHash=cdc921f7) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n\u002B; Total bytes of code 482, prolog size 27, PerfScore 77.75, instruction count 137, allocated bytes for code 482 (MethodHash=cdc921f7) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":519,"DiffBytes":482},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,050 -\u003E 1,017 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,402 \u002B1,395 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 18 single block inlinees; 10 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 19, 10.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 14,  8.50)     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.MemberRef\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T25] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T19] (  3,  3   )     int  -\u003E  r14         \u0022impAppendStmt\u0022\n ;* V08 tmp3         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.StringsHeap\u003E\n ;  V09 tmp4         [V09,T20] (  3,  3   )     int  -\u003E  r12         \u0022impAppendStmt\u0022\n ;  V10 tmp5         [V10,T27] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n ;  V11 tmp6         [V11,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V12 tmp7         [V12    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V13 tmp8         [V13    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V14 tmp9         [V14,T29] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V15 tmp10        [V15,T22] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V16 tmp11        [V16    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V17 tmp12        [V17,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n-;  V18 tmp13        [V18,T39] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp13        [V18,T40] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V19 tmp14        [V19,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V20 tmp15        [V20,T37] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V21 tmp16        [V21,T35] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp15        [V20,T38] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V21 tmp16        [V21,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V22 tmp17        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V23 tmp18        [V23,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V24 tmp19        [V24,T24] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V25 tmp20        [V25,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp19        [V24,T24] (  4,  2   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V25 tmp20        [V25,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V26 tmp21        [V26    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V27 tmp22        [V27,T23] (  5,  2.50)     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V28 tmp23        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V29 tmp24        [V29,T13] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V29 tmp24        [V29,T31] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V30 tmp25        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V31 tmp26        [V31,T21] (  3,  3   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n-;  V32 tmp27        [V32,T36] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V32 tmp27        [V32,T37] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V33 tmp28        [V33    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;  V34 tmp29        [V34,T11] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V35 tmp30        [V35,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n-;  V36 tmp31        [V36,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n\u002B;  V36 tmp31        [V36,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n ;* V37 tmp32        [V37    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V38 tmp33        [V38,T14] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V38 tmp33        [V38,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V39 tmp34        [V39    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V40 tmp35        [V40,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V41 tmp36        [V41    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V42 tmp37        [V42    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V43 tmp38        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V44 tmp39        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V45 tmp40        [V45    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V46 tmp41        [V46    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V47 tmp42        [V47,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V48 tmp43        [V48,T40] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V48 tmp43        [V48,T41] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V49 tmp44        [V49,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V50 tmp45        [V50,T38] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V50 tmp45        [V50,T39] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V51 tmp46        [V51,T26] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V52 tmp47        [V52    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V53 tmp48        [V53    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V54 tmp49        [V54    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V55 tmp50        [V55    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Signature (fldOffset=0x8)\u0022 P-INDEP\n ;* V56 tmp51        [V56    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V22.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V57 tmp52        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V22.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V58 tmp53        [V58    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V26.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp54        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V26.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V60 tmp55        [V60    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V61 tmp56        [V61    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V62 tmp57        [V62    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Signature (fldOffset=0x8)\u0022 P-INDEP\n-;  V63 tmp58        [V63,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V64 tmp59        [V64,T16] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V65 tmp60        [V65,T17] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V66 tmp61        [V66,T10] (  4,  4   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n-;  V67 tmp62        [V67,T32] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V68 tmp63        [V68,T33] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V69 tmp64        [V69,T34] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V70 cse0         [V70,T42] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V71 cse1         [V71,T41] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V72 rat0         [V72,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V63 tmp58        [V63,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V64 tmp59        [V64,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V65 tmp60        [V65,T16] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V66 tmp61        [V66,T17] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V67 tmp62        [V67,T10] (  4,  4   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n\u002B;  V68 tmp63        [V68,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V69 tmp64        [V69,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V70 tmp65        [V70,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V71 cse0         [V71,T43] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V72 cse1         [V72,T42] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V73 rat0         [V73,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M14678_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      qword ptr [rbp-0x38], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 9.75\n G_M14678_IG02:\n        test     r15, r15\n        je       G_M14678_IG21\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M14678_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x208]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M14678_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M14678_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M14678_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M14678_IG05:\n        test     esi, esi\n        jne      G_M14678_IG19\n        test     r14b, r14b\n        je       SHORT G_M14678_IG06\n        mov      r13d, 1\n        jmp      G_M14678_IG12\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M14678_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rsi\u002B0x30], 32\n        jne      SHORT G_M14678_IG07\n        xor      r13d, r13d\n        jmp      G_M14678_IG12\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 3.62\n G_M14678_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x38]\n        mov      r14, gword ptr [rsi\u002B0x188]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M14678_IG10\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M14678_IG25\n\u002B       jae      G_M14678_IG24\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M14678_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        cmp      byte  ptr [r12], r12b\n        mov      rdi, r12\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M14678_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M14678_IG24\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M14678_IG23\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=152 bbWeight=0.50 PerfScore 20.62\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=0.50 PerfScore 20.12\n G_M14678_IG08:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M14678_IG25\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M14678_IG24\n\u002B       mov      edi, r13d\n\u002B       mov      rsi, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M14678_IG11\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M14678_IG09:\n-       mov      r14, r12\n\u002B       mov      rsi, r12\n        jmp      SHORT G_M14678_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M14678_IG10:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rsi, rsi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M14678_IG11:\n-       cmp      r14, r15\n\u002B       cmp      rsi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M14678_IG12:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddMemberRefParent(dnlib.DotNet.IMemberRefParent):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddMemberRefParent(dnlib.DotNet.IMemberRefParent):uint:this\n        mov      r14d, eax\n        mov      rdi, gword ptr [rbx\u002B0x60]\n        mov      rsi, gword ptr [r15\u002B0x18]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.StringsHeap:Add(dnlib.DotNet.UTF8String):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.StringsHeap:Add(dnlib.DotNet.UTF8String):uint:this\n        mov      r12d, eax\n        mov      rsi, gword ptr [r15\u002B0x20]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M14678_IG13\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x68]\n        mov      edx, eax\n        mov      esi, r12d\n        shl      rsi, 32\n        mov      eax, r14d\n        or       rsi, rax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:Add(dnlib.DotNet.MD.RawMemberRefRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:Add(dnlib.DotNet.MD.RawMemberRefRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M14678_IG14\n \t\t\t\t\t\t;; size=113 bbWeight=0.50 PerfScore 17.50\n G_M14678_IG13:\n        mov      edi, dword ptr [r15\u002B0x38]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x68]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M14678_IG24\n\u002B       jae      G_M14678_IG23\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M14678_IG25\n\u002B       jae      G_M14678_IG24\n        lea      rdi, [rdi\u002B2*rdi]\n        lea      rdi, bword ptr [rdx\u002B4*rdi\u002B0x10]\n        mov      dword ptr [rdi], r14d\n        mov      dword ptr [rdi\u002B0x04], r12d\n        mov      dword ptr [rdi\u002B0x08], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=65 bbWeight=0.50 PerfScore 12.00\n G_M14678_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x208]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 10\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M14678_IG19\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M14678_IG19\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M14678_IG17\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x3C], eax\n        test     eax, eax\n        jle      SHORT G_M14678_IG15\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x3C]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M14678_IG15:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M14678_IG16:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M14678_IG17:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 10\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M14678_IG18\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M14678_IG19\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M14678_IG18:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M14678_IG19:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M14678_IG20:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M14678_IG21:\n        mov      rdi, 0xD1FFAB1E      ; \u0027MemberRef is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M14678_IG22:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M14678_IG23:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M14678_IG24:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M14678_IG25:\n\u002BG_M14678_IG24:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1050, prolog size 29, PerfScore 142.00, instruction count 263, allocated bytes for code 1050 (MethodHash=e06bc6a9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1017, prolog size 29, PerfScore 141.50, instruction count 257, allocated bytes for code 1017 (MethodHash=e06bc6a9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1050,"DiffBytes":1017},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)","Category":"improvement","Description":"979 -\u003E 946 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,375 \u002B1,368 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 17 single block inlinees; 11 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 17,  9.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 12,  7.50)     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.StandAloneSig\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T21] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T23] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n ;  V08 tmp3         [V08,T24] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V09 tmp4         [V09    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V10 tmp5         [V10    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V11 tmp6         [V11,T25] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V12 tmp7         [V12,T18] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V14 tmp9         [V14,T26] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n-;  V15 tmp10        [V15,T35] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp10        [V15,T36] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V16 tmp11        [V16,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V17 tmp12        [V17,T33] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V18 tmp13        [V18,T31] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V17 tmp12        [V17,T34] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V18 tmp13        [V18,T32] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V19 tmp14        [V19    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V20 tmp15        [V20,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V21 tmp16        [V21,T19] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V22 tmp17        [V22,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V21 tmp16        [V21,T19] (  4,  2   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V22 tmp17        [V22,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V23 tmp18        [V23    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V24 tmp19        [V24,T20] (  4,  2   )     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V25 tmp20        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V26 tmp21        [V26,T12] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V27 tmp22        [V27,T39] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V26 tmp21        [V26,T27] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V27 tmp22        [V27,T40] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V28 tmp23        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V29 tmp24        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V30 tmp25        [V30,T32] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V30 tmp25        [V30,T33] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V31 tmp26        [V31    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;  V32 tmp27        [V32,T10] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V33 tmp28        [V33,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n-;  V34 tmp29        [V34,T27] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n\u002B;  V34 tmp29        [V34,T28] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n ;* V35 tmp30        [V35    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V36 tmp31        [V36,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V36 tmp31        [V36,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V37 tmp32        [V37    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V38 tmp33        [V38,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V39 tmp34        [V39    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V40 tmp35        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V41 tmp36        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V42 tmp37        [V42    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V43 tmp38        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V44 tmp39        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V45 tmp40        [V45,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V46 tmp41        [V46,T36] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V46 tmp41        [V46,T37] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V47 tmp42        [V47,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V48 tmp43        [V48,T34] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V48 tmp43        [V48,T35] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V49 tmp44        [V49,T22] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V50 tmp45        [V50    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n-;  V51 tmp46        [V51,T37] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V51 tmp46        [V51,T38] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V52 tmp47        [V52    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V19.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V53 tmp48        [V53    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V19.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V54 tmp49        [V54    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V23.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V55 tmp50        [V55    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V23.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V56 tmp51        [V56    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V31.Signature (fldOffset=0x0)\u0022 P-INDEP\n-;  V57 tmp52        [V57,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V58 tmp53        [V58,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V59 tmp54        [V59,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V60 tmp55        [V60,T28] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V61 tmp56        [V61,T29] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V62 tmp57        [V62,T30] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V63 cse0         [V63,T40] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V64 cse1         [V64,T38] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V65 rat0         [V65,T17] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V57 tmp52        [V57,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V58 tmp53        [V58,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V59 tmp54        [V59,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V60 tmp55        [V60,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V61 tmp56        [V61,T29] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V62 tmp57        [V62,T30] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V63 tmp58        [V63,T31] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V64 cse0         [V64,T41] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V65 cse1         [V65,T39] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V66 rat0         [V66,T17] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M38198_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      qword ptr [rbp-0x38], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 9.75\n G_M38198_IG02:\n        test     r15, r15\n        je       G_M38198_IG21\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M38198_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M38198_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M38198_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M38198_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M38198_IG05:\n        test     esi, esi\n        jne      G_M38198_IG19\n        test     r14b, r14b\n        je       SHORT G_M38198_IG06\n        mov      r13d, 1\n        jmp      G_M38198_IG12\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M38198_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rsi\u002B0x30], 64\n        jne      SHORT G_M38198_IG07\n        xor      r13d, r13d\n        jmp      G_M38198_IG12\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 3.62\n G_M38198_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x20]\n        mov      r14, gword ptr [rsi\u002B0x1A8]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M38198_IG10\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M38198_IG25\n\u002B       jae      G_M38198_IG24\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M38198_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M38198_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M38198_IG24\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M38198_IG23\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=150 bbWeight=0.50 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=131 bbWeight=0.50 PerfScore 20.00\n G_M38198_IG08:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M38198_IG25\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M38198_IG24\n\u002B       mov      edi, r13d\n\u002B       mov      rsi, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M38198_IG11\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M38198_IG09:\n-       mov      r14, r12\n\u002B       mov      rsi, r12\n        jmp      SHORT G_M38198_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M38198_IG10:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rsi, rsi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M38198_IG11:\n-       cmp      r14, r15\n\u002B       cmp      rsi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M38198_IG12:\n        mov      rsi, gword ptr [r15\u002B0x08]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M38198_IG13\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xA0]\n        mov      esi, eax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:Add(dnlib.DotNet.MD.RawStandAloneSigRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:Add(dnlib.DotNet.MD.RawStandAloneSigRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M38198_IG14\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 9.25\n G_M38198_IG13:\n        mov      edi, dword ptr [r15\u002B0x20]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xA0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M38198_IG24\n\u002B       jae      G_M38198_IG23\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M38198_IG25\n\u002B       jae      G_M38198_IG24\n        mov      dword ptr [rdx\u002B4*rdi\u002B0x10], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 10.25\n G_M38198_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 17\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M38198_IG19\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M38198_IG19\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M38198_IG17\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x3C], eax\n        test     eax, eax\n        jle      SHORT G_M38198_IG15\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x3C]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M38198_IG15:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M38198_IG16:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M38198_IG17:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 17\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M38198_IG18\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M38198_IG19\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M38198_IG18:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M38198_IG19:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M38198_IG20:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M38198_IG21:\n        mov      rdi, 0xD1FFAB1E      ; \u0027StandAloneSig is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M38198_IG22:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M38198_IG23:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M38198_IG24:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M38198_IG25:\n\u002BG_M38198_IG24:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 979, prolog size 29, PerfScore 131.88, instruction count 243, allocated bytes for code 979 (MethodHash=2b0f6ac9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 946, prolog size 29, PerfScore 131.38, instruction count 237, allocated bytes for code 946 (MethodHash=2b0f6ac9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":979,"DiffBytes":946},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,258 -\u003E 1,225 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,460 \u002B1,453 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 25 single block inlinees; 15 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 21, 11.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 19, 11   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.TypeSpec\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T07] (  9,  4.50)     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MDToken\u003E\n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V07 tmp1         [V07,T24] (  4,  2   )     int  -\u003E  r13        \n ;  V08 tmp2         [V08,T26] (  2,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeSig\u003E\n ;  V09 tmp3         [V09,T27] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;  V10 tmp4         [V10,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V11 tmp5         [V11,T11] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp6         [V12,T12] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;  V13 tmp7         [V13    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V14 tmp8         [V14    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V15 tmp9         [V15,T29] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V16 tmp10        [V16,T21] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V17 tmp11        [V17    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V18 tmp12        [V18,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n-;  V19 tmp13        [V19,T41] (  3,  1.50)   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n\u002B;  V19 tmp13        [V19,T42] (  3,  1.50)   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n ;  V20 tmp14        [V20,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V21 tmp15        [V21,T39] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V21 tmp15        [V21,T40] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.MDToken\u003E\n ;* V23 tmp17        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V24 tmp18        [V24    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V25 tmp19        [V25    ] (  3,  3   )     ref  -\u003E  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V26 tmp20        [V26    ] (  3,  3   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V27 tmp21        [V27,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V28 tmp22        [V28,T22] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V29 tmp23        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n ;  V30 tmp24        [V30,T14] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V31 tmp25        [V31,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V31 tmp25        [V31,T37] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V32 tmp26        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V33 tmp27        [V33,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V34 tmp28        [V34,T23] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V35 tmp29        [V35,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V34 tmp28        [V34,T23] (  4,  2   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V35 tmp29        [V35,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V36 tmp30        [V36    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V37 tmp31        [V37,T10] (  7,  3.50)     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V38 tmp32        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V39 tmp33        [V39,T15] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V39 tmp33        [V39,T32] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V40 tmp34        [V40    ] (  7,  3.50)  struct ( 8) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V41 tmp35        [V41,T44] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V42 tmp36        [V42,T37] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V41 tmp35        [V41,T45] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V42 tmp36        [V42,T38] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V43 tmp37        [V43    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V44 tmp38        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V45 tmp39        [V45    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V46 tmp40        [V46,T38] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp40        [V46,T39] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V47 tmp41        [V47    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;  V48 tmp42        [V48,T09] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V49 tmp43        [V49,T05] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n-;  V50 tmp44        [V50,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n\u002B;  V50 tmp44        [V50,T33] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n ;* V51 tmp45        [V51    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V52 tmp46        [V52,T16] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V52 tmp46        [V52,T15] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V53 tmp47        [V53    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V54 tmp48        [V54,T06] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V55 tmp49        [V55    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V56 tmp50        [V56    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V57 tmp51        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V58 tmp52        [V58    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V59 tmp53        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V60 tmp54        [V60    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V61 tmp55        [V61,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V62 tmp56        [V62,T40] (  3,  1.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V62 tmp56        [V62,T41] (  3,  1.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V63 tmp57        [V63,T25] (  4,  2   )     int  -\u003E  rbx         single-def \u0022Inline stloc first use temp\u0022\n ;* V64 tmp58        [V64    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n-;  V65 tmp59        [V65,T42] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V65 tmp59        [V65,T43] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V66 tmp60        [V66    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05.token (fldOffset=0x0)\u0022 P-INDEP\n-;  V67 tmp61        [V67,T45] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V22.token (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V67 tmp61        [V67,T46] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V22.token (fldOffset=0x0)\u0022 P-INDEP\n ;* V68 tmp62        [V68    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V32.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V69 tmp63        [V69    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V32.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V70 tmp64        [V70    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V36.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V71 tmp65        [V71    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V36.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V72 tmp66        [V72    ] (  7,  3.50)     int  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V40.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n ;* V73 tmp67        [V73    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V47.Signature (fldOffset=0x0)\u0022 P-INDEP\n-;  V74 tmp68        [V74,T17] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V75 tmp69        [V75,T18] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V76 tmp70        [V76,T19] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp71        [V77,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V78 tmp72        [V78,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V79 tmp73        [V79,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V80 cse0         [V80,T46] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n-;  V81 cse1         [V81,T43] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #04: conservative\u0022\n-;  V82 rat0         [V82,T20] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V74 tmp68        [V74,T16] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp69        [V75,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp70        [V76,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp71        [V77,T19] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp72        [V78,T34] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V79 tmp73        [V79,T35] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V80 tmp74        [V80,T36] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V81 cse0         [V81,T47] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n\u002B;  V82 cse1         [V82,T44] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #04: conservative\u0022\n\u002B;  V83 rat0         [V83,T20] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M4950_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M4950_IG02:\n        test     r15, r15\n        je       G_M4950_IG25\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M4950_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M4950_IG04\n        xor      r13d, r13d\n        xor      edi, edi\n        jmp      SHORT G_M4950_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M4950_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      edi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M4950_IG05:\n        test     edi, edi\n        jne      G_M4950_IG22\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        xor      edx, edx\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        test     r14b, r14b\n        je       SHORT G_M4950_IG06\n        mov      r13d, 1\n        jmp      G_M4950_IG14\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 7.38\n G_M4950_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rsi\u002B0x30], 512\n        jne      SHORT G_M4950_IG07\n        xor      r13d, r13d\n        jmp      G_M4950_IG14\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 3.62\n G_M4950_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x30]\n        mov      r14, gword ptr [rsi\u002B0x1C8]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M4950_IG12\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M4950_IG29\n\u002B       jae      G_M4950_IG28\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M4950_IG10\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        cmp      byte  ptr [r12], r12b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x50], edi\n        cmp      dword ptr [rbp-0x50], 100\n        jge      SHORT G_M4950_IG09\n        mov      edi, dword ptr [rbp-0x50]\n        inc      edi\n        mov      dword ptr [rbp-0x50], edi\n        cmp      byte  ptr [r12\u002B0x34], 0\n        jne      SHORT G_M4950_IG08\n        mov      rdi, r12\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=128 bbWeight=0.50 PerfScore 19.88\n G_M4950_IG08:\n        mov      rsi, gword ptr [r12\u002B0x10]\n        lea      rdi, [rbp-0x50]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x50]\n        dec      edi\n        mov      dword ptr [rbp-0x50], edi\n        test     eax, eax\n        jne      SHORT G_M4950_IG11\n \t\t\t\t\t\t;; size=33 bbWeight=0.50 PerfScore 4.62\n G_M4950_IG09:\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M4950_IG28\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M4950_IG27\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M4950_IG10:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M4950_IG29\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M4950_IG28\n\u002B       mov      eax, r13d\n\u002B       mov      rdi, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M4950_IG13\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M4950_IG11:\n-       mov      r14, r12\n\u002B       mov      rdi, r12\n        jmp      SHORT G_M4950_IG13\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M4950_IG12:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rdi, rdi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M4950_IG13:\n-       cmp      r14, r15\n\u002B       cmp      rdi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M4950_IG14:\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M4950_IG15\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 3.25\n G_M4950_IG15:\n        mov      r14, gword ptr [r15\u002B0x10]\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M4950_IG16\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 4.25\n G_M4950_IG16:\n        mov      rdx, gword ptr [r15\u002B0x18]\n        mov      rdi, rbx\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.TypeSig,byte[]):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.TypeSig,byte[]):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M4950_IG17\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xF0]\n        mov      esi, eax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:Add(dnlib.DotNet.MD.RawTypeSpecRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:Add(dnlib.DotNet.MD.RawTypeSpecRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M4950_IG18\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.38\n G_M4950_IG17:\n        mov      edi, dword ptr [r15\u002B0x30]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xF0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M4950_IG28\n\u002B       jae      G_M4950_IG27\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M4950_IG29\n\u002B       jae      G_M4950_IG28\n        mov      dword ptr [rdx\u002B4*rdi\u002B0x10], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 10.25\n G_M4950_IG18:\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 1\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 27\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M4950_IG23\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M4950_IG23\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M4950_IG20\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:Clear():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:Clear():this\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=179 bbWeight=0.50 PerfScore 22.12\n G_M4950_IG19:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M4950_IG20:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 27\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      r15, gword ptr [rdi\u002B0x08]\n        mov      ebx, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [r15\u002B0x08]\n        cmp      esi, ebx\n        ja       SHORT G_M4950_IG21\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      G_M4950_IG23\n \t\t\t\t\t\t;; size=90 bbWeight=0.50 PerfScore 12.88\n G_M4950_IG21:\n        lea      esi, [rbx\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, ebx\n        lea      rdi, bword ptr [r15\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        jmp      G_M4950_IG23\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 3.00\n G_M4950_IG22:\n        test     r13d, r13d\n        jne      G_M4950_IG23\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r14, rax\n        mov      r15d, dword ptr [r15\u002B0x30]\n        or       r15d, 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r14\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027TypeSpec 0x{0:X8} has an infinite TypeSig loop.\u0027\n        mov      gword ptr [rbp-0x40], rdi\n        mov      gword ptr [rbp-0x48], r14\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x48]\n        lea      rdx, [rbp-0x40]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x40]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n \t\t\t\t\t\t;; size=175 bbWeight=0.50 PerfScore 15.12\n G_M4950_IG23:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M4950_IG24:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M4950_IG25:\n        mov      rdi, 0xD1FFAB1E      ; \u0027TypeSpec is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M4950_IG26:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M4950_IG27:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4950_IG28:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4950_IG29:\n\u002BG_M4950_IG28:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1258, prolog size 35, PerfScore 162.71, instruction count 303, allocated bytes for code 1258 (MethodHash=6c50eca9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1225, prolog size 35, PerfScore 162.21, instruction count 297, allocated bytes for code 1225 (MethodHash=6c50eca9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1258,"DiffBytes":1225},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)","Category":"improvement","Description":"336 -\u003E 303 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,152 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  9, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T11] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T12] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T02] (  5, 16.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V08 tmp5         [V08,T08] (  3,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n\u002B;  V08 tmp5         [V08,T07] (  3,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n ;  V09 tmp6         [V09,T00] (  8, 40   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T01] (  5, 28   )     ref  -\u003E  r13         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.TypeRefMD]\u003E\n-;  V11 tmp8         [V11,T04] (  3, 12   )   byref  -\u003E  [rbp-0x30]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V11 tmp8         [V11,T08] (  2,  8   )   byref  -\u003E  [rbp-0x30]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n ;  V13 tmp10        [V13,T09] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n-;  V15 tmp12        [V15,T12] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V16 tmp13        [V16,T05] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V17 tmp14        [V17,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V18 cse0         [V18,T10] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n-;  V19 rat0         [V19,T07] (  3, 12   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V15 tmp12        [V15,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V17 tmp14        [V17,T10] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 cse0         [V19,T11] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V20 cse1         [V20,T13] (  2,  4   )     int  -\u003E  rax         \u0022CSE #02: moderate\u0022\n\u002B;  V21 rat0         [V21,T06] (  3, 12   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M40258_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x30]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n G_M40258_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 1\n        je       G_M40258_IG11\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M40258_IG03:\n        cmp      byte  ptr [rbx\u002B0x1D7], 0\n        jne      G_M40258_IG11\n        mov      byte  ptr [rbx\u002B0x1D7], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n-       mov      rdi, gword ptr [rax\u002B0x58]\n-       mov      r15d, dword ptr [rdi\u002B0x58]\n\u002B       mov      rsi, gword ptr [rax\u002B0x58]\n\u002B       mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M40258_IG09\n \t\t\t\t\t\t;; size=67 bbWeight=0.50 PerfScore 10.25\n G_M40258_IG04:\n-       mov      rdi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rdi\u002B0x158]\n\u002B       mov      rsi, gword ptr [rbx\u002B0x1D8]\n\u002B       mov      r13, gword ptr [rsi\u002B0x158]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n        jae      SHORT G_M40258_IG07\n \t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M40258_IG05:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M40258_IG13\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r13\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      eax, dword ptr [rdi\u002B0x08]\n\u002B       cmp      r12d, eax\n\u002B       jae      G_M40258_IG12\n\u002B       mov      eax, r12d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M40258_IG06\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       mov      edi, r12d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x30], rax\n        mov      rcx, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x30]\n-       test     rdi, rdi\n-       je       SHORT G_M40258_IG12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=92 bbWeight=2 PerfScore 49.00\n\u002B\t\t\t\t\t\t;; size=72 bbWeight=2 PerfScore 42.00\n G_M40258_IG06:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M40258_IG13\n\u002B       jae      SHORT G_M40258_IG12\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M40258_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n G_M40258_IG07:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40258_IG08:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeRef(dnlib.DotNet.TypeRef):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeRef(dnlib.DotNet.TypeRef):uint:this\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M40258_IG04\n \t\t\t\t\t\t;; size=27 bbWeight=4 PerfScore 20.00\n G_M40258_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeRefRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.12\n G_M40258_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeRefRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M40258_IG11:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M40258_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M40258_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 336, prolog size 16, PerfScore 148.88, instruction count 90, allocated bytes for code 336 (MethodHash=c57d62bd) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n\u002B; Total bytes of code 303, prolog size 16, PerfScore 141.88, instruction count 84, allocated bytes for code 303 (MethodHash=c57d62bd) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":336,"DiffBytes":303},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)","Category":"improvement","Description":"349 -\u003E 317 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,165 \u002B1,158 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  4,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T15] (  3,  1.50)     int  -\u003E  rsi         single-def\n\u002B;  V04 loc1         [V04,T16] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  4,  2   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.ICustomAttributeType\u003E\n-;  V06 loc3         [V06,T16] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n\u002B;  V06 loc3         [V06,T17] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T13] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T14] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T14] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T15] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V13 tmp6         [V13,T10] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp8         [V15,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T13] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V16 tmp9         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V17 tmp10        [V17,T04] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V18 tmp11        [V18,T05] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V19 tmp12        [V19,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V20 tmp13        [V20,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V21 rat0         [V21,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V19 tmp12        [V19,T06] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp13        [V20,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp14        [V21,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V22 rat0         [V22,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M57160_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=32 bbWeight=1 PerfScore 7.75\n G_M57160_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M57160_IG11\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M57160_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 6\n        jne      SHORT G_M57160_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M57160_IG10\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M57160_IG04:\n        cmp      r13d, 10\n        jne      G_M57160_IG09\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M57160_IG07\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M57160_IG14\n\u002B       jae      G_M57160_IG13\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      SHORT G_M57160_IG05\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M57160_IG06\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M57160_IG13\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M57160_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=149 bbWeight=0.50 PerfScore 19.38\n\u002B\t\t\t\t\t\t;; size=130 bbWeight=0.50 PerfScore 18.88\n G_M57160_IG05:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M57160_IG14\n\u002B       jae      SHORT G_M57160_IG13\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M57160_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M57160_IG06:\n        mov      rax, r15\n        jmp      SHORT G_M57160_IG08\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M57160_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG08:\n        jmp      SHORT G_M57160_IG10\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M57160_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG10:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M57160_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG12:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M57160_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M57160_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 349, prolog size 23, PerfScore 52.12, instruction count 99, allocated bytes for code 349 (MethodHash=daed20b7) for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n\u002B; Total bytes of code 317, prolog size 23, PerfScore 51.62, instruction count 93, allocated bytes for code 317 (MethodHash=daed20b7) for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":349,"DiffBytes":317},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)","Category":"improvement","Description":"349 -\u003E 317 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,165 \u002B1,158 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  4,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T15] (  3,  1.50)     int  -\u003E  rsi         single-def\n\u002B;  V04 loc1         [V04,T16] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  4,  2   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMethodDefOrRef\u003E\n-;  V06 loc3         [V06,T16] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n\u002B;  V06 loc3         [V06,T17] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T13] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T14] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T14] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T15] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V13 tmp6         [V13,T10] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp8         [V15,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T13] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V16 tmp9         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V17 tmp10        [V17,T04] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V18 tmp11        [V18,T05] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V19 tmp12        [V19,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V20 tmp13        [V20,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V21 rat0         [V21,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V19 tmp12        [V19,T06] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp13        [V20,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp14        [V21,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V22 rat0         [V22,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M39432_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=32 bbWeight=1 PerfScore 7.75\n G_M39432_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M39432_IG11\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M39432_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 6\n        jne      SHORT G_M39432_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M39432_IG10\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M39432_IG04:\n        cmp      r13d, 10\n        jne      G_M39432_IG09\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M39432_IG07\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M39432_IG14\n\u002B       jae      G_M39432_IG13\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      SHORT G_M39432_IG05\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M39432_IG06\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M39432_IG13\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M39432_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=149 bbWeight=0.50 PerfScore 19.38\n\u002B\t\t\t\t\t\t;; size=130 bbWeight=0.50 PerfScore 18.88\n G_M39432_IG05:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M39432_IG14\n\u002B       jae      SHORT G_M39432_IG13\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M39432_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M39432_IG06:\n        mov      rax, r15\n        jmp      SHORT G_M39432_IG08\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M39432_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG08:\n        jmp      SHORT G_M39432_IG10\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M39432_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG10:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M39432_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG12:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M39432_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M39432_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 349, prolog size 23, PerfScore 52.12, instruction count 99, allocated bytes for code 349 (MethodHash=3dee65f7) for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n\u002B; Total bytes of code 317, prolog size 23, PerfScore 51.62, instruction count 93, allocated bytes for code 317 (MethodHash=3dee65f7) for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":349,"DiffBytes":317},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)","Category":"improvement","Description":"278 -\u003E 246 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,151 \u002B1,144 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V05 tmp2         [V05,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V12 tmp9         [V12,T08] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V13 tmp10        [V13,T09] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V14 tmp11        [V14    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V15 tmp12        [V15,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V16 tmp13        [V16,T12] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V15 tmp12        [V15,T14] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V16 tmp13        [V16,T13] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V20 tmp17        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V21 tmp18        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V22 tmp19        [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp20        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V14.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp21        [V24,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V25 tmp22        [V25,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp21        [V24,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp22        [V25,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp23        [V26,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M51553_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x20], rax\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.75\n G_M51553_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x208]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M51553_IG10\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M51553_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M51553_IG13\n\u002B       jae      G_M51553_IG12\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M51553_IG09\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rsi, gword ptr [r14\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M51553_IG06\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 9.88\n G_M51553_IG04:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M51553_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M51553_IG05:\n        jmp      SHORT G_M51553_IG07\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M51553_IG06:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M51553_IG07:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n        test     rsi, rsi\n        je       SHORT G_M51553_IG08\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M51553_IG08\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        je       SHORT G_M51553_IG08\n        mov      rax, r14\n        jmp      SHORT G_M51553_IG11\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M51553_IG08:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M51553_IG12\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M51553_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M51553_IG09:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M51553_IG13\n\u002B       jae      SHORT G_M51553_IG12\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M51553_IG11\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M51553_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M51553_IG11:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M51553_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M51553_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 278, prolog size 18, PerfScore 44.75, instruction count 82, allocated bytes for code 278 (MethodHash=74cc369e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n\u002B; Total bytes of code 246, prolog size 18, PerfScore 44.25, instruction count 76, allocated bytes for code 246 (MethodHash=74cc369e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":278,"DiffBytes":246},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)","Category":"improvement","Description":"271 -\u003E 239 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,147 \u002B1,140 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T12] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V07 tmp4         [V07,T13] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T14] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V10 tmp7         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp8         [V11,T10] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V12 tmp9         [V12,T11] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V13 tmp10        [V13    ] (  8,  4   )  struct ( 8) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V14 tmp11        [V14,T15] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V15 tmp12        [V15,T14] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V14 tmp11        [V14,T16] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp12        [V15,T15] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;  V18 tmp15        [V18,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V19 tmp16        [V19,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20    ] (  8,  4   )     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V13.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V21 tmp18        [V21,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V22 tmp19        [V22,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V23 rat0         [V23,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V21 tmp18        [V21,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V23 tmp20        [V23,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V24 rat0         [V24,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M46305_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M46305_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x208]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M46305_IG11\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M46305_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M46305_IG14\n\u002B       jae      G_M46305_IG13\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      G_M46305_IG10\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rsi, gword ptr [r14\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M46305_IG06\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 9.62\n G_M46305_IG04:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M46305_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M46305_IG05:\n        jmp      SHORT G_M46305_IG07\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M46305_IG06:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M46305_IG07:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.62\n G_M46305_IG08:\n        mov      dword ptr [rbp-0x20], edi\n        test     rsi, rsi\n        je       SHORT G_M46305_IG09\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M46305_IG09\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        je       SHORT G_M46305_IG09\n        mov      rax, r14\n        jmp      SHORT G_M46305_IG12\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.00\n G_M46305_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M46305_IG13\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M46305_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M46305_IG10:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M46305_IG14\n\u002B       jae      SHORT G_M46305_IG13\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M46305_IG12\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M46305_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M46305_IG12:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M46305_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M46305_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 271, prolog size 12, PerfScore 43.75, instruction count 79, allocated bytes for code 271 (MethodHash=9d6e4b1e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n\u002B; Total bytes of code 239, prolog size 12, PerfScore 43.25, instruction count 73, allocated bytes for code 239 (MethodHash=9d6e4b1e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":271,"DiffBytes":239},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)","Category":"improvement","Description":"445 -\u003E 413 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,201 \u002B1,194 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 10 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  5,  3.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n ;  V04 loc1         [V04,T13] (  4,  2   )     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  5,  2.50)     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.ITypeDefOrRef\u003E\n ;  V06 loc3         [V06,T14] (  4,  2   )   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T15] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T16] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T16] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T17] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V13 tmp6         [V13,T04] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp8         [V15,T07] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V16 tmp9         [V16    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V17 tmp10        [V17,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V18 tmp11        [V18,T17] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V17 tmp10        [V17,T19] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp11        [V18,T18] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V19 tmp12        [V19    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V20 tmp13        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V21 tmp14        [V21,T05] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V22 tmp15        [V22,T06] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp16        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V16.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp17        [V24,T08] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V25 tmp18        [V25,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp17        [V24,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp18        [V25,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp19        [V26,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M30792_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 8.75\n G_M30792_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M30792_IG14\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M30792_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 1\n        jne      SHORT G_M30792_IG04\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M30792_IG13\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M30792_IG04:\n        cmp      r13d, 2\n        jne      SHORT G_M30792_IG05\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M30792_IG13\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 5.38\n G_M30792_IG05:\n        cmp      r13d, 27\n        jne      G_M30792_IG12\n        mov      rbx, gword ptr [rbx\u002B0x1C8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M30792_IG10\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M30792_IG17\n\u002B       jae      G_M30792_IG16\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      G_M30792_IG08\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M30792_IG07\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M30792_IG06\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=128 bbWeight=0.50 PerfScore 18.62\n G_M30792_IG06:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        jne      SHORT G_M30792_IG09\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M30792_IG07:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M30792_IG16\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M30792_IG16\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M30792_IG08:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M30792_IG17\n\u002B       jae      SHORT G_M30792_IG16\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M30792_IG11\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M30792_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M30792_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M30792_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG11:\n        jmp      SHORT G_M30792_IG13\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M30792_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG13:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M30792_IG14:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG15:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M30792_IG16:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M30792_IG17:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 445, prolog size 27, PerfScore 66.75, instruction count 124, allocated bytes for code 445 (MethodHash=7af487b7) for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n\u002B; Total bytes of code 413, prolog size 27, PerfScore 66.25, instruction count 118, allocated bytes for code 413 (MethodHash=7af487b7) for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":445,"DiffBytes":413},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)","Category":"improvement","Description":"270 -\u003E 238 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,140 \u002B1,133 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V05 tmp2         [V05,T09] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T04] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V10 tmp7         [V10,T05] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V11 tmp8         [V11    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V12 tmp9         [V12,T11] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V13 tmp10        [V13,T10] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V12 tmp9         [V12,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V13 tmp10        [V13,T11] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V11.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V21 tmp18        [V21,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V22 tmp19        [V22,T07] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V23 rat0         [V23,T08] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V21 tmp18        [V21,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T06] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V23 tmp20        [V23,T07] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V24 rat0         [V24,T08] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M353_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x20], rax\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.75\n G_M353_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1C8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M353_IG08\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M353_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M353_IG11\n\u002B       jae      G_M353_IG10\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M353_IG06\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M353_IG05\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      byte  ptr [r14\u002B0x34], 0\n        jne      SHORT G_M353_IG04\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=95 bbWeight=0.50 PerfScore 15.25\n G_M353_IG04:\n        mov      rsi, gword ptr [r14\u002B0x10]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        jne      SHORT G_M353_IG07\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M353_IG05:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M353_IG10\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M353_IG10\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M353_IG06:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M353_IG11\n\u002B       jae      SHORT G_M353_IG10\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M353_IG09\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M353_IG07:\n        mov      rax, r14\n        jmp      SHORT G_M353_IG09\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M353_IG08:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M353_IG09:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M353_IG10:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M353_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 270, prolog size 18, PerfScore 45.62, instruction count 78, allocated bytes for code 270 (MethodHash=3bdefe9e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n\u002B; Total bytes of code 238, prolog size 18, PerfScore 45.12, instruction count 72, allocated bytes for code 238 (MethodHash=3bdefe9e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":270,"DiffBytes":238},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)","Category":"improvement","Description":"263 -\u003E 231 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,136 \u002B1,129 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T11] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V07 tmp4         [V07,T04] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V09 tmp6         [V09,T07] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V10 tmp7         [V10    ] (  8,  4   )  struct ( 8) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V11 tmp8         [V11,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T14] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V13 tmp10        [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V15 tmp12        [V15,T05] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V16 tmp13        [V16,T06] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V17 tmp14        [V17    ] (  8,  4   )     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V10.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V18 tmp15        [V18,T08] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V19 tmp16        [V19,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V20 rat0         [V20,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V18 tmp15        [V18,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp17        [V20,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V21 rat0         [V21,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M52865_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M52865_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1C8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M52865_IG09\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M52865_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M52865_IG12\n\u002B       jae      G_M52865_IG11\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      G_M52865_IG07\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n \t\t\t\t\t\t;; size=55 bbWeight=0.50 PerfScore 9.62\n G_M52865_IG04:\n        mov      dword ptr [rbp-0x20], edi\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M52865_IG06\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      byte  ptr [r14\u002B0x34], 0\n        jne      SHORT G_M52865_IG05\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 5.88\n G_M52865_IG05:\n        mov      rsi, gword ptr [r14\u002B0x10]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        jne      SHORT G_M52865_IG08\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M52865_IG06:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M52865_IG11\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M52865_IG11\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M52865_IG07:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M52865_IG12\n\u002B       jae      SHORT G_M52865_IG11\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M52865_IG10\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M52865_IG08:\n        mov      rax, r14\n        jmp      SHORT G_M52865_IG10\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52865_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52865_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M52865_IG11:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M52865_IG12:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 263, prolog size 12, PerfScore 44.62, instruction count 75, allocated bytes for code 263 (MethodHash=7c29317e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 44.12, instruction count 69, allocated bytes for code 231 (MethodHash=7c29317e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":263,"DiffBytes":231},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,092 -\u003E 1,060 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,425 \u002B1,418 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 21 single block inlinees; 13 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 18, 10   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 13,  8   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.MethodSpec\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T26] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T19] (  3,  3   )     int  -\u003E  r14         \u0022impAppendStmt\u0022\n ;  V08 tmp3         [V08,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;  V09 tmp4         [V09,T29] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V10 tmp5         [V10    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V11 tmp6         [V11    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp7         [V12,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V13 tmp8         [V13,T23] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V15 tmp10        [V15,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n-;  V16 tmp11        [V16,T41] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V16 tmp11        [V16,T42] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V17 tmp12        [V17,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V18 tmp13        [V18,T39] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V19 tmp14        [V19,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V18 tmp13        [V18,T40] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V19 tmp14        [V19,T37] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V20 tmp15        [V20    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V21 tmp16        [V21,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V22 tmp17        [V22,T24] (  4,  2   )     ref  -\u003E  r12         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V23 tmp18        [V23,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V23 tmp18        [V23,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V24 tmp19        [V24    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V25 tmp20        [V25,T25] (  4,  2   )     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V26 tmp21        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V27 tmp22        [V27,T12] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V27 tmp22        [V27,T32] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V28 tmp23        [V28    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V29 tmp24        [V29,T21] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V30 tmp25        [V30,T22] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V31 tmp26        [V31    ] (  7,  3.50)  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V32 tmp27        [V32,T42] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V33 tmp28        [V33,T37] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V32 tmp27        [V32,T43] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V33 tmp28        [V33,T38] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V34 tmp29        [V34    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V35 tmp30        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;  V36 tmp31        [V36,T20] (  3,  3   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n-;  V37 tmp32        [V37,T38] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V37 tmp32        [V37,T39] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V38 tmp33        [V38    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;  V39 tmp34        [V39,T10] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V40 tmp35        [V40,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n-;  V41 tmp36        [V41,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n\u002B;  V41 tmp36        [V41,T33] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n ;* V42 tmp37        [V42    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V43 tmp38        [V43,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V43 tmp38        [V43,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V44 tmp39        [V44    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V45 tmp40        [V45,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V46 tmp41        [V46    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V47 tmp42        [V47    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V48 tmp43        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V49 tmp44        [V49    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V50 tmp45        [V50    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V51 tmp46        [V51    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V52 tmp47        [V52,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V53 tmp48        [V53,T43] (  3,  1.50)     int  -\u003E  [rbp-0x44]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V53 tmp48        [V53,T44] (  3,  1.50)     int  -\u003E  [rbp-0x44]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V54 tmp49        [V54,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V55 tmp50        [V55,T40] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V55 tmp50        [V55,T41] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V56 tmp51        [V56,T27] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V57 tmp52        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V58 tmp53        [V58    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp54        [V59    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n ;* V60 tmp55        [V60    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V20.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V61 tmp56        [V61    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V20.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V62 tmp57        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V63 tmp58        [V63    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V64 tmp59        [V64    ] (  7,  3.50)     int  -\u003E  [rbp-0x40]  do-not-enreg[X] addr-exposed \u0022field V31.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n ;* V65 tmp60        [V65    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V38.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V66 tmp61        [V66    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V38.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n-;  V67 tmp62        [V67,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V68 tmp63        [V68,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V69 tmp64        [V69,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V70 tmp65        [V70,T17] (  3,  3   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n-;  V71 tmp66        [V71,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V72 tmp67        [V72,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V73 tmp68        [V73,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V74 cse0         [V74,T45] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V75 cse1         [V75,T44] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V76 rat0         [V76,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V67 tmp62        [V67,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V68 tmp63        [V68,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V69 tmp64        [V69,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V70 tmp65        [V70,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp66        [V71,T17] (  3,  3   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n\u002B;  V72 tmp67        [V72,T34] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V73 tmp68        [V73,T35] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V74 tmp69        [V74,T36] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V75 cse0         [V75,T46] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V76 cse1         [V76,T45] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V77 rat0         [V77,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M53142_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M53142_IG02:\n        test     r15, r15\n        je       G_M53142_IG25\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M53142_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x230]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M53142_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M53142_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M53142_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M53142_IG05:\n        test     esi, esi\n        jne      G_M53142_IG23\n        test     r14b, r14b\n        je       SHORT G_M53142_IG06\n        mov      r13d, 1\n        jmp      G_M53142_IG16\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M53142_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rsi\u002B0x30], 0x400\n        jne      SHORT G_M53142_IG07\n        xor      r13d, r13d\n        jmp      G_M53142_IG16\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 3.62\n G_M53142_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x28]\n        mov      r14, gword ptr [rsi\u002B0x208]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M53142_IG14\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M53142_IG29\n\u002B       jae      G_M53142_IG28\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M53142_IG13\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        mov      rsi, gword ptr [r12\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M53142_IG10\n \t\t\t\t\t\t;; size=92 bbWeight=0.50 PerfScore 14.50\n G_M53142_IG08:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M53142_IG10\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M53142_IG09:\n        jmp      SHORT G_M53142_IG11\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M53142_IG10:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M53142_IG11:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x40], edi\n        test     rsi, rsi\n        je       SHORT G_M53142_IG12\n        cmp      dword ptr [rbp-0x40], 100\n        jge      SHORT G_M53142_IG12\n        mov      edi, dword ptr [rbp-0x40]\n        inc      edi\n        mov      dword ptr [rbp-0x40], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x40]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x40]\n        dec      edi\n        mov      dword ptr [rbp-0x40], edi\n        test     eax, eax\n        je       SHORT G_M53142_IG12\n        jmp      SHORT G_M53142_IG15\n \t\t\t\t\t\t;; size=58 bbWeight=0.50 PerfScore 9.00\n G_M53142_IG12:\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M53142_IG28\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M53142_IG27\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M53142_IG13:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M53142_IG29\n-       mov      ecx, r13d\n-       mov      r12, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M53142_IG28\n\u002B       mov      edi, r13d\n\u002B       mov      r12, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M53142_IG15\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M53142_IG14:\n        xor      r12, r12\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M53142_IG15:\n        cmp      r12, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M53142_IG16:\n        mov      rsi, gword ptr [r15\u002B0x08]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddMethodDefOrRef(dnlib.DotNet.IMethodDefOrRef):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddMethodDefOrRef(dnlib.DotNet.IMethodDefOrRef):uint:this\n        mov      r14d, eax\n        mov      rsi, gword ptr [r15\u002B0x10]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M53142_IG17\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        mov      esi, eax\n        shl      rsi, 32\n        mov      eax, r14d\n        or       rsi, rax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:Add(dnlib.DotNet.MD.RawMethodSpecRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:Add(dnlib.DotNet.MD.RawMethodSpecRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M53142_IG18\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.62\n G_M53142_IG17:\n        mov      edi, dword ptr [r15\u002B0x28]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x170]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M53142_IG28\n\u002B       jae      G_M53142_IG27\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M53142_IG29\n\u002B       jae      G_M53142_IG28\n        lea      rdi, bword ptr [rdx\u002B8*rdi\u002B0x10]\n        mov      dword ptr [rdi], r14d\n        mov      dword ptr [rdi\u002B0x04], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 11.25\n G_M53142_IG18:\n        mov      rdi, gword ptr [rbx\u002B0x230]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 43\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M53142_IG23\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M53142_IG23\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M53142_IG21\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x44], eax\n        test     eax, eax\n        jle      SHORT G_M53142_IG19\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x44]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M53142_IG19:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M53142_IG20:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M53142_IG21:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 43\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M53142_IG22\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M53142_IG23\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M53142_IG22:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M53142_IG23:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M53142_IG24:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M53142_IG25:\n        mov      rdi, 0xD1FFAB1E      ; \u0027MethodSpec is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M53142_IG26:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M53142_IG27:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53142_IG28:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53142_IG29:\n\u002BG_M53142_IG28:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1092, prolog size 35, PerfScore 143.96, instruction count 274, allocated bytes for code 1092 (MethodHash=25973069) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1060, prolog size 35, PerfScore 143.46, instruction count 268, allocated bytes for code 1060 (MethodHash=25973069) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1092,"DiffBytes":1060},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)","Category":"improvement","Description":"853 -\u003E 821 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,303 \u002B1,296 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 15 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 14,  9   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T05] (  4,  3.50)     ref  -\u003E  r14         class-hnd single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n ;  V02 arg2         [V02,T02] (  8,  5.50)     int  -\u003E  r15         single-def\n ;  V03 loc0         [V03,T21] (  3,  2   )     int  -\u003E  r13         single-def\n-;  V04 loc1         [V04,T24] (  2,  1   )     int  -\u003E  rdi         ld-addr-op\n-;  V05 loc2         [V05,T25] (  2,  1   )     int  -\u003E  r12         single-def\n-;  V06 loc3         [V06,T28] (  2,  0   )     ref  -\u003E  [rbp-0x50]  class-hnd exact EH-live single-def \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V07 loc4         [V07,T27] (  3,  0.50)     ref  -\u003E  [rbp-0x58]  class-hnd EH-live single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n\u002B;  V04 loc1         [V04,T25] (  2,  1   )     int  -\u003E  rdi         ld-addr-op\n\u002B;  V05 loc2         [V05,T26] (  2,  1   )     int  -\u003E  r12         single-def\n\u002B;  V06 loc3         [V06,T29] (  2,  0   )     ref  -\u003E  [rbp-0x50]  class-hnd exact EH-live single-def \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V07 loc4         [V07,T28] (  3,  0.50)     ref  -\u003E  [rbp-0x58]  class-hnd EH-live single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V09 tmp1         [V09,T07] (  3,  3   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V10 tmp2         [V10,T08] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;  V11 tmp3         [V11,T09] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp4         [V12,T10] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;* V13 tmp5         [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V14 tmp6         [V14,T04] (  3,  6   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n ;  V15 tmp7         [V15,T19] (  3,  2.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n ;  V16 tmp8         [V16    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V17 tmp9         [V17    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V18 tmp10        [V18,T22] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V19 tmp11        [V19,T17] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V20 tmp12        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V21 tmp13        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V22 tmp14        [V22,T03] (  6,  6   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V23 tmp15        [V23,T06] (  9,  4.50)     ref  -\u003E  r12         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V24 tmp16        [V24,T01] (  8,  8   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp16        [V24,T01] (  9,  9   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V25 tmp17        [V25    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V26 tmp18        [V26,T20] (  4,  2   )     ref  -\u003E  [rbp-0x68]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V27 tmp19        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V28 tmp20        [V28,T11] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V29 tmp21        [V29,T26] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V28 tmp20        [V28,T23] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V29 tmp21        [V29,T27] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V30 tmp22        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V31 tmp23        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n-;  V32 tmp24        [V32,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V32 tmp24        [V32,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;  V33 tmp25        [V33    ] (  3,  3   )     ref  -\u003E  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V34 tmp26        [V34    ] (  3,  3   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n-;  V35 tmp27        [V35,T23] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n\u002B;  V35 tmp27        [V35,T24] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V36 tmp28        [V36,T18] (  5,  2.50)     ref  -\u003E  rdi        \n-;  V37 tmp29        [V37,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n\u002B;  V37 tmp29        [V37,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n ;* V38 tmp30        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V21.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V39 tmp31        [V39    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V21.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V40 tmp32        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V25.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V41 tmp33        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V25.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V42 tmp34        [V42,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V43 tmp35        [V43,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V44 rat0         [V44,T16] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V42 tmp34        [V42,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V43 tmp35        [V43,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V44 tmp36        [V44,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V45 rat0         [V45,T16] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 72\n \n G_M62810_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 72\n        lea      rbp, [rsp\u002B0x70]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x48], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r14, rsi\n        mov      r15d, edx\n \t\t\t\t\t\t;; size=48 bbWeight=1 PerfScore 11.08\n G_M62810_IG02:\n        mov      rdi, rbx\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        mov      r13d, eax\n        mov      rdi, gword ptr [rbx\u002B0x238]\n        cmp      byte  ptr [rdi], dil\n        mov      esi, r15d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[uint,uint]:FindValue(uint):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[uint,uint]:FindValue(uint):byref:this\n        test     rax, rax\n        jne      G_M62810_IG13\n \t\t\t\t\t\t;; size=55 bbWeight=1 PerfScore 12.75\n G_M62810_IG03:\n        mov      r12d, r15d\n        and      r12d, 0xD1FFAB1E\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      rax, gword ptr [rsi\u002B0x1A8]\n        mov      gword ptr [rbp-0x60], rax\n        dec      r12d\n        cmp      r12d, dword ptr [rax\u002B0x18]\n        jae      G_M62810_IG06\n        mov      rsi, gword ptr [rax\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M62810_IG17\n\u002B       jae      G_M62810_IG16\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M62810_IG04\n        mov      r8, gword ptr [rax\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [r8\u002B0x10]\n        call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      gword ptr [rbp-0x68], rax\n        mov      rdi, gword ptr [rax\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rcx]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M62810_IG05\n        mov      rax, gword ptr [rbp-0x60]\n        mov      rdi, gword ptr [rax\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M62810_IG16\n        mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rcx]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M62810_IG16\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, gword ptr [rbp-0x68]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      rax, gword ptr [rbp-0x60]\n-\t\t\t\t\t\t;; size=171 bbWeight=0.50 PerfScore 22.00\n\u002B\t\t\t\t\t\t;; size=152 bbWeight=0.50 PerfScore 21.50\n G_M62810_IG04:\n-       mov      rax, gword ptr [rax\u002B0x08]\n-       cmp      r12d, dword ptr [rax\u002B0x08]\n-       jae      G_M62810_IG17\n-       mov      ecx, r12d\n-       mov      r12, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [rax\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M62810_IG16\n\u002B       mov      esi, r12d\n\u002B       mov      r12, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M62810_IG07\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M62810_IG05:\n        mov      r12, gword ptr [rbp-0x68]\n        jmp      SHORT G_M62810_IG07\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M62810_IG06:\n        xor      r12, r12\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M62810_IG07:\n        mov      gword ptr [rbp-0x50], r12\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r12\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M62810_IG12\n        mov      rsi, gword ptr [r12\u002B0x08]\n        mov      gword ptr [rbp-0x58], rsi\n \t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 7.38\n G_M62810_IG08:\n        lea      rdi, bword ptr [r12\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, rbx\n        mov      rsi, r12\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        nop      \n \t\t\t\t\t\t;; size=37 bbWeight=0.50 PerfScore 3.00\n G_M62810_IG09:\n        lea      rdi, bword ptr [r12\u002B0x08]\n        mov      rsi, gword ptr [rbp-0x58]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbx\u002B0x238]\n        cmp      byte  ptr [rdi], dil\n        mov      esi, r15d\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[uint,uint]:TryInsert(uint,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[uint,uint]:TryInsert(uint,uint,byte):bool:this\n \t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 5.25\n G_M62810_IG10:\n        mov      eax, r15d\n        and      eax, 0xD1FFAB1E\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 0.25\n G_M62810_IG11:\n        add      rsp, 72\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M62810_IG12:\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r13, rax\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r13\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027StandAloneSig 0x{0:X8} already exists\u0027\n        mov      gword ptr [rbp-0x40], rdi\n        mov      gword ptr [rbp-0x48], r13\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x48]\n        lea      rdx, [rbp-0x40]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Warning\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x40]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        mov      edx, 1\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        jmp      G_M62810_IG14\n \t\t\t\t\t\t;; size=163 bbWeight=0.50 PerfScore 14.38\n G_M62810_IG13:\n        mov      edi, dword ptr [rax]\n        cmp      r13d, edi\n        je       G_M62810_IG10\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r14, rax\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r14\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027Could not preserve StandAloneSig token 0x{0:X8}\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      gword ptr [rbp-0x38], r14\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Warning\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        mov      edx, 1\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n \t\t\t\t\t\t;; size=169 bbWeight=0.50 PerfScore 15.00\n G_M62810_IG14:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M62810_IG15:\n        add      rsp, 72\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M62810_IG16:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M62810_IG17:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n-G_M62810_IG18:\n\u002BG_M62810_IG17:\n        push     rax\n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n-G_M62810_IG19:\n\u002BG_M62810_IG18:\n        mov      rdi, gword ptr [rbp-0x50]\n        lea      rdi, bword ptr [rdi\u002B0x08]\n        mov      rsi, gword ptr [rbp-0x58]\n        call     CORINFO_HELP_ASSIGN_REF\n        nop      \n \t\t\t\t\t\t;; size=18 bbWeight=0 PerfScore 0.00\n-G_M62810_IG20:\n\u002BG_M62810_IG19:\n        add      rsp, 8\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 853, prolog size 48, PerfScore 101.71, instruction count 202, allocated bytes for code 853 (MethodHash=3c1f0aa5) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n\u002B; Total bytes of code 821, prolog size 48, PerfScore 101.21, instruction count 196, allocated bytes for code 821 (MethodHash=3c1f0aa5) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":853,"DiffBytes":821},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)","Category":"improvement","Description":"462 -\u003E 434 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,200 \u002B1,195 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T14] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n-;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V13 tmp10        [V13,T01] (  6, 24   )     ref  -\u003E  r12         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V14 tmp11        [V14,T13] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V15 tmp12        [V15,T02] (  6, 24   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V17 tmp14        [V17,T11] (  5, 10   )     ref  -\u003E  [rbp-0x30]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V17 tmp14        [V17,T12] (  5, 10   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T14] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;* V20 tmp17        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V21 tmp18        [V21,T13] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V21 tmp18        [V21,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V22 tmp19        [V22    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V23 tmp20        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Signature (fldOffset=0x8)\u0022 P-INDEP\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V25 tmp22        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V28 tmp25        [V28,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V28 tmp25        [V28,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V29 tmp26        [V29,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V30 tmp27        [V30,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V31 tmp28        [V31,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V32 rat0         [V32,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V32 tmp29        [V32,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V33 cse0         [V33,T07] (  5, 14   )    long  -\u003E  r13         \u0022CSE #02: aggressive\u0022\n\u002B;  V34 rat0         [V34,T11] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 8\n\u002B; Lcl frame size = 24\n \n G_M2026_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n-       push     rax\n-       lea      rbp, [rsp\u002B0x30]\n\u002B       sub      rsp, 24\n\u002B       lea      rbp, [rsp\u002B0x40]\n        mov      rbx, rdi\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M2026_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 32\n        je       G_M2026_IG13\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M2026_IG03:\n        cmp      byte  ptr [rbx\u002B0x244], 0\n        jne      G_M2026_IG13\n        mov      byte  ptr [rbx\u002B0x244], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0xA0]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M2026_IG11\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M2026_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x68]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M2026_IG14\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M2026_IG16\n-       lea      rdx, [rdx\u002B2*rdx]\n\u002B       jae      G_M2026_IG15\n\u002B       mov      r13d, edx\n\u002B       lea      rdx, [r13\u002B2*r13]\n        mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n        test     esi, esi\n        jne      G_M2026_IG10\n-\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 73.00\n\u002B\t\t\t\t\t\t;; size=58 bbWeight=4 PerfScore 80.00\n G_M2026_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rsi\u002B0x188]\n-       lea      r12d, [r14-0x01]\n-       cmp      r12d, dword ptr [r13\u002B0x18]\n\u002B       mov      r12, gword ptr [rsi\u002B0x188]\n\u002B       lea      eax, [r14-0x01]\n\u002B       mov      dword ptr [rbp-0x2C], eax\n\u002B       cmp      eax, dword ptr [r12\u002B0x18]\n        jae      G_M2026_IG08\n-       mov      rsi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M2026_IG16\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M2026_IG15\n\u002B       cmp      qword ptr [rsi\u002B8*r13\u002B0x10], 0\n        jne      SHORT G_M2026_IG06\n-       mov      rax, gword ptr [r13\u002B0x10]\n-       lea      esi, [r12\u002B0x01]\n\u002B       mov      r8, gword ptr [r12\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n-       mov      rdi, gword ptr [rax\u002B0x10]\n-       call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n-       mov      gword ptr [rbp-0x30], rsi\n\u002B       mov      gword ptr [rbp-0x38], rsi\n        cmp      byte  ptr [rsi], sil\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M2026_IG07\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M2026_IG15\n-       mov      rdi, rax\n-       mov      rsi, gword ptr [rbp-0x30]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M2026_IG15\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r13\u002B0x10]\n\u002B       mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=154 bbWeight=2 PerfScore 82.50\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=139 bbWeight=2 PerfScore 85.50\n G_M2026_IG06:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      G_M2026_IG16\n-       mov      esi, r12d\n-       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M2026_IG15\n\u002B       mov      rsi, gword ptr [rdi\u002B8*r13\u002B0x10]\n        jmp      SHORT G_M2026_IG09\n-\t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 18.50\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=2 PerfScore 18.00\n G_M2026_IG07:\n-       mov      r13, gword ptr [rbp-0x30]\n\u002B       mov      r13, gword ptr [rbp-0x38]\n        mov      rsi, r13\n        jmp      SHORT G_M2026_IG09\n \t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.50\n G_M2026_IG08:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M2026_IG09:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M2026_IG10:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M2026_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M2026_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x68]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.12\n G_M2026_IG12:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M2026_IG13:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M2026_IG14:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M2026_IG15:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M2026_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 462, prolog size 19, PerfScore 225.38, instruction count 119, allocated bytes for code 462 (MethodHash=a6e7f815) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n\u002B; Total bytes of code 434, prolog size 22, PerfScore 234.12, instruction count 114, allocated bytes for code 434 (MethodHash=a6e7f815) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":462,"DiffBytes":434},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)","Category":"improvement","Description":"523 -\u003E 495 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,233 \u002B1,226 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T18] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T19] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V14 tmp11        [V14,T13] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V15 tmp12        [V15,T00] (  9, 36   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V17 tmp14        [V17,T14] (  4,  8   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T15] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;* V20 tmp17        [V20    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V21 tmp18        [V21,T11] (  4, 11   )     ref  -\u003E  rdi         \u0022ISINST eval op1\u0022\n ;  V22 tmp19        [V22,T12] (  4, 11   )     ref  -\u003E  rdi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V23 tmp20        [V23    ] (  8, 16   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V24 tmp21        [V24,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V25 tmp22        [V25,T15] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V24 tmp21        [V24,T18] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V25 tmp22        [V25,T16] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V26 tmp23        [V26    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V28 tmp25        [V28,T16] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V28 tmp25        [V28,T17] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp26        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n ;* V30 tmp27        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V31 tmp28        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V32 tmp29        [V32    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V33 tmp30        [V33    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V34 tmp31        [V34    ] (  8, 16   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V23.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V35 tmp32        [V35,T19] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp32        [V35,T20] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V36 tmp33        [V36,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V37 tmp34        [V37,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V38 tmp35        [V38,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V39 rat0         [V39,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V37 tmp34        [V37,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V38 tmp35        [V38,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V39 tmp36        [V39,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V40 rat0         [V40,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M53969_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=28 bbWeight=1 PerfScore 8.25\n G_M53969_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rdi\u002B0x30], 0x400\n        je       G_M53969_IG17\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.00\n G_M53969_IG03:\n        cmp      byte  ptr [rbx\u002B0x247], 0\n        jne      G_M53969_IG17\n        mov      byte  ptr [rbx\u002B0x247], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0x1A8]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M53969_IG16\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M53969_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x170]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M53969_IG19\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M53969_IG21\n\u002B       jae      G_M53969_IG20\n        mov      esi, dword ptr [rsi\u002B8*rdx\u002B0x10]\n        test     esi, esi\n        jne      G_M53969_IG15\n \t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n G_M53969_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13, gword ptr [rsi\u002B0x208]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n        jae      G_M53969_IG13\n        mov      rsi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M53969_IG21\n\u002B       jae      G_M53969_IG20\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M53969_IG12\n        mov      rax, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n        mov      gword ptr [rbp-0x38], rsi\n        mov      rdi, gword ptr [rsi\u002B0x10]\n        test     rdi, rdi\n        je       SHORT G_M53969_IG08\n \t\t\t\t\t\t;; size=93 bbWeight=2 PerfScore 56.50\n G_M53969_IG06:\n        mov      rax, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rdi], rax\n        jne      SHORT G_M53969_IG08\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 3.25\n G_M53969_IG07:\n        jmp      SHORT G_M53969_IG09\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M53969_IG08:\n        xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 0.25\n G_M53969_IG09:\n        xor      eax, eax\n        mov      dword ptr [rbp-0x30], eax\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M53969_IG10:\n        mov      dword ptr [rbp-0x30], eax\n        test     rdi, rdi\n        je       SHORT G_M53969_IG11\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M53969_IG11\n        mov      eax, dword ptr [rbp-0x30]\n        inc      eax\n        mov      dword ptr [rbp-0x30], eax\n        mov      rsi, gword ptr [rdi\u002B0x18]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        je       SHORT G_M53969_IG11\n        mov      r12, gword ptr [rbp-0x38]\n        mov      rsi, r12\n        jmp      SHORT G_M53969_IG14\n \t\t\t\t\t\t;; size=63 bbWeight=2 PerfScore 38.00\n G_M53969_IG11:\n        mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M53969_IG20\n-       mov      rdi, rax\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M53969_IG20\n\u002B       mov      edx, r12d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rdx\u002B0x10]\n        mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=48 bbWeight=2 PerfScore 19.00\n\u002B\t\t\t\t\t\t;; size=33 bbWeight=2 PerfScore 17.00\n G_M53969_IG12:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M53969_IG21\n\u002B       jae      SHORT G_M53969_IG20\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M53969_IG14\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n G_M53969_IG13:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M53969_IG14:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M53969_IG15:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M53969_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M53969_IG16:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.62\n G_M53969_IG17:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M53969_IG18:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M53969_IG19:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M53969_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53969_IG21:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 523, prolog size 28, PerfScore 256.62, instruction count 135, allocated bytes for code 523 (MethodHash=fef92d2e) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n\u002B; Total bytes of code 495, prolog size 28, PerfScore 254.62, instruction count 129, allocated bytes for code 495 (MethodHash=fef92d2e) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":523,"DiffBytes":495},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)","Category":"improvement","Description":"462 -\u003E 434 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,197 \u002B1,192 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T14] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n-;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V14 tmp11        [V14,T11] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V13 tmp10        [V13,T01] (  6, 24   )     ref  -\u003E  r12         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V15 tmp12        [V15,T02] (  6, 24   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V17 tmp14        [V17,T12] (  4,  8   )     ref  -\u003E  [rbp-0x30]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V17 tmp14        [V17,T13] (  4,  8   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n-;  V20 tmp17        [V20,T15] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V19 tmp16        [V19,T14] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n\u002B;  V20 tmp17        [V20,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V21 tmp18        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V22 tmp19        [V22,T13] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V22 tmp19        [V22,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V23 tmp20        [V23    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V25 tmp22        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V27 tmp24        [V27,T16] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V27 tmp24        [V27,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V28 tmp25        [V28,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V29 tmp26        [V29,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V30 tmp27        [V30,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V31 rat0         [V31,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V31 tmp28        [V31,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V32 cse0         [V32,T07] (  5, 14   )    long  -\u003E  r13         \u0022CSE #02: aggressive\u0022\n\u002B;  V33 rat0         [V33,T11] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 8\n\u002B; Lcl frame size = 24\n \n G_M19027_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n-       push     rax\n-       lea      rbp, [rsp\u002B0x30]\n\u002B       sub      rsp, 24\n\u002B       lea      rbp, [rsp\u002B0x40]\n        mov      rbx, rdi\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M19027_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 64\n        je       G_M19027_IG13\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M19027_IG03:\n        cmp      byte  ptr [rbx\u002B0x245], 0\n        jne      G_M19027_IG13\n        mov      byte  ptr [rbx\u002B0x245], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0xD8]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M19027_IG11\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M19027_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xA0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M19027_IG14\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n\u002B       jae      G_M19027_IG15\n\u002B       mov      r13d, edx\n\u002B       mov      esi, dword ptr [rsi\u002B4*r13\u002B0x10]\n        test     esi, esi\n        jne      G_M19027_IG10\n-\t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n\u002B\t\t\t\t\t\t;; size=57 bbWeight=4 PerfScore 72.00\n G_M19027_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rsi\u002B0x1A8]\n-       lea      r12d, [r14-0x01]\n-       cmp      r12d, dword ptr [r13\u002B0x18]\n\u002B       mov      r12, gword ptr [rsi\u002B0x1A8]\n\u002B       lea      eax, [r14-0x01]\n\u002B       mov      dword ptr [rbp-0x2C], eax\n\u002B       cmp      eax, dword ptr [r12\u002B0x18]\n        jae      G_M19027_IG08\n-       mov      rsi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M19027_IG15\n\u002B       cmp      qword ptr [rsi\u002B8*r13\u002B0x10], 0\n        jne      SHORT G_M19027_IG06\n-       mov      rax, gword ptr [r13\u002B0x10]\n-       lea      esi, [r12\u002B0x01]\n\u002B       mov      r8, gword ptr [r12\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n-       mov      rdi, gword ptr [rax\u002B0x10]\n-       call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n-       mov      gword ptr [rbp-0x30], rsi\n\u002B       mov      gword ptr [rbp-0x38], rsi\n        mov      rdi, gword ptr [rsi\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M19027_IG07\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M19027_IG15\n-       mov      rdi, rax\n-       mov      rsi, gword ptr [rbp-0x30]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M19027_IG15\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r13\u002B0x10]\n\u002B       mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=152 bbWeight=2 PerfScore 82.00\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=137 bbWeight=2 PerfScore 85.00\n G_M19027_IG06:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      esi, r12d\n-       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M19027_IG15\n\u002B       mov      rsi, gword ptr [rdi\u002B8*r13\u002B0x10]\n        jmp      SHORT G_M19027_IG09\n-\t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 18.50\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=2 PerfScore 18.00\n G_M19027_IG07:\n-       mov      r13, gword ptr [rbp-0x30]\n\u002B       mov      r13, gword ptr [rbp-0x38]\n        mov      rsi, r13\n        jmp      SHORT G_M19027_IG09\n \t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.50\n G_M19027_IG08:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M19027_IG09:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M19027_IG10:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M19027_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M19027_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xA0]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.12\n G_M19027_IG12:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M19027_IG13:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M19027_IG14:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M19027_IG15:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M19027_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 462, prolog size 19, PerfScore 222.88, instruction count 117, allocated bytes for code 462 (MethodHash=2300b5ac) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n\u002B; Total bytes of code 434, prolog size 22, PerfScore 225.62, instruction count 112, allocated bytes for code 434 (MethodHash=2300b5ac) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":462,"DiffBytes":434}]}