4 values
44 lines
; StringSearcher.Benchmark.Contains()
; StringSearcher.Benchmark.Contains()
push rdi
push rdi
push rsi
push rsi
push rax
push rbx
sub rsp,10
xor eax,eax
xor eax,eax
mov rdx,[rcx+30]
mov rdx,[rcx+30]
xor ecx,ecx
xor ecx,ecx
mov r8d,[rdx+8]
mov r8d,[rdx+8]
test r8d,r8d
test r8d,r8d
jle short M00_L03
jle near ptr M00_L02
mov r9,24D46405F48
mov r9,233B3805F48
mov r9,[r9]
mov r9,[r9]
M00_L00:
M00_L00:
mov r10d,ecx
mov r10d,ecx
movzx r10d,word ptr [rdx+r10*2+10]
movzx r10d,word ptr [rdx+r10*2+10]
mov r11,r9
mov r11,r9
mov [rsp+4],r10d
mov [rsp+0C],r10d
movsx r10,word ptr [rsp+4]
movsx r10,word ptr [rsp+0C]
mov esi,r10d
mov esi,r10d
movsx rdi,word ptr [r11+8]
movsx rdi,word ptr [r11+8]
cmp esi,edi
cmp esi,edi
je short M00_L01
sete sil
mov esi,r10d
movzx esi,sil
movsx rdi,word ptr [r11+0A]
mov edi,r10d
cmp esi,edi
movsx rbx,word ptr [r11+0A]
je short M00_L01
cmp edi,ebx
mov esi,r10d
sete dil
movsx rdi,word ptr [r11+0C]
movzx edi,dil
cmp esi,edi
or esi,edi
je short M00_L01
mov edi,r10d
movsx rbx,word ptr [r11+0C]
cmp edi,ebx
sete dil
movzx edi,dil
or esi,edi
movsx r11,word ptr [r11+0E]
movsx r11,word ptr [r11+0E]
cmp r10d,r11d
cmp r10d,r11d
jne short M00_L02
sete r10b
M00_L01:
movzx r10d,r10b
or r10b,sil
je short M00_L01
inc eax
inc eax
M00_L02:
M00_L01:
inc ecx
inc ecx
cmp r8d,ecx
cmp r8d,ecx
jg short M00_L00
jg short M00_L00
M00_L03:
M00_L02:
add rsp,8
add rsp,10
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret