Untitled diff
139 lines
; System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyCore[[System.Int32, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Negate, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Default, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+IndexOfAnyResultMapper`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int32, AsciiState ByRef)
; System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyCore[[System.Int32, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Negate, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Default, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+IndexOfAnyResultMapper`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int32, AsciiState ByRef)
       push      rbp
       push      rbp
       push      r15
       push      rbx
       sub       rsp,10
       vzeroupper
       vzeroupper
       mov       rbp,rsp
       lea       rbp,[rsp+20]
       mov       rax,rdi
       mov       r15,rdi
       cmp       esi,8
       mov       ebx,esi
       jl        near ptr M01_L02
       mov       rsi,r15
       cmp       esi,10
       cmp       ebx,8
       jle       near ptr M01_L09
       jl        near ptr M01_L03
       vmovups   ymm0,[rdx]
       cmp       ebx,10
       cmp       esi,20
       jle       near ptr M01_L13
       jle       near ptr M01_L07
       cmp       ebx,20
       lea       edx,[rsi-20]
       jle       near ptr M01_L11
       movsxd    rcx,edx
       vmovups   zmm0,[rdx]
       lea       rcx,[rax+rcx*2]
       cmp       ebx,40
       vmovups   ymm1,[7F07F6763780]
       jg        near ptr M01_L07
M01_L00:
M01_L00:
       vmovups   ymm2,[rax]
       add       ebx,0FFFFFFE0
       vpackuswb ymm2,ymm2,[rax+20]
       movsxd    rax,ebx
       vpshufb   ymm3,ymm0,ymm2
       lea       rax,[r15+rax*2]
       vpsrld    ymm2,ymm2,4
       cmp       rsi,rax
       vpand     ymm2,ymm2,ymm1
       cmova     rsi,rax
       vmovups   ymm4,[7F07F67637A0]
       vmovups   zmm1,[rsi]
       vpshufb   ymm2,ymm4,ymm2
       vpackuswb zmm1,zmm1,[rax]
       vpand     ymm2,ymm3,ymm2
       vpshufb   zmm0,zmm0,zmm1
       vxorps    ymm3,ymm3,ymm3
       vpsrld    zmm1,zmm1,4
       vpcmpeqb  ymm2,ymm2,ymm3
       vpandd    zmm1,zmm1,[7FEE32B34200]
       vptest    ymm2,ymm2
       vmovups   zmm2,[7FEE32B34240]
       je        short M01_L06
       vpshufb   zmm1,zmm2,zmm1
       sub       rax,rdi
       vpandd    zmm0,zmm0,zmm1
       shr       rax,1
       vptestnmb k1,zmm0,zmm0
       vpermq    ymm1,ymm2,0D8
       vpmovm2b  zmm0,k1
       vpmovmskb esi,ymm1
       vptestmb  k1,zmm0,zmm0
       kortestq  k1,k1
       je        near ptr M01_L15
       vmovups   zmm1,[7FEE32B34280]
       vpermq    zmm0,zmm1,zmm0
       vpmovb2m  k1,zmm0
       kmovq     rdx,k1
       xor       edi,edi
       xor       edi,edi
       tzcnt     edi,esi
       tzcnt     rdi,rdx
       add       eax,edi
       cmp       edi,20
       jge       near ptr M01_L10
M01_L01:
M01_L01:
       sub       rsi,r15
       shr       rsi,1
       lea       eax,[rsi+rdi]
M01_L02:
       vzeroupper
       vzeroupper
       add       rsp,10
       pop       rbx
       pop       r15
       pop       rbp
       pop       rbp
       ret
       ret
M01_L02:
       movsxd    rcx,esi
       lea       rsi,[rax+rcx*2]
       jmp       short M01_L04
M01_L03:
M01_L03:
       movzx     ecx,word ptr [rax]
       movsxd    rax,ebx
       lea       rdi,[rsi+rax*2]
       jmp       short M01_L05
M01_L04:
       movzx     eax,word ptr [rsi]
       cmp       [rdx],dl
       cmp       [rdx],dl
       lea       r8,[rdx+20]
       lea       rcx,[rdx+40]
       cmp       ecx,80
       cmp       eax,80
       jge       short M01_L05
       jge       short M01_L06
       mov       r9d,ecx
       mov       r8d,eax
       sar       r9d,5
       sar       r8d,5
       mov       r8d,[r8+r9*4]
       mov       ecx,[rcx+r8*4]
       bt        r8d,ecx
       bt        ecx,eax
       setb      cl
       setb      al
       movzx     ecx,cl
       movzx     eax,al
       test      ecx,ecx
       test      eax,eax
       je        short M01_L05
       je        short M01_L06
       add       rax,2
       add       rsi,2
M01_L04:
       cmp       rax,rsi
       jne       short M01_L03
       jmp       near ptr M01_L11
M01_L05:
M01_L05:
       sub       rax,rdi
       cmp       rsi,rdi
       jne       short M01_L04
       jmp       near ptr M01_L15
M01_L06:
       mov       rax,rsi
       sub       rax,r15
       shr       rax,1
       shr       rax,1
       jmp       short M01_L01
       jmp       short M01_L02
M01_L06:
       add       rax,40
       cmp       rax,rcx
       jb        near ptr M01_L00
M01_L07:
M01_L07:
       add       esi,0FFFFFFF0
       lea       eax,[rbx-40]
       movsxd    rdx,esi
       movsxd    rdx,eax
       lea       rcx,[rdi+rdx*2]
       lea       rdi,[rsi+rdx*2]
       cmp       rax,rcx
M01_L08:
       cmova     rax,rcx
       vmovups   zmm1,[rsi]
       vmovups   ymm1,[rax]
       vpackuswb zmm1,zmm1,[rsi+40]
       vpackuswb ymm1,ymm1,[rcx]
       vpshufb   zmm2,zmm0,zmm1
       vpsrld    zmm1,zmm1,4
       vpandd    zmm1,zmm1,[7FEE32B34200]
       vmovups   zmm3,[7FEE32B34240]
       vpshufb   zmm1,zmm3,zmm1
       vpandd    zmm1,zmm2,zmm1
       vptestnmb k1,zmm1,zmm1
       vpmovm2b  zmm1,k1
       vptestmb  k1,zmm1,zmm1
       kortestq  k1,k1
       jne       short M01_L09
       add       rsi,80
       cmp       rsi,rdi
       jb        short M01_L08
       jmp       near ptr M01_L00
M01_L09:
       mov       rax,rsi
       sub       rax,r15
       shr       rax,1
       vmovups   zmm0,[7FEE32B34280]
       vpermq    zmm0,zmm0,zmm1
       vpmovb2m  k1,zmm0
       kmovq     rsi,k1
       tzcnt     rsi,rsi
       add       eax,esi
       jmp       near ptr M01_L02
M01_L10:
       mov       rsi,rax
       add       edi,0FFFFFFE0
       jmp       near ptr M01_L01
M01_L11:
       vmovups   ymm0,[rdx]
       lea       esi,[rbx-10]
       movsxd    rsi,esi
       lea       rax,[r15+rsi*2]
       cmp       r15,rax
       mov       rsi,r15
       cmova     rsi,rax
       vmovups   ymm1,[rsi]
       vpackuswb ymm1,ymm1,[rax]
       vpshufb   ymm0,ymm0,ymm1
       vpshufb   ymm0,ymm0,ymm1
       vpsrld    ymm1,ymm1,4
       vpsrld    ymm1,ymm1,4
       vmovups   ymm2,[7F07F6763780]
       vpand     ymm1,ymm1,[7FEE32B34200]
       vpand     ymm1,ymm1,ymm2
       vmovups   ymm2,[7FEE32B34240]
       vmovups   ymm2,[7F07F67637A0]
       vpshufb   ymm1,ymm2,ymm1
       vpshufb   ymm1,ymm2,ymm1
       vpand     ymm0,ymm0,ymm1
       vpand     ymm0,ymm0,ymm1
       vxorps    ymm1,ymm1,ymm1
       vxorps    ymm1,ymm1,ymm1
       vpcmpeqb  ymm0,ymm0,ymm1
       vpcmpeqb  ymm0,ymm0,ymm1
       vptest    ymm0,ymm0
       vptest    ymm0,ymm0
       je        near ptr M01_L11
       je        near ptr M01_L15
       vpermq    ymm0,ymm0,0D8
       vpermq    ymm0,ymm0,0D8
       vpmovmskb edx,ymm0
       vpmovmskb edx,ymm0
       tzcnt     edx,edx
       xor       edi,edi
       cmp       edx,10
       tzcnt     edi,edx
       jl        short M01_L08
       cmp       edi,10
       mov       rax,rcx
       jl        short M01_L12
       add       edx,0FFFFFFF0
       mov       rsi,rax
M01_L08:
       add       edi,0FFFFFFF0
       sub       rax,rdi
M01_L12:
       shr       rax,1
       sub       rsi,r15
       add       eax,edx
       shr       rsi,1
       jmp       near ptr M01_L01
       lea       eax,[rsi+rdi]
M01_L09:
       jmp       near ptr M01_L02
       vmovups   xmm0,[rdx]
M01_L13:
       lea       eax,[rsi-8]
       lea       rsi,[rbp-20]
       mov       rdi,rdx
       call      qword ptr [7FEE32E45DD0]; System.Buffers.IndexOfAnyAsciiSearcher+AsciiState.get_Bitmap128()
       lea       eax,[rbx-8]
       cdqe
       cdqe
       lea       rax,[rdi+rax*2]
       lea       rax,[r15+rax*2]
       cmp       rdi,rax
       cmp       r15,rax
       mov       rcx,rdi
       mov       rcx,r15
       cmova     rcx,rax
       cmova     rcx,rax
       vmovups   xmm1,[rcx]
       vmovups   xmm0,[rcx]
       vpackuswb xmm1,xmm1,[rax]
       vpackuswb xmm0,xmm0,[rax]
       vpshufb   xmm0,xmm0,xmm1
       vmovaps   xmm1,[rbp-20]
       vpsrld    xmm1,xmm1,4
       vpshufb   xmm1,xmm1,xmm0
       vpand     xmm1,xmm1,[7F07F6763780]
       vpsrld    xmm0,xmm0,4
       vmovups   xmm2,[7F07F67637C0]
       vpand     xmm0,xmm0,[7FEE32B34200]
       vpshufb   xmm1,xmm2,xmm1
       vmovups   xmm2,[7FEE32B342C0]
       vpand     xmm0,xmm0,xmm1
       vpshufb   xmm0,xmm2,xmm0
       vpand     xmm0,xmm1,xmm0
       vxorps    xmm1,xmm1,xmm1
       vxorps    xmm1,xmm1,xmm1
       vpcmpeqb  xmm0,xmm0,xmm1
       vpcmpeqb  xmm0,xmm0,xmm1
       vptest    xmm0,xmm0
       vptest    xmm0,xmm0
       je        short M01_L11
       je        short M01_L15
       vpmovmskb edx,xmm0
       vpmovmskb edx,xmm0
       tzcnt     edx,edx
       tzcnt     edx,edx
       cmp       edx,8
       cmp       edx,8
       jl        short M01_L10
       jl        short M01_L14
       mov       rcx,rax
       mov       rcx,rax
       add       edx,0FFFFFFF8
       add       edx,0FFFFFFF8
M01_L10:
M01_L14:
       sub       rcx,rdi
       sub       rcx,r15
       shr       rcx,1
       shr       rcx,1
       lea       eax,[rcx+rdx]
       lea       eax,[rcx+rdx]
       jmp       near ptr M01_L01
       jmp       near ptr M01_L02
M01_L11:
M01_L15:
       mov       eax,0FFFFFFFF
       mov       eax,0FFFFFFFF
       vzeroupper
       vzeroupper
       add       rsp,10
       pop       rbx
       pop       r15
       pop       rbp
       pop       rbp
       ret
       ret
; Total bytes of code 474
; Total bytes of code 748