-
Notifications
You must be signed in to change notification settings - Fork 4
[Perf] Windows/x64: 5 Improvements on 3/13/2023 6:11:08 PM #13963
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
Comments
Run Information
Improvements in StoreBlock.LocalAddress
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'StoreBlock.LocalAddress*' PayloadsHistogramStoreBlock.LocalAddress.CopyBlock128
Description of detection logic
Compare Jit Disasm; StoreBlock.LocalAddress.CopyBlock128()
sub rsp,108
vzeroupper
add rcx,80
vmovdqu ymm0,ymmword ptr [rcx]
vmovdqu ymmword ptr [rsp+88],ymm0
vmovdqu ymm0,ymmword ptr [rcx+20]
vmovdqu ymmword ptr [rsp+0A8],ymm0
vmovdqu ymm0,ymmword ptr [rcx+40]
vmovdqu ymmword ptr [rsp+0C8],ymm0
vmovdqu ymm0,ymmword ptr [rcx+60]
vmovdqu ymmword ptr [rsp+0E8],ymm0
xor eax,eax
M00_L00:
vmovdqu ymm0,ymmword ptr [rsp+88]
vmovdqu ymmword ptr [rsp+8],ymm0
vmovdqu ymm0,ymmword ptr [rsp+0A8]
vmovdqu ymmword ptr [rsp+28],ymm0
vmovdqu ymm0,ymmword ptr [rsp+0C8]
vmovdqu ymmword ptr [rsp+48],ymm0
vmovdqu ymm0,ymmword ptr [rsp+0E8]
vmovdqu ymmword ptr [rsp+68],ymm0
inc eax
cmp eax,64
jl short M00_L00
vmovdqu ymm0,ymmword ptr [rsp+8]
vmovdqu ymmword ptr [rcx],ymm0
vmovdqu ymm0,ymmword ptr [rsp+28]
vmovdqu ymmword ptr [rcx+20],ymm0
vmovdqu ymm0,ymmword ptr [rsp+48]
vmovdqu ymmword ptr [rcx+40],ymm0
vmovdqu ymm0,ymmword ptr [rsp+68]
vmovdqu ymmword ptr [rcx+60],ymm0
add rsp,108
ret
; Total bytes of code 192 DocsProfiling workflow for dotnet/runtime repository Run Information
Improvements in StoreBlock.AnyLocation
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'StoreBlock.AnyLocation*' PayloadsHistogramStoreBlock.AnyLocation.CopyBlock128
Description of detection logic
Compare Jit Disasm; StoreBlock.AnyLocation.CopyBlock128()
sub rsp,28
vzeroupper
xor eax,eax
M00_L00:
mov rdx,[rcx+10]
cmp eax,[rdx+8]
jae short M00_L01
mov r8d,eax
lea rdx,[rdx+r8+10]
mov r9,[rcx+8]
cmp eax,[r9+8]
jae short M00_L01
lea r8,[r9+r8+10]
vmovdqu ymm0,ymmword ptr [r8]
vmovdqu ymmword ptr [rdx],ymm0
vmovdqu ymm0,ymmword ptr [r8+20]
vmovdqu ymmword ptr [rdx+20],ymm0
vmovdqu ymm0,ymmword ptr [r8+40]
vmovdqu ymmword ptr [rdx+40],ymm0
vmovdqu ymm0,ymmword ptr [r8+60]
vmovdqu ymmword ptr [rdx+60],ymm0
add eax,80
cmp eax,1000
jl short M00_L00
add rsp,28
ret
M00_L01:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 106 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Improvements in System.Tests.Perf_Single
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Single*' PayloadsHistogramSystem.Tests.Perf_Single.TryParse(value: "3.4028235E+38")
Description of detection logic
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFBEE6D4EC8
mov edx,254
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,1FE23800470
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,1FE23800450
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,23EB8237408
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFBEE899030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFBEE76D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,328BE52BE078
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FFBEE89DEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FFBEEBE1810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FFBEE94B750]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FFBEE94B780]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE773498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE773498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FFBEE94B750]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FFBEE94B750]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,328BE52BE078
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FFBEE94B750]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FFBEE94B780]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE773498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FFBEE94B750]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE773498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,328BE52BE078
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FFBEE94B750]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FFBEE89F060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,328BE52BE078
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FFBEE94B750]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FFBEE94B750]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FFBEE94B750]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FFBEEABF4E0]
int 3
M02_L65:
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FFBEE94B780]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FFBEE94B780]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 Compare Jit Disasm; System.Tests.Perf_Single.TryParse(System.String)
sub rsp,38
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+20],xmm4
xor eax,eax
mov [rsp+30],rax
test rdx,rdx
jne short M00_L00
xor edx,edx
mov [rsp+34],edx
xor eax,eax
jmp short M00_L01
M00_L00:
lea rax,[rdx+0C]
mov edx,[rdx+8]
mov [rsp+20],rax
mov [rsp+28],edx
call qword ptr [7FFA8497F288]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov r8,rax
lea rcx,[rsp+20]
lea r9,[rsp+34]
mov edx,0E7
call qword ptr [7FFA8478DEA0]; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
M00_L01:
nop
add rsp,38
ret
; Total bytes of code 88 ; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFA845C4F20
mov edx,253
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,1A727000460
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,1A727000440
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,1E7BB927390
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFA84789030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFA8465D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,77702B8F57BA
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FFA8478DEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FFA84AD3810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FFA8488BA38]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FFA8488BA68]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84663498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84663498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FFA8488BA38]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FFA8488BA38]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,77702B8F57BA
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FFA8488BA38]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FFA8488BA68]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84663498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FFA8488BA38]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84663498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,77702B8F57BA
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FFA8488BA38]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FFA8478F060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,77702B8F57BA
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FFA8488BA38]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FFA8488BA38]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FFA8488BA38]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FFA849C1060]
int 3
M02_L65:
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FFA8488BA68]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FFA8488BA68]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 System.Tests.Perf_Single.TryParse(value: "-3.4028235E+38")
Description of detection logic
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFBEE6E4EC8
mov edx,254
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,1F370800470
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,1F370800450
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,234051A7408
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFBEE8A9030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFBEE77D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,6C6990FA9810
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FFBEE8ADEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FFBEEBF1810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FFBEE95B750]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FFBEE95B780]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE783498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE783498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FFBEE95B750]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FFBEE95B750]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,6C6990FA9810
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FFBEE95B750]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FFBEE95B780]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE783498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FFBEE95B750]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFBEE783498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,6C6990FA9810
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FFBEE95B750]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FFBEE8AF060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,6C6990FA9810
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FFBEE95B750]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FFBEE95B750]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FFBEE95B750]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FFBEEACF4E0]
int 3
M02_L65:
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FFBEE95B780]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FFBEE95B780]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 Compare Jit Disasm; System.Tests.Perf_Single.TryParse(System.String)
sub rsp,38
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+20],xmm4
xor eax,eax
mov [rsp+30],rax
test rdx,rdx
jne short M00_L00
xor edx,edx
mov [rsp+34],edx
xor eax,eax
jmp short M00_L01
M00_L00:
lea rax,[rdx+0C]
mov edx,[rdx+8]
mov [rsp+20],rax
mov [rsp+28],edx
call qword ptr [7FFA8499F288]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov r8,rax
lea rcx,[rsp+20]
lea r9,[rsp+34]
mov edx,0E7
call qword ptr [7FFA847ADEA0]; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
M00_L01:
nop
add rsp,38
ret
; Total bytes of code 88 ; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFA845E4F20
mov edx,253
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,29E3D800460
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,29E3D800440
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,2DED2317390
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFA847A9030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFA8467D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,0CB3E49414B56
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FFA847ADEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FFA84AF3810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FFA848ABA38]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FFA848ABA68]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84683498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84683498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FFA848ABA38]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FFA848ABA38]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,0CB3E49414B56
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FFA848ABA38]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FFA848ABA68]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84683498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FFA848ABA38]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84683498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,0CB3E49414B56
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FFA848ABA38]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FFA847AF060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,0CB3E49414B56
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FFA848ABA38]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FFA848ABA38]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FFA848ABA38]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FFA849E1060]
int 3
M02_L65:
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FFA848ABA68]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FFA848ABA68]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 System.Tests.Perf_Single.Parse(value: "-3.4028235E+38")
Description of detection logic
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFA845D4EC8
mov edx,254
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,225B6000470
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,225B6000450
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,2664A937408
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFA84799030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFA8466D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,0F95CA3816F4E
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FFA8479DEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FFA84AE1810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FFA8484B750]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FFA8484B780]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84673498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84673498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FFA8484B750]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FFA8484B750]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,0F95CA3816F4E
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FFA8484B750]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FFA8484B780]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84673498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FFA8484B750]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FFA84673498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,0F95CA3816F4E
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FFA8484B750]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FFA8479F060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,0F95CA3816F4E
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FFA8484B750]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FFA8484B750]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FFA8484B750]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FFA8484B780]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FFA8484B780]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FFA8484B780]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FFA849BF4E0]
int 3
M02_L65:
call qword ptr [7FFA8484B780]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FFA8484B780]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FFA8484B780]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FFA8484B780]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 Compare Jit Disasm; System.Tests.Perf_Single.Parse(System.String)
push rdi
push rsi
sub rsp,38
vzeroupper
xor eax,eax
mov [rsp+20],rax
test rdx,rdx
je short M00_L00
lea rsi,[rdx+0C]
mov edi,[rdx+8]
mov [rsp+20],rsi
mov [rsp+28],edi
call qword ptr [7FF8D843F288]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov r8,rax
lea rcx,[rsp+20]
lea r9,[rsp+34]
mov edx,0E7
call qword ptr [7FF8D824DEA0]; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
test eax,eax
je short M00_L01
vmovss xmm0,dword ptr [rsp+34]
add rsp,38
pop rsi
pop rdi
ret
M00_L00:
mov ecx,11
call qword ptr [7FF8D8481378]
int 3
M00_L01:
mov [rsp+20],rsi
mov [rsp+28],edi
lea rdx,[rsp+20]
mov ecx,1
xor r8d,r8d
call qword ptr [7FF8D824DF60]
int 3
; Total bytes of code 125 ; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FF8D8084F20
mov edx,253
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,216D0C00460
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,216D0C00440
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,257655C7390
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FF8D8249030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FF8D811D8B8]
int 3
; Total bytes of code 157 ; System.Number.TryParseSingle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Single ByRef)
push rbp
push rdi
push rsi
push rbx
sub rsp,78
vzeroupper
lea rbp,[rsp+20]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,870CB9B05DA1
mov [rbp],rax
mov rdi,rcx
mov rsi,r8
mov rbx,r9
test [rsp],esp
sub rsp,80
lea rcx,[rsp+20]
mov byte ptr [rbp+42],3
mov [rbp+48],rcx
mov dword ptr [rbp+50],72
lea rcx,[rbp+48]
cmp dword ptr [rcx+8],0
jbe near ptr M02_L69
mov rcx,[rcx]
mov byte ptr [rcx],0
vmovdqu xmm0,xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp+18],xmm0
lea rcx,[rbp+18]
lea r8,[rbp+38]
mov r9,rsi
call qword ptr [7FF8D824DEB8]; System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
test eax,eax
jne near ptr M02_L44
lea rcx,[rbp+28]
mov rdx,rdi
call qword ptr [7FF8D8593810]
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je near ptr M02_L55
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L00:
cmp r8d,edx
je near ptr M02_L56
M02_L01:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+68]
test r9,r9
je near ptr M02_L51
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L02:
cmp r8d,eax
je near ptr M02_L52
M02_L03:
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov r9,[rsi+58]
test r9,r9
je near ptr M02_L47
lea rdx,[r9+0C]
mov eax,[r9+8]
M02_L04:
cmp r8d,eax
je near ptr M02_L48
M02_L05:
mov rcx,[rbp+28]
mov r9d,[rbp+30]
mov r10,[rsi+20]
test r10,r10
je short M02_L08
lea rdx,[r10+0C]
mov r8d,[r10+8]
M02_L06:
cmp r8d,r9d
jg short M02_L09
cmp r8d,8
jl short M02_L07
call qword ptr [7FF8D834BA38]
mov edi,eax
jmp near ptr M02_L59
M02_L07:
call qword ptr [7FF8D834BA68]
mov edi,eax
jmp near ptr M02_L59
M02_L08:
xor edx,edx
xor r8d,r8d
jmp short M02_L06
M02_L09:
xor edi,edi
M02_L10:
test edi,edi
je near ptr M02_L24
mov rdx,[rsi+20]
mov ecx,[rdx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov r8,[rbp+28]
mov eax,ecx
lea r8,[r8+rax*2]
mov eax,[rbp+30]
sub eax,ecx
mov [rbp+28],r8
mov [rbp+30],eax
mov rcx,[rsi+60]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FF8D8123498]
test eax,eax
jne short M02_L13
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rdx,[rsi+60]
test rdx,rdx
je short M02_L12
lea rax,[rdx+0C]
mov edx,[rdx+8]
M02_L11:
cmp r8d,edx
jne short M02_L13
test edx,edx
je short M02_L16
jmp short M02_L14
M02_L12:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp short M02_L11
M02_L13:
mov rcx,[rsi+58]
mov rdx,[rsi+20]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FF8D8123498]
test eax,eax
jne short M02_L22
mov rcx,[rbp+28]
mov r8d,[rbp+30]
mov rax,[rsi+58]
test rax,rax
jne short M02_L18
jmp short M02_L17
M02_L14:
cmp r8d,8
jl near ptr M02_L60
mov rdx,rax
call qword ptr [7FF8D834BA38]
M02_L15:
test eax,eax
je short M02_L13
M02_L16:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L17:
xor edx,edx
xor eax,eax
jmp short M02_L19
M02_L18:
lea rdx,[rax+0C]
mov eax,[rax+8]
M02_L19:
cmp r8d,eax
jne short M02_L22
test eax,eax
je short M02_L21
cmp r8d,8
jl near ptr M02_L61
call qword ptr [7FF8D834BA38]
M02_L20:
test eax,eax
je short M02_L22
M02_L21:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L22:
xor eax,eax
mov [rbx],eax
mov rcx,870CB9B05DA1
cmp [rbp],rcx
je short M02_L23
call CORINFO_HELP_FAIL_FAST
M02_L23:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L24:
mov rcx,[rbp+28]
mov edx,[rbp+30]
mov r8,[rsi+28]
test r8,r8
je short M02_L27
lea rax,[r8+0C]
mov r8d,[r8+8]
M02_L25:
cmp r8d,edx
jg short M02_L28
cmp r8d,8
jl short M02_L26
mov rdx,rax
call qword ptr [7FF8D834BA38]
mov edi,eax
jmp near ptr M02_L62
M02_L26:
mov rdx,rax
call qword ptr [7FF8D834BA68]
mov edi,eax
jmp near ptr M02_L62
M02_L27:
xor eax,eax
xor r8d,r8d
jmp short M02_L25
M02_L28:
xor edi,edi
M02_L29:
test edi,edi
je short M02_L32
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FF8D8123498]
test eax,eax
jne short M02_L32
mov rcx,[rsi+28]
mov ecx,[rcx+8]
cmp ecx,[rbp+30]
ja near ptr M02_L64
mov rdx,[rbp+28]
mov r8d,ecx
lea rax,[rdx+r8*2]
mov r8d,[rbp+30]
sub r8d,ecx
mov rcx,[rsi+58]
test rcx,rcx
je short M02_L31
lea rdx,[rcx+0C]
mov r9d,[rcx+8]
M02_L30:
mov rcx,rax
cmp r8d,r9d
jne short M02_L32
test r9d,r9d
je short M02_L35
jmp short M02_L33
M02_L31:
xor edx,edx
xor r9d,r9d
jmp short M02_L30
M02_L32:
cmp byte ptr [rsi+0BE],0
je near ptr M02_L39
mov rcx,[rbp+28]
mov edx,[rbp+30]
test edx,edx
je near ptr M02_L39
test edx,edx
je near ptr M02_L69
cmp word ptr [rcx],2D
jne near ptr M02_L39
jmp short M02_L36
M02_L33:
cmp r8d,8
jl near ptr M02_L63
call qword ptr [7FF8D834BA38]
M02_L34:
test eax,eax
je short M02_L32
M02_L35:
mov dword ptr [rbx],0FFC00000
jmp near ptr M02_L45
M02_L36:
mov rcx,[rsi+58]
mov rdx,[rsi+28]
mov r8d,5
cmp [rcx],ecx
call qword ptr [7FF8D8123498]
test eax,eax
jne short M02_L39
mov rax,[rsi+58]
mov rcx,rax
cmp word ptr [rcx+0C],2D
je short M02_L39
cmp dword ptr [rbp+30],1
jb near ptr M02_L64
mov rcx,[rbp+28]
add rcx,2
mov r8d,[rbp+30]
dec r8d
test rax,rax
je short M02_L38
lea rdx,[rax+0C]
mov r9d,[rax+8]
M02_L37:
cmp r8d,r9d
jne short M02_L39
test r9d,r9d
je short M02_L43
jmp short M02_L41
M02_L38:
xor edx,edx
xor r9d,r9d
jmp short M02_L37
M02_L39:
xor eax,eax
mov [rbx],eax
mov rcx,870CB9B05DA1
cmp [rbp],rcx
je short M02_L40
call CORINFO_HELP_FAIL_FAST
M02_L40:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L41:
cmp r8d,8
jl near ptr M02_L65
call qword ptr [7FF8D834BA38]
M02_L42:
test eax,eax
je short M02_L39
M02_L43:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L44:
lea rcx,[rbp+38]
call qword ptr [7FF8D824F060]; System.Number.NumberToSingle(NumberBuffer ByRef)
vmovss dword ptr [rbx],xmm0
M02_L45:
mov eax,1
mov rcx,870CB9B05DA1
cmp [rbp],rcx
je short M02_L46
call CORINFO_HELP_FAIL_FAST
M02_L46:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop rbp
ret
M02_L47:
xor edx,edx
xor eax,eax
jmp near ptr M02_L04
M02_L48:
test eax,eax
je short M02_L50
cmp r8d,8
jl near ptr M02_L66
call qword ptr [7FF8D834BA38]
M02_L49:
test eax,eax
je near ptr M02_L05
M02_L50:
mov dword ptr [rbx],0FFC00000
jmp short M02_L45
M02_L51:
xor edx,edx
xor eax,eax
jmp near ptr M02_L02
M02_L52:
test eax,eax
je short M02_L54
cmp r8d,8
jl near ptr M02_L67
call qword ptr [7FF8D834BA38]
M02_L53:
test eax,eax
je near ptr M02_L03
M02_L54:
mov dword ptr [rbx],0FF800000
jmp short M02_L45
M02_L55:
xor edx,edx
xor eax,eax
mov r9d,eax
mov rax,rdx
mov edx,r9d
jmp near ptr M02_L00
M02_L56:
test edx,edx
je short M02_L58
cmp r8d,8
jl short M02_L68
mov rdx,rax
call qword ptr [7FF8D834BA38]
M02_L57:
test eax,eax
je near ptr M02_L01
M02_L58:
mov dword ptr [rbx],7F800000
jmp near ptr M02_L45
M02_L59:
jmp near ptr M02_L10
M02_L60:
mov rdx,rax
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L15
M02_L61:
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L20
M02_L62:
jmp near ptr M02_L29
M02_L63:
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L34
M02_L64:
call qword ptr [7FF8D8481060]
int 3
M02_L65:
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L42
M02_L66:
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L49
M02_L67:
call qword ptr [7FF8D834BA68]
jmp near ptr M02_L53
M02_L68:
mov rdx,rax
call qword ptr [7FF8D834BA68]
jmp short M02_L57
M02_L69:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1356 DocsProfiling workflow for dotnet/runtime repository |
No description provided.
The text was updated successfully, but these errors were encountered: