-
Notifications
You must be signed in to change notification settings - Fork 4
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
[Perf] Improvement on 7/31/2022 3:07:22 PM #7195
Comments
Run Information
Improvements in System.Buffers.Text.Tests.Utf8FormatterTests
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Buffers.Text.Tests.Utf8FormatterTests*' PayloadsHistogramSystem.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(value: 12/30/2017 3:45:22 AM -08:00)
Description of detection logic
; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,70
mov esi,ecx
mov eax,ds:[13A8]
add eax,4
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFDC],edx
mov [ebp+0FFE0],eax
movzx eax,byte ptr [ebp+8]
mov edi,eax
test eax,eax
jne short 00000ED0
cmp byte ptr [ebp+9],0
jne short 00000ED0
mov edi,47
movsx eax,word ptr [ebp+14]
mov ecx,3C
imul ecx
mov [ebp+0FF8C],eax
mov [ebp+0FF90],edx
mov eax,[ebp+0FF8C]
mov edx,[ebp+0FF90]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00001047
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00001047
push edx
push eax
push 0
push 989680
call 00001260
mov [ebp+0FFBC],eax
mov [ebp+0FFC0],edx
mov ecx,[ebp+0FFBC]
mov edx,[ebp+0FFC0]
mov [ebp+0FFDC],ecx
mov [ebp+0FFE0],edx
cmp edi,4F
ja short 00000EF9
cmp edi,47
je near ptr 00000FCD
cmp edi,4F
jne near ptr 0000104E
lea ecx,[ebp+14]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0D900]
movsx ebx,word ptr [ebp+14]
jmp short 00000F58
cmp edi,52
je near ptr 00000FFD
cmp edi,6C
jne near ptr 0000104E
mov ecx,[ebp+18]
mov eax,[ebp+1C]
mov [ebp+0FFA4],ecx
mov [ebp+0FFA8],eax
mov ecx,[ebp+0FFA4]
mov eax,[ebp+0FFA8]
and ecx,0FFFFFFFF
and eax,3FFFFFFF
or ecx,0
or eax,40000000
mov [ebp+0FF9C],ecx
mov [ebp+0FFA0],eax
mov ecx,[ebp+0FF9C]
mov eax,[ebp+0FFA0]
mov [ebp+0FFCC],ecx
mov [ebp+0FFD0],eax
push dword ptr [ebp+0FFD0]
push dword ptr [ebp+0FFCC]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[0D060]
jmp near ptr 00000FF3
mov eax,3C
imul ebx
mov [ebp+0FF84],eax
mov [ebp+0FF88],edx
mov eax,[ebp+0FF84]
mov edx,[ebp+0FF88]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00001047
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00001047
push edx
push eax
push 0
push 989680
call 00001260
mov [ebp+0FF94],eax
mov [ebp+0FF98],edx
mov ecx,[ebp+0FF94]
mov eax,[ebp+0FF98]
mov [ebp+0FFC4],ecx
mov [ebp+0FFC8],eax
push dword ptr [ebp+0FFE8]
push dword ptr [ebp+0FFE4]
push dword ptr [ebp+0FFC8]
push dword ptr [ebp+0FFC4]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[0D078]
jmp short 00000FF3
lea ecx,[ebp+14]
lea edx,[ebp+0FFEC]
call dword ptr ds:[0D900]
push dword ptr [ebp+0FFF0]
push dword ptr [ebp+0FFEC]
push dword ptr [ebp+0FFE0]
push dword ptr [ebp+0FFDC]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[0D048]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret 18
mov ecx,[ebp+18]
mov eax,[ebp+1C]
mov [ebp+0FFB4],ecx
mov [ebp+0FFB8],eax
mov ecx,[ebp+0FFB4]
mov eax,[ebp+0FFB8]
and ecx,0FFFFFFFF
and eax,3FFFFFFF
or ecx,0
or eax,40000000
mov [ebp+0FFAC],ecx
mov [ebp+0FFB0],eax
mov ecx,[ebp+0FFAC]
mov eax,[ebp+0FFB0]
mov [ebp+0FFD4],ecx
mov [ebp+0FFD8],eax
push dword ptr [ebp+0FFD8]
push dword ptr [ebp+0FFD4]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[0D090]
jmp short 00000FF3
call dword ptr ds:[0B5B8]
int 3
xor eax,eax
mov [esi],eax
call dword ptr ds:[0BA68]
int 3
; Total bytes of code 537 Compare Jit Disasm; System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(System.DateTimeOffset)
push ebp
mov ebp,esp
push edi
push esi
push eax
xor eax,eax
mov [ebp+0FFF4],eax
mov ecx,[ecx+4]
test ecx,ecx
je short 00000DF9
lea esi,[ecx+8]
mov edi,[ecx+4]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
sub esp,4
xor ecx,ecx
mov [esp+1],cl
xor ecx,ecx
mov [esp],cl
lea ecx,[ebp+0FFF4]
call dword ptr ds:[1018]
pop ecx
pop esi
pop edi
pop ebp
ret 0C
xor esi,esi
xor edi,edi
jmp short 00000DD0
; Total bytes of code 71 ; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,70
mov esi,ecx
mov eax,ds:[13A8]
add eax,4
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFDC],edx
mov [ebp+0FFE0],eax
movzx eax,byte ptr [ebp+8]
mov edi,eax
test eax,eax
jne short 00000ED0
cmp byte ptr [ebp+9],0
jne short 00000ED0
mov edi,47
movsx eax,word ptr [ebp+14]
mov ecx,3C
imul ecx
mov [ebp+0FF8C],eax
mov [ebp+0FF90],edx
mov eax,[ebp+0FF8C]
mov edx,[ebp+0FF90]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00001047
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00001047
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FFBC],eax
mov [ebp+0FFC0],edx
mov ecx,[ebp+0FFBC]
mov edx,[ebp+0FFC0]
mov [ebp+0FFDC],ecx
mov [ebp+0FFE0],edx
cmp edi,4F
ja short 00000EF9
cmp edi,47
je near ptr 00000FCD
cmp edi,4F
jne near ptr 0000104E
lea ecx,[ebp+14]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0F900]
movsx ebx,word ptr [ebp+14]
jmp short 00000F58
cmp edi,52
je near ptr 00000FFD
cmp edi,6C
jne near ptr 0000104E
mov ecx,[ebp+18]
mov eax,[ebp+1C]
mov [ebp+0FFA4],ecx
mov [ebp+0FFA8],eax
mov ecx,[ebp+0FFA4]
mov eax,[ebp+0FFA8]
and ecx,0FFFFFFFF
and eax,3FFFFFFF
or ecx,0
or eax,40000000
mov [ebp+0FF9C],ecx
mov [ebp+0FFA0],eax
mov ecx,[ebp+0FF9C]
mov eax,[ebp+0FFA0]
mov [ebp+0FFCC],ecx
mov [ebp+0FFD0],eax
push dword ptr [ebp+0FFD0]
push dword ptr [ebp+0FFCC]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[1060]
jmp near ptr 00000FF3
mov eax,3C
imul ebx
mov [ebp+0FF84],eax
mov [ebp+0FF88],edx
mov eax,[ebp+0FF84]
mov edx,[ebp+0FF88]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00001047
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00001047
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FF94],eax
mov [ebp+0FF98],edx
mov ecx,[ebp+0FF94]
mov eax,[ebp+0FF98]
mov [ebp+0FFC4],ecx
mov [ebp+0FFC8],eax
push dword ptr [ebp+0FFE8]
push dword ptr [ebp+0FFE4]
push dword ptr [ebp+0FFC8]
push dword ptr [ebp+0FFC4]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[1078]
jmp short 00000FF3
lea ecx,[ebp+14]
lea edx,[ebp+0FFEC]
call dword ptr ds:[0F900]
push dword ptr [ebp+0FFF0]
push dword ptr [ebp+0FFEC]
push dword ptr [ebp+0FFE0]
push dword ptr [ebp+0FFDC]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[1048]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret 18
mov ecx,[ebp+18]
mov eax,[ebp+1C]
mov [ebp+0FFB4],ecx
mov [ebp+0FFB8],eax
mov ecx,[ebp+0FFB4]
mov eax,[ebp+0FFB8]
and ecx,0FFFFFFFF
and eax,3FFFFFFF
or ecx,0
or eax,40000000
mov [ebp+0FFAC],ecx
mov [ebp+0FFB0],eax
mov ecx,[ebp+0FFAC]
mov eax,[ebp+0FFB0]
mov [ebp+0FFD4],ecx
mov [ebp+0FFD8],eax
push dword ptr [ebp+0FFD8]
push dword ptr [ebp+0FFD4]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,esi
call dword ptr ds:[1090]
jmp short 00000FF3
call dword ptr ds:[0F228]
int 3
xor eax,eax
mov [esi],eax
call dword ptr ds:[0F6D8]
int 3
; Total bytes of code 537 DocsProfiling workflow for dotnet/runtime repository
Improvements in System.Globalization.Tests.Perf_DateTimeCultureInfo
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Globalization.Tests.Perf_DateTimeCultureInfo*' PayloadsHistogramSystem.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: ja)
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],37FECFF5
mov eax,edx
test ecx,ecx
je short 0000150B
cmp dword ptr [ecx+4],1
jne short 0000150B
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 0000158B
cmp edx,72
jne short 0000150B
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0DE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],37FECFF5
je short 00001502
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 000015EF
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0DD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[5498]
cmp dword ptr [ebp+0FFD0],37FECFF5
je short 00001582
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0DE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 000015F8
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],37FECFF5
je short 000015E6
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 0000154A
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
push ebp
mov ebp,esp
sub esp,8
add ecx,8
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
xor ecx,ecx
call dword ptr ds:[1DF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 45 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],0BBFFDAB8
mov eax,edx
test ecx,ecx
je short 000013AB
cmp dword ptr [ecx+4],1
jne short 000013AB
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 0000142B
cmp edx,72
jne short 000013AB
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[1F00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],0BBFFDAB8
je short 000013A2
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 0000148F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[1E40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[9498]
cmp dword ptr [ebp+0FFD0],0BBFFDAB8
je short 00001422
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[1EE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001498
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],0BBFFDAB8
je short 00001486
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 000013EA
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: )
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],6EE45AF3
mov eax,edx
test ecx,ecx
je short 0000150B
cmp dword ptr [ecx+4],1
jne short 0000150B
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 0000158B
cmp edx,72
jne short 0000150B
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0DE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],6EE45AF3
je short 00001502
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 000015EF
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0DD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[5498]
cmp dword ptr [ebp+0FFD0],6EE45AF3
je short 00001582
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0DE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 000015F8
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],6EE45AF3
je short 000015E6
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 0000154A
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
push ebp
mov ebp,esp
sub esp,8
add ecx,8
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
xor ecx,ecx
call dword ptr ds:[1DF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 45 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],93C38B9A
mov eax,edx
test ecx,ecx
je short 000013AB
cmp dword ptr [ecx+4],1
jne short 000013AB
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 0000142B
cmp edx,72
jne short 000013AB
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[1F00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],93C38B9A
je short 000013A2
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 0000148F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[1E40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[9498]
cmp dword ptr [ebp+0FFD0],93C38B9A
je short 00001422
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[1EE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001498
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],93C38B9A
je short 00001486
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 000013EA
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Improvements in System.Tests.Perf_DateTime
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_DateTime*' PayloadsHistogramSystem.Tests.Perf_DateTime.ToString(format: "o")
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],528A5D6A
mov eax,edx
test ecx,ecx
je short 00000DAB
cmp dword ptr [ecx+4],1
jne short 00000DAB
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000E2B
cmp edx,72
jne short 00000DAB
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],528A5D6A
je short 00000DA2
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000E8F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],528A5D6A
je short 00000E22
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000E98
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],528A5D6A
je short 00000E86
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000DEA
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTime.ToString(System.String)
push ebp
mov ebp,esp
sub esp,8
add ecx,4
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
mov ecx,edx
xor edx,edx
call dword ptr ds:[0FDF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 47 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],48517807
mov eax,edx
test ecx,ecx
je short 00000DAB
cmp dword ptr [ecx+4],1
jne short 00000DAB
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000E2B
cmp edx,72
jne short 00000DAB
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],48517807
je short 00000DA2
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000E8F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],48517807
je short 00000E22
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000E98
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],48517807
je short 00000E86
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000DEA
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 System.Tests.Perf_DateTime.ToString(format: "r")
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],69A0D408
mov eax,edx
test ecx,ecx
je short 00000C5B
cmp dword ptr [ecx+4],1
jne short 00000C5B
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000CDB
cmp edx,72
jne short 00000C5B
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],69A0D408
je short 00000C52
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000D3F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],69A0D408
je short 00000CD2
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000D48
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],69A0D408
je short 00000D36
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000C9A
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTime.ToString(System.String)
push ebp
mov ebp,esp
sub esp,8
add ecx,4
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
mov ecx,edx
xor edx,edx
call dword ptr ds:[0FDF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 47 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],691BF863
mov eax,edx
test ecx,ecx
je short 00000C5B
cmp dword ptr [ecx+4],1
jne short 00000C5B
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000CDB
cmp edx,72
jne short 00000C5B
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],691BF863
je short 00000C52
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000D3F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],691BF863
je short 00000CD2
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000D48
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],691BF863
je short 00000D36
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000C9A
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 System.Tests.Perf_DateTime.GetNow
Description of detection logic
; System.DateTime.get_Now()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,48
mov [ebp+0FFAC],ecx
lea eax,[ebp+0FFD8]
push eax
mov eax,76D54380
call eax
mov esi,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
mov ebx,ds:[1114]
lea ecx,[ebx+4]
mov eax,[ecx]
mov ecx,[ecx+4]
sub esi,eax
sbb edi,ecx
cmp dword ptr ds:[31BC],0
jne near ptr 000019A1
cmp esi,0B2D05E00
mov ecx,edi
sbb ecx,0
jae short 000018C9
add ebx,0C
mov ecx,[ebx]
mov eax,[ebx+4]
add ecx,esi
adc eax,edi
mov [ebp+0FFB0],ecx
mov [ebp+0FFB4],eax
mov ecx,[ebp+0FFB0]
mov eax,[ebp+0FFB4]
mov [ebp+0FFE0],ecx
mov [ebp+0FFE4],eax
jmp short 000018D2
lea ecx,[ebp+0FFE0]
call dword ptr ds:[3BD0]
mov ecx,[ebp+0FFE0]
mov edx,[ebp+0FFE4]
mov [ebp+0FFD0],ecx
mov [ebp+0FFD4],edx
push dword ptr [ebp+0FFD4]
push dword ptr [ebp+0FFD0]
lea ecx,[ebp+0FFE8]
lea edx,[ebp+0FFF0]
call dword ptr ds:[0D948]
mov eax,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFD0]
mov esi,[ebp+0FFD4]
and ecx,0FFFFFFFF
and esi,3FFFFFFF
add eax,ecx
adc esi,edx
cmp eax,0F4374000
mov edx,esi
sbb edx,2BCA2875
jae short 0000196C
cmp byte ptr [ebp+0FFF0],0
jne short 00001943
or eax,0
or esi,80000000
mov [ebp+0FFB8],eax
mov [ebp+0FFBC],esi
mov esi,[ebp+0FFAC]
mov eax,[ebp+0FFB8]
mov [esi],eax
mov eax,[ebp+0FFBC]
mov [esi+4],eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
or eax,0
mov edx,esi
or edx,0C0000000
mov [ebp+0FFC0],eax
mov [ebp+0FFC4],edx
mov esi,[ebp+0FFAC]
mov eax,esi
mov edx,[ebp+0FFC0]
mov [eax],edx
mov edx,[ebp+0FFC4]
mov [eax+4],edx
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test esi,esi
jl short 0000197C
mov eax,0F4373FFF
mov edx,0ABCA2875
jmp short 00001983
xor eax,eax
mov edx,80000000
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov esi,[ebp+0FFAC]
mov eax,esi
mov edx,[ebp+0FFC8]
mov [eax],edx
mov edx,[ebp+0FFCC]
mov [eax+4],edx
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
call 0000A570
jmp near ptr 0000189C
; Total bytes of code 331 Compare Jit Disasm; System.Tests.Perf_DateTime.GetNow()
mov ecx,edx
call dword ptr ds:[9828]
ret
; Total bytes of code 9 ; System.DateTime.get_Now()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,48
mov [ebp+0FFAC],ecx
lea eax,[ebp+0FFD8]
push eax
mov eax,760C3610
call eax
mov esi,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
mov ebx,ds:[1114]
lea ecx,[ebx+4]
mov eax,[ecx]
mov ecx,[ecx+4]
sub esi,eax
sbb edi,ecx
cmp dword ptr ds:[21BC],0
jne near ptr 00001871
cmp esi,0B2D05E00
mov ecx,edi
sbb ecx,0
jae short 00001799
add ebx,0C
mov ecx,[ebx]
mov eax,[ebx+4]
add ecx,esi
adc eax,edi
mov [ebp+0FFB0],ecx
mov [ebp+0FFB4],eax
mov ecx,[ebp+0FFB0]
mov eax,[ebp+0FFB4]
mov [ebp+0FFE0],ecx
mov [ebp+0FFE4],eax
jmp short 000017A2
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0B5B8]
mov ecx,[ebp+0FFE0]
mov edx,[ebp+0FFE4]
mov [ebp+0FFD0],ecx
mov [ebp+0FFD4],edx
push dword ptr [ebp+0FFD4]
push dword ptr [ebp+0FFD0]
lea ecx,[ebp+0FFE8]
lea edx,[ebp+0FFF0]
call dword ptr ds:[1948]
mov eax,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFD0]
mov esi,[ebp+0FFD4]
and ecx,0FFFFFFFF
and esi,3FFFFFFF
add eax,ecx
adc esi,edx
cmp eax,0F4374000
mov edx,esi
sbb edx,2BCA2875
jae short 0000183C
cmp byte ptr [ebp+0FFF0],0
jne short 00001813
or eax,0
or esi,80000000
mov [ebp+0FFB8],eax
mov [ebp+0FFBC],esi
mov esi,[ebp+0FFAC]
mov eax,[ebp+0FFB8]
mov [esi],eax
mov eax,[ebp+0FFBC]
mov [esi+4],eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
or eax,0
mov edx,esi
or edx,0C0000000
mov [ebp+0FFC0],eax
mov [ebp+0FFC4],edx
mov esi,[ebp+0FFAC]
mov eax,esi
mov edx,[ebp+0FFC0]
mov [eax],edx
mov edx,[ebp+0FFC4]
mov [eax+4],edx
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test esi,esi
jl short 0000184C
mov eax,0F4373FFF
mov edx,0ABCA2875
jmp short 00001853
xor eax,eax
mov edx,80000000
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov esi,[ebp+0FFAC]
mov eax,esi
mov edx,[ebp+0FFC8]
mov [eax],edx
mov edx,[ebp+0FFCC]
mov [eax+4],edx
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
call 00007290
jmp near ptr 0000176C
; Total bytes of code 331 System.Tests.Perf_DateTime.ToString(format: "s")
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],0B785F7D
mov eax,edx
test ecx,ecx
je short 000012A3
cmp dword ptr [ecx+4],1
jne short 000012A3
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00001323
cmp edx,72
jne short 000012A3
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],0B785F7D
je short 0000129A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00001387
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],0B785F7D
je short 0000131A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001390
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],0B785F7D
je short 0000137E
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 000012E2
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTime.ToString(System.String)
push ebp
mov ebp,esp
sub esp,8
add ecx,4
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
mov ecx,edx
xor edx,edx
call dword ptr ds:[0FDF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 47 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],88E0FB66
mov eax,edx
test ecx,ecx
je short 0000112B
cmp dword ptr [ecx+4],1
jne short 0000112B
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 000011AB
cmp edx,72
jne short 0000112B
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],88E0FB66
je short 00001122
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 0000120F
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],88E0FB66
je short 000011A2
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001218
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],88E0FB66
je short 00001206
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 0000116A
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 System.Tests.Perf_DateTime.ToString(format: null)
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],22E67407
mov eax,edx
test ecx,ecx
je short 000012A3
cmp dword ptr [ecx+4],1
jne short 000012A3
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00001323
cmp edx,72
jne short 000012A3
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],22E67407
je short 0000129A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00001387
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],22E67407
je short 0000131A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001390
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],22E67407
je short 0000137E
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 000012E2
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTime.ToString(System.String)
push ebp
mov ebp,esp
sub esp,8
add ecx,4
mov eax,[ecx]
mov ecx,[ecx+4]
mov [ebp+0FFF8],eax
mov [ebp+0FFFC],ecx
push dword ptr [ebp+0FFFC]
push dword ptr [ebp+0FFF8]
push 80000000
push 0
mov ecx,edx
xor edx,edx
call dword ptr ds:[0FDF8]
mov esp,ebp
pop ebp
ret
; Total bytes of code 47 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],0EF2C975B
mov eax,edx
test ecx,ecx
je short 00001043
cmp dword ptr [ecx+4],1
jne short 00001043
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 000010C3
cmp edx,72
jne short 00001043
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],0EF2C975B
je short 0000103A
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00001127
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],0EF2C975B
je short 000010BA
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001130
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],0EF2C975B
je short 0000111E
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00001082
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Improvements in System.Tests.Perf_DateTimeOffset
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_DateTimeOffset*' PayloadsHistogramSystem.Tests.Perf_DateTimeOffset.ToString(format: "G")
Description of detection logic
; System.DateTimeOffset.get_ClockDateTime()
push ebp
mov ebp,esp
push edi
push esi
sub esp,30
mov esi,edx
lea eax,[ecx+4]
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFF0],edx
mov [ebp+0FFF4],eax
movsx eax,word ptr [ecx]
mov ecx,3C
imul ecx
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov eax,[ebp+0FFC8]
mov edx,[ebp+0FFCC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 000012D2
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 000012D2
push edx
push eax
push 0
push 989680
call 00001260
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov eax,[ebp+0FFF0]
mov edx,[ebp+0FFF4]
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
and eax,0FFFFFFFF
and edx,3FFFFFFF
add eax,[ebp+0FFE0]
adc edx,[ebp+0FFE4]
cmp eax,0F4374000
mov ecx,edx
sbb ecx,2BCA2875
jae short 000012D9
mov ecx,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
and ecx,0
and edi,0C0000000
or eax,ecx
or edx,edi
mov [ebp+0FFD0],eax
mov [ebp+0FFD4],edx
mov eax,[ebp+0FFD0]
mov edx,[ebp+0FFD4]
and eax,0FFFFFFFF
and edx,3FFFFFFF
mov ecx,eax
mov edi,edx
cmp ecx,0F4374000
sbb edi,2BCA2875
jae short 000012E5
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],edx
mov eax,[ebp+0FFE8]
mov [esi],eax
mov eax,[ebp+0FFEC]
mov [esi+4],eax
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0B5B8]
int 3
mov ecx,1
call dword ptr ds:[1558]
int 3
call dword ptr ds:[14F8]
int 3
; Total bytes of code 260 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],6F2DF839
mov eax,edx
test ecx,ecx
je short 00001403
cmp dword ptr [ecx+4],1
jne short 00001403
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00001483
cmp edx,72
jne short 00001403
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],6F2DF839
je short 000013FA
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 000014E7
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],6F2DF839
je short 0000147A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 000014F0
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],6F2DF839
je short 000014DE
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00001442
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTimeOffset.ToString(System.String)
push ebp
mov ebp,esp
push edi
push esi
sub esp,20
mov esi,edx
cmp [ecx],cl
lea edi,[ecx+4]
lea edx,[ebp+0FFF0]
mov ecx,edi
call dword ptr ds:[0F900]
movsx eax,word ptr [edi]
mov ecx,3C
imul ecx
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge short 00000FCB
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl short 00000FCB
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov ecx,[ebp+0FFE0]
mov edx,[ebp+0FFE4]
mov [ebp+0FFE8],ecx
mov [ebp+0FFEC],edx
push dword ptr [ebp+0FFF4]
push dword ptr [ebp+0FFF0]
push dword ptr [ebp+0FFEC]
push dword ptr [ebp+0FFE8]
mov ecx,esi
xor edx,edx
call dword ptr ds:[0FDF8]
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0F228]
int 3
; Total bytes of code 146 ; System.DateTimeOffset.get_ClockDateTime()
push ebp
mov ebp,esp
push edi
push esi
sub esp,30
mov esi,edx
lea eax,[ecx+4]
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFF0],edx
mov [ebp+0FFF4],eax
movsx eax,word ptr [ecx]
mov ecx,3C
imul ecx
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov eax,[ebp+0FFC8]
mov edx,[ebp+0FFCC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00001172
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00001172
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov eax,[ebp+0FFF0]
mov edx,[ebp+0FFF4]
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
and eax,0FFFFFFFF
and edx,3FFFFFFF
add eax,[ebp+0FFE0]
adc edx,[ebp+0FFE4]
cmp eax,0F4374000
mov ecx,edx
sbb ecx,2BCA2875
jae short 00001179
mov ecx,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
and ecx,0
and edi,0C0000000
or eax,ecx
or edx,edi
mov [ebp+0FFD0],eax
mov [ebp+0FFD4],edx
mov eax,[ebp+0FFD0]
mov edx,[ebp+0FFD4]
and eax,0FFFFFFFF
and edx,3FFFFFFF
mov ecx,eax
mov edi,edx
cmp ecx,0F4374000
sbb edi,2BCA2875
jae short 00001185
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],edx
mov eax,[ebp+0FFE8]
mov [esi],eax
mov eax,[ebp+0FFEC]
mov [esi+4],eax
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0F228]
int 3
mov ecx,1
call dword ptr ds:[9108]
int 3
call dword ptr ds:[90A8]
int 3
; Total bytes of code 260 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],900D2817
mov eax,edx
test ecx,ecx
je short 000012A3
cmp dword ptr [ecx+4],1
jne short 000012A3
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00001323
cmp edx,72
jne short 000012A3
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],900D2817
je short 0000129A
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00001387
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],900D2817
je short 0000131A
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00001390
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],900D2817
je short 0000137E
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 000012E2
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 System.Tests.Perf_DateTimeOffset.ToString(format: "r")
Description of detection logic
; System.DateTimeOffset.get_ClockDateTime()
push ebp
mov ebp,esp
push edi
push esi
sub esp,30
mov esi,edx
lea eax,[ecx+4]
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFF0],edx
mov [ebp+0FFF4],eax
movsx eax,word ptr [ecx]
mov ecx,3C
imul ecx
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov eax,[ebp+0FFC8]
mov edx,[ebp+0FFCC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00000D8A
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00000D8A
push edx
push eax
push 0
push 989680
call 00001260
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov eax,[ebp+0FFF0]
mov edx,[ebp+0FFF4]
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
and eax,0FFFFFFFF
and edx,3FFFFFFF
add eax,[ebp+0FFE0]
adc edx,[ebp+0FFE4]
cmp eax,0F4374000
mov ecx,edx
sbb ecx,2BCA2875
jae short 00000D91
mov ecx,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
and ecx,0
and edi,0C0000000
or eax,ecx
or edx,edi
mov [ebp+0FFD0],eax
mov [ebp+0FFD4],edx
mov eax,[ebp+0FFD0]
mov edx,[ebp+0FFD4]
and eax,0FFFFFFFF
and edx,3FFFFFFF
mov ecx,eax
mov edi,edx
cmp ecx,0F4374000
sbb edi,2BCA2875
jae short 00000D9D
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],edx
mov eax,[ebp+0FFE8]
mov [esi],eax
mov eax,[ebp+0FFEC]
mov [esi+4],eax
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0B5B8]
int 3
mov ecx,1
call dword ptr ds:[1558]
int 3
call dword ptr ds:[14F8]
int 3
; Total bytes of code 260 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],0EDE876F4
mov eax,edx
test ecx,ecx
je short 00000EC3
cmp dword ptr [ecx+4],1
jne short 00000EC3
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000F43
cmp edx,72
jne short 00000EC3
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0BE40]
mov eax,esi
cmp dword ptr [ebp+0FFD0],0EDE876F4
je short 00000EBA
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000FA7
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[5978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0BD80]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[0F420]
cmp dword ptr [ebp+0FFD0],0EDE876F4
je short 00000F3A
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0BE28]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000FB0
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[1D08]
cmp dword ptr [ebp+0FFD0],0EDE876F4
je short 00000F9E
call 00001790
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000F02
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 375 Compare Jit Disasm; System.Tests.Perf_DateTimeOffset.ToString(System.String)
push ebp
mov ebp,esp
push edi
push esi
sub esp,20
mov esi,edx
cmp [ecx],cl
lea edi,[ecx+4]
lea edx,[ebp+0FFF0]
mov ecx,edi
call dword ptr ds:[0F900]
movsx eax,word ptr [edi]
mov ecx,3C
imul ecx
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge short 00000BE3
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl short 00000BE3
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov ecx,[ebp+0FFE0]
mov edx,[ebp+0FFE4]
mov [ebp+0FFE8],ecx
mov [ebp+0FFEC],edx
push dword ptr [ebp+0FFF4]
push dword ptr [ebp+0FFF0]
push dword ptr [ebp+0FFEC]
push dword ptr [ebp+0FFE8]
mov ecx,esi
xor edx,edx
call dword ptr ds:[0FDF8]
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0F228]
int 3
; Total bytes of code 146 ; System.DateTimeOffset.get_ClockDateTime()
push ebp
mov ebp,esp
push edi
push esi
sub esp,30
mov esi,edx
lea eax,[ecx+4]
mov edx,[eax]
mov eax,[eax+4]
mov [ebp+0FFF0],edx
mov [ebp+0FFF4],eax
movsx eax,word ptr [ecx]
mov ecx,3C
imul ecx
mov [ebp+0FFC8],eax
mov [ebp+0FFCC],edx
mov eax,[ebp+0FFC8]
mov edx,[ebp+0FFCC]
cmp eax,0BF94D5E6
mov ecx,edx
sbb ecx,0D6
jge near ptr 00000D8A
cmp eax,406B2A1B
mov ecx,edx
sbb ecx,0FFFFFF29
jl near ptr 00000D8A
push edx
push eax
push 0
push 989680
call 00002A80
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],edx
mov eax,[ebp+0FFF0]
mov edx,[ebp+0FFF4]
mov [ebp+0FFD8],eax
mov [ebp+0FFDC],edx
mov eax,[ebp+0FFD8]
mov edx,[ebp+0FFDC]
and eax,0FFFFFFFF
and edx,3FFFFFFF
add eax,[ebp+0FFE0]
adc edx,[ebp+0FFE4]
cmp eax,0F4374000
mov ecx,edx
sbb ecx,2BCA2875
jae short 00000D91
mov ecx,[ebp+0FFD8]
mov edi,[ebp+0FFDC]
and ecx,0
and edi,0C0000000
or eax,ecx
or edx,edi
mov [ebp+0FFD0],eax
mov [ebp+0FFD4],edx
mov eax,[ebp+0FFD0]
mov edx,[ebp+0FFD4]
and eax,0FFFFFFFF
and edx,3FFFFFFF
mov ecx,eax
mov edi,edx
cmp ecx,0F4374000
sbb edi,2BCA2875
jae short 00000D9D
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],edx
mov eax,[ebp+0FFE8]
mov [esi],eax
mov eax,[ebp+0FFEC]
mov [esi+4],eax
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[0F228]
int 3
mov ecx,1
call dword ptr ds:[9108]
int 3
call dword ptr ds:[90A8]
int 3
; Total bytes of code 260 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push ebp
mov ebp,esp
push edi
push esi
sub esp,28
vxorps xmm4,xmm4,xmm4
vmovdqu xmmword ptr [ebp+0FFD4],xmm4
vmovdqu xmmword ptr [ebp+0FFE4],xmm4
mov [ebp+0FFF4],esp
mov dword ptr [ebp+0FFD0],8DC45A1E
mov eax,edx
test ecx,ecx
je short 00000EC3
cmp dword ptr [ecx+4],1
jne short 00000EC3
movzx edx,word ptr [ecx+8]
or edx,20
cmp edx,6F
je near ptr 00000F43
cmp edx,72
jne short 00000EC3
mov ecx,1D
call 0000E8B8
mov esi,eax
lea ecx,[esi+8]
mov eax,[esi+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push eax
push ecx
lea ecx,[ebp+0FFDC]
call dword ptr ds:[0FF00]
mov eax,esi
cmp dword ptr [ebp+0FFD0],8DC45A1E
je short 00000EBA
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov edx,esp
sub edx,200
mov esp,edx
lea edx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],edx
mov dword ptr [ebp+0FFD8],100
mov edx,[ebp+0FFD4]
mov esi,[ebp+0FFD8]
xor edi,edi
mov [ebp+0FFE4],edi
mov [ebp+0FFEC],edx
mov [ebp+0FFF0],esi
mov [ebp+0FFE8],edi
test ecx,ecx
je near ptr 00000FA7
lea edx,[ecx+8]
mov esi,[ecx+4]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push esi
push edx
mov ecx,eax
call dword ptr ds:[9978]
mov ecx,eax
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
lea edx,[ebp+0FFE4]
call dword ptr ds:[0FE40]
lea ecx,[ebp+0FFE4]
call dword ptr ds:[3420]
cmp dword ptr [ebp+0FFD0],8DC45A1E
je short 00000F3A
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
test [esp],esp
mov ecx,esp
sub ecx,44
mov esp,ecx
lea ecx,[esp]
mov [ebp+0FFF4],esp
mov [ebp+0FFD4],ecx
mov dword ptr [ebp+0FFD8],21
mov esi,[ebp+0FFD4]
mov edi,[ebp+0FFD8]
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
push edi
push esi
lea ecx,[ebp+0FFE0]
call dword ptr ds:[0FEE8]
mov ecx,[ebp+0FFE0]
cmp ecx,edi
ja short 00000FB0
mov [ebp+0FFD4],esi
mov [ebp+0FFD8],ecx
lea ecx,[ebp+0FFD4]
call dword ptr ds:[0FD08]
cmp dword ptr [ebp+0FFD0],8DC45A1E
je short 00000F9E
call 000001A0
lea esp,[ebp+0FFF8]
pop esi
pop edi
pop ebp
ret 10
xor edx,edx
xor esi,esi
jmp near ptr 00000F02
call dword ptr ds:[0F048]
int 3
; Total bytes of code 375 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Improvements in System.Text.Json.Tests.Perf_DateTimes
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Tests.Perf_DateTimes*' PayloadsHistogramSystem.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: False, SkipValidation: True)
Description of detection logic
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00002862
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00002867
cmp edx,200
jae near ptr 00002922
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00002A28
mov eax,ecx
dec eax
test al,4
je short 00002889
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00002820
test dl,8
je short 0000284B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00002858
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00002878
test dl,1
jne short 00002883
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00002893
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00002862
mov word ptr [ecx+edi],0
add edi,2
jmp short 0000285D
mov byte ptr [ecx+edi],0
jmp short 00002862
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 0000281B
cmp esi,15
ja near ptr 000027FC
lea eax,ds:[2A58]
mov eax,[eax+esi*4]
lea edx,ds:[27E6]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00002862
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00002862
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00002862
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00002862
call dword ptr ds:[0B888]
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00002862
mov word ptr [ecx],0
jmp near ptr 00002862
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00002862
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00002862
mov eax,ecx
test al,1
je short 00002A40
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00002814
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00002814
mov byte ptr [ecx],0
jmp near ptr 00002862
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00002D35
cmp dword ptr [esi+48],2
je short 00002D17
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D900]
jmp short 00002D22
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D8E8]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[53D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00001B14
mov ecx,esi
call dword ptr ds:[3138]
test byte ptr [esi+48],1
je short 00001B2A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AC8]
jmp short 00001B38
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AB0]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov ebx,edx
mov ecx,[esi+2C]
sub ecx,[esi+1C]
test ecx,ecx
jg short 00002AF1
mov ecx,esi
mov edx,1
call dword ptr ds:[0DB88]
lea edi,[esi+24]
xor edx,edx
xor ecx,ecx
mov eax,[edi]
test eax,eax
je short 00002B27
mov edx,[eax]
test dword ptr [edx],80000000
je short 00002B3F
lea edx,[eax+8]
mov ecx,[eax+4]
mov eax,[edi+4]
and eax,7FFFFFFF
mov edi,[edi+8]
cmp eax,ecx
ja short 00002B54
sub ecx,eax
cmp ecx,edi
jb short 00002B54
add edx,eax
mov ecx,edi
mov eax,[esi+1C]
lea edi,[eax+1]
mov [esi+1C],edi
cmp eax,ecx
jae short 00002B5B
mov [edx+eax],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx,[ebp+0FFEC]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+28]
call dword ptr [eax+14]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFF0]
jmp short 00002B0E
call dword ptr ds:[0B3D8]
int 3
call 000006A0
int 3
; Total bytes of code 153 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002678
cmp dword ptr [esi+0C],0
je near ptr 0000275A
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00002724
mov edx,[esi+1C]
test edx,edx
je near ptr 00002714
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0DE20]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00002761
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00002778
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 0000276E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00002778
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00002755
mov ecx,[esi+0C]
call dword ptr ds:[29C]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[5558]
int 3
test edi,edi
jne short 00002778
xor edx,edx
xor edi,edi
jmp near ptr 000026CB
test edx,edx
jne short 00002778
xor ecx,ecx
xor edx,edx
jmp short 00002709
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002BFD
cmp dword ptr [esi+0C],0
jne short 00002BFD
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[0D840]
mov ecx,esi
call dword ptr ds:[0D810]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 Compare Jit Disasm; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,18
xor eax,eax
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],eax
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov edi,[esi+4]
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je near ptr 0000F53E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb near ptr 0000F54B
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov edi,[esi+4]
movzx ecx,byte ptr [esi+0C]
test ecx,ecx
je short 0000F416
mov ebx,1
jmp short 0000F418
xor ebx,ebx
movzx ecx,byte ptr [esi+0D]
test ecx,ecx
je short 0000F425
or ebx,2
jmp short 0000F428
and ebx,0FFFFFFFD
mov ecx,offset MT_System.Text.Json.Utf8JsonWriter
call 0000300C
mov ecx,eax
mov eax,ebx
test edi,edi
je near ptr 0000F552
lea edx,[ecx+0C]
call 000000C8
lea edx,[ecx+40]
xor edi,edi
mov [edx],edi
mov [edx+4],edi
mov [edx+8],eax
cmp dword ptr [ecx+44],0
jne short 0000F460
mov dword ptr [ecx+44],3E8
mov [ebp+0FFDC],ecx
mov edx,5B
call dword ptr ds:[1A38]
mov ecx,[ebp+0FFDC]
mov byte ptr [ecx+21],3
xor edi,edi
mov eax,ecx
mov edx,[esi+8]
cmp edi,[edx+4]
jae short 0000F4D1
mov ebx,edi
shl ebx,3
add ebx,8
add edx,ebx
push dword ptr [edx+4]
push dword ptr [edx]
mov ecx,eax
call dword ptr ds:[5AF8]
inc edi
cmp edi,186A0
mov ecx,[ebp+0FFDC]
jl short 0000F477
mov edx,[ecx+48]
cmp edx,2
je short 0000F4F1
test dl,1
je short 0000F4D6
test dl,2
jne short 0000F4C4
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1CA8]
jmp short 0000F4FC
call 0000F0B0
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1C60]
jmp short 0000F4FC
mov edx,5D
call dword ptr ds:[1C60]
mov ecx,[ebp+0FFDC]
mov eax,[ecx+18]
or eax,80000000
mov [ecx+18],eax
test eax,7FFFFFFF
je short 0000F515
dec eax
mov [ecx+18],eax
mov byte ptr [ecx+21],4
call dword ptr ds:[19A8]
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
jmp short 0000F536
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
pop eax
jmp eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test edx,edx
jne short 0000F54B
xor ecx,ecx
xor edx,edx
jmp near ptr 0000F3F9
call dword ptr ds:[0F048]
int 3
mov ecx,3007
mov edx,0B2182F8
call 0000CA50
mov ecx,eax
call dword ptr ds:[9018]
int 3
; Total bytes of code 426 ; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00002882
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00002887
cmp edx,200
jae near ptr 00002942
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00002A48
mov eax,ecx
dec eax
test al,4
je short 000028A9
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00002840
test dl,8
je short 0000286B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00002878
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00002898
test dl,1
jne short 000028A3
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 000028B3
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00002882
mov word ptr [ecx+edi],0
add edi,2
jmp short 0000287D
mov byte ptr [ecx+edi],0
jmp short 00002882
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 0000283B
cmp esi,15
ja near ptr 0000281C
lea eax,ds:[2A78]
mov eax,[eax+esi*4]
lea edx,ds:[2806]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00002882
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00002882
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00002882
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00002882
call dword ptr ds:[9588]
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00002882
mov word ptr [ecx],0
jmp near ptr 00002882
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00002882
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00002882
mov eax,ecx
test al,1
je short 00002A60
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00002834
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00002834
mov byte ptr [ecx],0
jmp near ptr 00002882
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00002D55
cmp dword ptr [esi+48],2
je short 00002D37
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A68]
jmp short 00002D42
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A50]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[93D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00001B14
mov ecx,esi
call dword ptr ds:[7198]
test byte ptr [esi+48],1
je short 00001B2A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B28]
jmp short 00001B38
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B10]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov ebx,edx
mov ecx,[esi+2C]
sub ecx,[esi+1C]
test ecx,ecx
jg short 00002B11
mov ecx,esi
mov edx,1
call dword ptr ds:[1CF0]
lea edi,[esi+24]
xor edx,edx
xor ecx,ecx
mov eax,[edi]
test eax,eax
je short 00002B47
mov edx,[eax]
test dword ptr [edx],80000000
je short 00002B5F
lea edx,[eax+8]
mov ecx,[eax+4]
mov eax,[edi+4]
and eax,7FFFFFFF
mov edi,[edi+8]
cmp eax,ecx
ja short 00002B74
sub ecx,eax
cmp ecx,edi
jb short 00002B74
add edx,eax
mov ecx,edi
mov eax,[esi+1C]
lea edi,[eax+1]
mov [esi+1C],edi
cmp eax,ecx
jae short 00002B7B
mov [edx+eax],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx,[ebp+0FFEC]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+28]
call dword ptr [eax+14]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFF0]
jmp short 00002B2E
call dword ptr ds:[0F048]
int 3
call 0000F0B0
int 3
; Total bytes of code 153 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002618
cmp dword ptr [esi+0C],0
je near ptr 000026FA
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 000026C4
mov edx,[esi+1C]
test edx,edx
je near ptr 000026B4
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0E720]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00002701
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00002718
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 0000270E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00002718
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 000026F5
mov ecx,[esi+0C]
call dword ptr ds:[29C]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[9558]
int 3
test edi,edi
jne short 00002718
xor edx,edx
xor edi,edi
jmp near ptr 0000266B
test edx,edx
jne short 00002718
xor ecx,ecx
xor edx,edx
jmp short 000026A9
call dword ptr ds:[0F048]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002C1D
cmp dword ptr [esi+0C],0
jne short 00002C1D
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[19A8]
mov ecx,esi
call dword ptr ds:[1978]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: True, SkipValidation: False)
Description of detection logic
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00005502
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00005507
cmp edx,200
jae near ptr 000055C2
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 000056C8
mov eax,ecx
dec eax
test al,4
je short 00005529
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 000054C0
test dl,8
je short 000054EB
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 000054F8
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00005518
test dl,1
jne short 00005523
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00005533
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00005502
mov word ptr [ecx+edi],0
add edi,2
jmp short 000054FD
mov byte ptr [ecx+edi],0
jmp short 00005502
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 000054BB
cmp esi,15
ja near ptr 0000549C
lea eax,ds:[56F8]
mov eax,[eax+esi*4]
lea edx,ds:[5486]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00005502
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00005502
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00005502
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00005502
call dword ptr ds:[0B888]
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00005502
mov word ptr [ecx],0
jmp near ptr 00005502
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00005502
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00005502
mov eax,ecx
test al,1
je short 000056E0
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 000054B4
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 000054B4
mov byte ptr [ecx],0
jmp near ptr 00005502
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00005C1D
cmp dword ptr [esi+48],2
je short 00005BFF
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D900]
jmp short 00005C0A
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D8E8]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[53D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 000022B4
mov ecx,esi
call dword ptr ds:[3138]
test byte ptr [esi+48],1
je short 000022CA
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AC8]
jmp short 000022D8
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AB0]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+3C],0
jle short 000057DA
cmp byte ptr [esi+21],5
je short 000057DA
cmp dl,5D
jne short 000057B9
cmp byte ptr [esi+20],0
jne short 000057F4
lea ecx,[esi+30]
dec dword ptr [ecx+0C]
mov eax,[ecx+0C]
cmp eax,40
jge short 000057C1
mov eax,ecx
mov edx,[eax]
mov eax,[eax+4]
shrd edx,eax,1
shr eax,1
mov edi,ecx
mov [edi],edx
mov [edi+4],eax
xor ebx,ebx
test byte ptr [ecx],1
setne bl
mov [esi+20],bl
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte ptr [esi+20],0
je short 0000580E
jmp short 00005787
cmp eax,40
jne short 000057D0
xor ebx,ebx
test byte ptr [ecx],1
setne bl
jmp short 000057B1
call dword ptr ds:[0D588]
mov ebx,eax
jmp short 000057B1
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
; Total bytes of code 192 ; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,28
xor eax,eax
mov [ebp+0FFE8],eax
mov [ebp+0FFD0],eax
mov esi,ecx
mov ebx,edx
movzx edx,byte ptr [esi+21]
cmp edx,1
je short 000058DB
cmp edx,3
jne short 000058EE
movzx edx,bl
mov ecx,esi
call dword ptr ds:[0DAF8]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi,[esi+18]
and edi,7FFFFFFF
add edi,edi
je short 000058FE
add edi,0FFFFFFFE
lea edx,[edi+3]
mov ecx,[esi+2C]
sub ecx,[esi+1C]
cmp ecx,edx
jge short 00005913
mov ecx,esi
call dword ptr ds:[0DB88]
lea eax,[esi+24]
mov [ebp+0FFDC],eax
xor ecx,ecx
mov [ebp+0FFE0],ecx
xor edx,edx
mov ecx,[eax]
test ecx,ecx
je short 00005965
mov edx,[ecx]
test dword ptr [edx],80000000
je near ptr 000059E3
lea edx,[ecx+8]
mov [ebp+0FFE0],edx
mov ecx,[ecx+4]
mov edx,[eax+4]
and edx,7FFFFFFF
mov eax,[eax+8]
cmp edx,ecx
ja near ptr 00005A14
sub ecx,edx
cmp ecx,eax
jb near ptr 00005A14
mov ecx,[ebp+0FFE0]
add ecx,edx
mov [ebp+0FFE0],ecx
mov edx,eax
mov ecx,[ebp+0FFE0]
mov eax,ecx
mov [ebp+0FFD4],eax
mov [ebp+0FFE4],edx
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 00005A1B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0D
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 00005A1B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0A
mov ecx,[esi+1C]
cmp ecx,edx
ja short 00005A14
mov [ebp+0FFD4],eax
add eax,ecx
mov [ebp+0FFD8],eax
mov eax,edx
sub eax,ecx
mov ecx,[ebp+0FFD8]
push eax
push ecx
mov ecx,edi
call dword ptr ds:[71F8]
mov edx,edi
add edx,[esi+1C]
mov ecx,edx
mov [esi+1C],ecx
lea ecx,[edx+1]
mov [esi+1C],ecx
cmp edx,[ebp+0FFE4]
jae short 00005A1B
mov esi,[ebp+0FFD4]
mov [esi+edx],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov [ebp+0FFF0],ebx
lea edx,[ebp+0FFE8]
mov [ebp+0FFD0],edx
mov edx,[ecx]
mov edx,[edx+28]
mov [ebp+0FFCC],edx
mov edx,[ebp+0FFD0]
mov ebx,[ebp+0FFCC]
call dword ptr [ebx+14]
mov ecx,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov [ebp+0FFE0],ecx
mov ecx,edx
mov eax,[ebp+0FFDC]
movzx ebx,byte ptr [ebp+0FFF0]
jmp near ptr 0000593D
call dword ptr ds:[0B3D8]
int 3
call 000006A0
int 3
; Total bytes of code 361 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00004FA0
cmp dword ptr [esi+0C],0
je near ptr 00005082
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 0000504C
mov edx,[esi+1C]
test edx,edx
je near ptr 0000503C
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0DE20]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00005089
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 000050A0
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00005096
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 000050A0
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 0000507D
mov ecx,[esi+0C]
call dword ptr ds:[2BC]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[5558]
int 3
test edi,edi
jne short 000050A0
xor edx,edx
xor edi,edi
jmp near ptr 00004FF3
test edx,edx
jne short 000050A0
xor ecx,ecx
xor edx,edx
jmp short 00005031
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00005AE5
cmp dword ptr [esi+0C],0
jne short 00005AE5
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[0D840]
mov ecx,esi
call dword ptr ds:[0D810]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 Compare Jit Disasm; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,18
xor eax,eax
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],eax
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov edi,[esi+4]
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je near ptr 0000F53E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb near ptr 0000F54B
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov edi,[esi+4]
movzx ecx,byte ptr [esi+0C]
test ecx,ecx
je short 0000F416
mov ebx,1
jmp short 0000F418
xor ebx,ebx
movzx ecx,byte ptr [esi+0D]
test ecx,ecx
je short 0000F425
or ebx,2
jmp short 0000F428
and ebx,0FFFFFFFD
mov ecx,offset MT_System.Text.Json.Utf8JsonWriter
call 0000300C
mov ecx,eax
mov eax,ebx
test edi,edi
je near ptr 0000F552
lea edx,[ecx+0C]
call 000000C8
lea edx,[ecx+40]
xor edi,edi
mov [edx],edi
mov [edx+4],edi
mov [edx+8],eax
cmp dword ptr [ecx+44],0
jne short 0000F460
mov dword ptr [ecx+44],3E8
mov [ebp+0FFDC],ecx
mov edx,5B
call dword ptr ds:[1A38]
mov ecx,[ebp+0FFDC]
mov byte ptr [ecx+21],3
xor edi,edi
mov eax,ecx
mov edx,[esi+8]
cmp edi,[edx+4]
jae short 0000F4D1
mov ebx,edi
shl ebx,3
add ebx,8
add edx,ebx
push dword ptr [edx+4]
push dword ptr [edx]
mov ecx,eax
call dword ptr ds:[5AF8]
inc edi
cmp edi,186A0
mov ecx,[ebp+0FFDC]
jl short 0000F477
mov edx,[ecx+48]
cmp edx,2
je short 0000F4F1
test dl,1
je short 0000F4D6
test dl,2
jne short 0000F4C4
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1CA8]
jmp short 0000F4FC
call 0000F0B0
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1C60]
jmp short 0000F4FC
mov edx,5D
call dword ptr ds:[1C60]
mov ecx,[ebp+0FFDC]
mov eax,[ecx+18]
or eax,80000000
mov [ecx+18],eax
test eax,7FFFFFFF
je short 0000F515
dec eax
mov [ecx+18],eax
mov byte ptr [ecx+21],4
call dword ptr ds:[19A8]
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
jmp short 0000F536
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
pop eax
jmp eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test edx,edx
jne short 0000F54B
xor ecx,ecx
xor edx,edx
jmp near ptr 0000F3F9
call dword ptr ds:[0F048]
int 3
mov ecx,3007
mov edx,0B0082F8
call 0000CA50
mov ecx,eax
call dword ptr ds:[9018]
int 3
; Total bytes of code 426 ; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00005402
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00005407
cmp edx,200
jae near ptr 000054C2
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 000055C8
mov eax,ecx
dec eax
test al,4
je short 00005429
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 000053C0
test dl,8
je short 000053EB
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 000053F8
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00005418
test dl,1
jne short 00005423
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00005433
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00005402
mov word ptr [ecx+edi],0
add edi,2
jmp short 000053FD
mov byte ptr [ecx+edi],0
jmp short 00005402
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 000053BB
cmp esi,15
ja near ptr 0000539C
lea eax,ds:[55F8]
mov eax,[eax+esi*4]
lea edx,ds:[5386]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00005402
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00005402
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00005402
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00005402
call dword ptr ds:[9588]
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00005402
mov word ptr [ecx],0
jmp near ptr 00005402
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00005402
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00005402
mov eax,ecx
test al,1
je short 000055E0
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 000053B4
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 000053B4
mov byte ptr [ecx],0
jmp near ptr 00005402
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00005B1D
cmp dword ptr [esi+48],2
je short 00005AFF
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A68]
jmp short 00005B0A
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A50]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[93D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 000022B4
mov ecx,esi
call dword ptr ds:[7198]
test byte ptr [esi+48],1
je short 000022CA
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B28]
jmp short 000022D8
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B10]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+3C],0
jle short 000056DA
cmp byte ptr [esi+21],5
je short 000056DA
cmp dl,5D
jne short 000056B9
cmp byte ptr [esi+20],0
jne short 000056F4
lea ecx,[esi+30]
dec dword ptr [ecx+0C]
mov eax,[ecx+0C]
cmp eax,40
jge short 000056C1
mov eax,ecx
mov edx,[eax]
mov eax,[eax+4]
shrd edx,eax,1
shr eax,1
mov edi,ecx
mov [edi],edx
mov [edi+4],eax
xor ebx,ebx
test byte ptr [ecx],1
setne bl
mov [esi+20],bl
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte ptr [esi+20],0
je short 0000570E
jmp short 00005687
cmp eax,40
jne short 000056D0
xor ebx,ebx
test byte ptr [ecx],1
setne bl
jmp short 000056B1
call dword ptr ds:[1690]
mov ebx,eax
jmp short 000056B1
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
; Total bytes of code 192 ; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,28
xor eax,eax
mov [ebp+0FFE8],eax
mov [ebp+0FFD0],eax
mov esi,ecx
mov ebx,edx
movzx edx,byte ptr [esi+21]
cmp edx,1
je short 000057DB
cmp edx,3
jne short 000057EE
movzx edx,bl
mov ecx,esi
call dword ptr ds:[1C60]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi,[esi+18]
and edi,7FFFFFFF
add edi,edi
je short 000057FE
add edi,0FFFFFFFE
lea edx,[edi+3]
mov ecx,[esi+2C]
sub ecx,[esi+1C]
cmp ecx,edx
jge short 00005813
mov ecx,esi
call dword ptr ds:[1CF0]
lea eax,[esi+24]
mov [ebp+0FFDC],eax
xor ecx,ecx
mov [ebp+0FFE0],ecx
xor edx,edx
mov ecx,[eax]
test ecx,ecx
je short 00005865
mov edx,[ecx]
test dword ptr [edx],80000000
je near ptr 000058E3
lea edx,[ecx+8]
mov [ebp+0FFE0],edx
mov ecx,[ecx+4]
mov edx,[eax+4]
and edx,7FFFFFFF
mov eax,[eax+8]
cmp edx,ecx
ja near ptr 00005914
sub ecx,edx
cmp ecx,eax
jb near ptr 00005914
mov ecx,[ebp+0FFE0]
add ecx,edx
mov [ebp+0FFE0],ecx
mov edx,eax
mov ecx,[ebp+0FFE0]
mov eax,ecx
mov [ebp+0FFD4],eax
mov [ebp+0FFE4],edx
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000591B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0D
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000591B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0A
mov ecx,[esi+1C]
cmp ecx,edx
ja short 00005914
mov [ebp+0FFD4],eax
add eax,ecx
mov [ebp+0FFD8],eax
mov eax,edx
sub eax,ecx
mov ecx,[ebp+0FFD8]
push eax
push ecx
mov ecx,edi
call dword ptr ds:[0B1F8]
mov edx,edi
add edx,[esi+1C]
mov ecx,edx
mov [esi+1C],ecx
lea ecx,[edx+1]
mov [esi+1C],ecx
cmp edx,[ebp+0FFE4]
jae short 0000591B
mov esi,[ebp+0FFD4]
mov [esi+edx],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov [ebp+0FFF0],ebx
lea edx,[ebp+0FFE8]
mov [ebp+0FFD0],edx
mov edx,[ecx]
mov edx,[edx+28]
mov [ebp+0FFCC],edx
mov edx,[ebp+0FFD0]
mov ebx,[ebp+0FFCC]
call dword ptr [ebx+14]
mov ecx,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov [ebp+0FFE0],ecx
mov ecx,edx
mov eax,[ebp+0FFDC]
movzx ebx,byte ptr [ebp+0FFF0]
jmp near ptr 0000583D
call dword ptr ds:[0F048]
int 3
call 0000F0B0
int 3
; Total bytes of code 361 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00004EC0
cmp dword ptr [esi+0C],0
je near ptr 00004FA2
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00004F6C
mov edx,[esi+1C]
test edx,edx
je near ptr 00004F5C
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0E720]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00004FA9
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00004FC0
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00004FB6
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00004FC0
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00004F9D
mov ecx,[esi+0C]
call dword ptr ds:[2BC]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[9558]
int 3
test edi,edi
jne short 00004FC0
xor edx,edx
xor edi,edi
jmp near ptr 00004F13
test edx,edx
jne short 00004FC0
xor ecx,ecx
xor edx,edx
jmp short 00004F51
call dword ptr ds:[0F048]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 000059E5
cmp dword ptr [esi+0C],0
jne short 000059E5
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[19A8]
mov ecx,esi
call dword ptr ds:[1978]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: True, SkipValidation: True)
Description of detection logic
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00002C82
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00002C87
cmp edx,200
jae near ptr 00002D42
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00002E48
mov eax,ecx
dec eax
test al,4
je short 00002CA9
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00002C40
test dl,8
je short 00002C6B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00002C78
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00002C98
test dl,1
jne short 00002CA3
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00002CB3
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00002C82
mov word ptr [ecx+edi],0
add edi,2
jmp short 00002C7D
mov byte ptr [ecx+edi],0
jmp short 00002C82
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 00002C3B
cmp esi,15
ja near ptr 00002C1C
lea eax,ds:[2E78]
mov eax,[eax+esi*4]
lea edx,ds:[2C06]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00002C82
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00002C82
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00002C82
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00002C82
call dword ptr ds:[0B888]
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00002C82
mov word ptr [ecx],0
jmp near ptr 00002C82
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00002C82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00002C82
mov eax,ecx
test al,1
je short 00002E60
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00002C34
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00002C34
mov byte ptr [ecx],0
jmp near ptr 00002C82
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00003225
cmp dword ptr [esi+48],2
je short 00003207
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D900]
jmp short 00003212
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D8E8]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[53D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00001DF4
mov ecx,esi
call dword ptr ds:[3138]
test byte ptr [esi+48],1
je short 00001E0A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AC8]
jmp short 00001E18
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AB0]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,28
xor eax,eax
mov [ebp+0FFE8],eax
mov [ebp+0FFD0],eax
mov esi,ecx
mov ebx,edx
movzx edx,byte ptr [esi+21]
cmp edx,1
je short 00002F0B
cmp edx,3
jne short 00002F1E
movzx edx,bl
mov ecx,esi
call dword ptr ds:[0DAF8]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi,[esi+18]
and edi,7FFFFFFF
add edi,edi
je short 00002F2E
add edi,0FFFFFFFE
lea edx,[edi+3]
mov ecx,[esi+2C]
sub ecx,[esi+1C]
cmp ecx,edx
jge short 00002F43
mov ecx,esi
call dword ptr ds:[0DB88]
lea eax,[esi+24]
mov [ebp+0FFDC],eax
xor ecx,ecx
mov [ebp+0FFE0],ecx
xor edx,edx
mov ecx,[eax]
test ecx,ecx
je short 00002F95
mov edx,[ecx]
test dword ptr [edx],80000000
je near ptr 00003013
lea edx,[ecx+8]
mov [ebp+0FFE0],edx
mov ecx,[ecx+4]
mov edx,[eax+4]
and edx,7FFFFFFF
mov eax,[eax+8]
cmp edx,ecx
ja near ptr 00003044
sub ecx,edx
cmp ecx,eax
jb near ptr 00003044
mov ecx,[ebp+0FFE0]
add ecx,edx
mov [ebp+0FFE0],ecx
mov edx,eax
mov ecx,[ebp+0FFE0]
mov eax,ecx
mov [ebp+0FFD4],eax
mov [ebp+0FFE4],edx
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000304B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0D
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000304B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0A
mov ecx,[esi+1C]
cmp ecx,edx
ja short 00003044
mov [ebp+0FFD4],eax
add eax,ecx
mov [ebp+0FFD8],eax
mov eax,edx
sub eax,ecx
mov ecx,[ebp+0FFD8]
push eax
push ecx
mov ecx,edi
call dword ptr ds:[71F8]
mov edx,edi
add edx,[esi+1C]
mov ecx,edx
mov [esi+1C],ecx
lea ecx,[edx+1]
mov [esi+1C],ecx
cmp edx,[ebp+0FFE4]
jae short 0000304B
mov esi,[ebp+0FFD4]
mov [esi+edx],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov [ebp+0FFF0],ebx
lea edx,[ebp+0FFE8]
mov [ebp+0FFD0],edx
mov edx,[ecx]
mov edx,[edx+28]
mov [ebp+0FFCC],edx
mov edx,[ebp+0FFD0]
mov ebx,[ebp+0FFCC]
call dword ptr [ebx+14]
mov ecx,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov [ebp+0FFE0],ecx
mov ecx,edx
mov eax,[ebp+0FFDC]
movzx ebx,byte ptr [ebp+0FFF0]
jmp near ptr 00002F6D
call dword ptr ds:[0B3D8]
int 3
call 000006A0
int 3
; Total bytes of code 361 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002A18
cmp dword ptr [esi+0C],0
je near ptr 00002AFA
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00002AC4
mov edx,[esi+1C]
test edx,edx
je near ptr 00002AB4
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0DE20]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00002B01
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00002B18
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00002B0E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00002B18
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00002AF5
mov ecx,[esi+0C]
call dword ptr ds:[29C]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[5558]
int 3
test edi,edi
jne short 00002B18
xor edx,edx
xor edi,edi
jmp near ptr 00002A6B
test edx,edx
jne short 00002B18
xor ecx,ecx
xor edx,edx
jmp short 00002AA9
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 000030ED
cmp dword ptr [esi+0C],0
jne short 000030ED
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[0D840]
mov ecx,esi
call dword ptr ds:[0D810]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 Compare Jit Disasm; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,18
xor eax,eax
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],eax
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov edi,[esi+4]
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je near ptr 0000F53E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb near ptr 0000F54B
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov edi,[esi+4]
movzx ecx,byte ptr [esi+0C]
test ecx,ecx
je short 0000F416
mov ebx,1
jmp short 0000F418
xor ebx,ebx
movzx ecx,byte ptr [esi+0D]
test ecx,ecx
je short 0000F425
or ebx,2
jmp short 0000F428
and ebx,0FFFFFFFD
mov ecx,offset MT_System.Text.Json.Utf8JsonWriter
call 0000300C
mov ecx,eax
mov eax,ebx
test edi,edi
je near ptr 0000F552
lea edx,[ecx+0C]
call 000000C8
lea edx,[ecx+40]
xor edi,edi
mov [edx],edi
mov [edx+4],edi
mov [edx+8],eax
cmp dword ptr [ecx+44],0
jne short 0000F460
mov dword ptr [ecx+44],3E8
mov [ebp+0FFDC],ecx
mov edx,5B
call dword ptr ds:[1A38]
mov ecx,[ebp+0FFDC]
mov byte ptr [ecx+21],3
xor edi,edi
mov eax,ecx
mov edx,[esi+8]
cmp edi,[edx+4]
jae short 0000F4D1
mov ebx,edi
shl ebx,3
add ebx,8
add edx,ebx
push dword ptr [edx+4]
push dword ptr [edx]
mov ecx,eax
call dword ptr ds:[5AF8]
inc edi
cmp edi,186A0
mov ecx,[ebp+0FFDC]
jl short 0000F477
mov edx,[ecx+48]
cmp edx,2
je short 0000F4F1
test dl,1
je short 0000F4D6
test dl,2
jne short 0000F4C4
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1CA8]
jmp short 0000F4FC
call 0000F0B0
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1C60]
jmp short 0000F4FC
mov edx,5D
call dword ptr ds:[1C60]
mov ecx,[ebp+0FFDC]
mov eax,[ecx+18]
or eax,80000000
mov [ecx+18],eax
test eax,7FFFFFFF
je short 0000F515
dec eax
mov [ecx+18],eax
mov byte ptr [ecx+21],4
call dword ptr ds:[19A8]
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
jmp short 0000F536
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
pop eax
jmp eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test edx,edx
jne short 0000F54B
xor ecx,ecx
xor edx,edx
jmp near ptr 0000F3F9
call dword ptr ds:[0F048]
int 3
mov ecx,3007
mov edx,0B6582F8
call 0000CA50
mov ecx,eax
call dword ptr ds:[9018]
int 3
; Total bytes of code 426 ; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00002E82
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00002E87
cmp edx,200
jae near ptr 00002F42
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00003048
mov eax,ecx
dec eax
test al,4
je short 00002EA9
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00002E40
test dl,8
je short 00002E6B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00002E78
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00002E98
test dl,1
jne short 00002EA3
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00002EB3
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00002E82
mov word ptr [ecx+edi],0
add edi,2
jmp short 00002E7D
mov byte ptr [ecx+edi],0
jmp short 00002E82
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 00002E3B
cmp esi,15
ja near ptr 00002E1C
lea eax,ds:[3078]
mov eax,[eax+esi*4]
lea edx,ds:[2E06]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00002E82
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00002E82
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00002E82
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00002E82
call dword ptr ds:[9588]
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00002E82
mov word ptr [ecx],0
jmp near ptr 00002E82
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00002E82
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00002E82
mov eax,ecx
test al,1
je short 00003060
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00002E34
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00002E34
mov byte ptr [ecx],0
jmp near ptr 00002E82
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00003425
cmp dword ptr [esi+48],2
je short 00003407
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A68]
jmp short 00003412
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A50]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[93D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00002054
mov ecx,esi
call dword ptr ds:[7198]
test byte ptr [esi+48],1
je short 0000206A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B28]
jmp short 00002078
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B10]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,28
xor eax,eax
mov [ebp+0FFE8],eax
mov [ebp+0FFD0],eax
mov esi,ecx
mov ebx,edx
movzx edx,byte ptr [esi+21]
cmp edx,1
je short 0000310B
cmp edx,3
jne short 0000311E
movzx edx,bl
mov ecx,esi
call dword ptr ds:[1C60]
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi,[esi+18]
and edi,7FFFFFFF
add edi,edi
je short 0000312E
add edi,0FFFFFFFE
lea edx,[edi+3]
mov ecx,[esi+2C]
sub ecx,[esi+1C]
cmp ecx,edx
jge short 00003143
mov ecx,esi
call dword ptr ds:[1CF0]
lea eax,[esi+24]
mov [ebp+0FFDC],eax
xor ecx,ecx
mov [ebp+0FFE0],ecx
xor edx,edx
mov ecx,[eax]
test ecx,ecx
je short 00003195
mov edx,[ecx]
test dword ptr [edx],80000000
je near ptr 00003213
lea edx,[ecx+8]
mov [ebp+0FFE0],edx
mov ecx,[ecx+4]
mov edx,[eax+4]
and edx,7FFFFFFF
mov eax,[eax+8]
cmp edx,ecx
ja near ptr 00003244
sub ecx,edx
cmp ecx,eax
jb near ptr 00003244
mov ecx,[ebp+0FFE0]
add ecx,edx
mov [ebp+0FFE0],ecx
mov edx,eax
mov ecx,[ebp+0FFE0]
mov eax,ecx
mov [ebp+0FFD4],eax
mov [ebp+0FFE4],edx
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000324B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0D
mov ecx,[esi+1C]
lea eax,[ecx+1]
mov [esi+1C],eax
cmp ecx,edx
jae near ptr 0000324B
mov eax,[ebp+0FFD4]
mov byte ptr [eax+ecx],0A
mov ecx,[esi+1C]
cmp ecx,edx
ja short 00003244
mov [ebp+0FFD4],eax
add eax,ecx
mov [ebp+0FFD8],eax
mov eax,edx
sub eax,ecx
mov ecx,[ebp+0FFD8]
push eax
push ecx
mov ecx,edi
call dword ptr ds:[0B1F8]
mov edx,edi
add edx,[esi+1C]
mov ecx,edx
mov [esi+1C],ecx
lea ecx,[edx+1]
mov [esi+1C],ecx
cmp edx,[ebp+0FFE4]
jae short 0000324B
mov esi,[ebp+0FFD4]
mov [esi+edx],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
mov [ebp+0FFF0],ebx
lea edx,[ebp+0FFE8]
mov [ebp+0FFD0],edx
mov edx,[ecx]
mov edx,[edx+28]
mov [ebp+0FFCC],edx
mov edx,[ebp+0FFD0]
mov ebx,[ebp+0FFCC]
call dword ptr [ebx+14]
mov ecx,[ebp+0FFE8]
mov edx,[ebp+0FFEC]
mov [ebp+0FFE0],ecx
mov ecx,edx
mov eax,[ebp+0FFDC]
movzx ebx,byte ptr [ebp+0FFF0]
jmp near ptr 0000316D
call dword ptr ds:[0F048]
int 3
call 0000F0B0
int 3
; Total bytes of code 361 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00002C18
cmp dword ptr [esi+0C],0
je near ptr 00002CFA
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00002CC4
mov edx,[esi+1C]
test edx,edx
je near ptr 00002CB4
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0E720]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00002D01
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00002D18
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00002D0E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00002D18
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00002CF5
mov ecx,[esi+0C]
call dword ptr ds:[29C]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[9558]
int 3
test edi,edi
jne short 00002D18
xor edx,edx
xor edi,edi
jmp near ptr 00002C6B
test edx,edx
jne short 00002D18
xor ecx,ecx
xor edx,edx
jmp short 00002CA9
call dword ptr ds:[0F048]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 000032ED
cmp dword ptr [esi+0C],0
jne short 000032ED
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[19A8]
mov ecx,esi
call dword ptr ds:[1978]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: False, SkipValidation: False)
Description of detection logic
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00003E22
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00003E27
cmp edx,200
jae near ptr 00003EE2
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00003FE8
mov eax,ecx
dec eax
test al,4
je short 00003E49
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00003DE0
test dl,8
je short 00003E0B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00003E18
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00003E38
test dl,1
jne short 00003E43
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00003E53
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00003E22
mov word ptr [ecx+edi],0
add edi,2
jmp short 00003E1D
mov byte ptr [ecx+edi],0
jmp short 00003E22
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 00003DDB
cmp esi,15
ja near ptr 00003DBC
lea eax,ds:[4018]
mov eax,[eax+esi*4]
lea edx,ds:[3DA6]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00003E22
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00003E22
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00003E22
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00003E22
call dword ptr ds:[0B888]
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00003E22
mov word ptr [ecx],0
jmp near ptr 00003E22
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00003E22
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00003E22
mov eax,ecx
test al,1
je short 00004000
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00003DD4
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00003DD4
mov byte ptr [ecx],0
jmp near ptr 00003E22
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 00005E85
cmp dword ptr [esi+48],2
je short 00005E67
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D900]
jmp short 00005E72
movzx edx,dl
mov ecx,esi
call dword ptr ds:[0D8E8]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[53D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00002014
mov ecx,esi
call dword ptr ds:[3138]
test byte ptr [esi+48],1
je short 0000202A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AC8]
jmp short 00002038
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[1AB0]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+3C],0
jle short 00005B3A
cmp byte ptr [esi+21],5
je short 00005B3A
cmp dl,5D
jne short 00005B19
cmp byte ptr [esi+20],0
jne short 00005B54
lea ecx,[esi+30]
dec dword ptr [ecx+0C]
mov eax,[ecx+0C]
cmp eax,40
jge short 00005B21
mov eax,ecx
mov edx,[eax]
mov eax,[eax+4]
shrd edx,eax,1
shr eax,1
mov edi,ecx
mov [edi],edx
mov [edi+4],eax
xor ebx,ebx
test byte ptr [ecx],1
setne bl
mov [esi+20],bl
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte ptr [esi+20],0
je short 00005B6E
jmp short 00005AE7
cmp eax,40
jne short 00005B30
xor ebx,ebx
test byte ptr [ecx],1
setne bl
jmp short 00005B11
call dword ptr ds:[0D588]
mov ebx,eax
jmp short 00005B11
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[53D8]
int 3
; Total bytes of code 192 ; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov ebx,edx
mov ecx,[esi+2C]
sub ecx,[esi+1C]
test ecx,ecx
jg short 00005C41
mov ecx,esi
mov edx,1
call dword ptr ds:[0DB88]
lea edi,[esi+24]
xor edx,edx
xor ecx,ecx
mov eax,[edi]
test eax,eax
je short 00005C77
mov edx,[eax]
test dword ptr [edx],80000000
je short 00005C8F
lea edx,[eax+8]
mov ecx,[eax+4]
mov eax,[edi+4]
and eax,7FFFFFFF
mov edi,[edi+8]
cmp eax,ecx
ja short 00005CA4
sub ecx,eax
cmp ecx,edi
jb short 00005CA4
add edx,eax
mov ecx,edi
mov eax,[esi+1C]
lea edi,[eax+1]
mov [esi+1C],edi
cmp eax,ecx
jae short 00005CAB
mov [edx+eax],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx,[ebp+0FFEC]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+28]
call dword ptr [eax+14]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFF0]
jmp short 00005C5E
call dword ptr ds:[0B3D8]
int 3
call 000006A0
int 3
; Total bytes of code 153 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00003C30
cmp dword ptr [esi+0C],0
je near ptr 00003D12
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00003CDC
mov edx,[esi+1C]
test edx,edx
je near ptr 00003CCC
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0DE20]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00003D19
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00003D30
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00003D26
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00003D30
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00003D0D
mov ecx,[esi+0C]
call dword ptr ds:[2BC]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[5558]
int 3
test edi,edi
jne short 00003D30
xor edx,edx
xor edi,edi
jmp near ptr 00003C83
test edx,edx
jne short 00003D30
xor ecx,ecx
xor edx,edx
jmp short 00003CC1
call dword ptr ds:[0B3D8]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00005D4D
cmp dword ptr [esi+0C],0
jne short 00005D4D
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[0D840]
mov ecx,esi
call dword ptr ds:[0D810]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 Compare Jit Disasm; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,18
xor eax,eax
mov [ebp+0FFE0],eax
mov [ebp+0FFE4],eax
mov [ebp+0FFE8],eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov edi,[esi+4]
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je near ptr 0000F53E
mov eax,[ecx+4]
cmp [ecx+4],edx
jb near ptr 0000F54B
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov edi,[esi+4]
movzx ecx,byte ptr [esi+0C]
test ecx,ecx
je short 0000F416
mov ebx,1
jmp short 0000F418
xor ebx,ebx
movzx ecx,byte ptr [esi+0D]
test ecx,ecx
je short 0000F425
or ebx,2
jmp short 0000F428
and ebx,0FFFFFFFD
mov ecx,offset MT_System.Text.Json.Utf8JsonWriter
call 0000300C
mov ecx,eax
mov eax,ebx
test edi,edi
je near ptr 0000F552
lea edx,[ecx+0C]
call 000000C8
lea edx,[ecx+40]
xor edi,edi
mov [edx],edi
mov [edx+4],edi
mov [edx+8],eax
cmp dword ptr [ecx+44],0
jne short 0000F460
mov dword ptr [ecx+44],3E8
mov [ebp+0FFDC],ecx
mov edx,5B
call dword ptr ds:[1A38]
mov ecx,[ebp+0FFDC]
mov byte ptr [ecx+21],3
xor edi,edi
mov eax,ecx
mov edx,[esi+8]
cmp edi,[edx+4]
jae short 0000F4D1
mov ebx,edi
shl ebx,3
add ebx,8
add edx,ebx
push dword ptr [edx+4]
push dword ptr [edx]
mov ecx,eax
call dword ptr ds:[5AF8]
inc edi
cmp edi,186A0
mov ecx,[ebp+0FFDC]
jl short 0000F477
mov edx,[ecx+48]
cmp edx,2
je short 0000F4F1
test dl,1
je short 0000F4D6
test dl,2
jne short 0000F4C4
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1CA8]
jmp short 0000F4FC
call 0000F0B0
mov edx,5D
call dword ptr ds:[1C90]
mov ecx,[ebp+0FFDC]
mov edx,5D
call dword ptr ds:[1C60]
jmp short 0000F4FC
mov edx,5D
call dword ptr ds:[1C60]
mov ecx,[ebp+0FFDC]
mov eax,[ecx+18]
or eax,80000000
mov [ecx+18],eax
test eax,7FFFFFFF
je short 0000F515
dec eax
mov [ecx+18],eax
mov byte ptr [ecx+21],4
call dword ptr ds:[19A8]
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
jmp short 0000F536
mov ecx,[ebp+0FFDC]
call dword ptr ds:[0BC84]
pop eax
jmp eax
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
test edx,edx
jne short 0000F54B
xor ecx,ecx
xor edx,edx
jmp near ptr 0000F3F9
call dword ptr ds:[0F048]
int 3
mov ecx,3007
mov edx,0B1F82F8
call 0000CA50
mov ecx,eax
call dword ptr ds:[9018]
int 3
; Total bytes of code 426 ; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
push ebp
mov ebp,esp
push edi
push esi
push ebx
test edx,edx
je short 00004DA2
xor eax,eax
mov esi,edx
sub esi,1
sbb eax,0
cmp esi,16
sbb eax,0
jb short 00004DA7
cmp edx,200
jae near ptr 00004E62
xor edi,edi
mov eax,ecx
test al,3
jne near ptr 00004F68
mov eax,ecx
dec eax
test al,4
je short 00004DC9
lea eax,[edx+0FFF0]
sub edx,edi
lea esi,[edi+10]
xor ebx,ebx
mov [ecx+edi],ebx
mov [ecx+edi+4],ebx
mov [ecx+edi+8],ebx
mov [ecx+edi+0C],ebx
mov edi,esi
cmp edi,eax
jbe short 00004D60
test dl,8
je short 00004D8B
xor eax,eax
mov [ecx+edi],eax
mov [ecx+edi+4],eax
add edi,8
test dl,4
je short 00004D98
xor eax,eax
mov [ecx+edi],eax
add edi,4
test dl,2
jne short 00004DB8
test dl,1
jne short 00004DC3
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi,0B
jne short 00004DD3
xor edx,edx
mov [ecx],edx
mov [ecx+4],edx
mov [ecx+8],edx
jmp short 00004DA2
mov word ptr [ecx+edi],0
add edi,2
jmp short 00004D9D
mov byte ptr [ecx+edi],0
jmp short 00004DA2
xor eax,eax
mov [ecx+edi],eax
add edi,4
jmp short 00004D5B
cmp esi,15
ja near ptr 00004D3C
lea eax,ds:[4F98]
mov eax,[eax+esi*4]
lea edx,ds:[4D26]
add eax,edx
jmp eax
xor eax,eax
mov [ecx],eax
jmp short 00004DA2
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
mov byte ptr [ecx+6],0
jmp short 00004DA2
xor eax,eax
mov [ecx],eax
mov word ptr [ecx+4],0
jmp short 00004DA2
xor eax,eax
mov [ecx],eax
mov byte ptr [ecx+4],0
jmp short 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov byte ptr [ecx+8],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
mov byte ptr [ecx+0E],0
jmp near ptr 00004DA2
call dword ptr ds:[9588]
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov byte ptr [ecx+10],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov word ptr [ecx+14],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov word ptr [ecx+8],0
mov byte ptr [ecx+0A],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov word ptr [ecx+0C],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov byte ptr [ecx+0C],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov word ptr [ecx+10],0
mov byte ptr [ecx+12],0
jmp near ptr 00004DA2
mov word ptr [ecx],0
jmp near ptr 00004DA2
mov word ptr [ecx],0
mov byte ptr [ecx+2],0
jmp near ptr 00004DA2
xor eax,eax
mov [ecx],eax
mov [ecx+4],eax
mov [ecx+8],eax
mov [ecx+0C],eax
mov [ecx+10],eax
mov byte ptr [ecx+14],0
jmp near ptr 00004DA2
mov eax,ecx
test al,1
je short 00004F80
mov byte ptr [ecx],0
mov edi,1
mov eax,ecx
test al,2
jne near ptr 00004D54
mov word ptr [ecx+edi],0
add edi,2
jmp near ptr 00004D54
mov byte ptr [ecx],0
jmp near ptr 00004DA2
; Total bytes of code 630 ; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
push ebp
mov ebp,esp
push esi
mov esi,ecx
mov ecx,[esi+18]
and ecx,7FFFFFFF
cmp ecx,[esi+44]
jge short 0000556D
cmp dword ptr [esi+48],2
je short 0000554F
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A68]
jmp short 0000555A
movzx edx,dl
mov ecx,esi
call dword ptr ds:[1A50]
mov edx,[esi+18]
and edx,7FFFFFFF
mov [esi+18],edx
inc edx
mov [esi+18],edx
pop esi
pop ebp
ret
mov edx,[esi+18]
push dword ptr [esi+44]
push 0
push 0
mov ecx,1A
call dword ptr ds:[93D8]
int 3
; Total bytes of code 91 ; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
push ebp
mov ebp,esp
push esi
mov esi,ecx
test byte ptr [esi+48],2
jne short 00002014
mov ecx,esi
call dword ptr ds:[7198]
test byte ptr [esi+48],1
je short 0000202A
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B28]
jmp short 00002038
push dword ptr [ebp+0C]
push dword ptr [ebp+8]
mov ecx,esi
call dword ptr ds:[5B10]
or dword ptr [esi+18],80000000
mov byte ptr [esi+21],7
pop esi
pop ebp
ret 8
; Total bytes of code 72 ; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+3C],0
jle short 000051FA
cmp byte ptr [esi+21],5
je short 000051FA
cmp dl,5D
jne short 000051D9
cmp byte ptr [esi+20],0
jne short 00005214
lea ecx,[esi+30]
dec dword ptr [ecx+0C]
mov eax,[ecx+0C]
cmp eax,40
jge short 000051E1
mov eax,ecx
mov edx,[eax]
mov eax,[eax+4]
shrd edx,eax,1
shr eax,1
mov edi,ecx
mov [edi],edx
mov [edi+4],eax
xor ebx,ebx
test byte ptr [ecx],1
setne bl
mov [esi+20],bl
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte ptr [esi+20],0
je short 0000522E
jmp short 000051A7
cmp eax,40
jne short 000051F0
xor ebx,ebx
test byte ptr [ecx],1
setne bl
jmp short 000051D1
call dword ptr ds:[1690]
mov ebx,eax
jmp short 000051D1
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
push dword ptr [esi+44]
movzx ecx,dl
push ecx
movzx ecx,byte ptr [esi+21]
push ecx
mov ecx,17
xor edx,edx
call dword ptr ds:[93D8]
int 3
; Total bytes of code 192 ; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,8
xor eax,eax
mov [ebp+0FFEC],eax
mov esi,ecx
mov ebx,edx
mov ecx,[esi+2C]
sub ecx,[esi+1C]
test ecx,ecx
jg short 00005301
mov ecx,esi
mov edx,1
call dword ptr ds:[1CF0]
lea edi,[esi+24]
xor edx,edx
xor ecx,ecx
mov eax,[edi]
test eax,eax
je short 00005337
mov edx,[eax]
test dword ptr [edx],80000000
je short 0000534F
lea edx,[eax+8]
mov ecx,[eax+4]
mov eax,[edi+4]
and eax,7FFFFFFF
mov edi,[edi+8]
cmp eax,ecx
ja short 00005364
sub ecx,eax
cmp ecx,edi
jb short 00005364
add edx,eax
mov ecx,edi
mov eax,[esi+1C]
lea edi,[eax+1]
mov [esi+1C],edi
cmp eax,ecx
jae short 0000536B
mov [edx+eax],bl
lea esp,[ebp+0FFF4]
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx,[ebp+0FFEC]
mov ecx,eax
mov eax,[eax]
mov eax,[eax+28]
call dword ptr [eax+14]
mov edx,[ebp+0FFEC]
mov ecx,[ebp+0FFF0]
jmp short 0000531E
call dword ptr ds:[0F048]
int 3
call 0000F0B0
int 3
; Total bytes of code 153 ; System.Text.Json.Utf8JsonWriter.Flush()
push ebp
mov ebp,esp
push edi
push esi
push ebx
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00004BA0
cmp dword ptr [esi+0C],0
je near ptr 00004C82
xor ecx,ecx
mov [esi+24],ecx
mov [esi+28],ecx
mov [esi+2C],ecx
cmp dword ptr [esi+10],0
je near ptr 00004C4C
mov edx,[esi+1C]
test edx,edx
je near ptr 00004C3C
mov ecx,[esi+14]
cmp [ecx],ecx
call dword ptr ds:[0E720]
xor ecx,ecx
mov [esi+1C],ecx
mov ecx,[esi+10]
mov eax,[esi+14]
mov edx,[eax+4]
mov edi,[eax+8]
test edx,edx
je near ptr 00004C89
mov eax,[edx+4]
cmp [edx+4],edi
jb near ptr 00004CA0
add edx,8
push edi
push edx
mov eax,[ecx]
mov eax,[eax+38]
call dword ptr [eax+1C]
lea ecx,[esi+4]
mov edx,[ecx]
mov ecx,[ecx+4]
mov edi,[esi+14]
mov eax,[edi+8]
mov ebx,eax
sar ebx,1F
add edx,eax
adc ecx,ebx
lea eax,[esi+4]
mov [eax],edx
mov [eax+4],ecx
mov ecx,[edi+4]
mov edx,[edi+8]
test ecx,ecx
je short 00004C96
mov eax,[ecx+4]
cmp [ecx+4],edx
jb short 00004CA0
add ecx,8
call dword ptr ds:[0DC00]
xor ecx,ecx
mov [edi+8],ecx
mov ecx,[esi+10]
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax+18]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx,[esi+1C]
test edx,edx
je short 00004C7D
mov ecx,[esi+0C]
call dword ptr ds:[2BC]
lea eax,[esi+4]
mov edx,[eax]
mov eax,[eax+4]
mov ecx,[esi+1C]
mov edi,ecx
sar edi,1F
add edx,ecx
adc eax,edi
lea ecx,[esi+4]
mov [ecx],edx
mov [ecx+4],eax
xor eax,eax
mov [esi+1C],eax
pop ebx
pop esi
pop edi
pop ebp
ret
call dword ptr ds:[9558]
int 3
test edi,edi
jne short 00004CA0
xor edx,edx
xor edi,edi
jmp near ptr 00004BF3
test edx,edx
jne short 00004CA0
xor ecx,ecx
xor edx,edx
jmp short 00004C31
call dword ptr ds:[0F048]
int 3
; Total bytes of code 287 ; System.Text.Json.Utf8JsonWriter.Dispose()
push ebp
mov ebp,esp
push esi
mov esi,ecx
cmp dword ptr [esi+10],0
jne short 00005435
cmp dword ptr [esi+0C],0
jne short 00005435
pop esi
pop ebp
ret
mov ecx,esi
call dword ptr ds:[19A8]
mov ecx,esi
call dword ptr ds:[1978]
xor eax,eax
mov [esi+10],eax
mov [esi+14],eax
mov [esi+0C],eax
pop esi
pop ebp
ret
; Total bytes of code 51 DocsProfiling workflow for dotnet/runtime repository |
@DrewScoggins do you recall whether we understood the improvement between Nov and Mar? Was there a correctness/measurement issue, or did we regress some win and never get it back? |
cc @EgorBo |
@danmoseley it's the DST-related issue and is tracked by dotnet/runtime#67932 (it contains flamegraphs for before and after DST, but it was before we merged that DateTime improvement PR) |
Oh - haha I remember that. We're fastest in winter! The DateTime improvement PR didn't of course touch anything related to timezones so I'd expect it to be an additive effect to the DST impact. |
No description provided.
The text was updated successfully, but these errors were encountered: