.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.ForEach()
xor ecx , ecx
mov r9 , 13649A58h
mov r9 , qword ptr [ r9 ]
mov r10 , qword ptr [ r9 + 8 ]
test r10d , r10d
jle M00_L01
xor edx , edx
xor r8d , r8d
nop dword ptr [ rax ]
M00_L00:
mov eax , dword ptr [ r9 + r8 + 10h ]
movsxd rax , eax
add rcx , rax
inc edx
add r8 , 4
cmp edx , r10d
jl M00_L00
M00_L01:
mov rax , rcx
; Total bytes of code 57
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.For()
xor edx , edx
mov rax , 13679A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
test ecx , ecx
jle M00_L01
xor ecx , ecx
nop dword ptr [ rax ]
M00_L00:
mov rax , 13679A58h
mov rax , qword ptr [ rax ]
movsxd r9 , ecx
mov r8 , qword ptr [ rax + 8 ]
cmp r9 , r8
jae M00_L02
movsxd rax , dword ptr [ rax + r9 * 4 + 10h ]
add rdx , rax
inc ecx
cmp ecx , r8d
jl M00_L00
M00_L01:
mov rax , rdx
add rsp , 28h
ret
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
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 - 2D1EF60h ], bh
jg M00_L03
M00_L03:
add bl , al
; Total bytes of code 109
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.ForReverse()
xor edx , edx
mov rax , 13809A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
dec ecx
test ecx , ecx
jl M00_L01
nop dword ptr [ rax ]
M00_L00:
mov r8 , 13809A58h
mov r8 , qword ptr [ r8 ]
movsxd r9 , ecx
mov rax , qword ptr [ r8 + 8 ]
cmp r9 , rax
jae M00_L02
movsxd rax , dword ptr [ r8 + r9 * 4 + 10h ]
add rdx , rax
dec ecx
test ecx , ecx
jge M00_L00
M00_L01:
mov rax , rdx
add rsp , 28h
ret
nop
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
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 al , al
mov al , byte ptr [ 00C300007FFD2E0Dh ]
; Total bytes of code 110
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.ForLength()
xor edx , edx
mov rax , 135E9A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd r9 , ecx
test ecx , ecx
jle M00_L01
xor ecx , ecx
M00_L00:
mov r8 , 135E9A58h
mov r8 , qword ptr [ r8 ]
mov rax , qword ptr [ r8 + 8 ]
cmp rcx , rax
jae M00_L02
movsxd rax , dword ptr [ r8 + rcx * 4 + 10h ]
add rdx , rax
inc rcx
cmp rcx , r9
jl M00_L00
M00_L01:
mov rax , rdx
add rsp , 28h
ret
xchg ax , ax
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
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 - 2D1EE60h ], bh
jg 00007ffd`2e03a00f
; Total bytes of code 107
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.PtrA()
xor r8d , r8d
mov rcx , 13CC9A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L02
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov rdx , qword ptr [ rsp + 20h ]
mov rax , 13CC9A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd rax , ecx
lea rcx ,[ rdx + rax * 4 ]
cmp rdx , rcx
jae M00_L01
M00_L00:
movsxd rax , dword ptr [ rdx ]
add r8 , rax
add rdx , 4
cmp rdx , rcx
jb M00_L00
M00_L01:
mov qword ptr [ rsp + 20h ], 0
mov rax , r8
add rsp , 38h
ret
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
add byte ptr [ rcx ], bl
add al , 1
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add al , bl
mov al , byte ptr [ 00C300007FFD2E10h ]
; Total bytes of code 133
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.PtrB()
xor edx , edx
mov rcx , 133D9A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L02
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov r8 , qword ptr [ rsp + 20h ]
mov rax , 133D9A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd rax , ecx
lea r9 ,[ r8 + rax * 4 ]
cmp r8 , r9
jae M00_L01
M00_L00:
lea rcx ,[ r8 + 4 ]
mov rax , r8
mov r8 , rcx
movsxd rax , dword ptr [ rax ]
add rdx , rax
cmp rcx , r9
jb M00_L00
M00_L01:
mov qword ptr [ rsp + 20h ], 0
mov rax , rdx
add rsp , 38h
ret
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
sbb dword ptr [ rcx + rax ], eax
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add al , dl
mov al , byte ptr [ 00C300007FFD2E11h ]
add byte ptr [ rax ], al
sbb dword ptr [ rax ], eax
; Total bytes of code 137
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.PtrC()
xor edx , edx
mov rcx , 14359A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L02
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov r8 , qword ptr [ rsp + 20h ]
mov rax , 14359A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd rax , ecx
lea r9 ,[ r8 + rax * 4 ]
cmp r8 , r9
jae M00_L01
M00_L00:
lea rcx ,[ r8 + 4 ]
mov rax , r8
mov r8 , rcx
movsxd rax , dword ptr [ rax ]
add rdx , rax
cmp rcx , r9
jb M00_L00
M00_L01:
mov qword ptr [ rsp + 20h ], 0
mov rax , rdx
add rsp , 38h
ret
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
sbb dword ptr [ rcx + rax ], eax
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add al , dl
mov al , byte ptr [ 00C300007FFD2E0Eh ]
add byte ptr [ rax ], al
sbb dword ptr [ rax ], eax
; Total bytes of code 137
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.Unrolled2()
xor edx , edx
mov rcx , 13F69A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L02
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov r9 , qword ptr [ rsp + 20h ]
mov rax , 13F69A58h
mov rax , qword ptr [ rax ]
mov r8 , qword ptr [ rax + 8 ]
mov r10 , r9
mov eax , r8d
and eax , 0FFFFFFFEh
movsxd rax , eax
lea r11 ,[ r9 + rax * 4 ]
cmp r9 , r11
jae M00_L01
nop dword ptr [ rax ]
M00_L00:
lea rcx ,[ r10 + 4 ]
movsxd rax , dword ptr [ r10 ]
add rdx , rax
lea r9 ,[ r10 + 8 ]
add r10 , 8
movsxd rax , dword ptr [ rcx ]
add rdx , rax
cmp r9 , r11
jb M00_L00
nop dword ptr [ rax ]
M00_L01:
mov eax , dword ptr [ r9 ]
and r8d , 1
imul eax , r8d
movsxd rax , eax
add rdx , rax
mov qword ptr [ rsp + 20h ], 0
mov rax , rdx
add rsp , 38h
ret
M00_L02:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
sbb dword ptr [ rcx + rax ], eax
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add al , ah
mov al , byte ptr [ 00C300007FFD2E0Eh ]
; Total bytes of code 181
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.Unrolled4()
xor edx , edx
mov rcx , 135B9A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L04
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov r9 , qword ptr [ rsp + 20h ]
mov rax , 135B9A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
and ecx , 0FFFFFFFCh
movsxd rax , ecx
lea r10 ,[ r9 + rax * 4 ]
mov r8 , r9
mov r11 , r8
cmp r9 , r10
jae M00_L01
nop dword ptr [ rax ]
M00_L00:
movsxd rax , dword ptr [ r11 ]
add rdx , rax
movsxd rax , dword ptr [ r11 + 4 ]
add rdx , rax
lea rcx ,[ r11 + 0Ch ]
movsxd rax , dword ptr [ r11 + 8 ]
add rdx , rax
lea r8 ,[ r11 + 10h ]
add r11 , 10h
movsxd rax , dword ptr [ rcx ]
add rdx , rax
cmp r8 , r10
jb M00_L00
nop dword ptr [ rax + rax ]
M00_L01:
mov rax , 135B9A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd rax , ecx
lea r10 ,[ r9 + rax * 4 ]
cmp r8 , r10
jae M00_L03
nop dword ptr [ rax ]
M00_L02:
lea rcx ,[ r8 + 4 ]
mov rax , r8
mov r8 , rcx
movsxd rax , dword ptr [ rax ]
add rdx , rax
cmp rcx , r10
jb M00_L02
M00_L03:
mov qword ptr [ rsp + 20h ], 0
mov rax , rdx
add rsp , 38h
ret
M00_L04:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
sbb dword ptr [ rcx + rax ], eax
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], cl
mov eax , dword ptr [ 00C300007FFD2E11h ]
add byte ptr [ rax ], al
sbb dword ptr [ rax ], eax
; Total bytes of code 233
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit LegacyJIT/clrjit-v4.7.3190.0;compatjit-v4.7.3190.0
; ForEachLength.Bench.Unrolled8()
xor r9d , r9d
mov rcx , 13E69A58h
mov rcx , qword ptr [ rcx ]
mov rax , qword ptr [ rcx + 8 ]
test rax , rax
jbe M00_L04
lea rax ,[ rcx + 10h ]
mov qword ptr [ rsp + 20h ], rax
mov r8 , qword ptr [ rsp + 20h ]
mov rax , 13E69A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
and ecx , 0FFFFFFF8h
movsxd rax , ecx
lea r10 ,[ r8 + rax * 4 ]
mov rdx , r8
mov r11 , rdx
cmp r8 , r10
jae M00_L01
xchg ax , ax
M00_L00:
movsxd rax , dword ptr [ r11 ]
add r9 , rax
movsxd rax , dword ptr [ r11 + 4 ]
add r9 , rax
movsxd rax , dword ptr [ r11 + 8 ]
add r9 , rax
movsxd rax , dword ptr [ r11 + 0Ch ]
add r9 , rax
movsxd rax , dword ptr [ r11 + 10h ]
add r9 , rax
movsxd rax , dword ptr [ r11 + 14h ]
add r9 , rax
lea rcx ,[ r11 + 1Ch ]
movsxd rax , dword ptr [ r11 + 18h ]
add r9 , rax
lea rdx ,[ r11 + 20h ]
add r11 , 20h
movsxd rax , dword ptr [ rcx ]
add r9 , rax
cmp rdx , r10
jb M00_L00
nop word ptr [ rax + rax ]
M00_L01:
mov rax , 13E69A58h
mov rax , qword ptr [ rax ]
mov rcx , qword ptr [ rax + 8 ]
movsxd rax , ecx
lea r10 ,[ r8 + rax * 4 ]
cmp rdx , r10
jae M00_L03
nop dword ptr [ rax ]
M00_L02:
lea rcx ,[ rdx + 4 ]
mov rax , rdx
mov rdx , rcx
movsxd rax , dword ptr [ rax ]
add r9 , rax
cmp rcx , r10
jb M00_L02
M00_L03:
mov qword ptr [ rsp + 20h ], 0
mov rax , r9
add rsp , 38h
ret
M00_L04:
call clr!TranslateSecurityAttributes + 0x87fa0
nop
sbb dword ptr [ rcx + rax ], eax
add byte ptr [ rdx ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], al
add byte ptr [ rax ], dl
mov eax , dword ptr [ 00C300007FFD2E0Dh ]
add byte ptr [ rax ], al
sbb dword ptr [ rax ], eax
; Total bytes of code 265
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.ForEach()
xor ecx , ecx
xor ebx , ebx
mov edi , dword ptr ds : [ 41D553Ch ]
xor esi , esi
cmp dword ptr [ edi + 4 ], 0
jle M00_L01
M00_L00:
mov eax , dword ptr [ edi + esi * 4 + 8 ]
mov edx , eax
sar edx , 1Fh
add ecx , eax
adc ebx , edx
inc esi
cmp dword ptr [ edi + 4 ], esi
jg M00_L00
M00_L01:
mov eax , ecx
mov edx , ebx
; Total bytes of code 41
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.For()
mov dword ptr [ ebp - 10h ], 0
xor ecx , ecx
xor edi , edi
mov esi , dword ptr ds : [ 3C8553Ch ]
mov eax , dword ptr [ esi + 4 ]
mov dword ptr [ ebp - 18h ], eax
test eax , eax
jle M00_L01
mov ebx , dword ptr [ esi + 4 ]
M00_L00:
cmp edi , ebx
jae 05193945
mov eax , dword ptr [ esi + edi * 4 + 8 ]
cdq
add eax , ecx
adc edx , dword ptr [ ebp - 10h ]
mov dword ptr [ ebp - 10h ], edx
mov ecx , eax
inc edi
cmp dword ptr [ ebp - 18h ], edi
jg M00_L00
M00_L01:
mov eax , ecx
mov edx , dword ptr [ ebp - 10h ]
; Total bytes of code 60
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.ForReverse()
mov dword ptr [ ebp - 10h ], 0
xor ecx , ecx
mov edi , dword ptr ds : [ 38C553Ch ]
mov esi , dword ptr [ edi + 4 ]
dec esi
js M00_L01
mov ebx , dword ptr [ edi + 4 ]
M00_L00:
cmp esi , ebx
jae 04ef393c
mov eax , dword ptr [ edi + esi * 4 + 8 ]
cdq
add eax , ecx
adc edx , dword ptr [ ebp - 10h ]
mov dword ptr [ ebp - 10h ], edx
mov ecx , eax
dec esi
jns M00_L00
M00_L01:
mov eax , ecx
mov edx , dword ptr [ ebp - 10h ]
; Total bytes of code 51
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.ForLength()
mov dword ptr [ ebp - 10h ], 0
xor ecx , ecx
mov esi , dword ptr ds : [ 3CD553Ch ]
mov eax , dword ptr [ esi + 4 ]
mov dword ptr [ ebp - 18h ], eax
xor edi , edi
test eax , eax
jle M00_L01
mov ebx , dword ptr [ esi + 4 ]
M00_L00:
cmp edi , ebx
jae 05123945
mov eax , dword ptr [ esi + edi * 4 + 8 ]
cdq
add eax , ecx
adc edx , dword ptr [ ebp - 10h ]
mov dword ptr [ ebp - 10h ], edx
mov ecx , eax
inc edi
cmp edi , dword ptr [ ebp - 18h ]
jl M00_L00
M00_L01:
mov eax , ecx
mov edx , dword ptr [ ebp - 10h ]
; Total bytes of code 60
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.PtrA()
xor ebx , ebx
xor edi , edi
mov ecx , dword ptr ds : [ 3E1553Ch ]
cmp dword ptr [ ecx + 4 ], 0
jbe 0536394a
lea eax ,[ ecx + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov edx , dword ptr [ ebp - 10h ]
mov ecx , dword ptr [ ecx + 4 ]
lea ecx ,[ edx + ecx * 4 ]
mov esi , edx
cmp edx , ecx
jae M00_L01
M00_L00:
mov eax , dword ptr [ esi ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
add esi , 4
cmp esi , ecx
jb M00_L00
M00_L01:
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 64
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.PtrB()
xor ebx , ebx
xor edi , edi
mov ecx , dword ptr ds : [ 3A0553Ch ]
cmp dword ptr [ ecx + 4 ], 0
jbe 04ec394c
lea eax ,[ ecx + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov edx , dword ptr [ ebp - 10h ]
mov ecx , dword ptr [ ecx + 4 ]
lea ecx ,[ edx + ecx * 4 ]
mov esi , edx
cmp edx , ecx
jae M00_L01
M00_L00:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L00
M00_L01:
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 66
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.PtrC()
xor ebx , ebx
xor edi , edi
mov ecx , dword ptr ds : [ 433553Ch ]
cmp dword ptr [ ecx + 4 ], 0
jbe 0585394c
lea eax ,[ ecx + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov edx , dword ptr [ ebp - 10h ]
mov esi , edx
mov ecx , dword ptr [ ecx + 4 ]
lea ecx ,[ edx + ecx * 4 ]
cmp edx , ecx
jae M00_L01
M00_L00:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L00
M00_L01:
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 66
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled2()
xor ebx , ebx
xor edi , edi
mov edx , dword ptr ds : [ 35C553Ch ]
cmp dword ptr [ edx + 4 ], 0
jbe 04aa397c
lea eax ,[ edx + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov eax , dword ptr [ edx + 4 ]
mov dword ptr [ ebp - 14h ], eax
mov ecx , dword ptr [ ebp - 10h ]
mov esi , ecx
and eax , 0FFFFFFFEh
lea eax ,[ ecx + eax * 4 ]
mov dword ptr [ ebp - 18h ], eax
cmp ecx , eax
jae M00_L01
M00_L00:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , dword ptr [ ebp - 18h ]
jb M00_L00
M00_L01:
mov eax , dword ptr [ ebp - 14h ]
and eax , 1
imul eax , dword ptr [ esi ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 110
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled4()
xor ebx , ebx
xor edi , edi
mov eax , dword ptr ds : [ 03A1553Ch ]
cmp dword ptr [ eax + 4 ], 0
jbe 04e939b9
lea eax ,[ eax + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov eax , dword ptr [ ebp - 10h ]
mov dword ptr [ ebp - 14h ], eax
mov eax , dword ptr ds : [ 03A1553Ch ]
mov ecx , dword ptr [ eax + 4 ]
and ecx , 0FFFFFFFCh
shl ecx , 2
add ecx , dword ptr [ ebp - 14h ]
mov esi , dword ptr [ ebp - 14h ]
cmp dword ptr [ ebp - 14h ], ecx
jae M00_L01
M00_L00:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L00
M00_L01:
mov eax , dword ptr ds : [ 03A1553Ch ]
mov ecx , dword ptr [ eax + 4 ]
shl ecx , 2
add ecx , dword ptr [ ebp - 14h ]
cmp esi , ecx
jae M00_L03
M00_L02:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L02
M00_L03:
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 171
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled8()
xor ebx , ebx
xor edi , edi
mov eax , dword ptr ds : [ 041D553Ch ]
cmp dword ptr [ eax + 4 ], 0
jbe 05753a01
lea eax ,[ eax + 8 ]
mov dword ptr [ ebp - 10h ], eax
mov eax , dword ptr [ ebp - 10h ]
mov dword ptr [ ebp - 14h ], eax
mov eax , dword ptr ds : [ 041D553Ch ]
mov ecx , dword ptr [ eax + 4 ]
and ecx , 0FFFFFFF8h
shl ecx , 2
add ecx , dword ptr [ ebp - 14h ]
mov esi , dword ptr [ ebp - 14h ]
cmp dword ptr [ ebp - 14h ], ecx
jae M00_L01
M00_L00:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L00
M00_L01:
mov eax , dword ptr ds : [ 041D553Ch ]
mov ecx , dword ptr [ eax + 4 ]
shl ecx , 2
add ecx , dword ptr [ ebp - 14h ]
cmp esi , ecx
jae M00_L03
M00_L02:
mov eax , esi
add esi , 4
mov eax , dword ptr [ eax ]
mov edx , eax
sar edx , 1Fh
add ebx , eax
adc edi , edx
cmp esi , ecx
jb M00_L02
M00_L03:
xor edx , edx
mov dword ptr [ ebp - 10h ], edx
mov eax , ebx
mov edx , edi
; Total bytes of code 243
Mono 5.10.0 (Visual Studio), 64bit
; ForEach
sub $ 0x28 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r14 , 0x10 (% rsp )
mov % r15 , 0x18 (% rsp )
xor % edi , % edi
movabs $ 0x292851cc8d0 , % rax
00 00
mov (% rax ) , % r15
xor % r14d , % r14d
jmp 4e <EachLength_Bench_ForEach + 0x4e >
lea 0x0 (% rsp ) , % rsp
movslq % r14d , % rax
cmp % eax , 0x18 (% r15 )
jbe 72 <EachLength_Bench_ForEach + 0x72 >
lea 0x20 (% r15 , % rax , 4 ) , % rax
movslq (% rax ) , % rsi
movslq % esi , % rax
add % rax , % rdi
inc % r14d
movslq 0x18 (% r15 ) , % rax
cmp % eax , % r14d
jl 30 <EachLength_Bench_ForEach + 0x30 >
mov % rdi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r14
mov 0x18 (% rsp ) , % r15
add $ 0x28 , % rsp
retq
mov $ 0x54 , % edx
mov $ 0x189 , % ecx
xchg % ax , % ax
movabs $ 0x292853720d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; For
sub $ 0x18 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
xor % esi , % esi
xor % edi , % edi
jmp 41 <EachLength_Bench_For + 0x41 >
lea 0x0 (% rsp ) , % rsp
movabs $ 0x2496ef99ff0 , % rax
00 00
mov (% rax ) , % rax
movslq % edi , % rcx
cmp % ecx , 0x18 (% rax )
jbe 67 <EachLength_Bench_For + 0x67 >
lea 0x20 (% rax , % rcx , 4 ) , % rax
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
inc % edi
movabs $ 0x2496ef99ff0 , % rax
00 00
mov (% rax ) , % rax
movslq 0x18 (% rax ) , % rax
cmp % eax , % edi
jl 18 <EachLength_Bench_For + 0x18 >
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
add $ 0x18 , % rsp
retq
mov $ 0x58 , % edx
mov $ 0x189 , % ecx
lea 0x0 (% rsp ) , % rsp
movabs $ 0x249709120d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; ForReverse
sub $ 0x18 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
xor % esi , % esi
movabs $ 0x238adfa1950 , % rax
00 00
mov (% rax ) , % rax
movslq 0x18 (% rax ) , % rax
mov % rax , % rdi
dec % edi
jmp 51 <EachLength_Bench_ForReverse + 0x51 >
nop
movabs $ 0x238adfa1950 , % rax
00 00
mov (% rax ) , % rax
movslq % edi , % rcx
cmp % ecx , 0x18 (% rax )
jbe 66 <EachLength_Bench_ForReverse + 0x66 >
lea 0x20 (% rax , % rcx , 4 ) , % rax
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
dec % edi
test % edi , % edi
jge 28 <EachLength_Bench_ForReverse + 0x28 >
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
add $ 0x18 , % rsp
retq
mov $ 0x48 , % edx
mov $ 0x189 , % ecx
lea 0x0 (% rsp ) , % rsp
nop
movabs $ 0x238adf220d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; ForLength
sub $ 0x28 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r15 , 0x10 (% rsp )
xor % esi , % esi
movabs $ 0x243e854f520 , % rax
00 00
mov (% rax ) , % rax
movslq 0x18 (% rax ) , % rdi
xor % r15d , % r15d
jmp 5a <EachLength_Bench_ForLength + 0x5a >
lea 0x0 (% rsp ) , % rsp
nop
movabs $ 0x243e854f520 , % rax
00 00
mov (% rax ) , % rax
movslq % r15d , % rcx
cmp % ecx , 0x18 (% rax )
jbe 75 <EachLength_Bench_ForLength + 0x75 >
lea 0x20 (% rax , % rcx , 4 ) , % rax
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
inc % r15d
cmp % edi , % r15d
jl 30 <EachLength_Bench_ForLength + 0x30 >
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r15
add $ 0x28 , % rsp
retq
mov $ 0x50 , % edx
mov $ 0x189 , % ecx
lea 0x0 (% rbp ) , % rbp
movabs $ 0x243e9ec20d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; PtrA
sub $ 0x28 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r14 , 0x10 (% rsp )
mov % r15 , 0x18 (% rsp )
xor % esi , % esi
movabs $ 0x23c6ea5aab0 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe 99 <EachLength_Bench_PtrA + 0x99 >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % rcx
mov % rcx , % rax
movabs $ 0x23c6ea5aab0 , % rdx
00 00
mov (% rdx ) , % rdx
movslq 0x18 (% rdx ) , % rdx
movslq % edx , % rdx
mov $ 0x4 , % r8d
imul % r8 , % rdx
mov % rcx , % r15
add % rdx , % r15
mov % rax , % r14
jmp 75 <EachLength_Bench_PtrA + 0x75 >
movslq (% r14 ) , % rax
movslq % eax , % rax
add % rax , % rsi
add $ 0x4 , % r14
cmp % r15 , % r14
jb 68 <EachLength_Bench_PtrA + 0x68 >
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r14
mov 0x18 (% rsp ) , % r15
add $ 0x28 , % rsp
retq
mov $ 0x85 , % edx
mov $ 0x189 , % ecx
data16 xchg % ax , % ax
movabs $ 0x23c6e9820d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; PtrB
sub $ 0x28 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r14 , 0x10 (% rsp )
mov % r15 , 0x18 (% rsp )
xor % esi , % esi
movabs $ 0x27e362cc780 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe 9c <EachLength_Bench_PtrB + 0x9c >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % rcx
mov % rcx , % rax
movabs $ 0x27e362cc780 , % rdx
00 00
mov (% rdx ) , % rdx
movslq 0x18 (% rdx ) , % rdx
movslq % edx , % rdx
mov $ 0x4 , % r8d
imul % r8 , % rdx
mov % rcx , % r15
add % rdx , % r15
mov % rax , % r14
jmp 78 <EachLength_Bench_PtrB + 0x78 >
mov % r14 , % rax
add $ 0x4 , % r14
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
cmp % r15 , % r14
jb 68 <EachLength_Bench_PtrB + 0x68 >
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r14
mov 0x18 (% rsp ) , % r15
add $ 0x28 , % rsp
retq
mov $ 0x85 , % edx
mov $ 0x189 , % ecx
movabs $ 0x27e364720d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; PtrC
sub $ 0x28 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r14 , 0x10 (% rsp )
mov % r15 , 0x18 (% rsp )
xor % esi , % esi
movabs $ 0x1b2661dbba0 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe 9c <EachLength_Bench_PtrC + 0x9c >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % rcx
mov % rcx , % rax
mov % rcx , % r15
movabs $ 0x1b2661dbba0 , % rcx
00 00
mov (% rcx ) , % rcx
movslq 0x18 (% rcx ) , % rcx
movslq % ecx , % rcx
mov $ 0x4 , % edx
imul % rdx , % rcx
mov % rax , % r14
add % rcx , % r14
jmp 78 <EachLength_Bench_PtrC + 0x78 >
nop
mov % r15 , % rax
add $ 0x4 , % r15
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
cmp % r14 , % r15
jb 68 <EachLength_Bench_PtrC + 0x68 >
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r14
mov 0x18 (% rsp ) , % r15
add $ 0x28 , % rsp
retq
mov $ 0x85 , % edx
mov $ 0x189 , % ecx
movabs $ 0x1b2663620d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; Unrolled2
sub $ 0x38 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r13 , 0x10 (% rsp )
mov % r14 , 0x18 (% rsp )
mov % r15 , 0x20 (% rsp )
xor % esi , % esi
movabs $ 0x2ae7a8dfbf0 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe d9 <EachLength_Bench_Unrolled2 + 0xd9 >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % rax
movabs $ 0x2ae7a8dfbf0 , % rcx
00 00
mov (% rcx ) , % rcx
movslq 0x18 (% rcx ) , % r15
mov % rax , % r14
mov % r15 , % rcx
and $ 0xfffffffe , % ecx
movslq % ecx , % rcx
mov $ 0x4 , % edx
imul % rdx , % rcx
mov % rax , % r13
add % rcx , % r13
jmpq 9e <EachLength_Bench_Unrolled2 + 0x9e >
lea 0x0 (% rsp ) , % rsp
nop
mov % r14 , % rax
add $ 0x4 , % r14
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
mov % rsi , % rax
mov % r14 , % rcx
add $ 0x4 , % r14
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
cmp % r13 , % r14
jb 78 <EachLength_Bench_Unrolled2 + 0x78 >
movslq (% r14 ) , % rax
mov % r15 , % rcx
and $ 0x1 , % ecx
imul % ecx , % eax
movslq % eax , % rax
add % rax , % rsi
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r13
mov 0x18 (% rsp ) , % r14
mov 0x20 (% rsp ) , % r15
add $ 0x38 , % rsp
retq
mov $ 0xc0 , % edx
mov $ 0x189 , % ecx
data16 xchg % ax , % ax
movabs $ 0x2ae7a8120d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; Unrolled4
sub $ 0x38 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r13 , 0x10 (% rsp )
mov % r14 , 0x18 (% rsp )
mov % r15 , 0x20 (% rsp )
xor % esi , % esi
movabs $ 0x254813fc310 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe 131 <EachLength_Bench_Unrolled4 + 0x131 >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % r15
mov % r15 , % rax
movabs $ 0x254813fc310 , % rcx
00 00
mov (% rcx ) , % rcx
movslq 0x18 (% rcx ) , % rcx
and $ 0xfffffffc , % ecx
movslq % ecx , % rcx
mov $ 0x4 , % edx
imul % rdx , % rcx
mov % rax , % r14
add % rcx , % r14
mov % r15 , % r13
jmpq ca <EachLength_Bench_Unrolled4 + 0xca >
lea 0x0 (% rsp ) , % rsp
nop
mov % r13 , % rax
add $ 0x4 , % r13
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
cmp % r14 , % r13
jb 78 <EachLength_Bench_Unrolled4 + 0x78 >
movabs $ 0x254813fc310 , % rax
00 00
mov (% rax ) , % rax
movslq 0x18 (% rax ) , % rax
movslq % eax , % rax
mov $ 0x4 , % ecx
imul % rcx , % rax
mov % r15 , % r14
add % rax , % r14
jmp 108 <EachLength_Bench_Unrolled4 + 0x108 >
lea 0x0 (% rbp ) , % rbp
mov % r13 , % rax
add $ 0x4 , % r13
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
cmp % r14 , % r13
jb f8 <EachLength_Bench_Unrolled4 + 0xf8 >
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r13
mov 0x18 (% rsp ) , % r14
mov 0x20 (% rsp ) , % r15
add $ 0x38 , % rsp
retq
mov $ 0x118 , % edx
mov $ 0x189 , % ecx
data16 xchg % ax , % ax
movabs $ 0x254815920d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 64bit
; Unrolled8
sub $ 0x38 , % rsp
mov % rsi , (% rsp )
mov % rdi , 0x8 (% rsp )
mov % r13 , 0x10 (% rsp )
mov % r14 , 0x18 (% rsp )
mov % r15 , 0x20 (% rsp )
xor % esi , % esi
movabs $ 0x17f2a2fb040 , % rax
00 00
mov (% rax ) , % rax
xor % ecx , % ecx
movslq % ecx , % rcx
cmp % ecx , 0x18 (% rax )
jbe 189 <EachLength_Bench_Unrolled8 + 0x189 >
lea 0x20 (% rax , % rcx , 4 ) , % rdi
mov % rdi , % r15
mov % r15 , % rax
movabs $ 0x17f2a2fb040 , % rcx
00 00
mov (% rcx ) , % rcx
movslq 0x18 (% rcx ) , % rcx
and $ 0xfffffff8 , % ecx
movslq % ecx , % rcx
mov $ 0x4 , % edx
imul % rdx , % rcx
mov % rax , % r14
add % rcx , % r14
mov % r15 , % r13
jmpq 122 <EachLength_Bench_Unrolled8 + 0x122 >
lea 0x0 (% rsp ) , % rsp
nop
mov % r13 , % rax
add $ 0x4 , % r13
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
mov % rsi , % rax
mov % r13 , % rcx
add $ 0x4 , % r13
movslq (% rcx ) , % rcx
movslq % ecx , % rcx
mov % rax , % rsi
add % rcx , % rsi
cmp % r14 , % r13
jb 78 <EachLength_Bench_Unrolled8 + 0x78 >
movabs $ 0x17f2a2fb040 , % rax
00 00
mov (% rax ) , % rax
movslq 0x18 (% rax ) , % rax
movslq % eax , % rax
mov $ 0x4 , % ecx
imul % rcx , % rax
mov % r15 , % r14
add % rax , % r14
jmp 160 <EachLength_Bench_Unrolled8 + 0x160 >
mov % r13 , % rax
add $ 0x4 , % r13
movslq (% rax ) , % rax
movslq % eax , % rax
add % rax , % rsi
cmp % r14 , % r13
jb 150 <EachLength_Bench_Unrolled8 + 0x150 >
xor % eax , % eax
mov % eax , % edi
mov % rsi , % rax
mov (% rsp ) , % rsi
mov 0x8 (% rsp ) , % rdi
mov 0x10 (% rsp ) , % r13
mov 0x18 (% rsp ) , % r14
mov 0x20 (% rsp ) , % r15
add $ 0x38 , % rsp
retq
mov $ 0x170 , % edx
mov $ 0x189 , % ecx
data16 xchg % ax , % ax
movabs $ 0x17f2a4920d0 , % r11
00 00
callq * % r11
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; ForEach
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x1c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0xed6f0 (% rip ) , % esi # ed70d <EachLength_Bench_ForEach + 0xed70d >
xor % ebx , % ebx
jmp 52 <EachLength_Bench_ForEach + 0x52 >
lea 0x0 (% rsp ) , % esp
cmp % ebx , 0xc (% rsi )
jbe 6a <EachLength_Bench_ForEach + 0x6a >
lea 0x10 (% rsi , % rbx , 4 ) , % eax
mov (% rax ) , % edi
cmp $ 0xffffffff , % edi
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % edi , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
rex.XB mov 0xc (% r14 ) , % eax
cmp % eax , % ebx
jl 28 <EachLength_Bench_ForEach + 0x28 >
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x4b
pushq $ 0x189
callq fffffffffffeff48 <EachLength_Bench_ForEach + 0xfffffffffffeff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; For
push % rbp
mov % esp , % ebp
push % rdi
sub $ 0x14 , % esp
movl $ 0x0 ,- 0x10 (% rbp )
movl $ 0x0 ,- 0xc (% rbp )
xor % edi , % edi
jmp 52 <EachLength_Bench_For + 0x52 >
lea 0x0 (% rsp ) , % esp
mov 0x86f720 (% rip ) , % eax # 86f746 <EachLength_Bench_For + 0x86f746 >
cmp % edi , 0xc (% rax )
jbe 6e <EachLength_Bench_For + 0x6e >
lea 0x10 (% rax , % rdi , 4 ) , % eax
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x10 (% rbp ) , % rcx
add % eax , % ecx
mov - 0xc (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x10 (% rbp )
mov % eax ,- 0xc (% rbp )
rex.RXB mov 0x86f720 (% rip ) , % r8d # 86f778 <EachLength_Bench_For + 0x86f778 >
mov 0xc (% rax ) , % eax
cmp % eax , % edi
jl 20 <EachLength_Bench_For + 0x20 >
mov - 0x10 (% rbp ) , % eax
mov - 0xc (% rbp ) , % edx
lea - 0x4 (% rbp ) , % esp
lea - 0x4 (% rbp ) , % esp
pop % rdi
leaveq
retq
pushq $ 0x51
pushq $ 0x189
callq fffffffffc4fff48 <EachLength_Bench_For + 0xfffffffffc4fff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; ForReverse
push % rbp
mov % esp , % ebp
push % rdi
sub $ 0x14 , % esp
movl $ 0x0 ,- 0x10 (% rbp )
movl $ 0x0 ,- 0xc (% rbp )
mov 0x15e1500 (% rip ) , % eax # 15e151b <EachLength_Bench_ForReverse + 0x15e151b >
mov 0xc (% rax ) , % eax
mov % eax , % edi
rex.WRXB jmp 5a <EachLength_Bench_ForReverse + 0x5a >
lea 0x0 (% rsp ) , % esp
nop
mov 0x15e1500 (% rip ) , % eax # 15e152e <EachLength_Bench_ForReverse + 0x15e152e >
cmp % edi , 0xc (% rax )
jbe 6d <EachLength_Bench_ForReverse + 0x6d >
lea 0x10 (% rax , % rdi , 4 ) , % eax
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x10 (% rbp ) , % rcx
add % eax , % ecx
mov - 0xc (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x10 (% rbp )
mov % eax ,- 0xc (% rbp )
rex.WRXB test % r15 , % r15
jge 28 <EachLength_Bench_ForReverse + 0x28 >
mov - 0x10 (% rbp ) , % eax
mov - 0xc (% rbp ) , % edx
lea - 0x4 (% rbp ) , % esp
lea - 0x4 (% rbp ) , % esp
pop % rdi
leaveq
retq
pushq $ 0x48
pushq $ 0x189
callq fffffffffc8fff48 <EachLength_Bench_ForReverse + 0xfffffffffc8fff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; ForLength
push % rbp
mov % esp , % ebp
push % rdi
push % rsi
sub $ 0x10 , % esp
movl $ 0x0 ,- 0x10 (% rbp )
movl $ 0x0 ,- 0xc (% rbp )
mov 0xc3cde0 (% rip ) , % eax # c3cdfc <EachLength_Bench_ForLength + 0xc3cdfc >
mov 0xc (% rax ) , % edi
xor % esi , % esi
jmp 5a <EachLength_Bench_ForLength + 0x5a >
lea 0x0 (% rsp ) , % esp
nop
mov 0xc3cde0 (% rip ) , % eax # c3ce0e <EachLength_Bench_ForLength + 0xc3ce0e >
cmp % esi , 0xc (% rax )
jbe 6e <EachLength_Bench_ForLength + 0x6e >
lea 0x10 (% rax , % rsi , 4 ) , % eax
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x10 (% rbp ) , % rcx
add % eax , % ecx
mov - 0xc (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x10 (% rbp )
mov % eax ,- 0xc (% rbp )
rex.RX cmp % edi , % r14d
jl 28 <EachLength_Bench_ForLength + 0x28 >
mov - 0x10 (% rbp ) , % eax
mov - 0xc (% rbp ) , % edx
lea - 0x8 (% rbp ) , % esp
lea - 0x8 (% rbp ) , % esp
pop % rsi
pop % rdi
leaveq
retq
pushq $ 0x49
pushq $ 0x189
callq ffffffffff9bff48 <EachLength_Bench_ForLength + 0xffffffffff9bff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; PtrA
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x1c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0x131fe30 (% rip ) , % eax # 131fe4d <EachLength_Bench_PtrA + 0x131fe4d >
cmpl $ 0x0 , 0xc (% rax )
jbe 80 <EachLength_Bench_PtrA + 0x80 >
mov % eax , % edi
add $ 0x10 , % edi
mov % edi , % ecx
mov % ecx , % eax
mov 0x131fe30 (% rip ) , % edx # 131fe66 <EachLength_Bench_PtrA + 0x131fe66 >
mov 0xc (% rdx ) , % edx
shl $ 0x2 , % edx
mov % ecx , % esi
add % edx , % esi
mov % eax , % ebx
jmp 69 <EachLength_Bench_PtrA + 0x69 >
lea 0x0 (% rsp ) , % esp
mov (% rbx ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
add $ 0x4 , % ebx
cmp % esi , % ebx
jb 48 <EachLength_Bench_PtrA + 0x48 >
xor % edi , % edi
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x6b
pushq $ 0x189
callq fffffffffc67ff48 <EachLength_Bench_PtrA + 0xfffffffffc67ff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; PtrB
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x1c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0x6d09c0 (% rip ) , % eax # 6d09dd <EachLength_Bench_PtrB + 0x6d09dd >
cmpl $ 0x0 , 0xc (% rax )
jbe 82 <EachLength_Bench_PtrB + 0x82 >
mov % eax , % edi
add $ 0x10 , % edi
mov % edi , % ecx
mov % ecx , % eax
mov 0x6d09c0 (% rip ) , % edx # 6d09f6 <EachLength_Bench_PtrB + 0x6d09f6 >
mov 0xc (% rdx ) , % edx
shl $ 0x2 , % edx
mov % ecx , % esi
add % edx , % esi
mov % eax , % ebx
jmp 6b <EachLength_Bench_PtrB + 0x6b >
lea 0x0 (% rsp ) , % esp
mov % ebx , % eax
add $ 0x4 , % ebx
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % esi , % ebx
jb 48 <EachLength_Bench_PtrB + 0x48 >
xor % edi , % edi
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x6d
pushq $ 0x189
callq ffffffffffa5ff48 <EachLength_Bench_PtrB + 0xffffffffffa5ff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; PtrC
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x1c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0x11a0d48 (% rip ) , % eax # 11a0d65 <EachLength_Bench_PtrC + 0x11a0d65 >
cmpl $ 0x0 , 0xc (% rax )
jbe 82 <EachLength_Bench_PtrC + 0x82 >
mov % eax , % edi
add $ 0x10 , % edi
mov % edi , % ecx
mov % ecx , % eax
mov % ecx , % esi
mov 0x11a0d48 (% rip ) , % ecx # 11a0d80 <EachLength_Bench_PtrC + 0x11a0d80 >
mov 0xc (% rcx ) , % ecx
shl $ 0x2 , % ecx
mov % eax , % ebx
add % ecx , % ebx
jmp 6b <EachLength_Bench_PtrC + 0x6b >
lea 0x0 (% rsp ) , % esp
mov % esi , % eax
add $ 0x4 , % esi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % ebx , % esi
jb 48 <EachLength_Bench_PtrC + 0x48 >
xor % edi , % edi
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x6d
pushq $ 0x189
callq ffffffffffa5ff48 <EachLength_Bench_PtrC + 0xffffffffffa5ff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; Unrolled2
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x1c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0x51d8c8 (% rip ) , % eax # 51d8e5 <EachLength_Bench_Unrolled2 + 0x51d8e5 >
cmpl $ 0x0 , 0xc (% rax )
jbe c4 <EachLength_Bench_Unrolled2 + 0xc4 >
add $ 0x10 , % eax
mov % eax ,- 0x1c (% rbp )
mov 0x51d8c8 (% rip ) , % ecx # 51d8fd <EachLength_Bench_Unrolled2 + 0x51d8fd >
mov 0xc (% rcx ) , % esi
mov % eax , % ebx
mov % esi , % ecx
and $ 0xfffffffe , % ecx
shl $ 0x2 , % ecx
mov % eax , % edi
add % ecx , % edi
jmp 88 <EachLength_Bench_Unrolled2 + 0x88 >
mov % ebx , % eax
add $ 0x4 , % ebx
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x20 (% rbp )
mov % ebx , % eax
add $ 0x4 , % ebx
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x20 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % edi , % ebx
jb 48 <EachLength_Bench_Unrolled2 + 0x48 >
mov (% rbx ) , % edx
mov % esi , % eax
and $ 0x1 , % eax
imul % eax , % edx
cmp $ 0xffffffff , % edx
setg % cl
movzbl % cl , % ecx
mov - 0x18 (% r13 ) , % rax
add % edx , % eax
mov - 0x14 (% rbp ) , % edx
adc % ecx , % edx
mov % eax ,- 0x18 (% rbp )
mov % edx ,- 0x14 (% rbp )
movl $ 0x0 ,- 0x1c (% rbp )
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0xb2
pushq $ 0x189
callq ffffffffff73ff48 <EachLength_Bench_Unrolled2 + 0xffffffffff73ff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; Unrolled4
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x2c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0xf4c2c0 (% rip ) , % eax # f4c2dd <EachLength_Bench_Unrolled4 + 0xf4c2dd >
cmpl $ 0x0 , 0xc (% rax )
jbe 11f <EachLength_Bench_Unrolled4 + 0x11f >
add $ 0x10 , % eax
mov % eax ,- 0x1c (% rbp )
mov % eax , % esi
mov 0xf4c2c0 (% rip ) , % ecx # f4c2f7 <EachLength_Bench_Unrolled4 + 0xf4c2f7 >
mov 0xc (% rcx ) , % ecx
and $ 0xfffffffc , % ecx
shl $ 0x2 , % ecx
mov % eax , % ebx
add % ecx , % ebx
mov % esi , % edi
jmpq ca <EachLength_Bench_Unrolled4 + 0xca >
lea 0x0 (% rsp ) , % esp
nop
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x28 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x28 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x24 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x24 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x20 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x20 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % ebx , % edi
jb 50 <EachLength_Bench_Unrolled4 + 0x50 >
mov 0xf4c2c0 (% rip ) , % eax # f4c394 <EachLength_Bench_Unrolled4 + 0xf4c394 >
mov 0xc (% rax ) , % eax
shl $ 0x2 , % eax
mov % esi , % ebx
add % eax , % ebx
jmp 103 <EachLength_Bench_Unrolled4 + 0x103 >
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % ebx , % edi
jb e0 <EachLength_Bench_Unrolled4 + 0xe0 >
movl $ 0x0 ,- 0x1c (% rbp )
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x10d
pushq $ 0x189
callq fffffffffc67ff48 <EachLength_Bench_Unrolled4 + 0xfffffffffc67ff48 >
; Total bytes of code 0
Mono 5.10.0 (Visual Studio), 32bit
; Unrolled8
push % rbp
mov % esp , % ebp
push % rbx
push % rdi
push % rsi
sub $ 0x3c , % esp
movl $ 0x0 ,- 0x18 (% rbp )
movl $ 0x0 ,- 0x14 (% rbp )
mov 0x132e740 (% rip ) , % eax # 132e75d <EachLength_Bench_Unrolled8 + 0x132e75d >
cmpl $ 0x0 , 0xc (% rax )
jbe 197 <EachLength_Bench_Unrolled8 + 0x197 >
add $ 0x10 , % eax
mov % eax ,- 0x1c (% rbp )
mov % eax , % esi
mov 0x132e740 (% rip ) , % ecx # 132e777 <EachLength_Bench_Unrolled8 + 0x132e777 >
mov 0xc (% rcx ) , % ecx
and $ 0xfffffff8 , % ecx
shl $ 0x2 , % ecx
mov % eax , % ebx
add % ecx , % ebx
mov % esi , % edi
jmpq 13e <EachLength_Bench_Unrolled8 + 0x13e >
lea 0x0 (% rsp ) , % esp
nop
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x38 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x38 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x34 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x34 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x30 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x30 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x2c (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x2c (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x28 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x28 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x24 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x24 (% rbp ) , % eax
adc % edx , % eax
mov % eax ,- 0x20 (% rbp )
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX add % rax , % rcx
mov - 0x20 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % ebx , % edi
jb 50 <EachLength_Bench_Unrolled8 + 0x50 >
mov 0x132e740 (% rip ) , % eax # 132e88c <EachLength_Bench_Unrolled8 + 0x132e88c >
mov 0xc (% rax ) , % eax
shl $ 0x2 , % eax
mov % esi , % ebx
add % eax , % ebx
jmp 17b <EachLength_Bench_Unrolled8 + 0x17b >
mov % edi , % eax
add $ 0x4 , % edi
mov (% rax ) , % eax
cmp $ 0xffffffff , % eax
setg % dl
movzbl % dl , % edx
rex.WX mov - 0x18 (% rbp ) , % rcx
add % eax , % ecx
mov - 0x14 (% rbp ) , % eax
adc % edx , % eax
mov % ecx ,- 0x18 (% rbp )
mov % eax ,- 0x14 (% rbp )
cmp % ebx , % edi
jb 158 <EachLength_Bench_Unrolled8 + 0x158 >
movl $ 0x0 ,- 0x1c (% rbp )
mov - 0x18 (% rbp ) , % eax
mov - 0x14 (% rbp ) , % edx
lea - 0xc (% rbp ) , % esp
lea - 0xc (% rbp ) , % esp
pop % rsi
pop % rdi
pop % rbx
leaveq
retq
pushq $ 0x185
pushq $ 0x189
callq fffffffffcf5ff48 <EachLength_Bench_Unrolled8 + 0xfffffffffcf5ff48 >
; Total bytes of code 0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.ForEach()
xor eax , eax
mov rdx , qword ptr [ 13449A58h ]
xor ecx , ecx
mov r8d , dword ptr [ rdx + 8 ]
test r8d , r8d
jle M00_L01
M00_L00:
movsxd r9 , ecx
mov r9d , dword ptr [ rdx + r9 * 4 + 10h ]
movsxd r9 , r9d
add rax , r9
inc ecx
cmp r8d , ecx
jg M00_L00
M00_L01:
ret
; Total bytes of code 43
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.For()
xor eax , eax
xor edx , edx
mov rcx , qword ptr [ 134A9A58h ]
mov r8d , dword ptr [ rcx + 8 ]
test r8d , r8d
jle M00_L01
M00_L00:
mov r9 , rcx
movsxd r10 , edx
mov r9d , dword ptr [ r9 + r10 * 4 + 10h ]
movsxd r9 , r9d
add rax , r9
inc edx
cmp r8d , edx
jg M00_L00
M00_L01:
ret
; Total bytes of code 46
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.ForReverse()
xor eax , eax
mov rdx , qword ptr [ 13A79A58h ]
mov ecx , dword ptr [ rdx + 8 ]
lea r8d ,[ rcx - 1 ]
test r8d , r8d
jl M00_L01
M00_L00:
mov r9 , rdx
cmp r8d , ecx
jae 00007ffd`2e01868d
movsxd r10 , r8d
mov r9d , dword ptr [ r9 + r10 * 4 + 10h ]
movsxd r9 , r9d
add rax , r9
dec r8d
test r8d , r8d
jge M00_L00
M00_L01:
add rsp , 28h
; Total bytes of code 56
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.ForLength()
xor eax , eax
mov rdx , qword ptr [ 13589A58h ]
mov ecx , dword ptr [ rdx + 8 ]
xor r8d , r8d
test ecx , ecx
jle M00_L01
M00_L00:
mov r9 , rdx
movsxd r10 , r8d
mov r9d , dword ptr [ r9 + r10 * 4 + 10h ]
movsxd r9 , r9d
add rax , r9
inc r8d
cmp r8d , ecx
jl M00_L00
M00_L01:
ret
; Total bytes of code 46
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.PtrA()
xor eax , eax
mov rdx , qword ptr [ 13B29A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e0086a5
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
movsxd rcx , ecx
lea rcx ,[ rdx + rcx * 4 ]
cmp rdx , rcx
jae M00_L01
M00_L00:
mov r8d , dword ptr [ rdx ]
movsxd r8 , r8d
add rax , r8
add rdx , 4
cmp rdx , rcx
jb M00_L00
M00_L01:
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 73
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.PtrB()
xor eax , eax
mov rdx , qword ptr [ 13419A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e0186a7
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
movsxd rcx , ecx
lea rcx ,[ rdx + rcx * 4 ]
cmp rdx , rcx
jae M00_L01
M00_L00:
lea r8 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
cmp r8 , rcx
mov rdx , r8
jb M00_L00
M00_L01:
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 75
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.PtrC()
xor eax , eax
mov rdx , qword ptr [ 13849A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e0086a7
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
movsxd rcx , ecx
lea rcx ,[ rdx + rcx * 4 ]
cmp rdx , rcx
jae M00_L01
M00_L00:
lea r8 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
cmp r8 , rcx
mov rdx , r8
jb M00_L00
M00_L01:
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 75
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled2()
xor eax , eax
mov rdx , qword ptr [ 13949A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e0286d1
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
mov r8d , ecx
and r8d , 0FFFFFFFEh
movsxd r8 , r8d
lea r8 ,[ rdx + r8 * 4 ]
cmp rdx , r8
jae 00007ffd`2e0286cc
lea r9 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
mov rdx , r9
lea r9 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
cmp r9 , r8
jb 00007ffd`2e0286c7
and ecx , 1
imul ecx , dword ptr [ r9 ]
movsxd rdx , ecx
add rax , rdx
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 107
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled4()
xor eax , eax
mov rdx , qword ptr [ 13AC9A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e00870d
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
mov r8d , ecx
and r8d , 0FFFFFFFCh
movsxd r8 , r8d
lea r8 ,[ rdx + r8 * 4 ]
mov r9 , rdx
cmp rdx , r8
jae 00007ffd`2e008708
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
cmp r10 , r8
jb 00007ffd`2e008703
movsxd r8 , ecx
lea r8 ,[ rdx + r8 * 4 ]
cmp r10 , r8
jae M00_L01
M00_L00:
mov rdx , r10
lea r10 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
cmp r10 , r8
jb M00_L00
M00_L01:
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 167
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
; ForEachLength.Bench.Unrolled8()
xor eax , eax
mov rdx , qword ptr [ 13E99A58h ]
mov ecx , dword ptr [ rdx + 8 ]
cmp ecx , 0
jbe 00007ffd`2e038754
add rdx , 10h
mov qword ptr [ rsp + 20h ], rdx
mov rdx , qword ptr [ rsp + 20h ]
mov r8d , ecx
and r8d , 0FFFFFFF8h
movsxd r8 , r8d
lea r8 ,[ rdx + r8 * 4 ]
mov r9 , rdx
cmp rdx , r8
jae 00007ffd`2e03874f
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
mov r9 , r10
lea r10 ,[ r9 + 4 ]
mov r9d , dword ptr [ r9 ]
movsxd r9 , r9d
add rax , r9
cmp r10 , r8
jb 00007ffd`2e038747
movsxd r8 , ecx
lea r8 ,[ rdx + r8 * 4 ]
cmp r10 , r8
jae M00_L01
M00_L00:
mov rdx , r10
lea r10 ,[ rdx + 4 ]
mov edx , dword ptr [ rdx ]
movsxd rdx , edx
add rax , rdx
cmp r10 , r8
jb M00_L00
M00_L01:
xor edx , edx
mov qword ptr [ rsp + 20h ], rdx
add rsp , 28h
; Total bytes of code 235