Skip to content

Instantly share code, notes, and snippets.

@Cyan4973
Created March 5, 2020 01:02
Show Gist options
  • Save Cyan4973/6266189692549d2fa9deab7cc086ccfb to your computer and use it in GitHub Desktop.
Save Cyan4973/6266189692549d2fa9deab7cc086ccfb to your computer and use it in GitHub Desktop.
.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