Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hight Volatility & Strange4 Disasm #1124

Closed
yahorsi opened this issue Apr 2, 2019 · 3 comments
Closed

Hight Volatility & Strange4 Disasm #1124

yahorsi opened this issue Apr 2, 2019 · 3 comments
Labels

Comments

@yahorsi
Copy link

yahorsi commented Apr 2, 2019

Hi Guys!

I'm trying to investigate following benchmark https://github.com/yahorsi/ListBenchmarks where I'm trying to benchmark access to the List[]. The problem I see is that results are very volatile, sometime difference is 3x-4x and I do not understand why. And no, I do not run bitcoin miners on my machine and CPU/IO is not used when I run benchmarks :)

Below see how e.g. 0.0912 is different from 0.5830 ns.
Disasm looks strange for me as well. Why in once case it is so short and not in another case

:

// * Summary *

BenchmarkDotNet=v0.11.4, OS=Windows 10.0.17763.379 (1809/October2018Update/Redstone5)
Intel Core i7-8700 CPU 3.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=3.0.100-preview3-010431
[Host] : .NET Core 2.1.9 (CoreCLR 4.6.27414.06, CoreFX 4.6.27415.01), 64bit RyuJIT
Tiered Compilation Disabled : .NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT
Tiered Compilation Enabled : .NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

Runtime=Core

Method Job EnvironmentVariables Toolchain IterationCount LaunchCount WarmupCount Index Mean Error StdDev
AccessByIndex Default Empty Default 100 3 100 1 NA NA NA
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 2.2 Default Default Default 1 0.2196 ns 0.0172 ns 0.0161 ns
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 3.0 Default Default Default 1 0.2436 ns 0.0045 ns 0.0042 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 2.2 Default Default Default 1 0.5830 ns 0.0124 ns 0.0104 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 3.0 Default Default Default 1 0.3271 ns 0.0662 ns 0.0620 ns
AccessByIndex Default Empty Default 100 3 100 5 NA NA NA
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 2.2 Default Default Default 5 0.2326 ns 0.0099 ns 0.0093 ns
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 3.0 Default Default Default 5 0.2400 ns 0.0147 ns 0.0137 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 2.2 Default Default Default 5 0.5228 ns 0.0214 ns 0.0200 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 3.0 Default Default Default 5 0.0912 ns 0.0011 ns 0.0009 ns
AccessByIndex Default Empty Default 100 3 100 9 NA NA NA
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 2.2 Default Default Default 9 0.2415 ns 0.0223 ns 0.0209 ns
AccessByIndex Tiered Compilation Disabled COMPLUS_TieredCompilation=0 .NET Core 3.0 Default Default Default 9 0.2458 ns 0.0091 ns 0.0085 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 2.2 Default Default Default 9 0.4839 ns 0.0019 ns 0.0016 ns
AccessByIndex Tiered Compilation Enabled COMPLUS_TieredCompilation=1 .NET Core 3.0 Default Default Default 9 0.1564 ns 0.0139 ns 0.0116 ns

Benchmarks with issues:
ListBaseBenchmarks.AccessByIndex: Job-HLFLUV(IterationCount=100, LaunchCount=3, WarmupCount=100) [Index=1]
ListBaseBenchmarks.AccessByIndex: Job-HLFLUV(IterationCount=100, LaunchCount=3, WarmupCount=100) [Index=5]
ListBaseBenchmarks.AccessByIndex: Job-HLFLUV(IterationCount=100, LaunchCount=3, WarmupCount=100) [Index=9]

// * Warnings *
MultimodalDistribution
ListBaseBenchmarks.AccessByIndex: Tiered Compilation Disabled -> It seems that the distribution can have several modes (mValue = 3.14)
ListBaseBenchmarks.AccessByIndex: Tiered Compilation Disabled -> It seems that the distribution can have several modes (mValue = 3)

// * Hints *
Outliers
ListBaseBenchmarks.AccessByIndex: Tiered Compilation Enabled -> 2 outliers were removed
ListBaseBenchmarks.AccessByIndex: Tiered Compilation Enabled -> 3 outliers were removed, 4 outliers were detected

// * Legends *
Index : Value of the 'Index' parameter
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
1 ns : 1 Nanosecond (0.000000001 sec)

// * Diagnostic Output - DisassemblyDiagnoser *
The results were exported to ".\BenchmarkDotNet.Artifacts\results*-disassembly-report.html"

// ***** BenchmarkRunner: End *****
// ** Remained 0 benchmark(s) to run **
Run time: 00:08:08 (488.07 sec), executed benchmarks: 12

Global total time: 00:08:13 (493.1 sec), executed benchmarks: 12
// * Artifacts cleanup *

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     al,1
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 69
; System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       sub     rsp,28h
; Total bytes of code 4

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       nop
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7f930
       int     3
       add     byte ptr [rax],al
       sbb     dword ptr [rcx+rax],eax
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 71

No ILOffsetMap found
System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     eax,52050002h
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-1FC81F7h],ah
; Total bytes of code 93
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,dh
       or      dword ptr [rsi+3],edi
       ???
       jg      00007ffe`0369cb7f
; Total bytes of code 47
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       push    rbp
       push    rdi
       push    rsi
       sub     rsp,20h
       lea     rbp,[rsp+30h]
       mov     qword ptr [rbp+10h],rcx
       mov     qword ptr [rbp+18h],rdx
       mov     dword ptr [rbp+20h],r8d
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x95c88a
       lea     rcx,[System_Private_CoreLib+0xa554c8
; Total bytes of code 2239

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`64df7768]
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       sbb     dword ptr [00007ffe`b6e7ae0c],eax
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,bh
       ???
       loope   00007ffe`64e2ae80
; Total bytes of code 92
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-20h],cl
       loope   00007ffe`64e2aeb0
       ???
       jg      00007ffe`64e2ae4f
; Total bytes of code 47

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     al,1
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 69
; System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       sub     rsp,28h
; Total bytes of code 4

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       nop
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7f930
       int     3
       add     byte ptr [rax],al
       sbb     dword ptr [rcx+rax],eax
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 71

No ILOffsetMap found
System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     eax,52050002h
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-1FC7DF7h],ah
; Total bytes of code 93
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,dh
       or      dword ptr [rdx+7FFE03h],eax
; Total bytes of code 47
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       push    rbp
       push    rdi
       push    rsi
       sub     rsp,20h
       lea     rbp,[rsp+30h]
       mov     qword ptr [rbp+10h],rcx
       mov     qword ptr [rbp+18h],rdx
       mov     dword ptr [rbp+20h],r8d
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x95c88a
       lea     rcx,[System_Private_CoreLib+0xa554c8
; Total bytes of code 2239

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`64df7768]
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       sbb     dword ptr [00007ffe`b6e7af3c],eax
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,bh
       ???
       loope   00007ffe`64e2afb0
; Total bytes of code 92
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-20h],cl
       loope   00007ffe`64e2afe0
       ???
       jg      00007ffe`64e2af7f
; Total bytes of code 47

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     al,1
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 69
; System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       sub     rsp,28h
; Total bytes of code 4

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       sub     rsp,28h
       nop
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     M00_L00
       mov     rax,qword ptr [rax+8]
       cmp     edx,dword ptr [rax+8]
       jae     M00_L01
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
M00_L00:
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
M00_L01:
       call    coreclr!GetCLRRuntimeHost+0x7f930
       int     3
       add     byte ptr [rax],al
       sbb     dword ptr [rcx+rax],eax
       add     byte ptr [rdx+rax*2],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
; Total bytes of code 71

No ILOffsetMap found
System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     eax,52050002h
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-1FC7FF7h],ah
; Total bytes of code 93
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,dh
       or      dword ptr [rax+7FFE03h],eax
; Total bytes of code 47
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       push    rbp
       push    rdi
       push    rsi
       sub     rsp,20h
       lea     rbp,[rsp+30h]
       mov     qword ptr [rbp+10h],rcx
       mov     qword ptr [rbp+18h],rdx
       mov     dword ptr [rbp+20h],r8d
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x95c88a
       lea     rcx,[System_Private_CoreLib+0xa554c8
; Total bytes of code 2239

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
       push    rbp
       sub     rsp,30h
       lea     rbp,[rsp+30h]
       xor     eax,eax
       mov     qword ptr [rbp-8],rax
       mov     qword ptr [rbp+10h],rcx
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`64df7768]
       nop
       lea     rsp,[rbp]
       pop     rbp
       ret
       add     byte ptr [rax],al
       sbb     dword ptr [00007ffe`b6e7af3c],eax
       add     dword ptr [rax+40h],edx
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     al,bh
       ???
       loope   00007ffe`64e2afb0
; Total bytes of code 92
; ListBenchmarks.ListBaseBenchmarks.get_Index()
       push    rbp
       mov     rbp,rsp
       mov     qword ptr [rbp+10h],rcx
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
       pop     rbp
       ret
       add     byte ptr [rax],al
       add     byte ptr [rcx],bl
       add     dword ptr [rcx],eax
       add     byte ptr [rcx],al
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax-20h],cl
       loope   00007ffe`64e2afe0
       ???
       jg      00007ffe`64e2af7f
; Total bytes of code 47
@AndreyAkinshin
Copy link
Member

@yahorsi I just want to clarify: do you suspect that BenchmarkDotNet produces incorrect results or do you want to just understand performance difference between different modes? In the second case, it's better to create an issue in https://github.com/dotnet/coreclr/

@yahorsi
Copy link
Author

yahorsi commented Apr 2, 2019

@yahorsi I just want to clarify: do you suspect that BenchmarkDotNet produces incorrect results or do you want to just understand performance difference between different modes?

I want to understand the source of the volatility I see in the benchmark. My wild guess is that in the benchmark we compare code that is jitted differently (using different tiers). My wild guess is that issues/volatility is caused by the tiered jit. In general, after thinking about tiered jit I do not see how is that possible to benchmark without all benchmarks being jitted using exactly the same tier/mode. Otherwise it is not apples to apples.

Run benchmark once again with sources and il. Here are results , BTW, there is no JOB description here in the dasm that makes it impossible to understand what JOB it belongs to. Note, I have different jobs with same framework moniker but different environment variables

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     00007ffe`153f3095
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     00007ffe`4afa6d16
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
; Total bytes of code 38
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       IL_0000: ldarg.1
       IL_0001: ldarg.0
       IL_0002: ldfld System.Int32 System.Collections.Generic.List`1<T>::_size
       IL_0007: blt.un.s IL_000e
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       IL_0009: call System.Void System.ThrowHelper::ThrowArgumentOutOfRange_IndexException()
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       IL_000e: ldarg.0
       IL_000f: ldfld T[] System.Collections.Generic.List`1<T>::_items
       IL_0014: ldarg.1
       IL_0015: ldelem.any T
       IL_001a: ret
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
; Total bytes of code 2183

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`4af87768]
; Total bytes of code 39
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     00007ffe`153c3095
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     00007ffe`4af86d16
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
; Total bytes of code 38
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       IL_0000: ldarg.1
       IL_0001: ldarg.0
       IL_0002: ldfld System.Int32 System.Collections.Generic.List`1<T>::_size
       IL_0007: blt.un.s IL_000e
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       IL_0009: call System.Void System.ThrowHelper::ThrowArgumentOutOfRange_IndexException()
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       IL_000e: ldarg.0
       IL_000f: ldfld T[] System.Collections.Generic.List`1<T>::_items
       IL_0014: ldarg.1
       IL_0015: ldelem.any T
       IL_001a: ret
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
; Total bytes of code 2183

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`4af77768]
; Total bytes of code 39
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+18h]
       jae     00007ffe`153e3095
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rax,qword ptr [rcx+8]
       mov     edx,dword ptr [rcx+10h]
       cmp     edx,dword ptr [rax+10h]
       jae     00007ffe`4af86d16
; Total bytes of code 12

No ILOffsetMap found
ListBenchmarks.ListBaseBenchmarks.get_Index()

.NET Core 2.2.3 (CoreCLR 4.6.27414.05, CoreFX 4.6.27414.05), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
; Total bytes of code 38
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7
; System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]].get_Item(Int32)
       IL_0000: ldarg.1
       IL_0001: ldarg.0
       IL_0002: ldfld System.Int32 System.Collections.Generic.List`1<T>::_size
       IL_0007: blt.un.s IL_000e
       mov     eax,dword ptr [rbp+20h]
       mov     rdx,qword ptr [rbp+10h]
       cmp     eax,dword ptr [rdx+18h]
       jb      M02_L00
       IL_0009: call System.Void System.ThrowHelper::ThrowArgumentOutOfRange_IndexException()
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       IL_000e: ldarg.0
       IL_000f: ldfld T[] System.Collections.Generic.List`1<T>::_items
       IL_0014: ldarg.1
       IL_0015: ldelem.any T
       IL_001a: ret
M02_L00:
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     eax,dword ptr [rbp+20h]
       cmp     rax,qword ptr [rcx+8]
       jae     M02_L01
       mov     edx,28h
       imul    rdx,rax
       lea     rsi,[rcx+rdx+10h]
       mov     rdi,qword ptr [rbp+18h]
       call    coreclr!MetaDataGetDispenser+0x3c240
       mov     ecx,4
       rep     movs qword ptr [rdi],qword ptr [rsi]
       mov     rax,qword ptr [rbp+18h]
       lea     rsp,[rbp-10h]
       pop     rsi
       pop     rdi
       pop     rbp
       ret
M02_L01:
       call    coreclr!GetCLRRuntimeHost+0x7da60
       int     3
       add     byte ptr [rcx],bl
       ???
       add     al,0
       ???
       xor     al,byte ptr [rbx]
       ???
       add     dh,byte ptr [rax+1]
       push    rax
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       add     byte ptr [rax],al
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x6aa570
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x6aa576
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     edx,dword ptr [rsi+18h]
       jae     System_Private_CoreLib+0x6aa59f
       mov     rcx,qword ptr [rsi+8]
       call    System_Private_CoreLib+0x2d4028
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x70f96f
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x70f975
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x70f9aa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x777740
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x777746
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x77777a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x787130
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x787136
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78716a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x78b7d0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x78b7d6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x78b80a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7917cb
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7917d1
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79180a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7936e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7936e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x79371a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x7a1360
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x7a1366
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x7a139a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80e250
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80e256
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80e28a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x80fbc0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x80fbc6
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x80fbfa
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8114e0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8114e6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81151a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x813121
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x813127
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81315a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x814a91
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x814a97
       movsxd  rdx,edx
       movsd   xmm0,mmword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x814aca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8166d1
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8166d7
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81670a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x818051
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x818057
       movsxd  rdx,edx
       movsx   rax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81808a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x819990
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x819996
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8199ca
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81b2b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81b2b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81b2ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81cc31
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81cc37
       movsxd  rdx,edx
       movsx   rax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81cc6a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81e5a1
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81e5a7
       movsxd  rdx,edx
       movss   xmm0,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81e5da
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x81ff10
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x81ff16
       movsxd  rdx,edx
       movzx   eax,word ptr [rax+rdx*2+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x81ff4a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8217ef
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8217f5
       movsxd  rdx,edx
       mov     eax,dword ptr [rax+rdx*4+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82182a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x823b5e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x823b64
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x823b9a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x8255b0
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x8255b6
       movsxd  rdx,edx
       mov     rax,qword ptr [rax+rdx*8+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x8255ea
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x827221
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x827227
       movsxd  rcx,r8d
       shl     rcx,4
       lea     rax,[rax+rcx+10h]
       movdqu  xmm0,xmmword ptr [rax]
       movdqu  xmmword ptr [rdx],xmm0
       mov     rax,rdx
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x82725a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x86efe2
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x86efe8
       movsxd  rdx,r8d
       shl     rdx,5
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       movs    qword ptr [rdi],qword ptr [rsi]
       movs    qword ptr [rdi],qword ptr [rsi]
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x86f01a
       lea     rcx,[System_Private_CoreLib+0xa554c8
       call    System_Private_CoreLib+0x2d4080
       push    rdi
       push    rsi
       push    rbx
       sub     rsp,20h
       mov     rbx,rdx
       cmp     r8d,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x92ce9e
       mov     rax,qword ptr [rcx+8]
       cmp     r8d,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x92cea4
       movsxd  rdx,r8d
       shl     rdx,4
       lea     rsi,[rax+rdx+10h]
       mov     rdi,rbx
       call    System_Private_CoreLib+0x2d4130
       call    System_Private_CoreLib+0x2d4130
       mov     rax,rbx
       add     rsp,20h
       pop     rbx
       pop     rsi
       pop     rdi
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
       call    System_Private_CoreLib+0x2d4038
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       int     3
       push    rsi
       sub     rsp,20h
       mov     rsi,rcx
       cmp     qword ptr [rsi+10h],0
       jne     System_Private_CoreLib+0x92ceda
       lea     rcx,[System_Private_CoreLib+0xa554c8
       sub     rsp,28h
       nop
       cmp     edx,dword ptr [rcx+18h]
       jae     System_Private_CoreLib+0x95c850
       mov     rax,qword ptr [rcx+8]
       cmp     edx,dword ptr [rax+8]
       jae     System_Private_CoreLib+0x95c856
       movsxd  rdx,edx
       movzx   eax,byte ptr [rax+rdx+10h]
       add     rsp,28h
       ret
       call    System.ThrowHelper.ThrowArgumentOutOfRange_IndexException()
       int     3
; Total bytes of code 2183

.NET Core 3.0.0-preview3-27503-5 (CoreCLR 4.6.27422.72, CoreFX 4.7.19.12807), 64bit RyuJIT

; ListBenchmarks.ListBaseBenchmarks.AccessByIndex()
                   return intList[Index];
            ^^^^^^^^^^^^^^^^^^^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Collections.Generic.List`1<System.Int32> ListBenchmarks.ListBaseBenchmarks::intList
       IL_0006: ldarg.0
       IL_0007: call System.Int32 ListBenchmarks.ListBaseBenchmarks::get_Index()
       IL_000c: callvirt !0 System.Collections.Generic.List`1<System.Int32>::get_Item(System.Int32)
       IL_0011: ret
       mov     rcx,qword ptr [rbp+10h]
       mov     rcx,qword ptr [rcx+8]
       mov     qword ptr [rbp-8],rcx
       mov     rcx,qword ptr [rbp+10h]
       call    ListBenchmarks.ListBaseBenchmarks.get_Index()
       mov     dword ptr [rbp-0Ch],eax
       mov     edx,dword ptr [rbp-0Ch]
       mov     rcx,qword ptr [rbp-8]
       cmp     dword ptr [rcx],ecx
       call    qword ptr [00007ffe`4af87768]
; Total bytes of code 39
; ListBenchmarks.ListBaseBenchmarks.get_Index()
               public int Index { get; set; }
                           ^^^^
       IL_0000: ldarg.0
       IL_0001: ldfld System.Int32 ListBenchmarks.ListBaseBenchmarks::<Index>k__BackingField
       IL_0006: ret
       mov     rax,qword ptr [rbp+10h]
       mov     eax,dword ptr [rax+10h]
; Total bytes of code 7

@adamsitnik
Copy link
Member

Hi @yahorsi

I want to understand the source of the volatility I see in the benchmark

From my experience (I am the person who was working on ensuring that the last few .NET Core releases have not regressed performance) such volatility is typically caused by memory and|or loop body alignment changes.

I am currently working on a Workshop for the .NET Team and preparing a doc that provides some examples and describes how to deal with that:

https://github.com/adamsitnik/performance/blob/e4987916c83bef9c2203c256043dc4d9f6cc6a29/docs/regressions.md#memory-alignment
https://github.com/adamsitnik/performance/blob/e4987916c83bef9c2203c256043dc4d9f6cc6a29/docs/regressions.md#code-alignment

I hope that this doc answers your question. Since there is nothing actionable on the BDN side and we already have two issues that track the alignment ideas (#756 and #1513) I am closing this one.

Thanks,
Adam

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants