Created
March 5, 2020 01:02
-
-
Save Cyan4973/6266189692549d2fa9deab7cc086ccfb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "xxhash.c" | |
.intel_syntax noprefix | |
.text | |
.p2align 4 | |
.def XXH64_finalize; .scl 3; .type 32; .endef | |
.seh_proc XXH64_finalize | |
XXH64_finalize: | |
.seh_endprologue | |
lea r9, .L4[rip] | |
and r8d, 31 | |
movsx rax, DWORD PTR [r9+r8*4] | |
add rax, r9 | |
jmp rax | |
.section .rdata,"dr" | |
.align 4 | |
.L4: | |
.long .L2-.L4 | |
.long .L34-.L4 | |
.long .L36-.L4 | |
.long .L32-.L4 | |
.long .L31-.L4 | |
.long .L30-.L4 | |
.long .L29-.L4 | |
.long .L28-.L4 | |
.long .L27-.L4 | |
.long .L26-.L4 | |
.long .L25-.L4 | |
.long .L24-.L4 | |
.long .L23-.L4 | |
.long .L22-.L4 | |
.long .L21-.L4 | |
.long .L20-.L4 | |
.long .L19-.L4 | |
.long .L18-.L4 | |
.long .L17-.L4 | |
.long .L16-.L4 | |
.long .L15-.L4 | |
.long .L14-.L4 | |
.long .L13-.L4 | |
.long .L12-.L4 | |
.long .L11-.L4 | |
.long .L10-.L4 | |
.long .L9-.L4 | |
.long .L8-.L4 | |
.long .L7-.L4 | |
.long .L6-.L4 | |
.long .L5-.L4 | |
.long .L3-.L4 | |
.text | |
.p2align 4,,10 | |
.p2align 3 | |
.L3: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L12: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L20: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L28: | |
movabs r8, -7046029288634856825 | |
mov eax, DWORD PTR [rdx] | |
add rdx, 4 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -4417276706812531889 | |
rol rax, 23 | |
imul rax, rcx | |
movabs rcx, 1609587929392839161 | |
add rcx, rax | |
.L32: | |
movzx eax, BYTE PTR [rdx] | |
lea r8, 1[rdx] | |
movabs rdx, 2870177450012600261 | |
imul rax, rdx | |
xor rax, rcx | |
movabs rcx, -7046029288634856825 | |
rol rax, 11 | |
imul rcx, rax | |
.L33: | |
movzx eax, BYTE PTR [r8] | |
lea rdx, 1[r8] | |
movabs r8, 2870177450012600261 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -7046029288634856825 | |
rol rax, 11 | |
imul rcx, rax | |
.L34: | |
movzx eax, BYTE PTR [rdx] | |
movabs rdx, 2870177450012600261 | |
imul rax, rdx | |
xor rax, rcx | |
movabs rcx, -7046029288634856825 | |
rol rax, 11 | |
imul rcx, rax | |
.L2: | |
movabs rdx, 1609587929392839161 | |
mov rax, rcx | |
shr rax, 33 | |
xor rax, rcx | |
movabs rcx, -4417276706812531889 | |
imul rax, rcx | |
mov rcx, rax | |
shr rcx, 29 | |
xor rax, rcx | |
imul rax, rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L5: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L13: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L21: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L29: | |
mov eax, DWORD PTR [rdx] | |
movzx r8d, BYTE PTR 4[rdx] | |
movabs r9, -7046029288634856825 | |
movabs r11, 2870177450012600261 | |
movabs r10, 1609587929392839161 | |
imul rax, r9 | |
imul r8, r11 | |
xor rcx, rax | |
movabs rax, -4417276706812531889 | |
rol rcx, 23 | |
imul rcx, rax | |
add rcx, r10 | |
xor rcx, r8 | |
rol rcx, 11 | |
imul rcx, r9 | |
mov r8, rcx | |
movzx ecx, BYTE PTR 5[rdx] | |
imul rcx, r11 | |
xor rcx, r8 | |
rol rcx, 11 | |
imul rcx, r9 | |
mov rdx, rcx | |
shr rdx, 33 | |
xor rdx, rcx | |
imul rdx, rax | |
mov rax, rdx | |
shr rax, 29 | |
xor rax, rdx | |
imul rax, r10 | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L7: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L15: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L23: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L31: | |
movabs r8, 1609587929392839161 | |
mov eax, DWORD PTR [rdx] | |
movabs rdx, -7046029288634856825 | |
imul rax, rdx | |
xor rcx, rax | |
movabs rax, -4417276706812531889 | |
rol rcx, 23 | |
imul rcx, rax | |
add rcx, r8 | |
mov rdx, rcx | |
.L39: | |
shr rdx, 33 | |
xor rdx, rcx | |
imul rdx, rax | |
mov rax, rdx | |
shr rax, 29 | |
xor rax, rdx | |
imul rax, r8 | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L6: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L14: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L22: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L30: | |
movabs r9, -7046029288634856825 | |
mov eax, DWORD PTR [rdx] | |
movzx edx, BYTE PTR 4[rdx] | |
movabs r10, 2870177450012600261 | |
movabs r8, 1609587929392839161 | |
imul rax, r9 | |
imul rdx, r10 | |
xor rcx, rax | |
movabs rax, -4417276706812531889 | |
rol rcx, 23 | |
imul rcx, rax | |
add rcx, r8 | |
xor rcx, rdx | |
mov rdx, rcx | |
rol rdx, 11 | |
imul rdx, r9 | |
mov rcx, rdx | |
jmp .L39 | |
.p2align 4,,10 | |
.p2align 3 | |
.L11: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L19: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L27: | |
movabs r8, -4417276706812531889 | |
mov rax, QWORD PTR [rdx] | |
imul rax, r8 | |
mov rdx, rax | |
movabs rax, -7046029288634856825 | |
rol rdx, 31 | |
imul rdx, rax | |
xor rdx, rcx | |
rol rdx, 27 | |
imul rdx, rax | |
movabs rax, -8796714831421723037 | |
add rdx, rax | |
mov rax, rdx | |
shr rax, 33 | |
xor rax, rdx | |
.L38: | |
imul rax, r8 | |
mov rdx, rax | |
shr rdx, 29 | |
xor rax, rdx | |
movabs rdx, 1609587929392839161 | |
imul rax, rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L10: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L18: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L26: | |
movabs r8, -4417276706812531889 | |
mov rax, QWORD PTR [rdx] | |
movabs r9, -7046029288634856825 | |
movzx edx, BYTE PTR 8[rdx] | |
imul rax, r8 | |
rol rax, 31 | |
imul rax, r9 | |
xor rcx, rax | |
movabs rax, -8796714831421723037 | |
rol rcx, 27 | |
imul rcx, r9 | |
add rcx, rax | |
movabs rax, 2870177450012600261 | |
imul rdx, rax | |
xor rcx, rdx | |
rol rcx, 11 | |
imul rcx, r9 | |
mov rax, rcx | |
shr rax, 33 | |
xor rax, rcx | |
jmp .L38 | |
.p2align 4,,10 | |
.p2align 3 | |
.L9: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L17: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L25: | |
movabs r8, -4417276706812531889 | |
mov rax, QWORD PTR [rdx] | |
movabs r9, -7046029288634856825 | |
movabs r10, 2870177450012600261 | |
imul rax, r8 | |
rol rax, 31 | |
imul rax, r9 | |
xor rcx, rax | |
movabs rax, -8796714831421723037 | |
rol rcx, 27 | |
imul rcx, r9 | |
add rcx, rax | |
movzx eax, BYTE PTR 8[rdx] | |
movzx edx, BYTE PTR 9[rdx] | |
imul rax, r10 | |
xor rax, rcx | |
rol rax, 11 | |
imul rax, r9 | |
.L40: | |
imul rdx, r10 | |
xor rdx, rax | |
mov rax, rdx | |
rol rax, 11 | |
imul rax, r9 | |
mov rdx, rax | |
shr rax, 33 | |
xor rax, rdx | |
jmp .L38 | |
.p2align 4,,10 | |
.p2align 3 | |
.L8: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L16: | |
movabs rax, -4417276706812531889 | |
imul rax, QWORD PTR [rdx] | |
add rdx, 8 | |
movabs r8, -7046029288634856825 | |
rol rax, 31 | |
imul rax, r8 | |
xor rax, rcx | |
movabs rcx, -8796714831421723037 | |
rol rax, 27 | |
imul rax, r8 | |
add rcx, rax | |
.L24: | |
movabs r8, -4417276706812531889 | |
mov rax, QWORD PTR [rdx] | |
movabs r9, -7046029288634856825 | |
movabs r10, 2870177450012600261 | |
imul rax, r8 | |
rol rax, 31 | |
imul rax, r9 | |
xor rcx, rax | |
movabs rax, -8796714831421723037 | |
rol rcx, 27 | |
imul rcx, r9 | |
add rcx, rax | |
movzx eax, BYTE PTR 8[rdx] | |
imul rax, r10 | |
xor rcx, rax | |
mov rax, rcx | |
rol rax, 11 | |
imul rax, r9 | |
mov rcx, rax | |
movzx eax, BYTE PTR 9[rdx] | |
movzx edx, BYTE PTR 10[rdx] | |
imul rax, r10 | |
xor rax, rcx | |
rol rax, 11 | |
imul rax, r9 | |
jmp .L40 | |
.p2align 4,,10 | |
.p2align 3 | |
.L36: | |
mov r8, rdx | |
jmp .L33 | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_mergeAccs; .scl 3; .type 32; .endef | |
.seh_proc XXH3_mergeAccs | |
XXH3_mergeAccs: | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
.seh_endprologue | |
mov rax, QWORD PTR 8[rcx] | |
mov r10, QWORD PTR 16[rcx] | |
mov r9, rdx | |
mov rdx, QWORD PTR [rcx] | |
mov rdi, QWORD PTR [r9] | |
xor rax, QWORD PTR 8[r9] | |
mov rsi, rax | |
xor r10, QWORD PTR 16[r9] | |
xor rdi, rdx | |
mov rax, rdi | |
mul rsi | |
mov rsi, rax | |
mov rax, QWORD PTR 24[rcx] | |
xor rax, QWORD PTR 24[r9] | |
mov rdi, rdx | |
mul r10 | |
mov r11, rdx | |
mov r10, rax | |
mov rdx, rdi | |
mov rax, r11 | |
xor rdx, rsi | |
xor rax, r10 | |
add rdx, rax | |
mov rax, QWORD PTR 32[rcx] | |
xor rax, QWORD PTR 32[r9] | |
add r8, rdx | |
mov rdx, QWORD PTR 40[rcx] | |
xor rdx, QWORD PTR 40[r9] | |
mul rdx | |
xor rax, rdx | |
lea r10, [rax+r8] | |
mov r8, QWORD PTR 48[rcx] | |
mov rax, QWORD PTR 56[rcx] | |
xor r8, QWORD PTR 48[r9] | |
xor rax, QWORD PTR 56[r9] | |
mul r8 | |
mov r8, rdx | |
xor r8, rax | |
add r8, r10 | |
mov rax, r8 | |
shr rax, 37 | |
xor rax, r8 | |
movabs r8, 1609587791953885689 | |
imul rax, r8 | |
mov r8, rax | |
shr r8, 32 | |
xor rax, r8 | |
pop rsi | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_64b_defaultSecret; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_64b_defaultSecret | |
XXH3_hashLong_64b_defaultSecret: | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 152 | |
.seh_stackalloc 152 | |
vmovaps XMMWORD PTR 112[rsp], xmm6 | |
.seh_savexmm xmm6, 112 | |
vmovaps XMMWORD PTR 128[rsp], xmm7 | |
.seh_savexmm xmm7, 128 | |
.seh_endprologue | |
mov eax, 3266489917 | |
lea r10, 63[rsp] | |
mov r11, rdx | |
mov rsi, rcx | |
mov r8, rdx | |
and r10, -32 | |
shr r11, 10 | |
mov QWORD PTR [r10], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r10], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r10], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r10], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r10], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r10], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r10], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r10], rax | |
je .L44 | |
vmovdqa ymm4, YMMWORD PTR [r10] | |
vmovdqa ymm2, YMMWORD PTR 32[r10] | |
lea rbx, 384[rcx] | |
sal r11, 10 | |
vmovdqa ymm7, YMMWORD PTR .LC0[rip] | |
vmovdqa ymm5, YMMWORD PTR .LC1[rip] | |
xor r9d, r9d | |
lea rcx, kSecret[rip+160] | |
vmovdqa ymm6, YMMWORD PTR .LC2[rip] | |
.p2align 4,,10 | |
.p2align 3 | |
.L46: | |
lea rdx, [rbx+r9] | |
lea rax, kSecret[rip+32] | |
.p2align 4,,10 | |
.p2align 3 | |
.L45: | |
vmovdqu ymm3, YMMWORD PTR -32[rax] | |
vpxor ymm1, ymm3, YMMWORD PTR -384[rdx] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vmovdqu ymm3, YMMWORD PTR -8[rax] | |
add rdx, 64 | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm3, YMMWORD PTR -416[rdx] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm4, ymm1 | |
vpaddq ymm4, ymm1, YMMWORD PTR -448[rdx] | |
vpaddq ymm0, ymm2, ymm0 | |
vpaddq ymm2, ymm0, YMMWORD PTR -416[rdx] | |
cmp rcx, rax | |
jne .L45 | |
vpsrlq ymm0, ymm4, 47 | |
vpxor ymm1, ymm4, ymm7 | |
add r9, 1024 | |
vpxor ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm2, ymm6 | |
vpshufd ymm4, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm5 | |
vpmuludq ymm4, ymm4, ymm5 | |
vpsllq ymm4, ymm4, 32 | |
vpaddq ymm4, ymm1, ymm4 | |
vpsrlq ymm1, ymm2, 47 | |
vpxor ymm0, ymm0, ymm1 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm5 | |
vpmuludq ymm2, ymm2, ymm5 | |
vpsllq ymm2, ymm2, 32 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp r11, r9 | |
jne .L46 | |
vmovdqa YMMWORD PTR [r10], ymm4 | |
vmovdqa YMMWORD PTR 32[r10], ymm2 | |
.L44: | |
mov rax, r8 | |
mov rdx, r8 | |
shr rax, 6 | |
and rdx, -1024 | |
and eax, 15 | |
mov rcx, rax | |
je .L47 | |
lea rax, kSecret[rip] | |
vmovdqa ymm3, YMMWORD PTR [r10] | |
vmovdqa ymm2, YMMWORD PTR 32[r10] | |
lea rdx, 384[rsi+rdx] | |
lea rcx, [rax+rcx*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L48: | |
vmovdqu ymm6, YMMWORD PTR [rax] | |
vmovdqu ymm7, YMMWORD PTR 32[rax] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vpxor ymm1, ymm6, YMMWORD PTR -384[rdx] | |
add rdx, 64 | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm7, YMMWORD PTR -416[rdx] | |
vpaddq ymm1, ymm3, ymm1 | |
vpaddq ymm3, ymm1, YMMWORD PTR -448[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm2, ymm0 | |
vpaddq ymm2, ymm0, YMMWORD PTR -416[rdx] | |
cmp rax, rcx | |
jne .L48 | |
vmovdqa YMMWORD PTR [r10], ymm3 | |
vmovdqa YMMWORD PTR 32[r10], ymm2 | |
.L47: | |
test r8b, 63 | |
je .L49 | |
vmovdqu ymm6, YMMWORD PTR -64[rsi+r8] | |
vpxor ymm0, ymm6, YMMWORD PTR .LC3[rip] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm6, YMMWORD PTR [r10] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR [r10], ymm0 | |
vmovdqu ymm0, YMMWORD PTR -32[rsi+r8] | |
vpxor ymm1, ymm0, YMMWORD PTR .LC4[rip] | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r10] | |
vpshufd ymm2, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[r10], ymm0 | |
.L49: | |
movabs rax, -7046029288634856825 | |
lea rdx, kSecret[rip+11] | |
mov rcx, r10 | |
imul r8, rax | |
vzeroupper | |
call XXH3_mergeAccs | |
nop | |
vmovaps xmm6, XMMWORD PTR 112[rsp] | |
vmovaps xmm7, XMMWORD PTR 128[rsp] | |
add rsp, 152 | |
pop rbx | |
pop rsi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_64b_withSecret; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_64b_withSecret | |
XXH3_hashLong_64b_withSecret: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 152 | |
.seh_stackalloc 152 | |
vmovaps XMMWORD PTR 128[rsp], xmm6 | |
.seh_savexmm xmm6, 128 | |
.seh_endprologue | |
mov eax, 3266489917 | |
mov r13, r9 | |
lea r9, 79[rsp] | |
mov rdi, rdx | |
mov rbp, rcx | |
and r9, -32 | |
lea rsi, -64[r13] | |
mov r12, r8 | |
mov QWORD PTR [r9], rax | |
shr rsi, 3 | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r9], rax | |
mov rbx, rsi | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r9], rax | |
sal rbx, 6 | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r9], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r9], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r9], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r9], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r9], rax | |
mov rax, rdx | |
xor edx, edx | |
div rbx | |
mov QWORD PTR 40[rsp], rdx | |
cmp rdi, rbx | |
jb .L63 | |
lea r14, 32[r8] | |
vmovdqa ymm6, YMMWORD PTR [r9] | |
vmovdqa ymm1, YMMWORD PTR 32[r9] | |
xor r11d, r11d | |
vmovdqa ymm3, YMMWORD PTR .LC1[rip] | |
vmovdqu ymm5, YMMWORD PTR -64[r8+r13] | |
lea r10, [r14+rsi*8] | |
lea r15, 384[rcx] | |
vmovdqu ymm4, YMMWORD PTR -32[r8+r13] | |
xor r8d, r8d | |
.p2align 4,,10 | |
.p2align 3 | |
.L66: | |
test rsi, rsi | |
je .L64 | |
lea rcx, [r15+r8] | |
mov rdx, r14 | |
.p2align 4,,10 | |
.p2align 3 | |
.L65: | |
vmovdqu ymm2, YMMWORD PTR -32[rdx] | |
vpxor ymm0, ymm2, YMMWORD PTR -384[rcx] | |
add rdx, 8 | |
prefetcht0 [rcx] | |
add rcx, 64 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm2, ymm0, ymm2 | |
vpaddq ymm0, ymm6, ymm2 | |
vmovdqu ymm2, YMMWORD PTR -8[rdx] | |
vpaddq ymm6, ymm0, YMMWORD PTR -448[rcx] | |
vpxor ymm0, ymm2, YMMWORD PTR -416[rcx] | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm1, ymm1, ymm0 | |
vpaddq ymm1, ymm1, YMMWORD PTR -416[rcx] | |
cmp r10, rdx | |
jne .L65 | |
.L64: | |
vpsrlq ymm0, ymm6, 47 | |
vpsrlq ymm2, ymm1, 47 | |
add r11, 1 | |
add r8, rbx | |
vpxor ymm0, ymm6, ymm0 | |
vpxor ymm1, ymm1, ymm2 | |
vpxor ymm0, ymm0, ymm5 | |
vpxor ymm1, ymm1, ymm4 | |
vpshufd ymm6, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpmuludq ymm6, ymm6, ymm3 | |
vpsllq ymm6, ymm6, 32 | |
vpaddq ymm6, ymm0, ymm6 | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpmuludq ymm1, ymm1, ymm3 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm1, ymm1, ymm0 | |
cmp rax, r11 | |
ja .L66 | |
vmovdqa YMMWORD PTR [r9], ymm6 | |
vmovdqa YMMWORD PTR 32[r9], ymm1 | |
.L63: | |
mov rcx, QWORD PTR 40[rsp] | |
imul rax, rbx | |
shr rcx, 6 | |
je .L67 | |
lea rdx, 384[rbp+rax] | |
vmovdqa ymm2, YMMWORD PTR [r9] | |
lea rax, 32[r12] | |
vmovdqa ymm1, YMMWORD PTR 32[r9] | |
lea rcx, [rax+rcx*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L68: | |
vmovdqu ymm4, YMMWORD PTR -32[rax] | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vpxor ymm0, ymm4, YMMWORD PTR -384[rdx] | |
add rdx, 64 | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm2, ymm2, ymm0 | |
vpxor ymm0, ymm5, YMMWORD PTR -416[rdx] | |
vpaddq ymm2, ymm2, YMMWORD PTR -448[rdx] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm1, ymm0 | |
vpaddq ymm1, ymm1, YMMWORD PTR -416[rdx] | |
cmp rcx, rax | |
jne .L68 | |
vmovdqa YMMWORD PTR [r9], ymm2 | |
vmovdqa YMMWORD PTR 32[r9], ymm1 | |
.L67: | |
test dil, 63 | |
je .L69 | |
vmovdqu ymm4, YMMWORD PTR -71[r12+r13] | |
vpxor ymm0, ymm4, YMMWORD PTR -64[rbp+rdi] | |
vmovdqu ymm5, YMMWORD PTR -64[rbp+rdi] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm5, YMMWORD PTR [r9] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR [r9], ymm0 | |
vmovdqu ymm0, YMMWORD PTR -32[rbp+rdi] | |
vpxor ymm1, ymm0, YMMWORD PTR -39[r12+r13] | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r9] | |
vpshufd ymm2, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[r9], ymm0 | |
.L69: | |
movabs r8, -7046029288634856825 | |
lea rdx, 11[r12] | |
mov rcx, r9 | |
imul r8, rdi | |
vzeroupper | |
call XXH3_mergeAccs | |
nop | |
vmovaps xmm6, XMMWORD PTR 128[rsp] | |
add rsp, 152 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_64b_withSeed; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_64b_withSeed | |
XXH3_hashLong_64b_withSeed: | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 336 | |
.seh_stackalloc 336 | |
vmovaps XMMWORD PTR 304[rsp], xmm6 | |
.seh_savexmm xmm6, 304 | |
vmovaps XMMWORD PTR 320[rsp], xmm7 | |
.seh_savexmm xmm7, 320 | |
.seh_endprologue | |
lea r10, 255[rsp] | |
mov r11, rcx | |
and r10, -32 | |
test r8, r8 | |
je .L83 | |
lea rax, kSecret[rip] | |
lea rcx, 40[rsp] | |
movabs r9, -4734510112055689544 | |
lea rbx, 192[rax] | |
jmp .L84 | |
.p2align 4,,10 | |
.p2align 3 | |
.L106: | |
mov r9, QWORD PTR [rax] | |
.L84: | |
add r9, r8 | |
add rax, 16 | |
add rcx, 16 | |
mov QWORD PTR -24[rcx], r9 | |
mov r9, QWORD PTR -8[rax] | |
sub r9, r8 | |
mov QWORD PTR -16[rcx], r9 | |
cmp rax, rbx | |
jne .L106 | |
mov eax, 3266489917 | |
mov rbx, rdx | |
mov QWORD PTR [r10], rax | |
shr rbx, 10 | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r10], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r10], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r10], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r10], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r10], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r10], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r10], rax | |
je .L87 | |
vmovdqa ymm4, YMMWORD PTR [r10] | |
sal rbx, 10 | |
vmovdqa ymm2, YMMWORD PTR 32[r10] | |
xor r9d, r9d | |
vmovdqu ymm7, YMMWORD PTR 160[rsp] | |
vmovdqa ymm5, YMMWORD PTR .LC1[rip] | |
lea rdi, 384[r11] | |
lea rsi, 64[rsp] | |
vmovdqu ymm6, YMMWORD PTR 192[rsp] | |
lea r8, 192[rsp] | |
.p2align 4,,10 | |
.p2align 3 | |
.L89: | |
lea rcx, [rdi+r9] | |
mov rax, rsi | |
.p2align 4,,10 | |
.p2align 3 | |
.L88: | |
vmovdqu ymm3, YMMWORD PTR -32[rax] | |
vpxor ymm1, ymm3, YMMWORD PTR -384[rcx] | |
add rax, 8 | |
prefetcht0 [rcx] | |
vmovdqu ymm3, YMMWORD PTR -8[rax] | |
add rcx, 64 | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm3, YMMWORD PTR -416[rcx] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm4, ymm1 | |
vpaddq ymm4, ymm1, YMMWORD PTR -448[rcx] | |
vpaddq ymm0, ymm2, ymm0 | |
vpaddq ymm2, ymm0, YMMWORD PTR -416[rcx] | |
cmp r8, rax | |
jne .L88 | |
vpsrlq ymm0, ymm4, 47 | |
vpxor ymm1, ymm7, ymm4 | |
add r9, 1024 | |
vpxor ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm6, ymm2 | |
vpshufd ymm4, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm5 | |
vpmuludq ymm4, ymm4, ymm5 | |
vpsllq ymm4, ymm4, 32 | |
vpaddq ymm4, ymm1, ymm4 | |
vpsrlq ymm1, ymm2, 47 | |
vpxor ymm0, ymm0, ymm1 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm5 | |
vpmuludq ymm2, ymm2, ymm5 | |
vpsllq ymm2, ymm2, 32 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp r9, rbx | |
jne .L89 | |
vmovdqa YMMWORD PTR [r10], ymm4 | |
vmovdqa YMMWORD PTR 32[r10], ymm2 | |
.L87: | |
mov rax, rdx | |
mov rcx, rdx | |
shr rax, 6 | |
and rcx, -1024 | |
and eax, 15 | |
mov r8, rax | |
je .L90 | |
lea rax, 32[rsp] | |
vmovdqa ymm3, YMMWORD PTR [r10] | |
vmovdqa ymm2, YMMWORD PTR 32[r10] | |
lea rcx, 384[r11+rcx] | |
lea r8, [rax+r8*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L91: | |
vmovdqu ymm6, YMMWORD PTR [rax] | |
vmovdqu ymm7, YMMWORD PTR 32[rax] | |
add rax, 8 | |
prefetcht0 [rcx] | |
vpxor ymm1, ymm6, YMMWORD PTR -384[rcx] | |
add rcx, 64 | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm0 | |
vpxor ymm0, ymm7, YMMWORD PTR -416[rcx] | |
vpaddq ymm1, ymm3, ymm1 | |
vpaddq ymm3, ymm1, YMMWORD PTR -448[rcx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm2, ymm0 | |
vpaddq ymm2, ymm0, YMMWORD PTR -416[rcx] | |
cmp r8, rax | |
jne .L91 | |
vmovdqa YMMWORD PTR [r10], ymm3 | |
vmovdqa YMMWORD PTR 32[r10], ymm2 | |
.L90: | |
test dl, 63 | |
jne .L107 | |
.L92: | |
movabs r8, -7046029288634856825 | |
lea r9, 43[rsp] | |
mov rcx, r10 | |
imul r8, rdx | |
mov rdx, r9 | |
vzeroupper | |
call XXH3_mergeAccs | |
.L105: | |
vmovaps xmm6, XMMWORD PTR 304[rsp] | |
vmovaps xmm7, XMMWORD PTR 320[rsp] | |
add rsp, 336 | |
pop rbx | |
pop rsi | |
pop rdi | |
ret | |
.L107: | |
vmovdqu ymm6, YMMWORD PTR 153[rsp] | |
vpxor ymm0, ymm6, YMMWORD PTR -64[r11+rdx] | |
vmovdqu ymm7, YMMWORD PTR -64[r11+rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm7, YMMWORD PTR [r10] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR [r10], ymm0 | |
vmovdqu ymm0, YMMWORD PTR -32[r11+rdx] | |
vpxor ymm1, ymm0, YMMWORD PTR 185[rsp] | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r10] | |
vpshufd ymm2, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[r10], ymm0 | |
jmp .L92 | |
.L83: | |
call XXH3_hashLong_64b_defaultSecret | |
jmp .L105 | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_128b_defaultSecret; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_128b_defaultSecret | |
XXH3_hashLong_128b_defaultSecret: | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 136 | |
.seh_stackalloc 136 | |
vmovaps XMMWORD PTR 112[rsp], xmm6 | |
.seh_savexmm xmm6, 112 | |
.seh_endprologue | |
mov eax, 3266489917 | |
lea r12, 63[rsp] | |
mov rbx, r8 | |
mov r13, rcx | |
mov r11, rdx | |
and r12, -32 | |
shr r8, 10 | |
mov QWORD PTR [r12], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r12], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r12], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r12], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r12], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r12], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r12], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r12], rax | |
je .L109 | |
vmovdqa ymm3, YMMWORD PTR [r12] | |
vmovdqa ymm2, YMMWORD PTR 32[r12] | |
sal r8, 10 | |
xor r9d, r9d | |
vmovdqa ymm6, YMMWORD PTR .LC0[rip] | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
lea r10, 384[rdx] | |
lea rcx, kSecret[rip+160] | |
vmovdqa ymm5, YMMWORD PTR .LC2[rip] | |
.p2align 4,,10 | |
.p2align 3 | |
.L111: | |
lea rdx, [r10+r9] | |
lea rax, kSecret[rip+32] | |
.p2align 4,,10 | |
.p2align 3 | |
.L110: | |
vmovdqu ymm1, YMMWORD PTR -32[rax] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rdx] | |
add rax, 8 | |
prefetcht0 [rdx] | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqu ymm1, YMMWORD PTR -8[rax] | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp rcx, rax | |
jne .L110 | |
vpsrlq ymm0, ymm3, 47 | |
vpxor ymm3, ymm3, ymm6 | |
add r9, 1024 | |
vpxor ymm3, ymm3, ymm0 | |
vpshufd ymm0, ymm3, 49 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm3, ymm3, ymm0 | |
vpsrlq ymm0, ymm2, 47 | |
vpxor ymm2, ymm2, ymm5 | |
vpxor ymm2, ymm2, ymm0 | |
vpshufd ymm0, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm2, ymm2, ymm0 | |
cmp r9, r8 | |
jne .L111 | |
vmovdqa YMMWORD PTR [r12], ymm3 | |
vmovdqa YMMWORD PTR 32[r12], ymm2 | |
.L109: | |
mov rax, rbx | |
mov rdx, rbx | |
shr rax, 6 | |
and rdx, -1024 | |
and eax, 15 | |
mov rcx, rax | |
je .L112 | |
lea rax, kSecret[rip] | |
vmovdqa ymm3, YMMWORD PTR [r12] | |
vmovdqa ymm2, YMMWORD PTR 32[r12] | |
lea rdx, 384[r11+rdx] | |
lea rcx, [rax+rcx*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L113: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
vmovdqu ymm6, YMMWORD PTR 32[rax] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rdx] | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm6, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp rcx, rax | |
jne .L113 | |
vmovdqa YMMWORD PTR [r12], ymm3 | |
vmovdqa YMMWORD PTR 32[r12], ymm2 | |
.L112: | |
test bl, 63 | |
je .L114 | |
vmovdqu ymm5, YMMWORD PTR -64[r11+rbx] | |
vpxor ymm0, ymm5, YMMWORD PTR .LC3[rip] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -64[r11+rbx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [r12] | |
vmovdqu ymm1, YMMWORD PTR -32[r11+rbx] | |
vmovdqa YMMWORD PTR [r12], ymm0 | |
vpxor ymm0, ymm1, YMMWORD PTR .LC4[rip] | |
vpshufd ymm1, ymm1, 78 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r12] | |
vmovdqa YMMWORD PTR 32[r12], ymm0 | |
.L114: | |
movabs r8, -7046029288634856825 | |
lea rdx, kSecret[rip+11] | |
mov rcx, r12 | |
imul r8, rbx | |
vzeroupper | |
call XXH3_mergeAccs | |
lea rdx, kSecret[rip+117] | |
movabs r8, -4417276706812531889 | |
imul r8, rbx | |
mov rsi, rax | |
not r8 | |
call XXH3_mergeAccs | |
nop | |
vmovaps xmm6, XMMWORD PTR 112[rsp] | |
mov QWORD PTR 0[r13], rsi | |
mov QWORD PTR 8[r13], rax | |
mov rax, r13 | |
add rsp, 136 | |
pop rbx | |
pop rsi | |
pop r12 | |
pop r13 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_128b_withSecret; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_128b_withSecret | |
XXH3_hashLong_128b_withSecret: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 152 | |
.seh_stackalloc 152 | |
vmovaps XMMWORD PTR 128[rsp], xmm6 | |
.seh_savexmm xmm6, 128 | |
.seh_endprologue | |
mov eax, 3266489917 | |
lea r12, 79[rsp] | |
mov rbx, r8 | |
mov rdi, rdx | |
xor edx, edx | |
and r12, -32 | |
mov r13, rcx | |
mov rsi, r9 | |
mov QWORD PTR [r12], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r12], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r12], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r12], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r12], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r12], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r12], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r12], rax | |
mov rax, QWORD PTR 256[rsp] | |
lea rbp, -64[rax] | |
mov rax, rbx | |
shr rbp, 3 | |
mov r8, rbp | |
sal r8, 6 | |
div r8 | |
mov QWORD PTR 40[rsp], rdx | |
cmp rbx, r8 | |
jb .L128 | |
mov rdx, QWORD PTR 256[rsp] | |
lea r14, 32[r9] | |
vmovdqa ymm3, YMMWORD PTR [r12] | |
xor r11d, r11d | |
vmovdqa ymm2, YMMWORD PTR 32[r12] | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
lea r10, [r14+rbp*8] | |
lea r15, 384[rdi] | |
vmovdqu ymm6, YMMWORD PTR -64[r9+rdx] | |
vmovdqu ymm5, YMMWORD PTR -32[r9+rdx] | |
xor r9d, r9d | |
.p2align 4,,10 | |
.p2align 3 | |
.L131: | |
test rbp, rbp | |
je .L129 | |
lea rcx, [r15+r9] | |
mov rdx, r14 | |
.p2align 4,,10 | |
.p2align 3 | |
.L130: | |
vmovdqu ymm1, YMMWORD PTR -32[rdx] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rcx] | |
add rdx, 8 | |
prefetcht0 [rcx] | |
add rcx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rcx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqu ymm1, YMMWORD PTR -8[rdx] | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rcx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rcx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp r10, rdx | |
jne .L130 | |
.L129: | |
vpsrlq ymm0, ymm3, 47 | |
add r11, 1 | |
add r9, r8 | |
vpxor ymm3, ymm3, ymm0 | |
vpxor ymm3, ymm3, ymm6 | |
vpshufd ymm0, ymm3, 49 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm3, ymm3, ymm0 | |
vpsrlq ymm0, ymm2, 47 | |
vpxor ymm2, ymm2, ymm0 | |
vpxor ymm2, ymm2, ymm5 | |
vpshufd ymm0, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm2, ymm2, ymm0 | |
cmp rax, r11 | |
ja .L131 | |
vmovdqa YMMWORD PTR [r12], ymm3 | |
vmovdqa YMMWORD PTR 32[r12], ymm2 | |
.L128: | |
mov rcx, QWORD PTR 40[rsp] | |
imul rax, r8 | |
shr rcx, 6 | |
je .L132 | |
lea rdx, 384[rdi+rax] | |
vmovdqa ymm3, YMMWORD PTR [r12] | |
lea rax, 32[rsi] | |
vmovdqa ymm2, YMMWORD PTR 32[r12] | |
lea rcx, [rax+rcx*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L133: | |
vmovdqu ymm5, YMMWORD PTR -32[rax] | |
vmovdqu ymm6, YMMWORD PTR [rax] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rdx] | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm6, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp rcx, rax | |
jne .L133 | |
vmovdqa YMMWORD PTR [r12], ymm3 | |
vmovdqa YMMWORD PTR 32[r12], ymm2 | |
.L132: | |
test bl, 63 | |
je .L134 | |
mov rax, QWORD PTR 256[rsp] | |
vmovdqu ymm5, YMMWORD PTR -71[rsi+rax] | |
vpxor ymm0, ymm5, YMMWORD PTR -64[rdi+rbx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -64[rdi+rbx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [r12] | |
vmovdqu ymm1, YMMWORD PTR -32[rdi+rbx] | |
vmovdqa YMMWORD PTR [r12], ymm0 | |
vpxor ymm0, ymm1, YMMWORD PTR -39[rsi+rax] | |
vpshufd ymm1, ymm1, 78 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r12] | |
vmovdqa YMMWORD PTR 32[r12], ymm0 | |
.L134: | |
movabs r8, -7046029288634856825 | |
lea rdx, 11[rsi] | |
mov rcx, r12 | |
imul r8, rbx | |
vzeroupper | |
call XXH3_mergeAccs | |
movabs r8, -4417276706812531889 | |
imul r8, rbx | |
mov rdi, rax | |
mov rax, QWORD PTR 256[rsp] | |
lea rdx, -75[rsi+rax] | |
not r8 | |
call XXH3_mergeAccs | |
mov QWORD PTR 0[r13], rdi | |
vmovaps xmm6, XMMWORD PTR 128[rsp] | |
mov QWORD PTR 8[r13], rax | |
mov rax, r13 | |
add rsp, 152 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_hashLong_128b_withSeed; .scl 3; .type 32; .endef | |
.seh_proc XXH3_hashLong_128b_withSeed | |
XXH3_hashLong_128b_withSeed: | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 328 | |
.seh_stackalloc 328 | |
vmovaps XMMWORD PTR 304[rsp], xmm6 | |
.seh_savexmm xmm6, 304 | |
.seh_endprologue | |
lea r13, 255[rsp] | |
mov r12, rcx | |
mov r10, rdx | |
mov rbx, r8 | |
and r13, -32 | |
test r9, r9 | |
je .L148 | |
lea rax, kSecret[rip] | |
lea rdx, 40[rsp] | |
movabs rcx, -4734510112055689544 | |
lea r8, 192[rax] | |
jmp .L149 | |
.p2align 4,,10 | |
.p2align 3 | |
.L170: | |
mov rcx, QWORD PTR [rax] | |
.L149: | |
add rcx, r9 | |
add rax, 16 | |
add rdx, 16 | |
mov QWORD PTR -24[rdx], rcx | |
mov rcx, QWORD PTR -8[rax] | |
sub rcx, r9 | |
mov QWORD PTR -16[rdx], rcx | |
cmp rax, r8 | |
jne .L170 | |
mov eax, 3266489917 | |
mov r9, rbx | |
mov QWORD PTR 0[r13], rax | |
shr r9, 10 | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r13], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r13], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r13], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r13], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r13], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r13], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r13], rax | |
je .L152 | |
vmovdqa ymm3, YMMWORD PTR 0[r13] | |
sal r9, 10 | |
vmovdqa ymm2, YMMWORD PTR 32[r13] | |
xor r8d, r8d | |
vmovdqu ymm6, YMMWORD PTR 160[rsp] | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
lea rsi, 384[r10] | |
lea r11, 64[rsp] | |
vmovdqu ymm5, YMMWORD PTR 192[rsp] | |
lea rcx, 192[rsp] | |
.p2align 4,,10 | |
.p2align 3 | |
.L154: | |
lea rdx, [rsi+r8] | |
mov rax, r11 | |
.p2align 4,,10 | |
.p2align 3 | |
.L153: | |
vmovdqu ymm1, YMMWORD PTR -32[rax] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rdx] | |
add rax, 8 | |
prefetcht0 [rdx] | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqu ymm1, YMMWORD PTR -8[rax] | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp rcx, rax | |
jne .L153 | |
vpsrlq ymm0, ymm3, 47 | |
vpxor ymm3, ymm6, ymm3 | |
add r8, 1024 | |
vpxor ymm3, ymm3, ymm0 | |
vpshufd ymm0, ymm3, 49 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm3, ymm3, ymm0 | |
vpsrlq ymm0, ymm2, 47 | |
vpxor ymm2, ymm5, ymm2 | |
vpxor ymm2, ymm2, ymm0 | |
vpshufd ymm0, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm2, ymm2, ymm0 | |
cmp r8, r9 | |
jne .L154 | |
vmovdqa YMMWORD PTR 0[r13], ymm3 | |
vmovdqa YMMWORD PTR 32[r13], ymm2 | |
.L152: | |
mov rax, rbx | |
mov rdx, rbx | |
shr rax, 6 | |
and rdx, -1024 | |
and eax, 15 | |
mov rcx, rax | |
je .L155 | |
lea rax, 32[rsp] | |
vmovdqa ymm3, YMMWORD PTR 0[r13] | |
vmovdqa ymm2, YMMWORD PTR 32[r13] | |
lea rdx, 384[r10+rdx] | |
lea rcx, [rax+rcx*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L156: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
vmovdqu ymm6, YMMWORD PTR 32[rax] | |
add rax, 8 | |
prefetcht0 [rdx] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rdx] | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm3, ymm0, ymm3 | |
vpxor ymm0, ymm6, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
cmp rax, rcx | |
jne .L156 | |
vmovdqa YMMWORD PTR 0[r13], ymm3 | |
vmovdqa YMMWORD PTR 32[r13], ymm2 | |
.L155: | |
test bl, 63 | |
jne .L171 | |
.L157: | |
movabs r8, -7046029288634856825 | |
lea rdx, 43[rsp] | |
mov rcx, r13 | |
imul r8, rbx | |
vzeroupper | |
call XXH3_mergeAccs | |
lea rdx, 149[rsp] | |
movabs r8, -4417276706812531889 | |
imul r8, rbx | |
mov rsi, rax | |
not r8 | |
call XXH3_mergeAccs | |
mov QWORD PTR [r12], rsi | |
mov QWORD PTR 8[r12], rax | |
.L147: | |
vmovaps xmm6, XMMWORD PTR 304[rsp] | |
mov rax, r12 | |
add rsp, 328 | |
pop rbx | |
pop rsi | |
pop r12 | |
pop r13 | |
ret | |
.L171: | |
vmovdqu ymm5, YMMWORD PTR 153[rsp] | |
vpxor ymm0, ymm5, YMMWORD PTR -64[r10+rbx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -64[r10+rbx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 0[r13] | |
vmovdqu ymm1, YMMWORD PTR -32[r10+rbx] | |
vmovdqa YMMWORD PTR 0[r13], ymm0 | |
vpxor ymm0, ymm1, YMMWORD PTR 185[rsp] | |
vpshufd ymm1, ymm1, 78 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r13] | |
vmovdqa YMMWORD PTR 32[r13], ymm0 | |
jmp .L157 | |
.L148: | |
call XXH3_hashLong_128b_defaultSecret | |
jmp .L147 | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_len_129to240_64b.isra.0; .scl 3; .type 32; .endef | |
.seh_proc XXH3_len_129to240_64b.isra.0 | |
XXH3_len_129to240_64b.isra.0: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
movabs rsi, -7046029288634856825 | |
imul rsi, rdx | |
lea ebx, 15[rdx] | |
test edx, edx | |
mov r11, rdx | |
cmovns ebx, edx | |
xor r10d, r10d | |
sar ebx, 4 | |
.p2align 4,,10 | |
.p2align 3 | |
.L173: | |
mov rax, QWORD PTR [r8+r10] | |
add rax, r9 | |
xor rax, QWORD PTR [rcx+r10] | |
mov rdi, rax | |
mov rax, QWORD PTR 8[r8+r10] | |
sub rax, r9 | |
xor rax, QWORD PTR 8[rcx+r10] | |
add r10, 16 | |
mul rdi | |
xor rax, rdx | |
add rsi, rax | |
cmp r10, 128 | |
jne .L173 | |
mov rdi, rsi | |
shr rdi, 37 | |
xor rsi, rdi | |
movabs rdi, 1609587791953885689 | |
imul rsi, rdi | |
mov rdi, rsi | |
shr rdi, 32 | |
xor rdi, rsi | |
cmp r11d, 143 | |
jle .L174 | |
xor r10d, r10d | |
mov esi, 8 | |
.p2align 4,,10 | |
.p2align 3 | |
.L175: | |
mov rax, QWORD PTR 3[r8+r10] | |
add esi, 1 | |
add rax, r9 | |
xor rax, QWORD PTR 128[rcx+r10] | |
mov r15, rax | |
mov rax, QWORD PTR 11[r8+r10] | |
sub rax, r9 | |
xor rax, QWORD PTR 136[rcx+r10] | |
add r10, 16 | |
mul r15 | |
xor rax, rdx | |
add rdi, rax | |
cmp ebx, esi | |
jg .L175 | |
.L174: | |
lea rcx, -16[rcx+r11] | |
mov rdx, QWORD PTR 119[r8] | |
mov rax, QWORD PTR 127[r8] | |
mov rbx, QWORD PTR [rcx] | |
add rdx, r9 | |
sub rax, r9 | |
xor rax, QWORD PTR 8[rcx] | |
xor rbx, rdx | |
mul rbx | |
xor rdx, rax | |
add rdi, rdx | |
mov rax, rdi | |
shr rax, 37 | |
xor rax, rdi | |
movabs rdi, 1609587791953885689 | |
imul rax, rdi | |
mov rdi, rax | |
shr rdi, 32 | |
xor rax, rdi | |
pop rbx | |
pop rsi | |
pop rdi | |
pop r14 | |
pop r15 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.def XXH3_len_129to240_128b.isra.0; .scl 3; .type 32; .endef | |
.seh_proc XXH3_len_129to240_128b.isra.0 | |
XXH3_len_129to240_128b.isra.0: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 24 | |
.seh_stackalloc 24 | |
.seh_endprologue | |
movabs r10, -7046029288634856825 | |
mov r11, QWORD PTR 128[rsp] | |
test r8d, r8d | |
lea r13d, 31[r8] | |
mov QWORD PTR 96[rsp], rcx | |
mov rsi, rdx | |
cmovns r13d, r8d | |
imul r10, r8 | |
mov rdi, r9 | |
xor ebx, ebx | |
mov QWORD PTR 104[rsp], rdx | |
lea r14, 128[rdx] | |
sar r13d, 5 | |
.L179: | |
mov rax, QWORD PTR [rdi] | |
mov rcx, QWORD PTR [rsi] | |
add rsi, 32 | |
add rdi, 32 | |
mov rbp, QWORD PTR -24[rsi] | |
mov r12, QWORD PTR -8[rsi] | |
add rax, r11 | |
xor rax, rcx | |
add rcx, rbp | |
mov r15, rax | |
mov rax, QWORD PTR -24[rdi] | |
sub rax, r11 | |
xor rax, rbp | |
mul r15 | |
mov r15, QWORD PTR -16[rsi] | |
mov QWORD PTR [rsp], rax | |
mov rax, QWORD PTR [rsp] | |
xor rax, rdx | |
add r10, rax | |
lea rax, [r15+r12] | |
xor r10, rax | |
mov rax, QWORD PTR -16[rdi] | |
add rax, r11 | |
xor r15, rax | |
mov rax, QWORD PTR -8[rdi] | |
sub rax, r11 | |
xor r12, rax | |
mov rax, r12 | |
mul r15 | |
mov QWORD PTR [rsp], rax | |
mov rax, QWORD PTR [rsp] | |
mov QWORD PTR 8[rsp], rdx | |
xor rax, rdx | |
add rbx, rax | |
xor rbx, rcx | |
cmp r14, rsi | |
jne .L179 | |
mov rax, r10 | |
mov rcx, rbx | |
shr rax, 37 | |
shr rcx, 37 | |
xor r10, rax | |
xor rbx, rcx | |
movabs rax, 1609587791953885689 | |
imul r10, rax | |
imul rbx, rax | |
mov rdx, r10 | |
mov rcx, rbx | |
shr rdx, 32 | |
shr rcx, 32 | |
xor r10, rdx | |
xor rcx, rbx | |
cmp r8d, 159 | |
jle .L180 | |
mov rax, QWORD PTR 104[rsp] | |
lea rbx, 3[r9] | |
mov ebp, 4 | |
lea rsi, 128[rax] | |
.p2align 4,,10 | |
.p2align 3 | |
.L181: | |
mov rax, QWORD PTR [rbx] | |
mov rdi, QWORD PTR [rsi] | |
add ebp, 1 | |
add rsi, 32 | |
mov r12, QWORD PTR -24[rsi] | |
mov r15, QWORD PTR -16[rsi] | |
add rbx, 32 | |
add rax, r11 | |
xor rax, rdi | |
add rdi, r12 | |
mov r14, rax | |
mov rax, QWORD PTR -24[rbx] | |
sub rax, r11 | |
xor rax, r12 | |
mul r14 | |
mov r14, QWORD PTR -8[rsi] | |
mov QWORD PTR [rsp], rax | |
mov rax, QWORD PTR [rsp] | |
mov QWORD PTR 8[rsp], rdx | |
xor rax, rdx | |
add r10, rax | |
lea rax, [r15+r14] | |
xor r10, rax | |
mov rax, QWORD PTR -16[rbx] | |
add rax, r11 | |
xor r15, rax | |
mov rax, QWORD PTR -8[rbx] | |
sub rax, r11 | |
xor r14, rax | |
mov rax, r14 | |
mul r15 | |
xor rax, rdx | |
add rcx, rax | |
xor rcx, rdi | |
cmp r13d, ebp | |
jg .L181 | |
.L180: | |
mov rax, QWORD PTR 104[rsp] | |
mov rdx, QWORD PTR 111[r9] | |
lea rdi, -32[rax+r8] | |
lea rax, -16[rax+r8] | |
add rdx, r11 | |
sub r8, r11 | |
mov rbx, QWORD PTR [rax] | |
mov rsi, QWORD PTR 8[rax] | |
mov rax, QWORD PTR 103[r9] | |
mov r12, QWORD PTR [rdi] | |
xor rdx, rsi | |
mov rbp, QWORD PTR 8[rdi] | |
sub rax, r11 | |
xor rax, rbx | |
add rbx, rsi | |
mul rdx | |
xor rax, rdx | |
mov rdx, QWORD PTR 127[r9] | |
add r10, rax | |
lea rax, [r12+rbp] | |
xor r10, rax | |
mov rax, QWORD PTR 119[r9] | |
add rdx, r11 | |
xor rbp, rdx | |
sub rax, r11 | |
xor rax, r12 | |
mul rbp | |
xor rax, rdx | |
add rcx, rax | |
movabs rax, -7046029288634856825 | |
xor rcx, rbx | |
lea rdx, [r10+rcx] | |
imul r10, rax | |
movabs rax, -8796714831421723037 | |
imul rcx, rax | |
movabs rax, -4417276706812531889 | |
imul r8, rax | |
mov rax, rdx | |
shr rax, 37 | |
add rcx, r10 | |
xor rax, rdx | |
movabs rdx, 1609587791953885689 | |
add r8, rcx | |
imul rax, rdx | |
mov rcx, r8 | |
shr rcx, 37 | |
xor r8, rcx | |
imul r8, rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
mov rdx, QWORD PTR 96[rsp] | |
mov QWORD PTR [rdx], rax | |
mov rax, r8 | |
shr rax, 32 | |
xor r8, rax | |
mov rax, rdx | |
neg r8 | |
mov QWORD PTR 8[rdx], r8 | |
add rsp, 24 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH_versionNumber | |
.def XXH_versionNumber; .scl 2; .type 32; .endef | |
.seh_proc XXH_versionNumber | |
XXH_versionNumber: | |
.seh_endprologue | |
mov eax, 703 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32 | |
.def XXH32; .scl 2; .type 32; .endef | |
.seh_proc XXH32 | |
XXH32: | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
lea r9d, 374761393[r8] | |
cmp rdx, 15 | |
jbe .L188 | |
lea rsi, -15[rcx+rdx] | |
lea eax, 606290984[r8] | |
mov r11, rcx | |
lea r10d, -2048144777[r8] | |
lea r9d, 1640531535[r8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L187: | |
imul ebx, DWORD PTR [r11], -2048144777 | |
add r11, 16 | |
add eax, ebx | |
imul ebx, DWORD PTR -12[r11], -2048144777 | |
rol eax, 13 | |
imul eax, eax, -1640531535 | |
add r10d, ebx | |
imul ebx, DWORD PTR -8[r11], -2048144777 | |
rol r10d, 13 | |
imul r10d, r10d, -1640531535 | |
add r8d, ebx | |
imul ebx, DWORD PTR -4[r11], -2048144777 | |
rol r8d, 13 | |
imul r8d, r8d, -1640531535 | |
add r9d, ebx | |
rol r9d, 13 | |
imul r9d, r9d, -1640531535 | |
cmp rsi, r11 | |
ja .L187 | |
lea r11, -16[rdx] | |
lea rbx, 1[rcx] | |
and r11, -16 | |
add r11, 16 | |
cmp rsi, rbx | |
mov ebx, 16 | |
cmovb r11, rbx | |
rol eax | |
rol r10d, 7 | |
rol r8d, 12 | |
add eax, r10d | |
ror r9d, 14 | |
add rcx, r11 | |
add r8d, eax | |
add r9d, r8d | |
.L188: | |
lea r8, .L191[rip] | |
add r9d, edx | |
and edx, 15 | |
movsx rax, DWORD PTR [r8+rdx*4] | |
add rax, r8 | |
jmp rax | |
.section .rdata,"dr" | |
.align 4 | |
.L191: | |
.long .L189-.L191 | |
.long .L205-.L191 | |
.long .L207-.L191 | |
.long .L203-.L191 | |
.long .L202-.L191 | |
.long .L201-.L191 | |
.long .L200-.L191 | |
.long .L199-.L191 | |
.long .L198-.L191 | |
.long .L197-.L191 | |
.long .L196-.L191 | |
.long .L195-.L191 | |
.long .L194-.L191 | |
.long .L193-.L191 | |
.long .L192-.L191 | |
.long .L190-.L191 | |
.text | |
.p2align 4,,10 | |
.p2align 3 | |
.L190: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L195: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L199: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L203: | |
movzx eax, BYTE PTR [rcx] | |
lea rdx, 1[rcx] | |
imul eax, eax, 374761393 | |
add r9d, eax | |
rol r9d, 11 | |
imul r9d, r9d, -1640531535 | |
.L204: | |
movzx eax, BYTE PTR [rdx] | |
lea rcx, 1[rdx] | |
imul eax, eax, 374761393 | |
add r9d, eax | |
rol r9d, 11 | |
imul r9d, r9d, -1640531535 | |
.L205: | |
movzx eax, BYTE PTR [rcx] | |
imul eax, eax, 374761393 | |
add r9d, eax | |
rol r9d, 11 | |
imul r9d, r9d, -1640531535 | |
.L189: | |
mov eax, r9d | |
shr eax, 15 | |
xor r9d, eax | |
imul eax, r9d, -2048144777 | |
mov r9d, eax | |
shr r9d, 13 | |
xor eax, r9d | |
imul eax, eax, -1028477379 | |
mov edx, eax | |
shr edx, 16 | |
xor eax, edx | |
pop rbx | |
pop rsi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L193: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L197: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L201: | |
imul edx, DWORD PTR [rcx], -1028477379 | |
movzx eax, BYTE PTR 4[rcx] | |
add r9d, edx | |
ror r9d, 15 | |
imul edx, r9d, 668265263 | |
.L211: | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
.L210: | |
mov eax, edx | |
shr eax, 15 | |
xor eax, edx | |
imul eax, eax, -2048144777 | |
mov edx, eax | |
shr edx, 13 | |
xor eax, edx | |
imul eax, eax, -1028477379 | |
mov edx, eax | |
shr edx, 16 | |
xor eax, edx | |
pop rbx | |
pop rsi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L192: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L196: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L200: | |
imul edx, DWORD PTR [rcx], -1028477379 | |
movzx eax, BYTE PTR 4[rcx] | |
imul eax, eax, 374761393 | |
add r9d, edx | |
ror r9d, 15 | |
imul edx, r9d, 668265263 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
movzx eax, BYTE PTR 5[rcx] | |
jmp .L211 | |
.p2align 4,,10 | |
.p2align 3 | |
.L194: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L198: | |
imul eax, DWORD PTR [rcx], -1028477379 | |
add rcx, 4 | |
add r9d, eax | |
ror r9d, 15 | |
imul r9d, r9d, 668265263 | |
.L202: | |
imul edx, DWORD PTR [rcx], -1028477379 | |
add r9d, edx | |
ror r9d, 15 | |
imul edx, r9d, 668265263 | |
jmp .L210 | |
.p2align 4,,10 | |
.p2align 3 | |
.L207: | |
mov rdx, rcx | |
jmp .L204 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_createState | |
.def XXH32_createState; .scl 2; .type 32; .endef | |
.seh_proc XXH32_createState | |
XXH32_createState: | |
.seh_endprologue | |
mov ecx, 48 | |
jmp malloc | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_freeState | |
.def XXH32_freeState; .scl 2; .type 32; .endef | |
.seh_proc XXH32_freeState | |
XXH32_freeState: | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
call free | |
xor eax, eax | |
add rsp, 40 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_copyState | |
.def XXH32_copyState; .scl 2; .type 32; .endef | |
.seh_proc XXH32_copyState | |
XXH32_copyState: | |
.seh_endprologue | |
vmovdqu xmm0, XMMWORD PTR [rdx] | |
vmovups XMMWORD PTR [rcx], xmm0 | |
vmovdqu xmm1, XMMWORD PTR 16[rdx] | |
vmovups XMMWORD PTR 16[rcx], xmm1 | |
mov rax, QWORD PTR 32[rdx] | |
mov rdx, QWORD PTR 40[rdx] | |
mov QWORD PTR 32[rcx], rax | |
mov QWORD PTR 40[rcx], rdx | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_reset | |
.def XXH32_reset; .scl 2; .type 32; .endef | |
.seh_proc XXH32_reset | |
XXH32_reset: | |
sub rsp, 56 | |
.seh_stackalloc 56 | |
.seh_endprologue | |
lea eax, 606290984[rdx] | |
mov DWORD PTR 16[rsp], edx | |
mov DWORD PTR 8[rsp], eax | |
lea eax, -2048144777[rdx] | |
add edx, 1640531535 | |
mov DWORD PTR 12[rsp], eax | |
mov QWORD PTR 40[rsp], 0 | |
mov eax, DWORD PTR 40[rsp] | |
mov QWORD PTR [rsp], 0 | |
vmovdqa xmm0, XMMWORD PTR [rsp] | |
mov QWORD PTR 24[rsp], 0 | |
mov DWORD PTR 20[rsp], edx | |
vmovdqa xmm1, XMMWORD PTR 16[rsp] | |
mov DWORD PTR 40[rcx], eax | |
xor eax, eax | |
mov QWORD PTR 32[rsp], 0 | |
mov QWORD PTR 32[rcx], 0 | |
vmovups XMMWORD PTR [rcx], xmm0 | |
vmovups XMMWORD PTR 16[rcx], xmm1 | |
add rsp, 56 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_update | |
.def XXH32_update; .scl 2; .type 32; .endef | |
.seh_proc XXH32_update | |
XXH32_update: | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 32 | |
.seh_stackalloc 32 | |
.seh_endprologue | |
mov rsi, rcx | |
mov r12, rdx | |
test rdx, rdx | |
je .L222 | |
lea rdi, [rdx+r8] | |
mov edx, DWORD PTR [rcx] | |
add edx, r8d | |
cmp r8, 15 | |
seta al | |
cmp edx, 15 | |
mov DWORD PTR [rcx], edx | |
seta dl | |
or eax, edx | |
mov edx, DWORD PTR 40[rcx] | |
movzx eax, al | |
or DWORD PTR 4[rcx], eax | |
lea rcx, [rdx+r8] | |
cmp rcx, 15 | |
jbe .L228 | |
test edx, edx | |
jne .L229 | |
lea r8, -16[rdi] | |
cmp r8, r12 | |
jb .L220 | |
.L231: | |
mov eax, DWORD PTR 8[rsi] | |
mov r9d, DWORD PTR 12[rsi] | |
mov r11, r12 | |
mov ecx, DWORD PTR 16[rsi] | |
mov r10d, DWORD PTR 20[rsi] | |
.p2align 4,,10 | |
.p2align 3 | |
.L221: | |
imul edx, DWORD PTR [r11], -2048144777 | |
add r11, 16 | |
imul ebx, DWORD PTR -4[r11], -2048144777 | |
add eax, edx | |
imul edx, DWORD PTR -12[r11], -2048144777 | |
add r10d, ebx | |
rol eax, 13 | |
rol r10d, 13 | |
imul eax, eax, -1640531535 | |
add r9d, edx | |
imul edx, DWORD PTR -8[r11], -2048144777 | |
rol r9d, 13 | |
imul r10d, r10d, -1640531535 | |
imul r9d, r9d, -1640531535 | |
add ecx, edx | |
rol ecx, 13 | |
imul ecx, ecx, -1640531535 | |
cmp r8, r11 | |
jnb .L221 | |
vmovd xmm2, ecx | |
vmovd xmm3, eax | |
sub r8, r12 | |
vpinsrd xmm1, xmm2, r10d, 1 | |
vpinsrd xmm0, xmm3, r9d, 1 | |
and r8, -16 | |
vpunpcklqdq xmm0, xmm0, xmm1 | |
lea r12, 16[r12+r8] | |
vmovups XMMWORD PTR 8[rsi], xmm0 | |
.L220: | |
xor r13d, r13d | |
cmp r12, rdi | |
jb .L230 | |
mov eax, r13d | |
add rsp, 32 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L229: | |
mov ebx, 16 | |
lea rcx, 24[rsi+rdx] | |
mov r8d, ebx | |
sub r8d, edx | |
mov rdx, r12 | |
call memcpy | |
imul eax, DWORD PTR 24[rsi], -2048144777 | |
add eax, DWORD PTR 8[rsi] | |
lea r8, -16[rdi] | |
rol eax, 13 | |
sub ebx, DWORD PTR 40[rsi] | |
mov DWORD PTR 40[rsi], 0 | |
imul eax, eax, -1640531535 | |
add r12, rbx | |
mov DWORD PTR 8[rsi], eax | |
imul eax, DWORD PTR 28[rsi], -2048144777 | |
add eax, DWORD PTR 12[rsi] | |
rol eax, 13 | |
imul eax, eax, -1640531535 | |
mov DWORD PTR 12[rsi], eax | |
imul eax, DWORD PTR 32[rsi], -2048144777 | |
add eax, DWORD PTR 16[rsi] | |
rol eax, 13 | |
imul eax, eax, -1640531535 | |
mov DWORD PTR 16[rsi], eax | |
imul eax, DWORD PTR 36[rsi], -2048144777 | |
add eax, DWORD PTR 20[rsi] | |
rol eax, 13 | |
imul eax, eax, -1640531535 | |
mov DWORD PTR 20[rsi], eax | |
cmp r8, r12 | |
jb .L220 | |
jmp .L231 | |
.p2align 4,,10 | |
.p2align 3 | |
.L230: | |
sub rdi, r12 | |
lea rcx, 24[rsi] | |
mov rdx, r12 | |
mov r8, rdi | |
call memcpy | |
mov eax, r13d | |
mov DWORD PTR 40[rsi], edi | |
add rsp, 32 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L222: | |
mov r13d, 1 | |
mov eax, r13d | |
add rsp, 32 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L228: | |
lea rcx, 24[rsi+rdx] | |
mov rdx, r12 | |
mov QWORD PTR 96[rsp], r8 | |
xor r13d, r13d | |
call memcpy | |
mov r8, QWORD PTR 96[rsp] | |
add DWORD PTR 40[rsi], r8d | |
mov eax, r13d | |
add rsp, 32 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop r12 | |
pop r13 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_digest | |
.def XXH32_digest; .scl 2; .type 32; .endef | |
.seh_proc XXH32_digest | |
XXH32_digest: | |
.seh_endprologue | |
mov edx, DWORD PTR 16[rcx] | |
mov r8d, DWORD PTR 4[rcx] | |
lea eax, 374761393[rdx] | |
test r8d, r8d | |
je .L234 | |
mov r8d, DWORD PTR 8[rcx] | |
mov eax, DWORD PTR 12[rcx] | |
rol edx, 12 | |
rol eax, 7 | |
rol r8d | |
add r8d, eax | |
lea eax, [r8+rdx] | |
mov edx, DWORD PTR 20[rcx] | |
ror edx, 14 | |
add eax, edx | |
.L234: | |
mov r9d, DWORD PTR 40[rcx] | |
add eax, DWORD PTR [rcx] | |
lea r10, .L237[rip] | |
lea r8, 24[rcx] | |
mov edx, eax | |
and r9d, 15 | |
movsx rax, DWORD PTR [r10+r9*4] | |
add rax, r10 | |
jmp rax | |
.section .rdata,"dr" | |
.align 4 | |
.L237: | |
.long .L235-.L237 | |
.long .L251-.L237 | |
.long .L253-.L237 | |
.long .L249-.L237 | |
.long .L248-.L237 | |
.long .L247-.L237 | |
.long .L246-.L237 | |
.long .L245-.L237 | |
.long .L244-.L237 | |
.long .L243-.L237 | |
.long .L242-.L237 | |
.long .L241-.L237 | |
.long .L240-.L237 | |
.long .L239-.L237 | |
.long .L238-.L237 | |
.long .L236-.L237 | |
.text | |
.p2align 4,,10 | |
.p2align 3 | |
.L236: | |
imul eax, DWORD PTR 24[rcx], -1028477379 | |
lea r8, 28[rcx] | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L241: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add r8, 4 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L245: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add r8, 4 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L249: | |
movzx eax, BYTE PTR [r8] | |
lea rcx, 1[r8] | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
.L250: | |
movzx eax, BYTE PTR [rcx] | |
lea r8, 1[rcx] | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
.L251: | |
movzx eax, BYTE PTR [r8] | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
.L235: | |
mov eax, edx | |
shr eax, 15 | |
xor eax, edx | |
imul eax, eax, -2048144777 | |
mov edx, eax | |
shr edx, 13 | |
xor eax, edx | |
imul eax, eax, -1028477379 | |
mov edx, eax | |
shr edx, 16 | |
xor eax, edx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L239: | |
imul eax, DWORD PTR 24[rcx], -1028477379 | |
lea r8, 28[rcx] | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L243: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add r8, 4 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L247: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
movzx eax, BYTE PTR 4[r8] | |
.L256: | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
.L255: | |
mov eax, edx | |
shr eax, 15 | |
xor eax, edx | |
imul eax, eax, -2048144777 | |
mov edx, eax | |
shr edx, 13 | |
xor eax, edx | |
imul eax, eax, -1028477379 | |
mov edx, eax | |
shr edx, 16 | |
xor eax, edx | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L238: | |
imul eax, DWORD PTR 24[rcx], -1028477379 | |
lea r8, 28[rcx] | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L242: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add r8, 4 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L246: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
movzx eax, BYTE PTR 4[r8] | |
imul eax, eax, 374761393 | |
add eax, edx | |
rol eax, 11 | |
imul edx, eax, -1640531535 | |
movzx eax, BYTE PTR 5[r8] | |
jmp .L256 | |
.p2align 4,,10 | |
.p2align 3 | |
.L240: | |
imul eax, DWORD PTR 24[rcx], -1028477379 | |
lea r8, 28[rcx] | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L244: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add r8, 4 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
.L248: | |
imul eax, DWORD PTR [r8], -1028477379 | |
add eax, edx | |
ror eax, 15 | |
imul edx, eax, 668265263 | |
jmp .L255 | |
.p2align 4,,10 | |
.p2align 3 | |
.L253: | |
mov rcx, r8 | |
jmp .L250 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_canonicalFromHash | |
.def XXH32_canonicalFromHash; .scl 2; .type 32; .endef | |
.seh_proc XXH32_canonicalFromHash | |
XXH32_canonicalFromHash: | |
.seh_endprologue | |
bswap edx | |
mov DWORD PTR [rcx], edx | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH32_hashFromCanonical | |
.def XXH32_hashFromCanonical; .scl 2; .type 32; .endef | |
.seh_proc XXH32_hashFromCanonical | |
XXH32_hashFromCanonical: | |
.seh_endprologue | |
mov eax, DWORD PTR [rcx] | |
bswap eax | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64 | |
.def XXH64; .scl 2; .type 32; .endef | |
.seh_proc XXH64 | |
XXH64: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
movabs rax, 2870177450012600261 | |
mov r10, rcx | |
add rax, r8 | |
cmp rdx, 31 | |
jbe .L262 | |
movabs rbp, 6983438078262162902 | |
lea r14, -32[rdx] | |
movabs rdi, -4417276706812531889 | |
movabs rax, 7046029288634856825 | |
lea r13, [rcx+r14] | |
add rbp, r8 | |
lea r12, [r8+rdi] | |
movabs rsi, -7046029288634856825 | |
lea r15, [r8+rax] | |
.p2align 4,,10 | |
.p2align 3 | |
.L261: | |
mov rbx, QWORD PTR [rcx] | |
mov r11, QWORD PTR 8[rcx] | |
add rcx, 32 | |
mov r9, QWORD PTR -16[rcx] | |
mov rax, QWORD PTR -8[rcx] | |
imul rbx, rdi | |
imul r11, rdi | |
imul r9, rdi | |
imul rax, rdi | |
add rbx, rbp | |
add r11, r12 | |
rol rbx, 31 | |
add r9, r8 | |
rol r11, 31 | |
mov rbp, rbx | |
add rax, r15 | |
rol r9, 31 | |
imul rbp, rsi | |
mov r12, r11 | |
rol rax, 31 | |
imul r12, rsi | |
mov r8, r9 | |
mov r15, rax | |
imul r8, rsi | |
imul r15, rsi | |
cmp r13, rcx | |
jnb .L261 | |
lea rdi, 1[r10] | |
and r14, -32 | |
add r13, 1 | |
cmp r13, rdi | |
lea rcx, 32[r14] | |
mov edi, 32 | |
cmovb rcx, rdi | |
rol rbp | |
movabs rdi, -2381459717836149591 | |
imul rbx, rdi | |
rol r12, 7 | |
rol r8, 12 | |
add rbp, r12 | |
rol r15, 18 | |
add r10, rcx | |
add rbp, r8 | |
imul rax, rdi | |
rol rbx, 31 | |
lea r8, 0[rbp+r15] | |
imul rbx, rsi | |
rol rax, 31 | |
imul rax, rsi | |
xor r8, rbx | |
movabs rbx, -8796714831421723037 | |
mov r15, r8 | |
mov r8, r11 | |
imul r8, rdi | |
imul r15, rsi | |
rol r8, 31 | |
mov rcx, r8 | |
lea r8, [r15+rbx] | |
imul rcx, rsi | |
xor r8, rcx | |
mov rcx, r9 | |
imul rcx, rdi | |
imul r8, rsi | |
rol rcx, 31 | |
imul rcx, rsi | |
add r8, rbx | |
xor rcx, r8 | |
imul rcx, rsi | |
add rcx, rbx | |
xor rax, rcx | |
imul rax, rsi | |
add rax, rbx | |
.L262: | |
lea rcx, [rdx+rax] | |
mov r8, rdx | |
mov r9d, 1 | |
mov rdx, r10 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
jmp XXH64_finalize | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_createState | |
.def XXH64_createState; .scl 2; .type 32; .endef | |
.seh_proc XXH64_createState | |
XXH64_createState: | |
.seh_endprologue | |
mov ecx, 88 | |
jmp malloc | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_freeState | |
.def XXH64_freeState; .scl 2; .type 32; .endef | |
.seh_proc XXH64_freeState | |
XXH64_freeState: | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
call free | |
xor eax, eax | |
add rsp, 40 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_copyState | |
.def XXH64_copyState; .scl 2; .type 32; .endef | |
.seh_proc XXH64_copyState | |
XXH64_copyState: | |
.seh_endprologue | |
vmovdqu xmm0, XMMWORD PTR [rdx] | |
vmovups XMMWORD PTR [rcx], xmm0 | |
vmovdqu xmm1, XMMWORD PTR 16[rdx] | |
vmovups XMMWORD PTR 16[rcx], xmm1 | |
vmovdqu xmm2, XMMWORD PTR 32[rdx] | |
vmovups XMMWORD PTR 32[rcx], xmm2 | |
vmovdqu xmm3, XMMWORD PTR 48[rdx] | |
vmovups XMMWORD PTR 48[rcx], xmm3 | |
vmovdqu xmm4, XMMWORD PTR 64[rdx] | |
vmovups XMMWORD PTR 64[rcx], xmm4 | |
mov rax, QWORD PTR 80[rdx] | |
mov QWORD PTR 80[rcx], rax | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_reset | |
.def XXH64_reset; .scl 2; .type 32; .endef | |
.seh_proc XXH64_reset | |
XXH64_reset: | |
push rdi | |
.seh_pushreg rdi | |
sub rsp, 96 | |
.seh_stackalloc 96 | |
.seh_endprologue | |
xor eax, eax | |
mov r9, rsp | |
mov r8, rcx | |
vmovq xmm1, rdx | |
mov ecx, 11 | |
mov rdi, r9 | |
vpunpcklqdq xmm0, xmm1, xmm1 | |
vpaddq xmm0, xmm0, XMMWORD PTR .LC5[rip] | |
rep stosq | |
mov QWORD PTR 24[rsp], rdx | |
movabs rax, 7046029288634856825 | |
add rdx, rax | |
vmovups XMMWORD PTR 8[rsp], xmm0 | |
xor eax, eax | |
vmovdqa xmm2, XMMWORD PTR [rsp] | |
mov QWORD PTR 32[rsp], rdx | |
vmovdqa xmm3, XMMWORD PTR 16[rsp] | |
vmovdqa xmm4, XMMWORD PTR 32[rsp] | |
vmovdqa xmm5, XMMWORD PTR 48[rsp] | |
vmovdqa xmm1, XMMWORD PTR 64[rsp] | |
vmovups XMMWORD PTR [r8], xmm2 | |
vmovups XMMWORD PTR 16[r8], xmm3 | |
vmovups XMMWORD PTR 32[r8], xmm4 | |
vmovups XMMWORD PTR 48[r8], xmm5 | |
vmovups XMMWORD PTR 64[r8], xmm1 | |
add rsp, 96 | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_update | |
.def XXH64_update; .scl 2; .type 32; .endef | |
.seh_proc XXH64_update | |
XXH64_update: | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
mov rsi, rcx | |
mov r12, rdx | |
test rdx, rdx | |
je .L274 | |
lea rdi, [rdx+r8] | |
mov edx, DWORD PTR 72[rcx] | |
add QWORD PTR [rcx], r8 | |
lea rcx, [rdx+r8] | |
cmp rcx, 31 | |
jbe .L280 | |
test edx, edx | |
jne .L281 | |
lea rax, 32[r12] | |
cmp rdi, rax | |
jb .L272 | |
.L283: | |
mov rdx, QWORD PTR 8[rsi] | |
mov r8, QWORD PTR 16[rsi] | |
lea rbp, -32[rdi] | |
mov rax, r12 | |
mov r13, QWORD PTR 24[rsi] | |
mov rcx, QWORD PTR 32[rsi] | |
movabs rbx, -4417276706812531889 | |
movabs r11, -7046029288634856825 | |
.p2align 4,,10 | |
.p2align 3 | |
.L273: | |
mov r9, QWORD PTR [rax] | |
mov r10, QWORD PTR 16[rax] | |
add rax, 32 | |
imul r9, rbx | |
imul r10, rbx | |
add rdx, r9 | |
mov r9, QWORD PTR -24[rax] | |
rol rdx, 31 | |
imul r9, rbx | |
imul rdx, r11 | |
add r8, r9 | |
lea r9, [r10+r13] | |
rol r9, 31 | |
rol r8, 31 | |
imul r9, r11 | |
imul r8, r11 | |
mov r13, r9 | |
mov r9, QWORD PTR -8[rax] | |
imul r9, rbx | |
add rcx, r9 | |
rol rcx, 31 | |
imul rcx, r11 | |
cmp rbp, rax | |
jnb .L273 | |
sub rbp, r12 | |
vmovq xmm2, r13 | |
vmovq xmm3, rdx | |
and rbp, -32 | |
vpinsrq xmm1, xmm2, rcx, 1 | |
vpinsrq xmm0, xmm3, r8, 1 | |
vinserti128 ymm0, ymm0, xmm1, 0x1 | |
lea r12, 32[r12+rbp] | |
vmovups XMMWORD PTR 8[rsi], xmm0 | |
vextracti128 XMMWORD PTR 24[rsi], ymm0, 0x1 | |
vzeroupper | |
.L272: | |
xor r13d, r13d | |
cmp r12, rdi | |
jb .L282 | |
mov eax, r13d | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L281: | |
mov ebx, 32 | |
lea rcx, 40[rsi+rdx] | |
mov r8d, ebx | |
sub r8d, edx | |
mov rdx, r12 | |
call memcpy | |
mov rdx, QWORD PTR 40[rsi] | |
sub ebx, DWORD PTR 72[rsi] | |
movabs rax, -4417276706812531889 | |
movabs rcx, -7046029288634856825 | |
add r12, rbx | |
mov DWORD PTR 72[rsi], 0 | |
imul rdx, rax | |
add rdx, QWORD PTR 8[rsi] | |
rol rdx, 31 | |
imul rdx, rcx | |
mov QWORD PTR 8[rsi], rdx | |
mov rdx, QWORD PTR 48[rsi] | |
imul rdx, rax | |
add rdx, QWORD PTR 16[rsi] | |
rol rdx, 31 | |
imul rdx, rcx | |
mov QWORD PTR 16[rsi], rdx | |
mov rdx, QWORD PTR 56[rsi] | |
imul rdx, rax | |
add rdx, QWORD PTR 24[rsi] | |
imul rax, QWORD PTR 64[rsi] | |
add rax, QWORD PTR 32[rsi] | |
rol rdx, 31 | |
rol rax, 31 | |
imul rdx, rcx | |
imul rax, rcx | |
mov QWORD PTR 24[rsi], rdx | |
mov QWORD PTR 32[rsi], rax | |
lea rax, 32[r12] | |
cmp rdi, rax | |
jb .L272 | |
jmp .L283 | |
.p2align 4,,10 | |
.p2align 3 | |
.L282: | |
sub rdi, r12 | |
lea rcx, 40[rsi] | |
mov rdx, r12 | |
mov r8, rdi | |
call memcpy | |
mov eax, r13d | |
mov DWORD PTR 72[rsi], edi | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L274: | |
mov r13d, 1 | |
mov eax, r13d | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L280: | |
lea rcx, 40[rsi+rdx] | |
mov rdx, r12 | |
mov QWORD PTR 112[rsp], r8 | |
xor r13d, r13d | |
call memcpy | |
mov r8, QWORD PTR 112[rsp] | |
add DWORD PTR 72[rsi], r8d | |
mov eax, r13d | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_digest | |
.def XXH64_digest; .scl 2; .type 32; .endef | |
.seh_proc XXH64_digest | |
XXH64_digest: | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
movabs rax, 2870177450012600261 | |
mov rdx, QWORD PTR 24[rcx] | |
mov r8, QWORD PTR [rcx] | |
add rax, rdx | |
cmp r8, 31 | |
jbe .L286 | |
mov r10, QWORD PTR 8[rcx] | |
mov rdi, QWORD PTR 16[rcx] | |
movabs rax, -4417276706812531889 | |
movabs r11, -7046029288634856825 | |
mov r9, QWORD PTR 32[rcx] | |
mov rsi, r10 | |
mov rbx, rdi | |
rol r10 | |
imul rsi, rax | |
rol rbx, 7 | |
add r10, rbx | |
imul rdi, rax | |
mov rbx, rdx | |
rol rbx, 12 | |
imul rdx, rax | |
rol rsi, 31 | |
imul rax, r9 | |
add r10, rbx | |
mov rbx, r9 | |
imul rsi, r11 | |
rol rbx, 18 | |
rol rdi, 31 | |
add rbx, r10 | |
imul rdi, r11 | |
rol rdx, 31 | |
movabs r10, -8796714831421723037 | |
imul rdx, r11 | |
rol rax, 31 | |
xor rbx, rsi | |
imul rax, r11 | |
mov rsi, rbx | |
imul rsi, r11 | |
lea rbx, [rsi+r10] | |
xor rbx, rdi | |
imul rbx, r11 | |
add rbx, r10 | |
xor rdx, rbx | |
imul rdx, r11 | |
lea r9, [rdx+r10] | |
xor rax, r9 | |
imul rax, r11 | |
add rax, r10 | |
.L286: | |
lea rdx, 40[rcx] | |
xor r9d, r9d | |
lea rcx, [r8+rax] | |
pop rbx | |
pop rsi | |
pop rdi | |
jmp XXH64_finalize | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_canonicalFromHash | |
.def XXH64_canonicalFromHash; .scl 2; .type 32; .endef | |
.seh_proc XXH64_canonicalFromHash | |
XXH64_canonicalFromHash: | |
.seh_endprologue | |
bswap rdx | |
mov QWORD PTR [rcx], rdx | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH64_hashFromCanonical | |
.def XXH64_hashFromCanonical; .scl 2; .type 32; .endef | |
.seh_proc XXH64_hashFromCanonical | |
XXH64_hashFromCanonical: | |
.seh_endprologue | |
mov rax, QWORD PTR [rcx] | |
bswap rax | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits | |
.def XXH3_64bits; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits | |
XXH3_64bits: | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
mov r10, rdx | |
cmp rdx, 16 | |
jbe .L303 | |
cmp rdx, 128 | |
jbe .L304 | |
cmp rdx, 240 | |
ja .L298 | |
xor r9d, r9d | |
lea r8, kSecret[rip] | |
pop rbx | |
pop rsi | |
jmp XXH3_len_129to240_64b.isra.0 | |
.p2align 4,,10 | |
.p2align 3 | |
.L304: | |
movabs rax, -7046029288634856825 | |
imul rax, rdx | |
mov r11, rax | |
cmp rdx, 32 | |
ja .L305 | |
.L295: | |
movabs r8, -4734510112055689544 | |
xor r8, QWORD PTR [rcx] | |
movabs rax, 2066345149520216444 | |
xor rax, QWORD PTR 8[rcx] | |
mul r8 | |
lea rcx, -16[rcx+r10] | |
mov rbx, QWORD PTR 8[rcx] | |
mov r9, rdx | |
mov r8, rax | |
movabs rdx, 2262974939099578482 | |
movabs rax, -2623469361688619810 | |
xor rbx, rdx | |
xor rax, QWORD PTR [rcx] | |
xor r8, r9 | |
mul rbx | |
xor rdx, rax | |
lea rax, [rdx+r8] | |
add rax, r11 | |
.L302: | |
mov rdx, rax | |
shr rdx, 37 | |
xor rax, rdx | |
movabs rdx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rax, rdx | |
.L301: | |
pop rbx | |
pop rsi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L303: | |
cmp rdx, 8 | |
jbe .L291 | |
movabs rax, 7458650908927343033 | |
xor rax, QWORD PTR [rcx] | |
movabs rdx, -5812251307325107654 | |
xor rdx, QWORD PTR -8[rcx+r10] | |
mov rcx, rdx | |
mov r8, rax | |
mul rdx | |
bswap r8 | |
xor rdx, rax | |
lea rax, [r10+rcx] | |
add rax, rdx | |
add rax, r8 | |
mov r10, rax | |
shr r10, 37 | |
xor rax, r10 | |
movabs r10, 1609587791953885689 | |
imul r10, rax | |
mov rax, r10 | |
shr rax, 32 | |
xor rax, r10 | |
pop rbx | |
pop rsi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L298: | |
pop rbx | |
pop rsi | |
jmp XXH3_hashLong_64b_defaultSecret | |
.p2align 4,,10 | |
.p2align 3 | |
.L305: | |
cmp rdx, 64 | |
jbe .L296 | |
cmp rdx, 96 | |
ja .L306 | |
.L297: | |
movabs r8, -3818837453329782724 | |
xor r8, QWORD PTR 32[rcx] | |
lea rbx, -48[rcx+r10] | |
movabs rax, -6688317018830679928 | |
xor rax, QWORD PTR 40[rcx] | |
mul r8 | |
mov r8, rax | |
mov r9, rdx | |
movabs rax, 5690594596133299313 | |
xor rax, QWORD PTR [rbx] | |
movabs rdx, -2833645246901970632 | |
xor rdx, QWORD PTR 8[rbx] | |
xor r8, r9 | |
mul rdx | |
xor rax, rdx | |
add rax, r8 | |
add r11, rax | |
.L296: | |
movabs r8, 8711581037947681227 | |
xor r8, QWORD PTR 16[rcx] | |
lea rbx, -32[rcx+r10] | |
movabs rax, 2410270004345854594 | |
xor rax, QWORD PTR 24[rcx] | |
mul r8 | |
mov r8, rax | |
mov r9, rdx | |
movabs rax, -8204357891075471176 | |
xor rax, QWORD PTR [rbx] | |
movabs rdx, 5487137525590930912 | |
xor rdx, QWORD PTR 8[rbx] | |
xor r8, r9 | |
mul rdx | |
xor rax, rdx | |
add rax, r8 | |
add r11, rax | |
jmp .L295 | |
.p2align 4,,10 | |
.p2align 3 | |
.L306: | |
movabs rax, 4554437623014685352 | |
xor rax, QWORD PTR 48[rcx] | |
movabs rdx, 2111919702937427193 | |
xor rdx, QWORD PTR 56[rcx] | |
mul rdx | |
xor rax, rdx | |
lea rdx, -64[rcx+r10] | |
lea r8, [rax+r11] | |
movabs rax, 3556072174620004746 | |
xor rax, QWORD PTR [rdx] | |
movabs r11, 7238261902898274248 | |
xor r11, QWORD PTR 8[rdx] | |
mul r11 | |
xor rax, rdx | |
lea r11, [rax+r8] | |
jmp .L297 | |
.p2align 4,,10 | |
.p2align 3 | |
.L291: | |
cmp rdx, 3 | |
jbe .L293 | |
mov eax, DWORD PTR [rcx] | |
mov edx, DWORD PTR -4[rcx+rdx] | |
sal rax, 32 | |
add rax, rdx | |
movabs rdx, -4090762196417718878 | |
xor rax, rdx | |
mov rdx, rax | |
mov rcx, rax | |
rol rcx, 24 | |
ror rdx, 15 | |
xor rdx, rcx | |
movabs rcx, -6939452855193903323 | |
xor rax, rdx | |
imul rax, rcx | |
mov rdx, rax | |
shr rdx, 35 | |
add r10, rdx | |
xor rax, r10 | |
imul rax, rcx | |
mov r10, rax | |
shr rax, 28 | |
xor rax, r10 | |
jmp .L301 | |
.L293: | |
movabs rax, 8606060009869906325 | |
test rdx, rdx | |
je .L301 | |
movzx eax, BYTE PTR [rcx] | |
sal edx, 8 | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[rcx+r10] | |
shr r10 | |
or eax, edx | |
movzx edx, BYTE PTR [rcx+r10] | |
sal edx, 24 | |
or eax, edx | |
movabs rdx, -7046029288634856825 | |
xor eax, -2027464037 | |
imul rax, rdx | |
jmp .L302 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_withSecret | |
.def XXH3_64bits_withSecret; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_withSecret | |
XXH3_64bits_withSecret: | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
.seh_endprologue | |
mov r11, rcx | |
mov r10, rdx | |
cmp rdx, 16 | |
jbe .L321 | |
cmp rdx, 128 | |
jbe .L322 | |
cmp rdx, 240 | |
ja .L317 | |
xor r9d, r9d | |
pop rbx | |
pop rsi | |
pop rdi | |
jmp XXH3_len_129to240_64b.isra.0 | |
.p2align 4,,10 | |
.p2align 3 | |
.L322: | |
movabs rax, -7046029288634856825 | |
imul rax, rdx | |
mov r9, rax | |
cmp rdx, 32 | |
ja .L323 | |
.L314: | |
mov rcx, QWORD PTR [r8] | |
mov rax, QWORD PTR 8[r8] | |
lea r10, -16[r11+r10] | |
xor rcx, QWORD PTR [r11] | |
xor rax, QWORD PTR 8[r11] | |
mul rcx | |
mov rdi, QWORD PTR 8[r10] | |
mov rbx, rdx | |
mov rdx, QWORD PTR 24[r8] | |
mov rcx, rax | |
mov rax, QWORD PTR 16[r8] | |
xor rax, QWORD PTR [r10] | |
xor rcx, rbx | |
xor rdi, rdx | |
mul rdi | |
xor rdx, rax | |
lea rax, [rdx+rcx] | |
add rax, r9 | |
.L319: | |
mov rdx, rax | |
shr rdx, 37 | |
.L320: | |
xor rax, rdx | |
movabs rdx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rax, rdx | |
.L318: | |
pop rbx | |
pop rsi | |
pop rdi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L321: | |
cmp rdx, 8 | |
jbe .L309 | |
mov rax, QWORD PTR 32[r8] | |
xor rax, QWORD PTR 24[r8] | |
xor rax, QWORD PTR [rcx] | |
mov rcx, QWORD PTR 48[r8] | |
xor rcx, QWORD PTR 40[r8] | |
xor rcx, QWORD PTR -8[r11+rdx] | |
mov r8, rax | |
mul rcx | |
add r10, rcx | |
bswap r8 | |
xor rax, rdx | |
add rax, r10 | |
add rax, r8 | |
mov r10, rax | |
shr r10, 37 | |
xor rax, r10 | |
movabs r10, 1609587791953885689 | |
imul r10, rax | |
mov rax, r10 | |
shr rax, 32 | |
xor rax, r10 | |
pop rbx | |
pop rsi | |
pop rdi | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L317: | |
pop rbx | |
pop rsi | |
pop rdi | |
jmp XXH3_hashLong_64b_withSecret | |
.p2align 4,,10 | |
.p2align 3 | |
.L323: | |
cmp rdx, 64 | |
jbe .L315 | |
cmp rdx, 96 | |
ja .L324 | |
.L316: | |
mov rcx, QWORD PTR 64[r8] | |
mov rax, QWORD PTR 72[r8] | |
lea rsi, -48[r11+r10] | |
xor rcx, QWORD PTR 32[r11] | |
xor rax, QWORD PTR 40[r11] | |
mul rcx | |
mov rcx, rax | |
mov rbx, rdx | |
mov rax, QWORD PTR 80[r8] | |
mov rdx, QWORD PTR 88[r8] | |
xor rax, QWORD PTR [rsi] | |
xor rdx, QWORD PTR 8[rsi] | |
xor rcx, rbx | |
mul rdx | |
xor rax, rdx | |
add rax, rcx | |
add r9, rax | |
.L315: | |
mov rcx, QWORD PTR 32[r8] | |
mov rax, QWORD PTR 40[r8] | |
lea rsi, -32[r11+r10] | |
xor rcx, QWORD PTR 16[r11] | |
xor rax, QWORD PTR 24[r11] | |
mul rcx | |
mov rcx, rax | |
mov rbx, rdx | |
mov rax, QWORD PTR 48[r8] | |
mov rdx, QWORD PTR 56[r8] | |
xor rax, QWORD PTR [rsi] | |
xor rdx, QWORD PTR 8[rsi] | |
xor rcx, rbx | |
mul rdx | |
xor rax, rdx | |
add rax, rcx | |
add r9, rax | |
jmp .L314 | |
.p2align 4,,10 | |
.p2align 3 | |
.L324: | |
mov rax, QWORD PTR 96[r8] | |
mov rdx, QWORD PTR 104[r8] | |
xor rax, QWORD PTR 48[rcx] | |
xor rdx, QWORD PTR 56[rcx] | |
mul rdx | |
xor rax, rdx | |
lea rdx, -64[r11+r10] | |
lea rcx, [rax+r9] | |
mov rax, QWORD PTR 112[r8] | |
mov r9, QWORD PTR 120[r8] | |
xor rax, QWORD PTR [rdx] | |
xor r9, QWORD PTR 8[rdx] | |
mul r9 | |
xor rax, rdx | |
lea r9, [rax+rcx] | |
jmp .L316 | |
.p2align 4,,10 | |
.p2align 3 | |
.L309: | |
cmp rdx, 3 | |
jbe .L311 | |
mov eax, DWORD PTR [rcx] | |
mov edx, DWORD PTR -4[rcx+rdx] | |
sal rax, 32 | |
add rax, rdx | |
mov rdx, QWORD PTR 16[r8] | |
xor rdx, QWORD PTR 8[r8] | |
xor rax, rdx | |
mov rdx, rax | |
mov rcx, rax | |
rol rcx, 24 | |
ror rdx, 15 | |
xor rdx, rcx | |
movabs rcx, -6939452855193903323 | |
xor rax, rdx | |
imul rax, rcx | |
mov rdx, rax | |
shr rdx, 35 | |
add r10, rdx | |
xor rax, r10 | |
imul rax, rcx | |
mov r10, rax | |
shr rax, 28 | |
xor rax, r10 | |
jmp .L318 | |
.L311: | |
test rdx, rdx | |
jne .L325 | |
movabs rdx, -7046029288634856825 | |
mov rax, QWORD PTR 64[r8] | |
xor rax, QWORD PTR 56[r8] | |
xor rdx, rax | |
mov rax, rdx | |
shr rax, 37 | |
jmp .L320 | |
.L325: | |
movzx eax, BYTE PTR [rcx] | |
sal edx, 8 | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[rcx+r10] | |
shr r10 | |
or eax, edx | |
movzx edx, BYTE PTR [rcx+r10] | |
sal edx, 24 | |
or eax, edx | |
mov edx, DWORD PTR 4[r8] | |
xor edx, DWORD PTR [r8] | |
xor eax, edx | |
movabs rdx, -7046029288634856825 | |
imul rax, rdx | |
jmp .L319 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_withSeed | |
.def XXH3_64bits_withSeed; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_withSeed | |
XXH3_64bits_withSeed: | |
push r12 | |
.seh_pushreg r12 | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
.seh_endprologue | |
mov r10, rdx | |
cmp rdx, 16 | |
jbe .L340 | |
cmp rdx, 128 | |
jbe .L341 | |
cmp rdx, 240 | |
ja .L336 | |
mov r9, r8 | |
lea r8, kSecret[rip] | |
pop rsi | |
pop rdi | |
pop r12 | |
jmp XXH3_len_129to240_64b.isra.0 | |
.p2align 4,,10 | |
.p2align 3 | |
.L341: | |
movabs rax, -7046029288634856825 | |
imul rax, rdx | |
mov r9, rax | |
cmp rdx, 32 | |
ja .L342 | |
.L333: | |
movabs rsi, -4734510112055689544 | |
movabs rax, 2066345149520216444 | |
add rsi, r8 | |
sub rax, r8 | |
xor rsi, QWORD PTR [rcx] | |
xor rax, QWORD PTR 8[rcx] | |
mul rsi | |
lea rcx, -16[rcx+r10] | |
mov rsi, rax | |
mov rdi, rdx | |
movabs rax, -2623469361688619810 | |
movabs rdx, 2262974939099578482 | |
add rax, r8 | |
sub rdx, r8 | |
xor rax, QWORD PTR [rcx] | |
xor rdx, QWORD PTR 8[rcx] | |
mul rdx | |
xor rsi, rdi | |
xor rdx, rax | |
lea rax, [rdx+rsi] | |
add rax, r9 | |
.L338: | |
mov rdx, rax | |
shr rdx, 37 | |
.L339: | |
xor rax, rdx | |
movabs rdx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rax, rdx | |
.L337: | |
pop rsi | |
pop rdi | |
pop r12 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L340: | |
cmp rdx, 8 | |
jbe .L328 | |
movabs rax, 7458650908927343033 | |
movabs rdx, -5812251307325107654 | |
add rax, r8 | |
sub rdx, r8 | |
xor rax, QWORD PTR [rcx] | |
xor rdx, QWORD PTR -8[rcx+r10] | |
mov rcx, rdx | |
mov r8, rax | |
mul rdx | |
add r10, rcx | |
bswap r8 | |
xor rax, rdx | |
add rax, r10 | |
add rax, r8 | |
mov r10, rax | |
shr r10, 37 | |
xor rax, r10 | |
movabs r10, 1609587791953885689 | |
imul r10, rax | |
mov rax, r10 | |
shr rax, 32 | |
xor rax, r10 | |
pop rsi | |
pop rdi | |
pop r12 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L336: | |
pop rsi | |
pop rdi | |
pop r12 | |
jmp XXH3_hashLong_64b_withSeed | |
.p2align 4,,10 | |
.p2align 3 | |
.L342: | |
cmp rdx, 64 | |
jbe .L334 | |
cmp rdx, 96 | |
ja .L343 | |
.L335: | |
movabs rsi, -3818837453329782724 | |
lea r11, -48[rcx+r10] | |
movabs rax, -6688317018830679928 | |
add rsi, r8 | |
sub rax, r8 | |
xor rsi, QWORD PTR 32[rcx] | |
xor rax, QWORD PTR 40[rcx] | |
mul rsi | |
mov rsi, rax | |
mov rdi, rdx | |
movabs rax, 5690594596133299313 | |
movabs rdx, -2833645246901970632 | |
add rax, r8 | |
sub rdx, r8 | |
xor rax, QWORD PTR [r11] | |
xor rdx, QWORD PTR 8[r11] | |
mul rdx | |
xor rsi, rdi | |
xor rax, rdx | |
add rax, rsi | |
add r9, rax | |
.L334: | |
movabs rsi, 8711581037947681227 | |
lea r11, -32[rcx+r10] | |
movabs rax, 2410270004345854594 | |
add rsi, r8 | |
sub rax, r8 | |
xor rsi, QWORD PTR 16[rcx] | |
xor rax, QWORD PTR 24[rcx] | |
mul rsi | |
mov rsi, rax | |
mov rdi, rdx | |
movabs rax, -8204357891075471176 | |
movabs rdx, 5487137525590930912 | |
add rax, r8 | |
sub rdx, r8 | |
xor rax, QWORD PTR [r11] | |
xor rdx, QWORD PTR 8[r11] | |
mul rdx | |
xor rsi, rdi | |
xor rax, rdx | |
add rax, rsi | |
add r9, rax | |
jmp .L333 | |
.p2align 4,,10 | |
.p2align 3 | |
.L343: | |
movabs rax, 4554437623014685352 | |
movabs rdx, 2111919702937427193 | |
add rax, r8 | |
sub rdx, r8 | |
xor rax, QWORD PTR 48[rcx] | |
xor rdx, QWORD PTR 56[rcx] | |
mul rdx | |
xor rax, rdx | |
lea rdx, -64[rcx+r10] | |
lea r11, [rax+r9] | |
movabs rax, 3556072174620004746 | |
movabs r9, 7238261902898274248 | |
add rax, r8 | |
sub r9, r8 | |
xor rax, QWORD PTR [rdx] | |
xor r9, QWORD PTR 8[rdx] | |
mul r9 | |
xor rax, rdx | |
lea r9, [rax+r11] | |
jmp .L335 | |
.p2align 4,,10 | |
.p2align 3 | |
.L328: | |
cmp rdx, 3 | |
jbe .L330 | |
mov eax, DWORD PTR [rcx] | |
mov edx, DWORD PTR -4[rcx+rdx] | |
mov r9d, r8d | |
bswap r9d | |
sal r9, 32 | |
sal rax, 32 | |
xor r9, r8 | |
add rax, rdx | |
movabs rdx, -4090762196417718878 | |
sub rdx, r9 | |
xor rax, rdx | |
mov rdx, rax | |
mov rcx, rax | |
rol rcx, 24 | |
ror rdx, 15 | |
xor rdx, rcx | |
movabs rcx, -6939452855193903323 | |
xor rax, rdx | |
imul rax, rcx | |
mov rdx, rax | |
shr rdx, 35 | |
add r10, rdx | |
xor rax, r10 | |
imul rax, rcx | |
mov r10, rax | |
shr rax, 28 | |
xor rax, r10 | |
jmp .L337 | |
.L330: | |
test rdx, rdx | |
jne .L344 | |
movabs rax, -7046029288634856825 | |
movabs rdx, -8707998980786479652 | |
add rax, r8 | |
xor rdx, rax | |
mov rax, rdx | |
shr rax, 37 | |
jmp .L339 | |
.L344: | |
movzx eax, BYTE PTR [rcx] | |
sal edx, 8 | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[rcx+r10] | |
shr r10 | |
or eax, edx | |
movzx edx, BYTE PTR [rcx+r10] | |
sal edx, 24 | |
or eax, edx | |
mov edx, 2267503259 | |
add rdx, r8 | |
xor rax, rdx | |
movabs rdx, -7046029288634856825 | |
imul rax, rdx | |
jmp .L338 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_createState | |
.def XXH3_createState; .scl 2; .type 32; .endef | |
.seh_proc XXH3_createState | |
XXH3_createState: | |
.seh_endprologue | |
mov ecx, 576 | |
jmp malloc | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_freeState | |
.def XXH3_freeState; .scl 2; .type 32; .endef | |
.seh_proc XXH3_freeState | |
XXH3_freeState: | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
call free | |
xor eax, eax | |
add rsp, 40 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_copyState | |
.def XXH3_copyState; .scl 2; .type 32; .endef | |
.seh_proc XXH3_copyState | |
XXH3_copyState: | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
.seh_endprologue | |
mov rax, QWORD PTR [rdx] | |
lea rdi, 8[rcx] | |
mov QWORD PTR [rcx], rax | |
mov rax, QWORD PTR 568[rdx] | |
mov rsi, rdx | |
and rdi, -8 | |
mov QWORD PTR 568[rcx], rax | |
sub rcx, rdi | |
sub rsi, rcx | |
add ecx, 576 | |
shr ecx, 3 | |
rep movsq | |
pop rsi | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_reset | |
.def XXH3_64bits_reset; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_reset | |
XXH3_64bits_reset: | |
push rdi | |
.seh_pushreg rdi | |
.seh_endprologue | |
mov eax, 1 | |
mov rdx, rcx | |
test rcx, rcx | |
je .L352 | |
lea rdi, 8[rcx] | |
xor eax, eax | |
mov QWORD PTR 568[rcx], 0 | |
and rdi, -8 | |
sub rcx, rdi | |
add ecx, 576 | |
shr ecx, 3 | |
rep stosq | |
mov eax, 3266489917 | |
mov DWORD PTR 524[rdx], 128 | |
mov QWORD PTR [rdx], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[rdx], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[rdx], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[rdx], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[rdx], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[rdx], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[rdx], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[rdx], rax | |
lea rax, kSecret[rip] | |
mov QWORD PTR 560[rdx], rax | |
xor eax, eax | |
mov DWORD PTR 516[rdx], 16 | |
.L352: | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_reset_withSecret | |
.def XXH3_64bits_reset_withSecret; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_reset_withSecret | |
XXH3_64bits_reset_withSecret: | |
push rdi | |
.seh_pushreg rdi | |
.seh_endprologue | |
mov eax, 1 | |
mov r9, rcx | |
test rcx, rcx | |
je .L357 | |
lea rdi, 8[rcx] | |
xor eax, eax | |
mov QWORD PTR 568[rcx], 0 | |
and rdi, -8 | |
sub rcx, rdi | |
add ecx, 576 | |
shr ecx, 3 | |
rep stosq | |
mov eax, 3266489917 | |
mov QWORD PTR 560[r9], rdx | |
mov QWORD PTR [r9], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r9], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r9], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r9], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r9], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r9], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r9], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r9], rax | |
lea eax, -64[r8] | |
mov DWORD PTR 524[r9], eax | |
shr eax, 3 | |
cmp r8, 135 | |
mov DWORD PTR 516[r9], eax | |
setbe al | |
test rdx, rdx | |
sete dl | |
or eax, edx | |
movzx eax, al | |
.L357: | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_reset_withSeed | |
.def XXH3_64bits_reset_withSeed; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_reset_withSeed | |
XXH3_64bits_reset_withSeed: | |
push rdi | |
.seh_pushreg rdi | |
.seh_endprologue | |
mov eax, 1 | |
mov r9, rcx | |
test rcx, rcx | |
je .L364 | |
lea rdi, 8[rcx] | |
xor eax, eax | |
lea r11, 64[r9] | |
mov QWORD PTR 568[rcx], 0 | |
movabs r8, -4734510112055689544 | |
and rdi, -8 | |
sub rcx, rdi | |
add ecx, 576 | |
shr ecx, 3 | |
rep stosq | |
mov eax, 3266489917 | |
mov QWORD PTR 544[r9], rdx | |
lea rcx, 72[r9] | |
mov QWORD PTR [r9], rax | |
movabs rax, -7046029288634856825 | |
mov QWORD PTR 8[r9], rax | |
movabs rax, -4417276706812531889 | |
mov QWORD PTR 16[r9], rax | |
movabs rax, 1609587929392839161 | |
mov QWORD PTR 24[r9], rax | |
movabs rax, -8796714831421723037 | |
mov QWORD PTR 32[r9], rax | |
mov eax, 2246822519 | |
mov QWORD PTR 40[r9], rax | |
movabs rax, 2870177450012600261 | |
mov QWORD PTR 48[r9], rax | |
mov eax, 2654435761 | |
mov QWORD PTR 56[r9], rax | |
lea rax, kSecret[rip] | |
mov QWORD PTR 560[r9], rax | |
lea r10, 192[rax] | |
mov DWORD PTR 524[r9], 128 | |
mov DWORD PTR 516[r9], 16 | |
jmp .L361 | |
.p2align 4,,10 | |
.p2align 3 | |
.L365: | |
mov r8, QWORD PTR [rax] | |
.L361: | |
add r8, rdx | |
add rax, 16 | |
add rcx, 16 | |
mov QWORD PTR -24[rcx], r8 | |
mov r8, QWORD PTR -8[rax] | |
sub r8, rdx | |
mov QWORD PTR -16[rcx], r8 | |
cmp rax, r10 | |
jne .L365 | |
mov QWORD PTR 560[r9], r11 | |
xor eax, eax | |
.L364: | |
pop rdi | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_update | |
.def XXH3_64bits_update; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_update | |
XXH3_64bits_update: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
mov rbx, rcx | |
mov r12, rdx | |
test rdx, rdx | |
je .L390 | |
lea rdi, [rdx+r8] | |
mov edx, DWORD PTR 512[rcx] | |
add QWORD PTR 536[rcx], r8 | |
lea rcx, [r8+rdx] | |
cmp rcx, 256 | |
jbe .L403 | |
test edx, edx | |
jne .L404 | |
lea rax, 256[r12] | |
cmp rdi, rax | |
jb .L379 | |
.L406: | |
mov eax, DWORD PTR 524[rbx] | |
mov rsi, QWORD PTR 560[rbx] | |
lea rbp, -256[rdi] | |
lea r11, 640[r12] | |
mov r13d, DWORD PTR 516[rbx] | |
vmovdqa ymm2, YMMWORD PTR .LC1[rip] | |
mov r8, r12 | |
lea r15, [rsi+rax] | |
lea r14, 32[rsi+rax] | |
.p2align 4,,10 | |
.p2align 3 | |
.L389: | |
mov edx, DWORD PTR 520[rbx] | |
mov r9d, r13d | |
sub r9d, edx | |
lea ecx, 0[0+rdx*8] | |
cmp r9d, 4 | |
ja .L380 | |
mov eax, r9d | |
test r9d, r9d | |
je .L381 | |
mov r10, rax | |
lea r9, 384[r8] | |
add rcx, rsi | |
sal r10, 6 | |
lea r10, 384[r8+r10] | |
.p2align 4,,10 | |
.p2align 3 | |
.L382: | |
vmovdqu ymm5, YMMWORD PTR [rcx] | |
prefetcht0 [r9] | |
add r9, 64 | |
add rcx, 8 | |
vpxor ymm1, ymm5, YMMWORD PTR -448[r9] | |
vpshufd ymm0, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm0 | |
vpaddq ymm1, ymm1, YMMWORD PTR [rbx] | |
vpaddq ymm1, ymm1, YMMWORD PTR -448[r9] | |
vmovdqa YMMWORD PTR [rbx], ymm1 | |
vmovdqu ymm5, YMMWORD PTR 24[rcx] | |
vmovdqa ymm4, ymm1 | |
vpxor ymm0, ymm5, YMMWORD PTR -416[r9] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[r9] | |
vmovdqa ymm3, ymm0 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r10, r9 | |
jne .L382 | |
.L383: | |
vpxor ymm1, ymm1, YMMWORD PTR [r15] | |
vpsrlq ymm4, ymm4, 47 | |
vpxor ymm0, ymm0, YMMWORD PTR [r14] | |
mov ecx, 4 | |
vpsrlq ymm3, ymm3, 47 | |
vpxor ymm1, ymm1, ymm4 | |
vpxor ymm0, ymm0, ymm3 | |
vpshufd ymm4, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpmuludq ymm4, ymm4, ymm2 | |
vpsllq ymm4, ymm4, 32 | |
vpaddq ymm1, ymm1, ymm4 | |
vmovdqa YMMWORD PTR [rbx], ymm1 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpsllq ymm1, ymm1, 32 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
sub rcx, rax | |
je .L387 | |
add rax, 6 | |
mov r9, rsi | |
lea rcx, [rsi+rcx*8] | |
sal rax, 6 | |
add rax, r8 | |
.p2align 4,,10 | |
.p2align 3 | |
.L386: | |
vmovdqu ymm4, YMMWORD PTR [r9] | |
vpxor ymm0, ymm4, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add r9, 8 | |
add rax, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -448[rax] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm3, YMMWORD PTR 24[r9] | |
vpxor ymm0, ymm3, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rax] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp rcx, r9 | |
jne .L386 | |
.L387: | |
add edx, 4 | |
sub edx, r13d | |
mov DWORD PTR 520[rbx], edx | |
.L385: | |
add r8, 256 | |
add r11, 256 | |
cmp rbp, r8 | |
jnb .L389 | |
sub rbp, r12 | |
xor bpl, bpl | |
lea r12, 256[r12+rbp] | |
.L379: | |
xor r13d, r13d | |
cmp rdi, r12 | |
ja .L405 | |
vzeroupper | |
.L366: | |
mov eax, r13d | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.L405: | |
sub rdi, r12 | |
lea rcx, 256[rbx] | |
mov rdx, r12 | |
mov r8, rdi | |
vzeroupper | |
call memcpy | |
mov DWORD PTR 512[rbx], edi | |
jmp .L366 | |
.L404: | |
mov esi, 256 | |
lea rcx, 256[rbx+rdx] | |
sub esi, edx | |
mov rdx, r12 | |
mov r8, rsi | |
add r12, rsi | |
call memcpy | |
mov r10d, DWORD PTR 516[rbx] | |
mov r8d, DWORD PTR 520[rbx] | |
mov rcx, QWORD PTR 560[rbx] | |
mov r9d, r10d | |
sub r9d, r8d | |
cmp r9d, 4 | |
ja .L370 | |
mov esi, DWORD PTR 524[rbx] | |
mov r11d, r9d | |
lea edx, 0[0+r8*8] | |
test r9d, r9d | |
je .L371 | |
mov r9, r11 | |
lea rax, 640[rbx] | |
add rdx, rcx | |
sal r9, 6 | |
add r9, rax | |
.p2align 4,,10 | |
.p2align 3 | |
.L372: | |
vmovdqu ymm2, YMMWORD PTR [rdx] | |
vpxor ymm0, ymm2, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add rdx, 8 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm1, ymm1, YMMWORD PTR [rbx] | |
vpaddq ymm1, ymm1, YMMWORD PTR -448[rax] | |
vmovdqa YMMWORD PTR [rbx], ymm1 | |
vmovdqu ymm2, YMMWORD PTR 24[rdx] | |
vmovdqa ymm3, ymm1 | |
vpxor ymm0, ymm2, YMMWORD PTR -416[rax] | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rax] | |
vmovdqa ymm2, ymm0 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r9, rax | |
jne .L372 | |
.L373: | |
mov eax, esi | |
vpsrlq ymm3, ymm3, 47 | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
vpxor ymm1, ymm1, YMMWORD PTR [rcx+rax] | |
vpsrlq ymm2, ymm2, 47 | |
vpxor ymm0, ymm0, YMMWORD PTR 32[rcx+rax] | |
mov eax, 4 | |
sub rax, r11 | |
vpxor ymm1, ymm1, ymm3 | |
vpxor ymm0, ymm0, ymm2 | |
mov r9, rax | |
vpshufd ymm3, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm4 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpsllq ymm3, ymm3, 32 | |
vpaddq ymm1, ymm1, ymm3 | |
vmovdqa YMMWORD PTR [rbx], ymm1 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpmuludq ymm1, ymm1, ymm4 | |
vpsllq ymm1, ymm1, 32 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
je .L377 | |
sal r11, 6 | |
mov rax, rcx | |
lea rcx, [rcx+r9*8] | |
lea rdx, 640[rbx+r11] | |
.p2align 4,,10 | |
.p2align 3 | |
.L376: | |
vmovdqu ymm2, YMMWORD PTR [rax] | |
vpxor ymm0, ymm2, YMMWORD PTR -384[rdx] | |
prefetcht0 [rdx] | |
add rax, 8 | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -448[rdx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm2, YMMWORD PTR 24[rax] | |
vpxor ymm0, ymm2, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rdx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp rcx, rax | |
jne .L376 | |
.L377: | |
add r8d, 4 | |
sub r8d, r10d | |
mov DWORD PTR 520[rbx], r8d | |
jmp .L375 | |
.p2align 4,,10 | |
.p2align 3 | |
.L380: | |
lea rax, 384[r8] | |
add rcx, rsi | |
.p2align 4,,10 | |
.p2align 3 | |
.L388: | |
vmovdqu ymm5, YMMWORD PTR [rcx] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add rcx, 8 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -448[rax] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm4, YMMWORD PTR 24[rcx] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rax] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r11, rax | |
jne .L388 | |
add edx, 4 | |
mov DWORD PTR 520[rbx], edx | |
jmp .L385 | |
.L370: | |
lea edx, 0[0+r8*8] | |
lea rax, 640[rbx] | |
add rdx, rcx | |
lea rcx, 896[rbx] | |
.p2align 4,,10 | |
.p2align 3 | |
.L378: | |
vmovdqu ymm2, YMMWORD PTR [rdx] | |
vpxor ymm0, ymm2, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add rdx, 8 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -448[rax] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm2, YMMWORD PTR 24[rdx] | |
vpxor ymm0, ymm2, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rax] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp rcx, rax | |
jne .L378 | |
add r8d, 4 | |
mov DWORD PTR 520[rbx], r8d | |
.L375: | |
lea rax, 256[r12] | |
mov DWORD PTR 512[rbx], 0 | |
cmp rdi, rax | |
jb .L379 | |
jmp .L406 | |
.L390: | |
mov r13d, 1 | |
jmp .L366 | |
.L403: | |
lea rcx, 256[rbx+rdx] | |
mov rdx, r12 | |
mov QWORD PTR 128[rsp], r8 | |
xor r13d, r13d | |
call memcpy | |
mov r8, QWORD PTR 128[rsp] | |
add DWORD PTR 512[rbx], r8d | |
jmp .L366 | |
.L381: | |
vmovdqa ymm4, YMMWORD PTR [rbx] | |
vmovdqa ymm3, YMMWORD PTR 32[rbx] | |
vmovdqa ymm1, ymm4 | |
vmovdqa ymm0, ymm3 | |
jmp .L383 | |
.L371: | |
vmovdqa ymm3, YMMWORD PTR [rbx] | |
vmovdqa ymm2, YMMWORD PTR 32[rbx] | |
vmovdqa ymm1, ymm3 | |
vmovdqa ymm0, ymm2 | |
jmp .L373 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_64bits_digest | |
.def XXH3_64bits_digest; .scl 2; .type 32; .endef | |
.seh_proc XXH3_64bits_digest | |
XXH3_64bits_digest: | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 176 | |
.seh_stackalloc 176 | |
.seh_endprologue | |
mov rdx, QWORD PTR 536[rcx] | |
lea r9, 127[rsp] | |
and r9, -32 | |
cmp rdx, 240 | |
ja .L461 | |
mov r8, QWORD PTR 544[rcx] | |
lea r10, 256[rcx] | |
test r8, r8 | |
jne .L462 | |
mov eax, DWORD PTR 524[rcx] | |
mov r8, QWORD PTR 560[rcx] | |
mov rcx, r10 | |
lea r9d, 64[rax] | |
call XXH3_64bits_withSecret | |
.L459: | |
add rsp, 176 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L462: | |
mov rcx, r10 | |
call XXH3_64bits_withSeed | |
jmp .L459 | |
.p2align 4,,10 | |
.p2align 3 | |
.L461: | |
vmovdqu xmm5, XMMWORD PTR [rcx] | |
vmovdqu xmm4, XMMWORD PTR 16[rcx] | |
mov r11d, DWORD PTR 512[rcx] | |
mov r10, QWORD PTR 560[rcx] | |
vmovaps XMMWORD PTR [r9], xmm5 | |
vmovdqu xmm5, XMMWORD PTR 32[rcx] | |
vmovaps XMMWORD PTR 16[r9], xmm4 | |
vmovdqu xmm4, XMMWORD PTR 48[rcx] | |
vmovaps XMMWORD PTR 32[r9], xmm5 | |
vmovaps XMMWORD PTR 48[r9], xmm4 | |
cmp r11d, 63 | |
jbe .L409 | |
mov eax, DWORD PTR 520[rcx] | |
mov ebp, DWORD PTR 516[rcx] | |
mov edi, r11d | |
lea rsi, 256[rcx] | |
shr edi, 6 | |
mov ebx, DWORD PTR 524[rcx] | |
vmovdqa ymm1, YMMWORD PTR [r9] | |
sub ebp, eax | |
vmovdqa ymm0, YMMWORD PTR 32[r9] | |
sal eax, 3 | |
cmp rdi, rbp | |
jb .L410 | |
test rbp, rbp | |
je .L413 | |
mov r12, rbp | |
lea r8, 640[rcx] | |
add rax, r10 | |
sal r12, 6 | |
add r12, r8 | |
.p2align 4,,10 | |
.p2align 3 | |
.L412: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
prefetcht0 [r8] | |
add r8, 64 | |
add rax, 8 | |
vpxor ymm2, ymm5, YMMWORD PTR -448[r8] | |
vpshufd ymm3, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm3 | |
vpaddq ymm1, ymm1, ymm2 | |
vpaddq ymm1, ymm1, YMMWORD PTR -448[r8] | |
vmovdqa YMMWORD PTR [r9], ymm1 | |
vmovdqu ymm4, YMMWORD PTR 24[rax] | |
vpxor ymm2, ymm4, YMMWORD PTR -416[r8] | |
vpshufd ymm3, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm3 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[r8] | |
vmovdqa YMMWORD PTR 32[r9], ymm0 | |
cmp r12, r8 | |
jne .L412 | |
.L413: | |
vpsrlq ymm2, ymm1, 47 | |
vpxor ymm1, ymm1, YMMWORD PTR [r10+rbx] | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
vpxor ymm1, ymm1, ymm2 | |
vpsrlq ymm2, ymm0, 47 | |
vpshufd ymm3, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm4 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpsllq ymm3, ymm3, 32 | |
vpaddq ymm1, ymm1, ymm3 | |
vmovdqa YMMWORD PTR [r9], ymm1 | |
vpxor ymm0, ymm0, YMMWORD PTR 32[r10+rbx] | |
vpxor ymm0, ymm0, ymm2 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpmuludq ymm2, ymm2, ymm4 | |
vpsllq ymm2, ymm2, 32 | |
vpaddq ymm2, ymm0, ymm2 | |
vmovdqa YMMWORD PTR 32[r9], ymm2 | |
sub rdi, rbp | |
je .L418 | |
sal rbp, 6 | |
lea rax, 32[r10] | |
lea rcx, 640[rcx+rbp] | |
lea r8, [rax+rdi*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L417: | |
vmovdqu ymm5, YMMWORD PTR -32[rax] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rcx] | |
prefetcht0 [rcx] | |
add rax, 8 | |
add rcx, 64 | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm1, ymm0 | |
vpaddq ymm1, ymm1, YMMWORD PTR -448[rcx] | |
vmovdqa YMMWORD PTR [r9], ymm1 | |
vmovdqu ymm4, YMMWORD PTR -8[rax] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[rcx] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpaddq ymm2, ymm2, ymm0 | |
vpaddq ymm2, ymm2, YMMWORD PTR -416[rcx] | |
vmovdqa YMMWORD PTR 32[r9], ymm2 | |
cmp r8, rax | |
jne .L417 | |
.L418: | |
test r11b, 63 | |
je .L460 | |
vmovdqu ymm5, YMMWORD PTR -7[r10+rbx] | |
vpxor ymm0, ymm5, YMMWORD PTR -64[rsi+r11] | |
vmovdqu ymm5, YMMWORD PTR -64[rsi+r11] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm5, YMMWORD PTR [r9] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR [r9], ymm0 | |
vmovdqu ymm0, YMMWORD PTR -32[rsi+r11] | |
vpxor ymm1, ymm0, YMMWORD PTR 25[r10+rbx] | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[r9] | |
vpshufd ymm2, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[r9], ymm0 | |
vzeroupper | |
jmp .L420 | |
.p2align 4,,10 | |
.p2align 3 | |
.L409: | |
test r11d, r11d | |
jne .L463 | |
.L420: | |
movabs r8, -7046029288634856825 | |
add r10, 11 | |
mov rcx, r9 | |
imul r8, rdx | |
mov rdx, r10 | |
call XXH3_mergeAccs | |
jmp .L459 | |
.p2align 4,,10 | |
.p2align 3 | |
.L463: | |
mov r8d, 64 | |
lea rsi, 256[rcx] | |
lea rdi, 32[rsp] | |
sub r8d, r11d | |
mov rax, rsi | |
mov r13, rdi | |
mov ebx, r8d | |
sub rax, rbx | |
lea r12, 256[rax] | |
mov rax, r12 | |
cmp r8d, 8 | |
jnb .L464 | |
.L421: | |
xor ebp, ebp | |
test r8b, 4 | |
je .L424 | |
mov ebp, DWORD PTR [rax] | |
mov DWORD PTR 0[r13], ebp | |
mov ebp, 4 | |
.L424: | |
test r8b, 2 | |
je .L425 | |
movzx r12d, WORD PTR [rax+rbp] | |
mov WORD PTR 0[r13+rbp], r12w | |
add rbp, 2 | |
.L425: | |
and r8d, 1 | |
je .L426 | |
movzx eax, BYTE PTR [rax+rbp] | |
mov BYTE PTR 0[r13+rbp], al | |
.L426: | |
add rbx, rdi | |
cmp r11d, 8 | |
jnb .L427 | |
test r11b, 4 | |
jne .L465 | |
test r11d, r11d | |
je .L428 | |
movzx eax, BYTE PTR 256[rcx] | |
mov BYTE PTR [rbx], al | |
test r11b, 2 | |
jne .L466 | |
.L428: | |
mov eax, DWORD PTR 524[rcx] | |
vmovdqu ymm5, YMMWORD PTR -7[r10+rax] | |
vpxor ymm0, ymm5, YMMWORD PTR 32[rsp] | |
vmovdqu ymm5, YMMWORD PTR 32[rsp] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm5, YMMWORD PTR [r9] | |
vmovdqu ymm5, YMMWORD PTR 64[rsp] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR [r9], ymm0 | |
vmovdqu ymm4, YMMWORD PTR 25[r10+rax] | |
vpxor ymm0, ymm4, YMMWORD PTR 64[rsp] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm1, ymm0, ymm1 | |
vpaddq ymm0, ymm5, YMMWORD PTR 32[r9] | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[r9], ymm0 | |
.L460: | |
vzeroupper | |
jmp .L420 | |
.p2align 4,,10 | |
.p2align 3 | |
.L410: | |
add rcx, 640 | |
sal rdi, 6 | |
add rax, r10 | |
lea r8, [rdi+rcx] | |
.p2align 4,,10 | |
.p2align 3 | |
.L419: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
vpxor ymm2, ymm5, YMMWORD PTR -384[rcx] | |
prefetcht0 [rcx] | |
add rcx, 64 | |
add rax, 8 | |
vpshufd ymm3, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm3 | |
vpaddq ymm1, ymm1, ymm2 | |
vpaddq ymm1, ymm1, YMMWORD PTR -448[rcx] | |
vmovdqa YMMWORD PTR [r9], ymm1 | |
vmovdqu ymm4, YMMWORD PTR 24[rax] | |
vpxor ymm2, ymm4, YMMWORD PTR -416[rcx] | |
vpshufd ymm3, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm3 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR -416[rcx] | |
vmovdqa YMMWORD PTR 32[r9], ymm0 | |
cmp r8, rcx | |
jne .L419 | |
jmp .L418 | |
.p2align 4,,10 | |
.p2align 3 | |
.L427: | |
mov rax, QWORD PTR 256[rcx] | |
lea rdi, 8[rbx] | |
and rdi, -8 | |
mov QWORD PTR [rbx], rax | |
mov eax, r11d | |
mov r8, QWORD PTR -8[rsi+rax] | |
mov QWORD PTR -8[rbx+rax], r8 | |
sub rbx, rdi | |
add r11d, ebx | |
sub rsi, rbx | |
and r11d, -8 | |
mov r8, rsi | |
cmp r11d, 8 | |
jb .L428 | |
and r11d, -8 | |
xor eax, eax | |
.L431: | |
mov ebx, eax | |
add eax, 8 | |
mov rsi, QWORD PTR [r8+rbx] | |
mov QWORD PTR [rdi+rbx], rsi | |
cmp eax, r11d | |
jb .L431 | |
jmp .L428 | |
.p2align 4,,10 | |
.p2align 3 | |
.L464: | |
mov r14d, r8d | |
xor eax, eax | |
and r14d, -8 | |
.L422: | |
mov ebp, eax | |
add eax, 8 | |
mov r13, QWORD PTR [r12+rbp] | |
mov QWORD PTR [rdi+rbp], r13 | |
cmp eax, r14d | |
jb .L422 | |
lea r13, [rdi+rax] | |
add rax, r12 | |
jmp .L421 | |
.L465: | |
mov eax, DWORD PTR 256[rcx] | |
mov DWORD PTR [rbx], eax | |
mov eax, DWORD PTR -4[rsi+r11] | |
mov DWORD PTR -4[rbx+r11], eax | |
jmp .L428 | |
.L466: | |
movzx eax, WORD PTR -2[rsi+r11] | |
mov WORD PTR -2[rbx+r11], ax | |
jmp .L428 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits | |
.def XXH3_128bits; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits | |
XXH3_128bits: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 48 | |
.seh_stackalloc 48 | |
.seh_endprologue | |
mov r12, rcx | |
mov r10, rdx | |
cmp r8, 16 | |
jbe .L481 | |
cmp r8, 128 | |
jbe .L482 | |
cmp r8, 240 | |
jbe .L483 | |
call XXH3_hashLong_128b_defaultSecret | |
.L467: | |
mov rax, r12 | |
add rsp, 48 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r14 | |
pop r15 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L482: | |
movabs rsi, -7046029288634856825 | |
xor r11d, r11d | |
imul rsi, r8 | |
cmp r8, 32 | |
jbe .L474 | |
xor edi, edi | |
cmp r8, 64 | |
jbe .L475 | |
xor ebx, ebx | |
cmp r8, 96 | |
ja .L484 | |
.L476: | |
mov r11, QWORD PTR 32[r10] | |
mov r9, QWORD PTR 40[r10] | |
lea rcx, -48[r10+r8] | |
movabs rax, -3818837453329782724 | |
mov rbp, QWORD PTR 8[rcx] | |
xor rax, r11 | |
mov rdi, rax | |
movabs rax, -6688317018830679928 | |
xor rax, r9 | |
mul rdi | |
mov rdi, QWORD PTR [rcx] | |
lea rcx, 0[rbp+rdi] | |
xor rdx, rax | |
movabs rax, 5690594596133299313 | |
xor rax, rdi | |
add rsi, rdx | |
movabs rdi, -2833645246901970632 | |
xor rbp, rdi | |
lea rdi, [r9+r11] | |
xor rsi, rcx | |
mul rbp | |
xor rax, rdx | |
add rax, rbx | |
xor rdi, rax | |
.L475: | |
mov rbx, QWORD PTR 16[r10] | |
mov r9, QWORD PTR 24[r10] | |
lea rcx, -32[r10+r8] | |
movabs rax, 8711581037947681227 | |
mov r11, QWORD PTR [rcx] | |
mov rbp, QWORD PTR 8[rcx] | |
xor rax, rbx | |
mov r15, rax | |
lea rcx, 0[rbp+r11] | |
movabs rax, 2410270004345854594 | |
xor rax, r9 | |
mul r15 | |
xor rdx, rax | |
movabs rax, -8204357891075471176 | |
xor rax, r11 | |
add rsi, rdx | |
movabs r11, 5487137525590930912 | |
xor rbp, r11 | |
lea r11, [r9+rbx] | |
xor rsi, rcx | |
mul rbp | |
xor rax, rdx | |
add rax, rdi | |
xor r11, rax | |
.L474: | |
mov rbx, QWORD PTR [r10] | |
lea rdi, -16[r10+r8] | |
mov r10, QWORD PTR 8[r10] | |
movabs rax, -4734510112055689544 | |
mov r9, QWORD PTR [rdi] | |
mov rdi, QWORD PTR 8[rdi] | |
xor rax, rbx | |
add rbx, r10 | |
mov rcx, rax | |
movabs rax, 2066345149520216444 | |
xor rax, r10 | |
mul rcx | |
mov rcx, rdx | |
lea rdx, [rdi+r9] | |
xor rcx, rax | |
movabs rax, -2623469361688619810 | |
add rcx, rsi | |
xor rax, r9 | |
xor rcx, rdx | |
movabs rdx, 2262974939099578482 | |
xor rdi, rdx | |
mul rdi | |
xor rdx, rax | |
lea rax, [rdx+r11] | |
movabs rdx, -7046029288634856825 | |
xor rax, rbx | |
imul rdx, rcx | |
lea r9, [rcx+rax] | |
movabs rcx, -8796714831421723037 | |
imul rax, rcx | |
movabs rcx, -4417276706812531889 | |
imul r8, rcx | |
movabs rcx, 1609587791953885689 | |
add rax, rdx | |
mov rdx, r9 | |
add r8, rax | |
shr rdx, 37 | |
mov rax, r8 | |
xor rdx, r9 | |
imul rdx, rcx | |
shr rax, 37 | |
xor r8, rax | |
imul r8, rcx | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov rax, r8 | |
shr rax, 32 | |
mov QWORD PTR [r12], rdx | |
xor r8, rax | |
neg r8 | |
mov QWORD PTR 8[r12], r8 | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L481: | |
cmp r8, 8 | |
ja .L485 | |
cmp r8, 3 | |
ja .L486 | |
test r8, r8 | |
jne .L487 | |
movabs rax, 2240352092916048369 | |
mov QWORD PTR [rcx], rax | |
movabs rax, 575702735917247201 | |
mov QWORD PTR 8[rcx], rax | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L487: | |
movabs rcx, -7046029288634856825 | |
movzx eax, BYTE PTR [rdx] | |
mov edx, r8d | |
sal edx, 8 | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[r10+r8] | |
shr r8 | |
or eax, edx | |
movzx edx, BYTE PTR [r10+r8] | |
movabs r8, 1609587791953885689 | |
sal edx, 24 | |
or eax, edx | |
mov edx, eax | |
xor eax, -2027464037 | |
imul rax, rcx | |
bswap edx | |
rol edx, 13 | |
movabs rcx, 2870177450012600261 | |
xor edx, 808198283 | |
imul rdx, rcx | |
mov rcx, rax | |
shr rcx, 37 | |
xor rax, rcx | |
mov rcx, rdx | |
imul rax, r8 | |
shr rcx, 37 | |
xor rdx, rcx | |
imul rdx, r8 | |
mov rcx, rax | |
shr rcx, 32 | |
xor rax, rcx | |
mov QWORD PTR [r12], rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov QWORD PTR 8[r12], rdx | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L483: | |
mov QWORD PTR 32[rsp], 0 | |
lea r9, kSecret[rip] | |
call XXH3_len_129to240_128b.isra.0 | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L485: | |
mov rcx, QWORD PTR -8[rdx+r8] | |
mov rax, QWORD PTR [rdx] | |
mov r10d, 2246822518 | |
movabs r9, -4466874330221494952 | |
movabs rdx, 6455697860950631241 | |
sub r8, 1 | |
movabs rdi, -7046029288634856825 | |
xor r9, rcx | |
xor rax, rcx | |
sal r8, 54 | |
mov ecx, r9d | |
xor rax, rdx | |
imul rcx, r10 | |
mul rdi | |
add rcx, r9 | |
add rcx, rdx | |
mov rbx, rax | |
mov rdx, rcx | |
lea rax, [rbx+r8] | |
movabs r8, -4417276706812531889 | |
bswap rdx | |
xor rax, rdx | |
imul rcx, r8 | |
mul r8 | |
movabs r8, 1609587791953885689 | |
add rcx, rdx | |
mov rdx, rax | |
shr rdx, 37 | |
xor rdx, rax | |
mov rax, rcx | |
imul rdx, r8 | |
shr rax, 37 | |
xor rcx, rax | |
imul rcx, r8 | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov rax, rcx | |
shr rax, 32 | |
mov QWORD PTR [r12], rdx | |
xor rcx, rax | |
mov QWORD PTR 8[r12], rcx | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L486: | |
mov eax, DWORD PTR -4[rdx+r8] | |
mov edx, DWORD PTR [rdx] | |
sal rax, 32 | |
add rax, rdx | |
movabs rdx, -4255862940314790740 | |
xor rax, rdx | |
movabs rdx, -7046029288634856825 | |
lea rdx, [rdx+r8*4] | |
mul rdx | |
lea r8, [rdx+rax*2] | |
mov rcx, rax | |
movabs rax, -6939452855193903323 | |
mov rdx, r8 | |
shr rdx, 3 | |
xor rcx, rdx | |
mov rdx, rcx | |
shr rdx, 35 | |
xor rdx, rcx | |
movabs rcx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, r8 | |
shr rax, 37 | |
xor rax, r8 | |
imul rax, rcx | |
mov rcx, rdx | |
shr rcx, 28 | |
xor rdx, rcx | |
mov QWORD PTR [r12], rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
mov QWORD PTR 8[r12], rax | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L484: | |
mov r11, QWORD PTR 48[rdx] | |
mov r9, QWORD PTR 56[rdx] | |
lea rcx, -64[rdx+r8] | |
movabs rax, 4554437623014685352 | |
mov rdi, QWORD PTR [rcx] | |
xor rax, r11 | |
mov rbx, rax | |
movabs rax, 2111919702937427193 | |
xor rax, r9 | |
mul rbx | |
mov rbx, QWORD PTR 8[rcx] | |
lea rcx, [rbx+rdi] | |
xor rax, rdx | |
add rsi, rax | |
xor rsi, rcx | |
movabs rcx, 3556072174620004746 | |
xor rdi, rcx | |
movabs rcx, 7238261902898274248 | |
xor rbx, rcx | |
mov rax, rdi | |
mul rbx | |
mov rcx, rax | |
lea rax, [r9+r11] | |
mov rbx, rdx | |
xor rax, rcx | |
xor rbx, rax | |
jmp .L476 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_withSecret | |
.def XXH3_128bits_withSecret; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_withSecret | |
XXH3_128bits_withSecret: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 56 | |
.seh_stackalloc 56 | |
.seh_endprologue | |
mov r12, rcx | |
mov r10, rdx | |
cmp r8, 16 | |
jbe .L503 | |
cmp r8, 128 | |
jbe .L504 | |
cmp r8, 240 | |
jbe .L505 | |
mov rax, QWORD PTR 160[rsp] | |
mov QWORD PTR 32[rsp], rax | |
call XXH3_hashLong_128b_withSecret | |
.L488: | |
mov rax, r12 | |
add rsp, 56 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L504: | |
movabs rdi, -7046029288634856825 | |
xor r11d, r11d | |
imul rdi, r8 | |
cmp r8, 32 | |
jbe .L495 | |
xor ebx, ebx | |
cmp r8, 64 | |
jbe .L496 | |
cmp r8, 96 | |
ja .L506 | |
.L497: | |
mov rbp, QWORD PTR 32[r10] | |
mov rsi, QWORD PTR 40[r10] | |
lea rcx, -48[r10+r8] | |
mov rdx, QWORD PTR 64[r9] | |
mov rax, QWORD PTR 72[r9] | |
mov rbx, QWORD PTR [rcx] | |
mov r13, QWORD PTR 8[rcx] | |
xor rdx, rbp | |
xor rax, rsi | |
mul rdx | |
lea rcx, 0[r13+rbx] | |
xor r13, QWORD PTR 88[r9] | |
xor rdx, rax | |
mov rax, QWORD PTR 80[r9] | |
add rdi, rdx | |
xor rax, rbx | |
lea rbx, [rsi+rbp] | |
xor rdi, rcx | |
mul r13 | |
xor rax, rdx | |
add rax, r11 | |
xor rbx, rax | |
.L496: | |
mov rbp, QWORD PTR 16[r10] | |
mov rsi, QWORD PTR 24[r10] | |
lea rcx, -32[r10+r8] | |
mov rdx, QWORD PTR 32[r9] | |
mov rax, QWORD PTR 40[r9] | |
mov r11, QWORD PTR [rcx] | |
mov r13, QWORD PTR 8[rcx] | |
xor rdx, rbp | |
xor rax, rsi | |
mul rdx | |
lea rcx, 0[r13+r11] | |
xor r13, QWORD PTR 56[r9] | |
xor rdx, rax | |
mov rax, QWORD PTR 48[r9] | |
add rdi, rdx | |
xor rax, r11 | |
lea r11, [rsi+rbp] | |
xor rdi, rcx | |
mul r13 | |
xor rax, rdx | |
add rax, rbx | |
xor r11, rax | |
.L495: | |
lea rbp, -16[r10+r8] | |
mov rbx, QWORD PTR [r10] | |
mov rcx, QWORD PTR [r9] | |
mov r10, QWORD PTR 8[r10] | |
mov rax, QWORD PTR 8[r9] | |
xor rcx, rbx | |
mov rsi, QWORD PTR 0[rbp] | |
mov rbp, QWORD PTR 8[rbp] | |
xor rax, r10 | |
add r10, rbx | |
mul rcx | |
xor rax, rdx | |
lea rdx, 0[rbp+rsi] | |
lea rcx, [rax+rdi] | |
mov rax, QWORD PTR 16[r9] | |
xor rcx, rdx | |
mov rdx, QWORD PTR 24[r9] | |
xor rax, rsi | |
xor rdx, rbp | |
mul rdx | |
xor rdx, rax | |
lea rax, [rdx+r11] | |
movabs rdx, -7046029288634856825 | |
xor rax, r10 | |
imul rdx, rcx | |
lea r9, [rcx+rax] | |
movabs rcx, -8796714831421723037 | |
imul rax, rcx | |
movabs rcx, -4417276706812531889 | |
imul r8, rcx | |
movabs rcx, 1609587791953885689 | |
add rax, rdx | |
mov rdx, r9 | |
add r8, rax | |
shr rdx, 37 | |
mov rax, r8 | |
xor rdx, r9 | |
imul rdx, rcx | |
shr rax, 37 | |
xor r8, rax | |
imul r8, rcx | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov rax, r8 | |
shr rax, 32 | |
mov QWORD PTR [r12], rdx | |
xor r8, rax | |
neg r8 | |
mov QWORD PTR 8[r12], r8 | |
jmp .L488 | |
.p2align 4,,10 | |
.p2align 3 | |
.L503: | |
cmp r8, 8 | |
ja .L507 | |
cmp r8, 3 | |
ja .L508 | |
test r8, r8 | |
jne .L509 | |
mov rdx, QWORD PTR 72[r9] | |
xor rdx, QWORD PTR 64[r9] | |
movabs rax, -7046029288634856825 | |
movabs r8, 1609587791953885689 | |
xor rax, rdx | |
mov rcx, QWORD PTR 88[r9] | |
xor rcx, QWORD PTR 80[r9] | |
mov rdx, rax | |
shr rdx, 37 | |
xor rdx, rax | |
movabs rax, -4417276706812531889 | |
xor rcx, rax | |
imul rdx, r8 | |
mov rax, rcx | |
shr rax, 37 | |
xor rax, rcx | |
mov rcx, rdx | |
imul rax, r8 | |
shr rcx, 32 | |
.L502: | |
xor rdx, rcx | |
mov QWORD PTR [r12], rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
mov QWORD PTR 8[r12], rax | |
jmp .L488 | |
.p2align 4,,10 | |
.p2align 3 | |
.L509: | |
movzx eax, BYTE PTR [rdx] | |
mov edx, r8d | |
mov ecx, DWORD PTR 4[r9] | |
sal edx, 8 | |
xor ecx, DWORD PTR [r9] | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[r10+r8] | |
shr r8 | |
or eax, edx | |
movzx edx, BYTE PTR [r10+r8] | |
sal edx, 24 | |
or eax, edx | |
movabs rdx, -7046029288634856825 | |
mov r8d, eax | |
xor eax, ecx | |
movabs rcx, 2870177450012600261 | |
imul rax, rdx | |
bswap r8d | |
mov edx, DWORD PTR 12[r9] | |
rol r8d, 13 | |
xor edx, DWORD PTR 8[r9] | |
xor edx, r8d | |
movabs r8, 1609587791953885689 | |
imul rdx, rcx | |
mov rcx, rax | |
shr rcx, 37 | |
xor rax, rcx | |
imul rax, r8 | |
mov rcx, rdx | |
shr rcx, 37 | |
xor rdx, rcx | |
imul rdx, r8 | |
mov rcx, rax | |
shr rcx, 32 | |
xor rax, rcx | |
mov QWORD PTR [r12], rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov QWORD PTR 8[r12], rdx | |
jmp .L488 | |
.p2align 4,,10 | |
.p2align 3 | |
.L505: | |
mov QWORD PTR 32[rsp], 0 | |
call XXH3_len_129to240_128b.isra.0 | |
jmp .L488 | |
.p2align 4,,10 | |
.p2align 3 | |
.L507: | |
mov r11, QWORD PTR -8[rdx+r8] | |
mov rcx, QWORD PTR 56[r9] | |
mov r10d, 2246822518 | |
movabs rdi, -7046029288634856825 | |
xor rcx, QWORD PTR 48[r9] | |
mov rax, QWORD PTR 40[r9] | |
sub r8, 1 | |
xor rcx, r11 | |
xor rax, QWORD PTR 32[r9] | |
xor rax, QWORD PTR [rdx] | |
sal r8, 54 | |
mov r9, rcx | |
mov ecx, ecx | |
xor rax, r11 | |
imul rcx, r10 | |
mul rdi | |
add rcx, r9 | |
add rcx, rdx | |
mov rbx, rax | |
mov rdx, rcx | |
lea rax, [rbx+r8] | |
movabs r8, -4417276706812531889 | |
bswap rdx | |
xor rax, rdx | |
imul rcx, r8 | |
mul r8 | |
movabs r8, 1609587791953885689 | |
add rcx, rdx | |
mov rdx, rax | |
shr rdx, 37 | |
xor rdx, rax | |
mov rax, rcx | |
imul rdx, r8 | |
shr rax, 37 | |
xor rcx, rax | |
imul rcx, r8 | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov rax, rcx | |
shr rax, 32 | |
mov QWORD PTR [r12], rdx | |
xor rcx, rax | |
mov QWORD PTR 8[r12], rcx | |
jmp .L488 | |
.p2align 4,,10 | |
.p2align 3 | |
.L508: | |
mov eax, DWORD PTR -4[rdx+r8] | |
mov edx, DWORD PTR [rdx] | |
sal rax, 32 | |
add rax, rdx | |
mov rdx, QWORD PTR 24[r9] | |
xor rdx, QWORD PTR 16[r9] | |
xor rax, rdx | |
movabs rdx, -7046029288634856825 | |
lea rdx, [rdx+r8*4] | |
mul rdx | |
lea r8, [rdx+rax*2] | |
mov rcx, rax | |
movabs rax, -6939452855193903323 | |
mov rdx, r8 | |
shr rdx, 3 | |
xor rcx, rdx | |
mov rdx, rcx | |
shr rdx, 35 | |
xor rdx, rcx | |
movabs rcx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, r8 | |
shr rax, 37 | |
xor rax, r8 | |
imul rax, rcx | |
mov rcx, rdx | |
shr rcx, 28 | |
jmp .L502 | |
.p2align 4,,10 | |
.p2align 3 | |
.L506: | |
mov rsi, QWORD PTR 48[rdx] | |
mov r11, QWORD PTR 56[rdx] | |
lea rbx, -64[rdx+r8] | |
mov rax, QWORD PTR 104[r9] | |
mov rdx, QWORD PTR 96[r9] | |
mov rcx, QWORD PTR [rbx] | |
mov rbx, QWORD PTR 8[rbx] | |
xor rax, r11 | |
xor rdx, rsi | |
add r11, rsi | |
mul rdx | |
xor rax, rdx | |
lea rdx, [rbx+rcx] | |
xor rcx, QWORD PTR 112[r9] | |
xor rbx, QWORD PTR 120[r9] | |
add rdi, rax | |
mov rax, rcx | |
xor rdi, rdx | |
mul rbx | |
xor r11, rax | |
xor r11, rdx | |
jmp .L497 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_withSeed | |
.def XXH3_128bits_withSeed; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_withSeed | |
XXH3_128bits_withSeed: | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 64 | |
.seh_stackalloc 64 | |
.seh_endprologue | |
mov r12, rcx | |
mov r10, rdx | |
cmp r8, 16 | |
jbe .L525 | |
cmp r8, 128 | |
jbe .L526 | |
cmp r8, 240 | |
jbe .L527 | |
call XXH3_hashLong_128b_withSeed | |
.L510: | |
mov rax, r12 | |
add rsp, 64 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L526: | |
movabs rsi, -7046029288634856825 | |
xor r11d, r11d | |
imul rsi, r8 | |
cmp r8, 32 | |
jbe .L517 | |
xor ebp, ebp | |
cmp r8, 64 | |
jbe .L518 | |
xor edi, edi | |
cmp r8, 96 | |
ja .L528 | |
.L519: | |
mov rbx, QWORD PTR 32[r10] | |
mov r11, QWORD PTR 40[r10] | |
lea rcx, -48[r10+r8] | |
movabs rax, -3818837453329782724 | |
add rax, r9 | |
mov r13, QWORD PTR 8[rcx] | |
movabs rbp, 5690594596133299313 | |
xor rax, rbx | |
add rbp, r9 | |
mov r14, rax | |
movabs rax, -6688317018830679928 | |
sub rax, r9 | |
xor rax, r11 | |
mul r14 | |
mov r14, QWORD PTR [rcx] | |
xor rbp, r14 | |
lea rcx, 0[r13+r14] | |
mov QWORD PTR 48[rsp], rax | |
mov rax, QWORD PTR 48[rsp] | |
mov QWORD PTR 56[rsp], rdx | |
xor rax, rdx | |
add rsi, rax | |
movabs rax, -2833645246901970632 | |
sub rax, r9 | |
xor rsi, rcx | |
xor rax, r13 | |
mul rbp | |
lea rbp, [r11+rbx] | |
xor rax, rdx | |
add rax, rdi | |
xor rbp, rax | |
.L518: | |
mov rdi, QWORD PTR 16[r10] | |
mov rbx, QWORD PTR 24[r10] | |
lea rcx, -32[r10+r8] | |
movabs rax, 8711581037947681227 | |
add rax, r9 | |
mov r13, QWORD PTR 8[rcx] | |
movabs r11, -8204357891075471176 | |
xor rax, rdi | |
add r11, r9 | |
mov r14, rax | |
movabs rax, 2410270004345854594 | |
sub rax, r9 | |
xor rax, rbx | |
mul r14 | |
mov r14, QWORD PTR [rcx] | |
xor r11, r14 | |
lea rcx, 0[r13+r14] | |
mov QWORD PTR 48[rsp], rax | |
mov rax, QWORD PTR 48[rsp] | |
mov QWORD PTR 56[rsp], rdx | |
xor rax, rdx | |
add rsi, rax | |
movabs rax, 5487137525590930912 | |
sub rax, r9 | |
xor rsi, rcx | |
xor rax, r13 | |
mul r11 | |
lea r11, [rbx+rdi] | |
xor rax, rdx | |
add rax, rbp | |
xor r11, rax | |
.L517: | |
mov rbx, QWORD PTR [r10] | |
lea rdi, -16[r10+r8] | |
mov r10, QWORD PTR 8[r10] | |
sub r8, r9 | |
movabs rax, -4734510112055689544 | |
mov rbp, QWORD PTR [rdi] | |
mov rdi, QWORD PTR 8[rdi] | |
add rax, r9 | |
xor rax, rbx | |
mov rcx, rax | |
movabs rax, 2066345149520216444 | |
sub rax, r9 | |
xor rax, r10 | |
add r10, rbx | |
mul rcx | |
lea rcx, [rdi+rbp] | |
xor rax, rdx | |
lea rdx, [rax+rsi] | |
movabs rsi, -2623469361688619810 | |
movabs rax, 2262974939099578482 | |
xor rcx, rdx | |
sub rax, r9 | |
lea rdx, [r9+rsi] | |
mov rsi, rdx | |
xor rdi, rax | |
xor rsi, rbp | |
mov rax, rdi | |
mul rsi | |
xor rdx, rax | |
lea rax, [rdx+r11] | |
movabs rdx, -7046029288634856825 | |
xor rax, r10 | |
imul rdx, rcx | |
lea r10, [rcx+rax] | |
movabs rcx, -8796714831421723037 | |
imul rax, rcx | |
movabs rcx, 1609587791953885689 | |
add rax, rdx | |
movabs rdx, -4417276706812531889 | |
imul r8, rdx | |
mov rdx, r10 | |
shr rdx, 37 | |
xor rdx, r10 | |
add r8, rax | |
imul rdx, rcx | |
mov rax, r8 | |
shr rax, 37 | |
xor r8, rax | |
mov rax, rdx | |
imul r8, rcx | |
shr rax, 32 | |
xor rdx, rax | |
mov QWORD PTR [r12], rdx | |
mov rax, r8 | |
shr rax, 32 | |
xor r8, rax | |
neg r8 | |
mov QWORD PTR 8[r12], r8 | |
jmp .L510 | |
.p2align 4,,10 | |
.p2align 3 | |
.L525: | |
cmp r8, 8 | |
ja .L529 | |
cmp r8, 3 | |
ja .L530 | |
test r8, r8 | |
jne .L531 | |
movabs rdx, -7046029288634856825 | |
movabs rax, 7507096552062056628 | |
movabs rcx, -4417276706812531889 | |
movabs r8, 1609587791953885689 | |
add rdx, r9 | |
sub rcx, r9 | |
xor rax, rdx | |
mov rdx, rax | |
shr rdx, 37 | |
xor rdx, rax | |
movabs rax, -7613947547284439735 | |
xor rcx, rax | |
imul rdx, r8 | |
mov rax, rcx | |
shr rax, 37 | |
xor rax, rcx | |
mov rcx, rdx | |
imul rax, r8 | |
shr rcx, 32 | |
.L524: | |
xor rdx, rcx | |
mov QWORD PTR [r12], rdx | |
mov rdx, rax | |
shr rdx, 32 | |
xor rax, rdx | |
mov QWORD PTR 8[r12], rax | |
jmp .L510 | |
.p2align 4,,10 | |
.p2align 3 | |
.L531: | |
movzx eax, BYTE PTR [rdx] | |
mov edx, r8d | |
mov ecx, 2267503259 | |
sal edx, 8 | |
add rcx, r9 | |
sal eax, 16 | |
or eax, edx | |
movzx edx, BYTE PTR -1[r10+r8] | |
shr r8 | |
or eax, edx | |
movzx edx, BYTE PTR [r10+r8] | |
sal edx, 24 | |
or eax, edx | |
movabs rdx, -7046029288634856825 | |
mov r8d, eax | |
xor rax, rcx | |
movabs rcx, 2870177450012600261 | |
imul rax, rdx | |
mov edx, 808198283 | |
bswap r8d | |
rol r8d, 13 | |
sub rdx, r9 | |
xor rdx, r8 | |
movabs r8, 1609587791953885689 | |
imul rdx, rcx | |
mov rcx, rax | |
shr rcx, 37 | |
xor rax, rcx | |
imul rax, r8 | |
mov rcx, rdx | |
shr rcx, 37 | |
xor rdx, rcx | |
imul rdx, r8 | |
mov rcx, rax | |
shr rcx, 32 | |
xor rax, rcx | |
mov QWORD PTR [r12], rax | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov QWORD PTR 8[r12], rdx | |
jmp .L510 | |
.p2align 4,,10 | |
.p2align 3 | |
.L527: | |
mov QWORD PTR 32[rsp], r9 | |
lea r9, kSecret[rip] | |
call XXH3_len_129to240_128b.isra.0 | |
jmp .L510 | |
.p2align 4,,10 | |
.p2align 3 | |
.L529: | |
movabs r10, -4466874330221494952 | |
mov r11, QWORD PTR -8[rdx+r8] | |
movabs rax, 6455697860950631241 | |
movabs rsi, -7046029288634856825 | |
lea rcx, [r9+r10] | |
sub rax, r9 | |
xor rax, QWORD PTR [rdx] | |
sub r8, 1 | |
xor rcx, r11 | |
mov r10d, 2246822518 | |
xor rax, r11 | |
sal r8, 54 | |
mov r9, rcx | |
mul rsi | |
mov ecx, ecx | |
imul rcx, r10 | |
mov rbx, rax | |
add rcx, r9 | |
lea rax, [rbx+r8] | |
movabs r8, -4417276706812531889 | |
add rcx, rdx | |
mov rdx, rcx | |
imul rcx, r8 | |
bswap rdx | |
xor rax, rdx | |
mul r8 | |
movabs r8, 1609587791953885689 | |
add rcx, rdx | |
mov rdx, rax | |
shr rdx, 37 | |
xor rdx, rax | |
mov rax, rcx | |
imul rdx, r8 | |
shr rax, 37 | |
xor rcx, rax | |
imul rcx, r8 | |
mov rax, rdx | |
shr rax, 32 | |
xor rdx, rax | |
mov rax, rcx | |
shr rax, 32 | |
mov QWORD PTR [r12], rdx | |
xor rcx, rax | |
mov QWORD PTR 8[r12], rcx | |
jmp .L510 | |
.p2align 4,,10 | |
.p2align 3 | |
.L530: | |
mov eax, DWORD PTR -4[r10+r8] | |
mov edx, r9d | |
mov ecx, DWORD PTR [r10] | |
bswap edx | |
sal rdx, 32 | |
xor r9, rdx | |
sal rax, 32 | |
movabs rdx, -4255862940314790740 | |
add r9, rdx | |
add rax, rcx | |
movabs rdx, -7046029288634856825 | |
xor rax, r9 | |
lea r9, [rdx+r8*4] | |
mul r9 | |
lea r8, [rdx+rax*2] | |
mov rcx, rax | |
movabs rax, -6939452855193903323 | |
mov rdx, r8 | |
shr rdx, 3 | |
xor rcx, rdx | |
mov rdx, rcx | |
shr rdx, 35 | |
xor rdx, rcx | |
movabs rcx, 1609587791953885689 | |
imul rdx, rax | |
mov rax, r8 | |
shr rax, 37 | |
xor rax, r8 | |
imul rax, rcx | |
mov rcx, rdx | |
shr rcx, 28 | |
jmp .L524 | |
.p2align 4,,10 | |
.p2align 3 | |
.L528: | |
mov rdi, QWORD PTR 48[rdx] | |
mov r11, QWORD PTR 56[rdx] | |
lea rcx, -64[rdx+r8] | |
movabs rax, 4554437623014685352 | |
add rax, r9 | |
mov rbp, QWORD PTR [rcx] | |
xor rax, rdi | |
mov rbx, rax | |
movabs rax, 2111919702937427193 | |
sub rax, r9 | |
xor rax, r11 | |
mul rbx | |
mov rbx, QWORD PTR 8[rcx] | |
lea rcx, [rbx+rbp] | |
xor rax, rdx | |
movabs rdx, 3556072174620004746 | |
add rsi, rax | |
movabs rax, 7238261902898274248 | |
sub rax, r9 | |
xor rsi, rcx | |
lea rcx, [r9+rdx] | |
xor rbx, rax | |
xor rcx, rbp | |
mov rax, rbx | |
mul rcx | |
mov rcx, rax | |
lea rax, [r11+rdi] | |
mov rdi, rdx | |
xor rax, rcx | |
xor rdi, rax | |
jmp .L519 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH128 | |
.def XXH128; .scl 2; .type 32; .endef | |
.seh_proc XXH128 | |
XXH128: | |
push r12 | |
.seh_pushreg r12 | |
sub rsp, 32 | |
.seh_stackalloc 32 | |
.seh_endprologue | |
mov r12, rcx | |
call XXH3_128bits_withSeed | |
mov rax, r12 | |
add rsp, 32 | |
pop r12 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_reset | |
.def XXH3_128bits_reset; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_reset | |
XXH3_128bits_reset: | |
.seh_endprologue | |
jmp XXH3_64bits_reset | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_reset_withSecret | |
.def XXH3_128bits_reset_withSecret; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_reset_withSecret | |
XXH3_128bits_reset_withSecret: | |
.seh_endprologue | |
jmp XXH3_64bits_reset_withSecret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_reset_withSeed | |
.def XXH3_128bits_reset_withSeed; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_reset_withSeed | |
XXH3_128bits_reset_withSeed: | |
.seh_endprologue | |
jmp XXH3_64bits_reset_withSeed | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_update | |
.def XXH3_128bits_update; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_update | |
XXH3_128bits_update: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
mov rbx, rcx | |
mov r12, rdx | |
test rdx, rdx | |
je .L560 | |
lea rsi, [rdx+r8] | |
mov edx, DWORD PTR 512[rcx] | |
add QWORD PTR 536[rcx], r8 | |
lea rcx, [r8+rdx] | |
cmp rcx, 256 | |
jbe .L573 | |
test edx, edx | |
jne .L574 | |
lea rax, 256[r12] | |
cmp rsi, rax | |
jb .L549 | |
.L576: | |
mov r11, QWORD PTR 560[rbx] | |
mov edx, DWORD PTR 516[rbx] | |
lea r8, -256[rsi] | |
lea r9, 640[r12] | |
vmovdqa ymm1, YMMWORD PTR .LC1[rip] | |
mov r10, r12 | |
mov edi, 4 | |
.p2align 4,,10 | |
.p2align 3 | |
.L559: | |
mov ebp, DWORD PTR 520[rbx] | |
mov r13d, edx | |
sub r13d, ebp | |
lea ecx, 0[0+rbp*8] | |
cmp r13d, 4 | |
ja .L550 | |
mov r14d, DWORD PTR 524[rbx] | |
mov eax, r13d | |
test r13d, r13d | |
je .L555 | |
mov r15, rax | |
lea r13, 384[r10] | |
add rcx, r11 | |
sal r15, 6 | |
lea r15, 384[r10+r15] | |
.p2align 4,,10 | |
.p2align 3 | |
.L554: | |
vmovdqu ymm3, YMMWORD PTR [rcx] | |
prefetcht0 0[r13] | |
add r13, 64 | |
vpxor ymm0, ymm3, YMMWORD PTR -448[r13] | |
add rcx, 8 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -448[r13], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm4, YMMWORD PTR 24[rcx] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[r13] | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -416[r13], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r13, r15 | |
jne .L554 | |
.L555: | |
vmovdqa ymm3, YMMWORD PTR [rbx] | |
vmovdqu ymm4, YMMWORD PTR [r11+r14] | |
mov r13, rdi | |
vmovdqa ymm5, YMMWORD PTR 32[rbx] | |
vpsrlq ymm2, ymm3, 47 | |
vpxor ymm0, ymm4, ymm3 | |
vmovdqu ymm3, YMMWORD PTR 32[r11+r14] | |
vpxor ymm0, ymm0, ymm2 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpmuludq ymm2, ymm2, ymm1 | |
vpsllq ymm2, ymm2, 32 | |
vpaddq ymm0, ymm0, ymm2 | |
vpsrlq ymm2, ymm5, 47 | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vpxor ymm0, ymm3, ymm5 | |
vpxor ymm0, ymm0, ymm2 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpmuludq ymm2, ymm2, ymm1 | |
vpsllq ymm2, ymm2, 32 | |
vpaddq ymm0, ymm0, ymm2 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
sub r13, rax | |
je .L553 | |
add rax, 6 | |
mov rcx, r11 | |
lea r13, [r11+r13*8] | |
sal rax, 6 | |
add rax, r10 | |
.p2align 4,,10 | |
.p2align 3 | |
.L557: | |
vmovdqu ymm5, YMMWORD PTR [rcx] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rcx, 8 | |
add rax, 64 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -448[rax], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm3, YMMWORD PTR 24[rcx] | |
vpxor ymm0, ymm3, YMMWORD PTR -416[rax] | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -416[rax], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r13, rcx | |
jne .L557 | |
.L553: | |
add ebp, 4 | |
sub ebp, edx | |
mov DWORD PTR 520[rbx], ebp | |
.L556: | |
add r10, 256 | |
add r9, 256 | |
cmp r8, r10 | |
jnb .L559 | |
sub r8, r12 | |
xor r8b, r8b | |
lea r12, 256[r12+r8] | |
.L549: | |
xor r13d, r13d | |
cmp rsi, r12 | |
ja .L575 | |
vzeroupper | |
.L536: | |
mov eax, r13d | |
add rsp, 40 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.L575: | |
sub rsi, r12 | |
lea rcx, 256[rbx] | |
mov rdx, r12 | |
mov r8, rsi | |
vzeroupper | |
call memcpy | |
mov DWORD PTR 512[rbx], esi | |
jmp .L536 | |
.L574: | |
mov edi, 256 | |
lea rcx, 256[rbx+rdx] | |
sub edi, edx | |
mov rdx, r12 | |
mov r8, rdi | |
add r12, rdi | |
call memcpy | |
mov edx, DWORD PTR 516[rbx] | |
mov ecx, DWORD PTR 520[rbx] | |
mov r11, QWORD PTR 560[rbx] | |
mov r9d, edx | |
sub r9d, ecx | |
cmp r9d, 4 | |
ja .L540 | |
mov edi, DWORD PTR 524[rbx] | |
mov r10d, r9d | |
lea r8d, 0[0+rcx*8] | |
test r9d, r9d | |
je .L545 | |
mov r9, r10 | |
lea rax, 640[rbx] | |
add r8, r11 | |
sal r9, 6 | |
add r9, rax | |
.p2align 4,,10 | |
.p2align 3 | |
.L544: | |
vmovdqu ymm1, YMMWORD PTR [r8] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add r8, 8 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm1, YMMWORD PTR 24[r8] | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r9, rax | |
jne .L544 | |
.L545: | |
mov eax, edi | |
vmovdqa ymm1, YMMWORD PTR [rbx] | |
vmovdqa ymm2, YMMWORD PTR .LC1[rip] | |
vmovdqu ymm4, YMMWORD PTR [r11+rax] | |
vpxor ymm0, ymm4, YMMWORD PTR [rbx] | |
vpsrlq ymm1, ymm1, 47 | |
vmovdqu ymm5, YMMWORD PTR 32[r11+rax] | |
mov eax, 4 | |
vpxor ymm0, ymm0, ymm1 | |
sub rax, r10 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
mov r8, rax | |
vpmuludq ymm1, ymm1, ymm2 | |
vpsllq ymm1, ymm1, 32 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa ymm1, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vpxor ymm0, ymm5, YMMWORD PTR 32[rbx] | |
vpsrlq ymm1, ymm1, 47 | |
vpxor ymm0, ymm0, ymm1 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpmuludq ymm1, ymm1, ymm2 | |
vpsllq ymm1, ymm1, 32 | |
vpaddq ymm0, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
je .L543 | |
sal r10, 6 | |
lea r8, [r11+r8*8] | |
lea rax, 640[rbx+r10] | |
.p2align 4,,10 | |
.p2align 3 | |
.L547: | |
vmovdqu ymm1, YMMWORD PTR [r11] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add r11, 8 | |
add rax, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm1, YMMWORD PTR 24[r11] | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp r8, r11 | |
jne .L547 | |
.L543: | |
add ecx, 4 | |
sub ecx, edx | |
mov DWORD PTR 520[rbx], ecx | |
jmp .L546 | |
.p2align 4,,10 | |
.p2align 3 | |
.L550: | |
lea rax, 384[r10] | |
add rcx, r11 | |
.p2align 4,,10 | |
.p2align 3 | |
.L558: | |
vmovdqu ymm4, YMMWORD PTR [rcx] | |
vpxor ymm0, ymm4, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add rcx, 8 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -448[rax], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm5, YMMWORD PTR 24[rcx] | |
vpxor ymm0, ymm5, YMMWORD PTR -416[rax] | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpshufd ymm2, YMMWORD PTR -416[rax], 78 | |
vpaddq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp rax, r9 | |
jne .L558 | |
add DWORD PTR 520[rbx], 4 | |
jmp .L556 | |
.L540: | |
lea edx, 0[0+rcx*8] | |
lea rax, 640[rbx] | |
add r11, rdx | |
lea rdx, 896[rbx] | |
.p2align 4,,10 | |
.p2align 3 | |
.L548: | |
vmovdqu ymm1, YMMWORD PTR [r11] | |
vpxor ymm0, ymm1, YMMWORD PTR -384[rax] | |
prefetcht0 [rax] | |
add rax, 64 | |
add r11, 8 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rbx] | |
vmovdqa YMMWORD PTR [rbx], ymm0 | |
vmovdqu ymm1, YMMWORD PTR 24[r11] | |
vpxor ymm0, ymm1, YMMWORD PTR -416[rax] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rax], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rbx] | |
vmovdqa YMMWORD PTR 32[rbx], ymm0 | |
cmp rdx, rax | |
jne .L548 | |
add DWORD PTR 520[rbx], 4 | |
.L546: | |
lea rax, 256[r12] | |
mov DWORD PTR 512[rbx], 0 | |
cmp rsi, rax | |
jb .L549 | |
jmp .L576 | |
.L560: | |
mov r13d, 1 | |
jmp .L536 | |
.L573: | |
lea rcx, 256[rbx+rdx] | |
mov rdx, r12 | |
mov QWORD PTR 128[rsp], r8 | |
xor r13d, r13d | |
call memcpy | |
mov r8, QWORD PTR 128[rsp] | |
add DWORD PTR 512[rbx], r8d | |
jmp .L536 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH3_128bits_digest | |
.def XXH3_128bits_digest; .scl 2; .type 32; .endef | |
.seh_proc XXH3_128bits_digest | |
XXH3_128bits_digest: | |
push r15 | |
.seh_pushreg r15 | |
push r14 | |
.seh_pushreg r14 | |
push r13 | |
.seh_pushreg r13 | |
push r12 | |
.seh_pushreg r12 | |
push rbp | |
.seh_pushreg rbp | |
push rdi | |
.seh_pushreg rdi | |
push rsi | |
.seh_pushreg rsi | |
push rbx | |
.seh_pushreg rbx | |
sub rsp, 200 | |
.seh_stackalloc 200 | |
.seh_endprologue | |
mov rbx, QWORD PTR 536[rdx] | |
mov r12, rcx | |
lea rcx, 143[rsp] | |
and rcx, -32 | |
cmp rbx, 240 | |
ja .L630 | |
mov r9, QWORD PTR 544[rdx] | |
lea r10, 256[rdx] | |
test r9, r9 | |
jne .L631 | |
mov eax, DWORD PTR 524[rdx] | |
mov r8, rbx | |
mov rcx, r12 | |
add eax, 64 | |
mov QWORD PTR 32[rsp], rax | |
mov r9, QWORD PTR 560[rdx] | |
mov rdx, r10 | |
call XXH3_128bits_withSecret | |
.L577: | |
mov rax, r12 | |
add rsp, 200 | |
pop rbx | |
pop rsi | |
pop rdi | |
pop rbp | |
pop r12 | |
pop r13 | |
pop r14 | |
pop r15 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L631: | |
mov r8, rbx | |
mov rdx, r10 | |
mov rcx, r12 | |
call XXH3_128bits_withSeed | |
jmp .L577 | |
.p2align 4,,10 | |
.p2align 3 | |
.L630: | |
vmovdqu xmm5, XMMWORD PTR [rdx] | |
vmovdqu xmm4, XMMWORD PTR 16[rdx] | |
mov r9d, DWORD PTR 512[rdx] | |
mov rsi, QWORD PTR 560[rdx] | |
vmovaps XMMWORD PTR [rcx], xmm5 | |
vmovdqu xmm5, XMMWORD PTR 32[rdx] | |
vmovaps XMMWORD PTR 16[rcx], xmm4 | |
vmovdqu xmm4, XMMWORD PTR 48[rdx] | |
vmovaps XMMWORD PTR 32[rcx], xmm5 | |
vmovaps XMMWORD PTR 48[rcx], xmm4 | |
cmp r9d, 63 | |
ja .L632 | |
test r9d, r9d | |
jne .L628 | |
mov edi, DWORD PTR 524[rdx] | |
.L590: | |
movabs r8, -7046029288634856825 | |
lea rdx, 11[rsi] | |
imul r8, rbx | |
call XXH3_mergeAccs | |
lea rdx, -11[rsi+rdi] | |
movabs r8, -4417276706812531889 | |
imul r8, rbx | |
mov rbp, rax | |
not r8 | |
call XXH3_mergeAccs | |
mov QWORD PTR [r12], rbp | |
mov QWORD PTR 8[r12], rax | |
jmp .L577 | |
.p2align 4,,10 | |
.p2align 3 | |
.L632: | |
mov eax, DWORD PTR 520[rdx] | |
mov ebp, DWORD PTR 516[rdx] | |
mov r8d, r9d | |
lea r10, 256[rdx] | |
shr r8d, 6 | |
mov edi, DWORD PTR 524[rdx] | |
vmovdqa ymm2, YMMWORD PTR [rcx] | |
sub ebp, eax | |
vmovdqa ymm1, YMMWORD PTR 32[rcx] | |
sal eax, 3 | |
cmp r8, rbp | |
jb .L580 | |
test rbp, rbp | |
je .L583 | |
mov r13, rbp | |
lea r11, 640[rdx] | |
add rax, rsi | |
sal r13, 6 | |
add r13, r11 | |
.p2align 4,,10 | |
.p2align 3 | |
.L582: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
prefetcht0 [r11] | |
add r11, 64 | |
add rax, 8 | |
vpxor ymm0, ymm5, YMMWORD PTR -448[r11] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpshufd ymm3, YMMWORD PTR -448[r11], 78 | |
vpaddq ymm0, ymm0, ymm3 | |
vpaddq ymm2, ymm0, ymm2 | |
vmovdqa YMMWORD PTR [rcx], ymm2 | |
vmovdqu ymm4, YMMWORD PTR 24[rax] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[r11] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpshufd ymm3, YMMWORD PTR -416[r11], 78 | |
vpaddq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[rcx], ymm1 | |
cmp r13, r11 | |
jne .L582 | |
.L583: | |
vpsrlq ymm0, ymm2, 47 | |
vpsrlq ymm3, ymm1, 47 | |
vpxor ymm2, ymm2, YMMWORD PTR [rsi+rdi] | |
vmovdqa ymm4, YMMWORD PTR .LC1[rip] | |
vpxor ymm2, ymm2, ymm0 | |
vpshufd ymm0, ymm2, 49 | |
vpmuludq ymm2, ymm2, ymm4 | |
vpmuludq ymm0, ymm0, ymm4 | |
vpsllq ymm0, ymm0, 32 | |
vpaddq ymm2, ymm2, ymm0 | |
vmovdqa YMMWORD PTR [rcx], ymm2 | |
vpxor ymm1, ymm1, YMMWORD PTR 32[rsi+rdi] | |
vpxor ymm1, ymm1, ymm3 | |
vpshufd ymm3, ymm1, 49 | |
vpmuludq ymm1, ymm1, ymm4 | |
vpmuludq ymm3, ymm3, ymm4 | |
vpsllq ymm3, ymm3, 32 | |
vpaddq ymm3, ymm1, ymm3 | |
vmovdqa YMMWORD PTR 32[rcx], ymm3 | |
sub r8, rbp | |
je .L588 | |
sal rbp, 6 | |
lea rax, 32[rsi] | |
lea rdx, 640[rdx+rbp] | |
lea r8, [rax+r8*8] | |
.p2align 4,,10 | |
.p2align 3 | |
.L587: | |
vmovdqu ymm5, YMMWORD PTR -32[rax] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rdx] | |
prefetcht0 [rdx] | |
add rax, 8 | |
add rdx, 64 | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm2, ymm0, ymm2 | |
vmovdqa YMMWORD PTR [rcx], ymm2 | |
vmovdqu ymm4, YMMWORD PTR -8[rax] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[rdx] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm3, ymm0, ymm3 | |
vmovdqa YMMWORD PTR 32[rcx], ymm3 | |
cmp r8, rax | |
jne .L587 | |
.L588: | |
test r9b, 63 | |
je .L629 | |
vmovdqu ymm2, YMMWORD PTR -7[rsi+rdi] | |
vpxor ymm0, ymm2, YMMWORD PTR -64[r10+r9] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR -64[r10+r9], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rcx] | |
vmovdqu ymm1, YMMWORD PTR -32[r10+r9] | |
vmovdqa YMMWORD PTR [rcx], ymm0 | |
vpxor ymm0, ymm1, YMMWORD PTR 25[rsi+rdi] | |
vpshufd ymm1, ymm1, 78 | |
vpshufd ymm2, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm2 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rcx] | |
vmovdqa YMMWORD PTR 32[rcx], ymm0 | |
vzeroupper | |
jmp .L590 | |
.p2align 4,,10 | |
.p2align 3 | |
.L628: | |
mov r8d, 64 | |
lea r11, 256[rdx] | |
lea rdi, 48[rsp] | |
sub r8d, r9d | |
mov rax, r11 | |
mov r14, rdi | |
mov r10d, r8d | |
sub rax, r10 | |
lea r13, 256[rax] | |
mov rax, r13 | |
cmp r8d, 8 | |
jnb .L633 | |
.L591: | |
xor ebp, ebp | |
test r8b, 4 | |
je .L594 | |
mov ebp, DWORD PTR [rax] | |
mov DWORD PTR [r14], ebp | |
mov ebp, 4 | |
.L594: | |
test r8b, 2 | |
je .L595 | |
movzx r13d, WORD PTR [rax+rbp] | |
mov WORD PTR [r14+rbp], r13w | |
add rbp, 2 | |
.L595: | |
and r8d, 1 | |
je .L596 | |
movzx eax, BYTE PTR [rax+rbp] | |
mov BYTE PTR [r14+rbp], al | |
.L596: | |
add r10, rdi | |
cmp r9d, 8 | |
jnb .L597 | |
test r9b, 4 | |
jne .L634 | |
test r9d, r9d | |
je .L598 | |
movzx eax, BYTE PTR 256[rdx] | |
mov BYTE PTR [r10], al | |
test r9b, 2 | |
jne .L635 | |
.L598: | |
mov edi, DWORD PTR 524[rdx] | |
vmovdqu ymm5, YMMWORD PTR -7[rsi+rdi] | |
vpxor ymm0, ymm5, YMMWORD PTR 48[rsp] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR 48[rsp], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR [rcx] | |
vmovdqa YMMWORD PTR [rcx], ymm0 | |
vmovdqu ymm5, YMMWORD PTR 25[rsi+rdi] | |
vpxor ymm0, ymm5, YMMWORD PTR 80[rsp] | |
vpshufd ymm1, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm1 | |
vpshufd ymm1, YMMWORD PTR 80[rsp], 78 | |
vpaddq ymm0, ymm0, ymm1 | |
vpaddq ymm0, ymm0, YMMWORD PTR 32[rcx] | |
vmovdqa YMMWORD PTR 32[rcx], ymm0 | |
.L629: | |
vzeroupper | |
jmp .L590 | |
.p2align 4,,10 | |
.p2align 3 | |
.L580: | |
add rdx, 640 | |
sal r8, 6 | |
add rax, rsi | |
add r8, rdx | |
.p2align 4,,10 | |
.p2align 3 | |
.L589: | |
vmovdqu ymm5, YMMWORD PTR [rax] | |
vpxor ymm0, ymm5, YMMWORD PTR -384[rdx] | |
prefetcht0 [rdx] | |
add rdx, 64 | |
add rax, 8 | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpshufd ymm3, YMMWORD PTR -448[rdx], 78 | |
vpaddq ymm0, ymm0, ymm3 | |
vpaddq ymm2, ymm0, ymm2 | |
vmovdqa YMMWORD PTR [rcx], ymm2 | |
vmovdqu ymm4, YMMWORD PTR 24[rax] | |
vpxor ymm0, ymm4, YMMWORD PTR -416[rdx] | |
vpshufd ymm3, ymm0, 49 | |
vpmuludq ymm0, ymm0, ymm3 | |
vpshufd ymm3, YMMWORD PTR -416[rdx], 78 | |
vpaddq ymm0, ymm0, ymm3 | |
vpaddq ymm1, ymm0, ymm1 | |
vmovdqa YMMWORD PTR 32[rcx], ymm1 | |
cmp r8, rdx | |
jne .L589 | |
jmp .L588 | |
.p2align 4,,10 | |
.p2align 3 | |
.L597: | |
mov rax, QWORD PTR 256[rdx] | |
lea rdi, 8[r10] | |
and rdi, -8 | |
mov QWORD PTR [r10], rax | |
mov eax, r9d | |
mov r8, QWORD PTR -8[r11+rax] | |
mov QWORD PTR -8[r10+rax], r8 | |
sub r10, rdi | |
add r9d, r10d | |
sub r11, r10 | |
and r9d, -8 | |
mov r8, r11 | |
cmp r9d, 8 | |
jb .L598 | |
and r9d, -8 | |
xor eax, eax | |
.L601: | |
mov r10d, eax | |
add eax, 8 | |
mov r11, QWORD PTR [r8+r10] | |
mov QWORD PTR [rdi+r10], r11 | |
cmp eax, r9d | |
jb .L601 | |
jmp .L598 | |
.p2align 4,,10 | |
.p2align 3 | |
.L633: | |
mov r15d, r8d | |
xor eax, eax | |
and r15d, -8 | |
.L592: | |
mov ebp, eax | |
add eax, 8 | |
mov r14, QWORD PTR 0[r13+rbp] | |
mov QWORD PTR [rdi+rbp], r14 | |
cmp eax, r15d | |
jb .L592 | |
lea r14, [rdi+rax] | |
add rax, r13 | |
jmp .L591 | |
.L634: | |
mov eax, DWORD PTR 256[rdx] | |
mov DWORD PTR [r10], eax | |
mov eax, DWORD PTR -4[r11+r9] | |
mov DWORD PTR -4[r10+r9], eax | |
jmp .L598 | |
.L635: | |
movzx eax, WORD PTR -2[r11+r9] | |
mov WORD PTR -2[r10+r9], ax | |
jmp .L598 | |
.seh_endproc | |
.p2align 4 | |
.globl XXH128_isEqual | |
.def XXH128_isEqual; .scl 2; .type 32; .endef | |
.seh_proc XXH128_isEqual | |
XXH128_isEqual: | |
sub rsp, 40 | |
.seh_stackalloc 40 | |
.seh_endprologue | |
vmovdqu xmm0, XMMWORD PTR [rdx] | |
mov r8, rcx | |
vmovaps XMMWORD PTR [rsp], xmm0 | |
mov rcx, QWORD PTR [rcx] | |
mov rdx, QWORD PTR 8[rsp] | |
mov r8, QWORD PTR 8[r8] | |
mov rax, rcx | |
xor rax, QWORD PTR [rsp] | |
mov QWORD PTR 16[rsp], rcx | |
xor rdx, r8 | |
mov QWORD PTR 24[rsp], r8 | |
or rdx, rax | |
sete al | |
movzx eax, al | |
add rsp, 40 | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH128_cmp | |
.def XXH128_cmp; .scl 2; .type 32; .endef | |
.seh_proc XXH128_cmp | |
XXH128_cmp: | |
.seh_endprologue | |
xor eax, eax | |
mov r9, QWORD PTR [rcx] | |
mov r8, QWORD PTR [rdx] | |
mov rcx, QWORD PTR 8[rcx] | |
mov rdx, QWORD PTR 8[rdx] | |
cmp rcx, rdx | |
seta al | |
sbb eax, 0 | |
test eax, eax | |
jne .L641 | |
xor eax, eax | |
cmp r9, r8 | |
seta al | |
sbb eax, 0 | |
.L641: | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH128_canonicalFromHash | |
.def XXH128_canonicalFromHash; .scl 2; .type 32; .endef | |
.seh_proc XXH128_canonicalFromHash | |
XXH128_canonicalFromHash: | |
.seh_endprologue | |
mov rax, QWORD PTR [rdx] | |
mov rdx, QWORD PTR 8[rdx] | |
bswap rax | |
bswap rdx | |
mov QWORD PTR 8[rcx], rax | |
mov QWORD PTR [rcx], rdx | |
ret | |
.seh_endproc | |
.p2align 4 | |
.globl XXH128_hashFromCanonical | |
.def XXH128_hashFromCanonical; .scl 2; .type 32; .endef | |
.seh_proc XXH128_hashFromCanonical | |
XXH128_hashFromCanonical: | |
.seh_endprologue | |
mov rax, rcx | |
mov rcx, QWORD PTR [rdx] | |
mov rdx, QWORD PTR 8[rdx] | |
bswap rcx | |
bswap rdx | |
mov QWORD PTR 8[rax], rcx | |
mov QWORD PTR [rax], rdx | |
ret | |
.seh_endproc | |
.section .rdata,"dr" | |
.align 16 | |
kSecret: | |
.ascii "\270\376l9#\244K\276|\1\201,\367!\255\34\336\324m\351\203\220\227\333r@\244\244\267\263g\37\313y\346N\314\300\345x\202Z\320}\314\377r!\270\10Ft\367C$\216\340" | |
.ascii "5\220\346\201:&L<(R\273\221\303\0\313\210\320e\213\33S.\243qdH\227\242\15\371N8\31\357F\251\336\254\330\250\372v?\343\234" | |
.ascii "4?\371\334\273\307\307\13O\35\212Q\340K\315\264Y1\310\237~\311\331xsd\352\305\254\203" | |
.ascii "4\323\353\303\305\201\240\377\372\23c\353\27\15\335Q\267\360\332I\323\26U&)\324h\236+\26\276X}G\241\374\217\370\270\321z\320" | |
.ascii "1\316E\313:\217\225\26\4(\257\327\373\312\273K@~" | |
.align 32 | |
.LC0: | |
.quad -4329134394285701654 | |
.quad -1485321483350670907 | |
.quad 5321830579834785047 | |
.quad -7032137544937171245 | |
.align 32 | |
.LC1: | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.long -1640531535 | |
.align 32 | |
.LC2: | |
.quad -242834301215959509 | |
.quad -3588858202114426737 | |
.quad 2883454493032893253 | |
.quad 9097354517224871855 | |
.align 32 | |
.LC3: | |
.quad -1556992608276218209 | |
.quad -4196251135427498811 | |
.quad 1723580219865931905 | |
.quad -3221803331004277491 | |
.align 32 | |
.LC4: | |
.quad 3143064850383918358 | |
.quad -8071399103737053674 | |
.quad 5030012605302946040 | |
.quad -5825401622958753077 | |
.align 16 | |
.LC5: | |
.quad 6983438078262162902 | |
.quad -4417276706812531889 | |
.ident "GCC: (Rev2, Built by MSYS2 project) 9.2.0" | |
.def malloc; .scl 2; .type 32; .endef | |
.def free; .scl 2; .type 32; .endef | |
.def memcpy; .scl 2; .type 32; .endef |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment