1#if defined(__x86_64__)
2
3#include "llvm_blake3_prefix.h"
4
5#if defined(__ELF__) && !(defined(__sun__) && defined(__svr4__))
6.section .note.GNU-stack,"",%progbits
7#endif
8
9#if defined(__ELF__) && defined(__CET__) && defined(__has_include)
10#if __has_include(<cet.h>)
11#include <cet.h>
12#endif
13#endif
14
15#if !defined(_CET_ENDBR)
16#define _CET_ENDBR
17#endif
18
19#ifdef __APPLE__
20#define HIDDEN .private_extern
21#else
22#define HIDDEN .hidden
23#endif
24
25.intel_syntax noprefix
26HIDDEN _blake3_hash_many_avx512
27HIDDEN blake3_hash_many_avx512
28HIDDEN blake3_compress_in_place_avx512
29HIDDEN _blake3_compress_in_place_avx512
30HIDDEN blake3_compress_xof_avx512
31HIDDEN _blake3_compress_xof_avx512
32.global _blake3_hash_many_avx512
33.global blake3_hash_many_avx512
34.global blake3_compress_in_place_avx512
35.global _blake3_compress_in_place_avx512
36.global blake3_compress_xof_avx512
37.global _blake3_compress_xof_avx512
38
39#ifdef __APPLE__
40.text
41#else
42.section .text
43#endif
44.p2align 6
45_blake3_hash_many_avx512:
46blake3_hash_many_avx512:
47 _CET_ENDBR
48 push r15
49 push r14
50 push r13
51 push r12
52 push rbx
53 push rbp
54 mov rbp, rsp
55 sub rsp, 144
56 and rsp, 0xFFFFFFFFFFFFFFC0
57 neg r9
58 kmovw k1, r9d
59 vmovd xmm0, r8d
60 vpbroadcastd ymm0, xmm0
61 shr r8, 32
62 vmovd xmm1, r8d
63 vpbroadcastd ymm1, xmm1
64 vmovdqa ymm4, ymm1
65 vmovdqa ymm5, ymm1
66 vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip]
67 vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip]
68 vpcmpltud k2, ymm2, ymm0
69 vpcmpltud k3, ymm3, ymm0
70 vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
71 vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
72 knotw k2, k1
73 vmovdqa32 ymm2 {k2}, ymm0
74 vmovdqa32 ymm3 {k2}, ymm0
75 vmovdqa32 ymm4 {k2}, ymm1
76 vmovdqa32 ymm5 {k2}, ymm1
77 vmovdqa ymmword ptr [rsp], ymm2
78 vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3
79 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4
80 vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5
81 shl rdx, 6
82 mov qword ptr [rsp+0x80], rdx
83 cmp rsi, 16
84 jc 3f
852:
86 vpbroadcastd zmm0, dword ptr [rcx]
87 vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
88 vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
89 vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
90 vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
91 vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
92 vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
93 vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
94 movzx eax, byte ptr [rbp+0x38]
95 movzx ebx, byte ptr [rbp+0x40]
96 or eax, ebx
97 xor edx, edx
98.p2align 5
999:
100 movzx ebx, byte ptr [rbp+0x48]
101 or ebx, eax
102 add rdx, 64
103 cmp rdx, qword ptr [rsp+0x80]
104 cmove eax, ebx
105 mov dword ptr [rsp+0x88], eax
106 mov r8, qword ptr [rdi]
107 mov r9, qword ptr [rdi+0x8]
108 mov r10, qword ptr [rdi+0x10]
109 mov r11, qword ptr [rdi+0x18]
110 mov r12, qword ptr [rdi+0x40]
111 mov r13, qword ptr [rdi+0x48]
112 mov r14, qword ptr [rdi+0x50]
113 mov r15, qword ptr [rdi+0x58]
114 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
115 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
116 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
117 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
118 vpunpcklqdq zmm8, zmm16, zmm17
119 vpunpckhqdq zmm9, zmm16, zmm17
120 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
121 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
122 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
123 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
124 vpunpcklqdq zmm10, zmm18, zmm19
125 vpunpckhqdq zmm11, zmm18, zmm19
126 mov r8, qword ptr [rdi+0x20]
127 mov r9, qword ptr [rdi+0x28]
128 mov r10, qword ptr [rdi+0x30]
129 mov r11, qword ptr [rdi+0x38]
130 mov r12, qword ptr [rdi+0x60]
131 mov r13, qword ptr [rdi+0x68]
132 mov r14, qword ptr [rdi+0x70]
133 mov r15, qword ptr [rdi+0x78]
134 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
135 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
136 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
137 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
138 vpunpcklqdq zmm12, zmm16, zmm17
139 vpunpckhqdq zmm13, zmm16, zmm17
140 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
141 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
142 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
143 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
144 vpunpcklqdq zmm14, zmm18, zmm19
145 vpunpckhqdq zmm15, zmm18, zmm19
146 vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
147 vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
148 vshufps zmm16, zmm8, zmm10, 136
149 vshufps zmm17, zmm12, zmm14, 136
150 vmovdqa32 zmm20, zmm16
151 vpermt2d zmm16, zmm27, zmm17
152 vpermt2d zmm20, zmm31, zmm17
153 vshufps zmm17, zmm8, zmm10, 221
154 vshufps zmm30, zmm12, zmm14, 221
155 vmovdqa32 zmm21, zmm17
156 vpermt2d zmm17, zmm27, zmm30
157 vpermt2d zmm21, zmm31, zmm30
158 vshufps zmm18, zmm9, zmm11, 136
159 vshufps zmm8, zmm13, zmm15, 136
160 vmovdqa32 zmm22, zmm18
161 vpermt2d zmm18, zmm27, zmm8
162 vpermt2d zmm22, zmm31, zmm8
163 vshufps zmm19, zmm9, zmm11, 221
164 vshufps zmm8, zmm13, zmm15, 221
165 vmovdqa32 zmm23, zmm19
166 vpermt2d zmm19, zmm27, zmm8
167 vpermt2d zmm23, zmm31, zmm8
168 mov r8, qword ptr [rdi]
169 mov r9, qword ptr [rdi+0x8]
170 mov r10, qword ptr [rdi+0x10]
171 mov r11, qword ptr [rdi+0x18]
172 mov r12, qword ptr [rdi+0x40]
173 mov r13, qword ptr [rdi+0x48]
174 mov r14, qword ptr [rdi+0x50]
175 mov r15, qword ptr [rdi+0x58]
176 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
177 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
178 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
179 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
180 vpunpcklqdq zmm8, zmm24, zmm25
181 vpunpckhqdq zmm9, zmm24, zmm25
182 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
183 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
184 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
185 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
186 vpunpcklqdq zmm10, zmm24, zmm25
187 vpunpckhqdq zmm11, zmm24, zmm25
188 prefetcht0 [r8+rdx+0x80]
189 prefetcht0 [r12+rdx+0x80]
190 prefetcht0 [r9+rdx+0x80]
191 prefetcht0 [r13+rdx+0x80]
192 prefetcht0 [r10+rdx+0x80]
193 prefetcht0 [r14+rdx+0x80]
194 prefetcht0 [r11+rdx+0x80]
195 prefetcht0 [r15+rdx+0x80]
196 mov r8, qword ptr [rdi+0x20]
197 mov r9, qword ptr [rdi+0x28]
198 mov r10, qword ptr [rdi+0x30]
199 mov r11, qword ptr [rdi+0x38]
200 mov r12, qword ptr [rdi+0x60]
201 mov r13, qword ptr [rdi+0x68]
202 mov r14, qword ptr [rdi+0x70]
203 mov r15, qword ptr [rdi+0x78]
204 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
205 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
206 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
207 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
208 vpunpcklqdq zmm12, zmm24, zmm25
209 vpunpckhqdq zmm13, zmm24, zmm25
210 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
211 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
212 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
213 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
214 vpunpcklqdq zmm14, zmm24, zmm25
215 vpunpckhqdq zmm15, zmm24, zmm25
216 prefetcht0 [r8+rdx+0x80]
217 prefetcht0 [r12+rdx+0x80]
218 prefetcht0 [r9+rdx+0x80]
219 prefetcht0 [r13+rdx+0x80]
220 prefetcht0 [r10+rdx+0x80]
221 prefetcht0 [r14+rdx+0x80]
222 prefetcht0 [r11+rdx+0x80]
223 prefetcht0 [r15+rdx+0x80]
224 vshufps zmm24, zmm8, zmm10, 136
225 vshufps zmm30, zmm12, zmm14, 136
226 vmovdqa32 zmm28, zmm24
227 vpermt2d zmm24, zmm27, zmm30
228 vpermt2d zmm28, zmm31, zmm30
229 vshufps zmm25, zmm8, zmm10, 221
230 vshufps zmm30, zmm12, zmm14, 221
231 vmovdqa32 zmm29, zmm25
232 vpermt2d zmm25, zmm27, zmm30
233 vpermt2d zmm29, zmm31, zmm30
234 vshufps zmm26, zmm9, zmm11, 136
235 vshufps zmm8, zmm13, zmm15, 136
236 vmovdqa32 zmm30, zmm26
237 vpermt2d zmm26, zmm27, zmm8
238 vpermt2d zmm30, zmm31, zmm8
239 vshufps zmm8, zmm9, zmm11, 221
240 vshufps zmm10, zmm13, zmm15, 221
241 vpermi2d zmm27, zmm8, zmm10
242 vpermi2d zmm31, zmm8, zmm10
243 vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
244 vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
245 vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
246 vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
247 vmovdqa32 zmm12, zmmword ptr [rsp]
248 vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
249 vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
250 vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
251 vpaddd zmm0, zmm0, zmm16
252 vpaddd zmm1, zmm1, zmm18
253 vpaddd zmm2, zmm2, zmm20
254 vpaddd zmm3, zmm3, zmm22
255 vpaddd zmm0, zmm0, zmm4
256 vpaddd zmm1, zmm1, zmm5
257 vpaddd zmm2, zmm2, zmm6
258 vpaddd zmm3, zmm3, zmm7
259 vpxord zmm12, zmm12, zmm0
260 vpxord zmm13, zmm13, zmm1
261 vpxord zmm14, zmm14, zmm2
262 vpxord zmm15, zmm15, zmm3
263 vprord zmm12, zmm12, 16
264 vprord zmm13, zmm13, 16
265 vprord zmm14, zmm14, 16
266 vprord zmm15, zmm15, 16
267 vpaddd zmm8, zmm8, zmm12
268 vpaddd zmm9, zmm9, zmm13
269 vpaddd zmm10, zmm10, zmm14
270 vpaddd zmm11, zmm11, zmm15
271 vpxord zmm4, zmm4, zmm8
272 vpxord zmm5, zmm5, zmm9
273 vpxord zmm6, zmm6, zmm10
274 vpxord zmm7, zmm7, zmm11
275 vprord zmm4, zmm4, 12
276 vprord zmm5, zmm5, 12
277 vprord zmm6, zmm6, 12
278 vprord zmm7, zmm7, 12
279 vpaddd zmm0, zmm0, zmm17
280 vpaddd zmm1, zmm1, zmm19
281 vpaddd zmm2, zmm2, zmm21
282 vpaddd zmm3, zmm3, zmm23
283 vpaddd zmm0, zmm0, zmm4
284 vpaddd zmm1, zmm1, zmm5
285 vpaddd zmm2, zmm2, zmm6
286 vpaddd zmm3, zmm3, zmm7
287 vpxord zmm12, zmm12, zmm0
288 vpxord zmm13, zmm13, zmm1
289 vpxord zmm14, zmm14, zmm2
290 vpxord zmm15, zmm15, zmm3
291 vprord zmm12, zmm12, 8
292 vprord zmm13, zmm13, 8
293 vprord zmm14, zmm14, 8
294 vprord zmm15, zmm15, 8
295 vpaddd zmm8, zmm8, zmm12
296 vpaddd zmm9, zmm9, zmm13
297 vpaddd zmm10, zmm10, zmm14
298 vpaddd zmm11, zmm11, zmm15
299 vpxord zmm4, zmm4, zmm8
300 vpxord zmm5, zmm5, zmm9
301 vpxord zmm6, zmm6, zmm10
302 vpxord zmm7, zmm7, zmm11
303 vprord zmm4, zmm4, 7
304 vprord zmm5, zmm5, 7
305 vprord zmm6, zmm6, 7
306 vprord zmm7, zmm7, 7
307 vpaddd zmm0, zmm0, zmm24
308 vpaddd zmm1, zmm1, zmm26
309 vpaddd zmm2, zmm2, zmm28
310 vpaddd zmm3, zmm3, zmm30
311 vpaddd zmm0, zmm0, zmm5
312 vpaddd zmm1, zmm1, zmm6
313 vpaddd zmm2, zmm2, zmm7
314 vpaddd zmm3, zmm3, zmm4
315 vpxord zmm15, zmm15, zmm0
316 vpxord zmm12, zmm12, zmm1
317 vpxord zmm13, zmm13, zmm2
318 vpxord zmm14, zmm14, zmm3
319 vprord zmm15, zmm15, 16
320 vprord zmm12, zmm12, 16
321 vprord zmm13, zmm13, 16
322 vprord zmm14, zmm14, 16
323 vpaddd zmm10, zmm10, zmm15
324 vpaddd zmm11, zmm11, zmm12
325 vpaddd zmm8, zmm8, zmm13
326 vpaddd zmm9, zmm9, zmm14
327 vpxord zmm5, zmm5, zmm10
328 vpxord zmm6, zmm6, zmm11
329 vpxord zmm7, zmm7, zmm8
330 vpxord zmm4, zmm4, zmm9
331 vprord zmm5, zmm5, 12
332 vprord zmm6, zmm6, 12
333 vprord zmm7, zmm7, 12
334 vprord zmm4, zmm4, 12
335 vpaddd zmm0, zmm0, zmm25
336 vpaddd zmm1, zmm1, zmm27
337 vpaddd zmm2, zmm2, zmm29
338 vpaddd zmm3, zmm3, zmm31
339 vpaddd zmm0, zmm0, zmm5
340 vpaddd zmm1, zmm1, zmm6
341 vpaddd zmm2, zmm2, zmm7
342 vpaddd zmm3, zmm3, zmm4
343 vpxord zmm15, zmm15, zmm0
344 vpxord zmm12, zmm12, zmm1
345 vpxord zmm13, zmm13, zmm2
346 vpxord zmm14, zmm14, zmm3
347 vprord zmm15, zmm15, 8
348 vprord zmm12, zmm12, 8
349 vprord zmm13, zmm13, 8
350 vprord zmm14, zmm14, 8
351 vpaddd zmm10, zmm10, zmm15
352 vpaddd zmm11, zmm11, zmm12
353 vpaddd zmm8, zmm8, zmm13
354 vpaddd zmm9, zmm9, zmm14
355 vpxord zmm5, zmm5, zmm10
356 vpxord zmm6, zmm6, zmm11
357 vpxord zmm7, zmm7, zmm8
358 vpxord zmm4, zmm4, zmm9
359 vprord zmm5, zmm5, 7
360 vprord zmm6, zmm6, 7
361 vprord zmm7, zmm7, 7
362 vprord zmm4, zmm4, 7
363 vpaddd zmm0, zmm0, zmm18
364 vpaddd zmm1, zmm1, zmm19
365 vpaddd zmm2, zmm2, zmm23
366 vpaddd zmm3, zmm3, zmm20
367 vpaddd zmm0, zmm0, zmm4
368 vpaddd zmm1, zmm1, zmm5
369 vpaddd zmm2, zmm2, zmm6
370 vpaddd zmm3, zmm3, zmm7
371 vpxord zmm12, zmm12, zmm0
372 vpxord zmm13, zmm13, zmm1
373 vpxord zmm14, zmm14, zmm2
374 vpxord zmm15, zmm15, zmm3
375 vprord zmm12, zmm12, 16
376 vprord zmm13, zmm13, 16
377 vprord zmm14, zmm14, 16
378 vprord zmm15, zmm15, 16
379 vpaddd zmm8, zmm8, zmm12
380 vpaddd zmm9, zmm9, zmm13
381 vpaddd zmm10, zmm10, zmm14
382 vpaddd zmm11, zmm11, zmm15
383 vpxord zmm4, zmm4, zmm8
384 vpxord zmm5, zmm5, zmm9
385 vpxord zmm6, zmm6, zmm10
386 vpxord zmm7, zmm7, zmm11
387 vprord zmm4, zmm4, 12
388 vprord zmm5, zmm5, 12
389 vprord zmm6, zmm6, 12
390 vprord zmm7, zmm7, 12
391 vpaddd zmm0, zmm0, zmm22
392 vpaddd zmm1, zmm1, zmm26
393 vpaddd zmm2, zmm2, zmm16
394 vpaddd zmm3, zmm3, zmm29
395 vpaddd zmm0, zmm0, zmm4
396 vpaddd zmm1, zmm1, zmm5
397 vpaddd zmm2, zmm2, zmm6
398 vpaddd zmm3, zmm3, zmm7
399 vpxord zmm12, zmm12, zmm0
400 vpxord zmm13, zmm13, zmm1
401 vpxord zmm14, zmm14, zmm2
402 vpxord zmm15, zmm15, zmm3
403 vprord zmm12, zmm12, 8
404 vprord zmm13, zmm13, 8
405 vprord zmm14, zmm14, 8
406 vprord zmm15, zmm15, 8
407 vpaddd zmm8, zmm8, zmm12
408 vpaddd zmm9, zmm9, zmm13
409 vpaddd zmm10, zmm10, zmm14
410 vpaddd zmm11, zmm11, zmm15
411 vpxord zmm4, zmm4, zmm8
412 vpxord zmm5, zmm5, zmm9
413 vpxord zmm6, zmm6, zmm10
414 vpxord zmm7, zmm7, zmm11
415 vprord zmm4, zmm4, 7
416 vprord zmm5, zmm5, 7
417 vprord zmm6, zmm6, 7
418 vprord zmm7, zmm7, 7
419 vpaddd zmm0, zmm0, zmm17
420 vpaddd zmm1, zmm1, zmm28
421 vpaddd zmm2, zmm2, zmm25
422 vpaddd zmm3, zmm3, zmm31
423 vpaddd zmm0, zmm0, zmm5
424 vpaddd zmm1, zmm1, zmm6
425 vpaddd zmm2, zmm2, zmm7
426 vpaddd zmm3, zmm3, zmm4
427 vpxord zmm15, zmm15, zmm0
428 vpxord zmm12, zmm12, zmm1
429 vpxord zmm13, zmm13, zmm2
430 vpxord zmm14, zmm14, zmm3
431 vprord zmm15, zmm15, 16
432 vprord zmm12, zmm12, 16
433 vprord zmm13, zmm13, 16
434 vprord zmm14, zmm14, 16
435 vpaddd zmm10, zmm10, zmm15
436 vpaddd zmm11, zmm11, zmm12
437 vpaddd zmm8, zmm8, zmm13
438 vpaddd zmm9, zmm9, zmm14
439 vpxord zmm5, zmm5, zmm10
440 vpxord zmm6, zmm6, zmm11
441 vpxord zmm7, zmm7, zmm8
442 vpxord zmm4, zmm4, zmm9
443 vprord zmm5, zmm5, 12
444 vprord zmm6, zmm6, 12
445 vprord zmm7, zmm7, 12
446 vprord zmm4, zmm4, 12
447 vpaddd zmm0, zmm0, zmm27
448 vpaddd zmm1, zmm1, zmm21
449 vpaddd zmm2, zmm2, zmm30
450 vpaddd zmm3, zmm3, zmm24
451 vpaddd zmm0, zmm0, zmm5
452 vpaddd zmm1, zmm1, zmm6
453 vpaddd zmm2, zmm2, zmm7
454 vpaddd zmm3, zmm3, zmm4
455 vpxord zmm15, zmm15, zmm0
456 vpxord zmm12, zmm12, zmm1
457 vpxord zmm13, zmm13, zmm2
458 vpxord zmm14, zmm14, zmm3
459 vprord zmm15, zmm15, 8
460 vprord zmm12, zmm12, 8
461 vprord zmm13, zmm13, 8
462 vprord zmm14, zmm14, 8
463 vpaddd zmm10, zmm10, zmm15
464 vpaddd zmm11, zmm11, zmm12
465 vpaddd zmm8, zmm8, zmm13
466 vpaddd zmm9, zmm9, zmm14
467 vpxord zmm5, zmm5, zmm10
468 vpxord zmm6, zmm6, zmm11
469 vpxord zmm7, zmm7, zmm8
470 vpxord zmm4, zmm4, zmm9
471 vprord zmm5, zmm5, 7
472 vprord zmm6, zmm6, 7
473 vprord zmm7, zmm7, 7
474 vprord zmm4, zmm4, 7
475 vpaddd zmm0, zmm0, zmm19
476 vpaddd zmm1, zmm1, zmm26
477 vpaddd zmm2, zmm2, zmm29
478 vpaddd zmm3, zmm3, zmm23
479 vpaddd zmm0, zmm0, zmm4
480 vpaddd zmm1, zmm1, zmm5
481 vpaddd zmm2, zmm2, zmm6
482 vpaddd zmm3, zmm3, zmm7
483 vpxord zmm12, zmm12, zmm0
484 vpxord zmm13, zmm13, zmm1
485 vpxord zmm14, zmm14, zmm2
486 vpxord zmm15, zmm15, zmm3
487 vprord zmm12, zmm12, 16
488 vprord zmm13, zmm13, 16
489 vprord zmm14, zmm14, 16
490 vprord zmm15, zmm15, 16
491 vpaddd zmm8, zmm8, zmm12
492 vpaddd zmm9, zmm9, zmm13
493 vpaddd zmm10, zmm10, zmm14
494 vpaddd zmm11, zmm11, zmm15
495 vpxord zmm4, zmm4, zmm8
496 vpxord zmm5, zmm5, zmm9
497 vpxord zmm6, zmm6, zmm10
498 vpxord zmm7, zmm7, zmm11
499 vprord zmm4, zmm4, 12
500 vprord zmm5, zmm5, 12
501 vprord zmm6, zmm6, 12
502 vprord zmm7, zmm7, 12
503 vpaddd zmm0, zmm0, zmm20
504 vpaddd zmm1, zmm1, zmm28
505 vpaddd zmm2, zmm2, zmm18
506 vpaddd zmm3, zmm3, zmm30
507 vpaddd zmm0, zmm0, zmm4
508 vpaddd zmm1, zmm1, zmm5
509 vpaddd zmm2, zmm2, zmm6
510 vpaddd zmm3, zmm3, zmm7
511 vpxord zmm12, zmm12, zmm0
512 vpxord zmm13, zmm13, zmm1
513 vpxord zmm14, zmm14, zmm2
514 vpxord zmm15, zmm15, zmm3
515 vprord zmm12, zmm12, 8
516 vprord zmm13, zmm13, 8
517 vprord zmm14, zmm14, 8
518 vprord zmm15, zmm15, 8
519 vpaddd zmm8, zmm8, zmm12
520 vpaddd zmm9, zmm9, zmm13
521 vpaddd zmm10, zmm10, zmm14
522 vpaddd zmm11, zmm11, zmm15
523 vpxord zmm4, zmm4, zmm8
524 vpxord zmm5, zmm5, zmm9
525 vpxord zmm6, zmm6, zmm10
526 vpxord zmm7, zmm7, zmm11
527 vprord zmm4, zmm4, 7
528 vprord zmm5, zmm5, 7
529 vprord zmm6, zmm6, 7
530 vprord zmm7, zmm7, 7
531 vpaddd zmm0, zmm0, zmm22
532 vpaddd zmm1, zmm1, zmm25
533 vpaddd zmm2, zmm2, zmm27
534 vpaddd zmm3, zmm3, zmm24
535 vpaddd zmm0, zmm0, zmm5
536 vpaddd zmm1, zmm1, zmm6
537 vpaddd zmm2, zmm2, zmm7
538 vpaddd zmm3, zmm3, zmm4
539 vpxord zmm15, zmm15, zmm0
540 vpxord zmm12, zmm12, zmm1
541 vpxord zmm13, zmm13, zmm2
542 vpxord zmm14, zmm14, zmm3
543 vprord zmm15, zmm15, 16
544 vprord zmm12, zmm12, 16
545 vprord zmm13, zmm13, 16
546 vprord zmm14, zmm14, 16
547 vpaddd zmm10, zmm10, zmm15
548 vpaddd zmm11, zmm11, zmm12
549 vpaddd zmm8, zmm8, zmm13
550 vpaddd zmm9, zmm9, zmm14
551 vpxord zmm5, zmm5, zmm10
552 vpxord zmm6, zmm6, zmm11
553 vpxord zmm7, zmm7, zmm8
554 vpxord zmm4, zmm4, zmm9
555 vprord zmm5, zmm5, 12
556 vprord zmm6, zmm6, 12
557 vprord zmm7, zmm7, 12
558 vprord zmm4, zmm4, 12
559 vpaddd zmm0, zmm0, zmm21
560 vpaddd zmm1, zmm1, zmm16
561 vpaddd zmm2, zmm2, zmm31
562 vpaddd zmm3, zmm3, zmm17
563 vpaddd zmm0, zmm0, zmm5
564 vpaddd zmm1, zmm1, zmm6
565 vpaddd zmm2, zmm2, zmm7
566 vpaddd zmm3, zmm3, zmm4
567 vpxord zmm15, zmm15, zmm0
568 vpxord zmm12, zmm12, zmm1
569 vpxord zmm13, zmm13, zmm2
570 vpxord zmm14, zmm14, zmm3
571 vprord zmm15, zmm15, 8
572 vprord zmm12, zmm12, 8
573 vprord zmm13, zmm13, 8
574 vprord zmm14, zmm14, 8
575 vpaddd zmm10, zmm10, zmm15
576 vpaddd zmm11, zmm11, zmm12
577 vpaddd zmm8, zmm8, zmm13
578 vpaddd zmm9, zmm9, zmm14
579 vpxord zmm5, zmm5, zmm10
580 vpxord zmm6, zmm6, zmm11
581 vpxord zmm7, zmm7, zmm8
582 vpxord zmm4, zmm4, zmm9
583 vprord zmm5, zmm5, 7
584 vprord zmm6, zmm6, 7
585 vprord zmm7, zmm7, 7
586 vprord zmm4, zmm4, 7
587 vpaddd zmm0, zmm0, zmm26
588 vpaddd zmm1, zmm1, zmm28
589 vpaddd zmm2, zmm2, zmm30
590 vpaddd zmm3, zmm3, zmm29
591 vpaddd zmm0, zmm0, zmm4
592 vpaddd zmm1, zmm1, zmm5
593 vpaddd zmm2, zmm2, zmm6
594 vpaddd zmm3, zmm3, zmm7
595 vpxord zmm12, zmm12, zmm0
596 vpxord zmm13, zmm13, zmm1
597 vpxord zmm14, zmm14, zmm2
598 vpxord zmm15, zmm15, zmm3
599 vprord zmm12, zmm12, 16
600 vprord zmm13, zmm13, 16
601 vprord zmm14, zmm14, 16
602 vprord zmm15, zmm15, 16
603 vpaddd zmm8, zmm8, zmm12
604 vpaddd zmm9, zmm9, zmm13
605 vpaddd zmm10, zmm10, zmm14
606 vpaddd zmm11, zmm11, zmm15
607 vpxord zmm4, zmm4, zmm8
608 vpxord zmm5, zmm5, zmm9
609 vpxord zmm6, zmm6, zmm10
610 vpxord zmm7, zmm7, zmm11
611 vprord zmm4, zmm4, 12
612 vprord zmm5, zmm5, 12
613 vprord zmm6, zmm6, 12
614 vprord zmm7, zmm7, 12
615 vpaddd zmm0, zmm0, zmm23
616 vpaddd zmm1, zmm1, zmm25
617 vpaddd zmm2, zmm2, zmm19
618 vpaddd zmm3, zmm3, zmm31
619 vpaddd zmm0, zmm0, zmm4
620 vpaddd zmm1, zmm1, zmm5
621 vpaddd zmm2, zmm2, zmm6
622 vpaddd zmm3, zmm3, zmm7
623 vpxord zmm12, zmm12, zmm0
624 vpxord zmm13, zmm13, zmm1
625 vpxord zmm14, zmm14, zmm2
626 vpxord zmm15, zmm15, zmm3
627 vprord zmm12, zmm12, 8
628 vprord zmm13, zmm13, 8
629 vprord zmm14, zmm14, 8
630 vprord zmm15, zmm15, 8
631 vpaddd zmm8, zmm8, zmm12
632 vpaddd zmm9, zmm9, zmm13
633 vpaddd zmm10, zmm10, zmm14
634 vpaddd zmm11, zmm11, zmm15
635 vpxord zmm4, zmm4, zmm8
636 vpxord zmm5, zmm5, zmm9
637 vpxord zmm6, zmm6, zmm10
638 vpxord zmm7, zmm7, zmm11
639 vprord zmm4, zmm4, 7
640 vprord zmm5, zmm5, 7
641 vprord zmm6, zmm6, 7
642 vprord zmm7, zmm7, 7
643 vpaddd zmm0, zmm0, zmm20
644 vpaddd zmm1, zmm1, zmm27
645 vpaddd zmm2, zmm2, zmm21
646 vpaddd zmm3, zmm3, zmm17
647 vpaddd zmm0, zmm0, zmm5
648 vpaddd zmm1, zmm1, zmm6
649 vpaddd zmm2, zmm2, zmm7
650 vpaddd zmm3, zmm3, zmm4
651 vpxord zmm15, zmm15, zmm0
652 vpxord zmm12, zmm12, zmm1
653 vpxord zmm13, zmm13, zmm2
654 vpxord zmm14, zmm14, zmm3
655 vprord zmm15, zmm15, 16
656 vprord zmm12, zmm12, 16
657 vprord zmm13, zmm13, 16
658 vprord zmm14, zmm14, 16
659 vpaddd zmm10, zmm10, zmm15
660 vpaddd zmm11, zmm11, zmm12
661 vpaddd zmm8, zmm8, zmm13
662 vpaddd zmm9, zmm9, zmm14
663 vpxord zmm5, zmm5, zmm10
664 vpxord zmm6, zmm6, zmm11
665 vpxord zmm7, zmm7, zmm8
666 vpxord zmm4, zmm4, zmm9
667 vprord zmm5, zmm5, 12
668 vprord zmm6, zmm6, 12
669 vprord zmm7, zmm7, 12
670 vprord zmm4, zmm4, 12
671 vpaddd zmm0, zmm0, zmm16
672 vpaddd zmm1, zmm1, zmm18
673 vpaddd zmm2, zmm2, zmm24
674 vpaddd zmm3, zmm3, zmm22
675 vpaddd zmm0, zmm0, zmm5
676 vpaddd zmm1, zmm1, zmm6
677 vpaddd zmm2, zmm2, zmm7
678 vpaddd zmm3, zmm3, zmm4
679 vpxord zmm15, zmm15, zmm0
680 vpxord zmm12, zmm12, zmm1
681 vpxord zmm13, zmm13, zmm2
682 vpxord zmm14, zmm14, zmm3
683 vprord zmm15, zmm15, 8
684 vprord zmm12, zmm12, 8
685 vprord zmm13, zmm13, 8
686 vprord zmm14, zmm14, 8
687 vpaddd zmm10, zmm10, zmm15
688 vpaddd zmm11, zmm11, zmm12
689 vpaddd zmm8, zmm8, zmm13
690 vpaddd zmm9, zmm9, zmm14
691 vpxord zmm5, zmm5, zmm10
692 vpxord zmm6, zmm6, zmm11
693 vpxord zmm7, zmm7, zmm8
694 vpxord zmm4, zmm4, zmm9
695 vprord zmm5, zmm5, 7
696 vprord zmm6, zmm6, 7
697 vprord zmm7, zmm7, 7
698 vprord zmm4, zmm4, 7
699 vpaddd zmm0, zmm0, zmm28
700 vpaddd zmm1, zmm1, zmm25
701 vpaddd zmm2, zmm2, zmm31
702 vpaddd zmm3, zmm3, zmm30
703 vpaddd zmm0, zmm0, zmm4
704 vpaddd zmm1, zmm1, zmm5
705 vpaddd zmm2, zmm2, zmm6
706 vpaddd zmm3, zmm3, zmm7
707 vpxord zmm12, zmm12, zmm0
708 vpxord zmm13, zmm13, zmm1
709 vpxord zmm14, zmm14, zmm2
710 vpxord zmm15, zmm15, zmm3
711 vprord zmm12, zmm12, 16
712 vprord zmm13, zmm13, 16
713 vprord zmm14, zmm14, 16
714 vprord zmm15, zmm15, 16
715 vpaddd zmm8, zmm8, zmm12
716 vpaddd zmm9, zmm9, zmm13
717 vpaddd zmm10, zmm10, zmm14
718 vpaddd zmm11, zmm11, zmm15
719 vpxord zmm4, zmm4, zmm8
720 vpxord zmm5, zmm5, zmm9
721 vpxord zmm6, zmm6, zmm10
722 vpxord zmm7, zmm7, zmm11
723 vprord zmm4, zmm4, 12
724 vprord zmm5, zmm5, 12
725 vprord zmm6, zmm6, 12
726 vprord zmm7, zmm7, 12
727 vpaddd zmm0, zmm0, zmm29
728 vpaddd zmm1, zmm1, zmm27
729 vpaddd zmm2, zmm2, zmm26
730 vpaddd zmm3, zmm3, zmm24
731 vpaddd zmm0, zmm0, zmm4
732 vpaddd zmm1, zmm1, zmm5
733 vpaddd zmm2, zmm2, zmm6
734 vpaddd zmm3, zmm3, zmm7
735 vpxord zmm12, zmm12, zmm0
736 vpxord zmm13, zmm13, zmm1
737 vpxord zmm14, zmm14, zmm2
738 vpxord zmm15, zmm15, zmm3
739 vprord zmm12, zmm12, 8
740 vprord zmm13, zmm13, 8
741 vprord zmm14, zmm14, 8
742 vprord zmm15, zmm15, 8
743 vpaddd zmm8, zmm8, zmm12
744 vpaddd zmm9, zmm9, zmm13
745 vpaddd zmm10, zmm10, zmm14
746 vpaddd zmm11, zmm11, zmm15
747 vpxord zmm4, zmm4, zmm8
748 vpxord zmm5, zmm5, zmm9
749 vpxord zmm6, zmm6, zmm10
750 vpxord zmm7, zmm7, zmm11
751 vprord zmm4, zmm4, 7
752 vprord zmm5, zmm5, 7
753 vprord zmm6, zmm6, 7
754 vprord zmm7, zmm7, 7
755 vpaddd zmm0, zmm0, zmm23
756 vpaddd zmm1, zmm1, zmm21
757 vpaddd zmm2, zmm2, zmm16
758 vpaddd zmm3, zmm3, zmm22
759 vpaddd zmm0, zmm0, zmm5
760 vpaddd zmm1, zmm1, zmm6
761 vpaddd zmm2, zmm2, zmm7
762 vpaddd zmm3, zmm3, zmm4
763 vpxord zmm15, zmm15, zmm0
764 vpxord zmm12, zmm12, zmm1
765 vpxord zmm13, zmm13, zmm2
766 vpxord zmm14, zmm14, zmm3
767 vprord zmm15, zmm15, 16
768 vprord zmm12, zmm12, 16
769 vprord zmm13, zmm13, 16
770 vprord zmm14, zmm14, 16
771 vpaddd zmm10, zmm10, zmm15
772 vpaddd zmm11, zmm11, zmm12
773 vpaddd zmm8, zmm8, zmm13
774 vpaddd zmm9, zmm9, zmm14
775 vpxord zmm5, zmm5, zmm10
776 vpxord zmm6, zmm6, zmm11
777 vpxord zmm7, zmm7, zmm8
778 vpxord zmm4, zmm4, zmm9
779 vprord zmm5, zmm5, 12
780 vprord zmm6, zmm6, 12
781 vprord zmm7, zmm7, 12
782 vprord zmm4, zmm4, 12
783 vpaddd zmm0, zmm0, zmm18
784 vpaddd zmm1, zmm1, zmm19
785 vpaddd zmm2, zmm2, zmm17
786 vpaddd zmm3, zmm3, zmm20
787 vpaddd zmm0, zmm0, zmm5
788 vpaddd zmm1, zmm1, zmm6
789 vpaddd zmm2, zmm2, zmm7
790 vpaddd zmm3, zmm3, zmm4
791 vpxord zmm15, zmm15, zmm0
792 vpxord zmm12, zmm12, zmm1
793 vpxord zmm13, zmm13, zmm2
794 vpxord zmm14, zmm14, zmm3
795 vprord zmm15, zmm15, 8
796 vprord zmm12, zmm12, 8
797 vprord zmm13, zmm13, 8
798 vprord zmm14, zmm14, 8
799 vpaddd zmm10, zmm10, zmm15
800 vpaddd zmm11, zmm11, zmm12
801 vpaddd zmm8, zmm8, zmm13
802 vpaddd zmm9, zmm9, zmm14
803 vpxord zmm5, zmm5, zmm10
804 vpxord zmm6, zmm6, zmm11
805 vpxord zmm7, zmm7, zmm8
806 vpxord zmm4, zmm4, zmm9
807 vprord zmm5, zmm5, 7
808 vprord zmm6, zmm6, 7
809 vprord zmm7, zmm7, 7
810 vprord zmm4, zmm4, 7
811 vpaddd zmm0, zmm0, zmm25
812 vpaddd zmm1, zmm1, zmm27
813 vpaddd zmm2, zmm2, zmm24
814 vpaddd zmm3, zmm3, zmm31
815 vpaddd zmm0, zmm0, zmm4
816 vpaddd zmm1, zmm1, zmm5
817 vpaddd zmm2, zmm2, zmm6
818 vpaddd zmm3, zmm3, zmm7
819 vpxord zmm12, zmm12, zmm0
820 vpxord zmm13, zmm13, zmm1
821 vpxord zmm14, zmm14, zmm2
822 vpxord zmm15, zmm15, zmm3
823 vprord zmm12, zmm12, 16
824 vprord zmm13, zmm13, 16
825 vprord zmm14, zmm14, 16
826 vprord zmm15, zmm15, 16
827 vpaddd zmm8, zmm8, zmm12
828 vpaddd zmm9, zmm9, zmm13
829 vpaddd zmm10, zmm10, zmm14
830 vpaddd zmm11, zmm11, zmm15
831 vpxord zmm4, zmm4, zmm8
832 vpxord zmm5, zmm5, zmm9
833 vpxord zmm6, zmm6, zmm10
834 vpxord zmm7, zmm7, zmm11
835 vprord zmm4, zmm4, 12
836 vprord zmm5, zmm5, 12
837 vprord zmm6, zmm6, 12
838 vprord zmm7, zmm7, 12
839 vpaddd zmm0, zmm0, zmm30
840 vpaddd zmm1, zmm1, zmm21
841 vpaddd zmm2, zmm2, zmm28
842 vpaddd zmm3, zmm3, zmm17
843 vpaddd zmm0, zmm0, zmm4
844 vpaddd zmm1, zmm1, zmm5
845 vpaddd zmm2, zmm2, zmm6
846 vpaddd zmm3, zmm3, zmm7
847 vpxord zmm12, zmm12, zmm0
848 vpxord zmm13, zmm13, zmm1
849 vpxord zmm14, zmm14, zmm2
850 vpxord zmm15, zmm15, zmm3
851 vprord zmm12, zmm12, 8
852 vprord zmm13, zmm13, 8
853 vprord zmm14, zmm14, 8
854 vprord zmm15, zmm15, 8
855 vpaddd zmm8, zmm8, zmm12
856 vpaddd zmm9, zmm9, zmm13
857 vpaddd zmm10, zmm10, zmm14
858 vpaddd zmm11, zmm11, zmm15
859 vpxord zmm4, zmm4, zmm8
860 vpxord zmm5, zmm5, zmm9
861 vpxord zmm6, zmm6, zmm10
862 vpxord zmm7, zmm7, zmm11
863 vprord zmm4, zmm4, 7
864 vprord zmm5, zmm5, 7
865 vprord zmm6, zmm6, 7
866 vprord zmm7, zmm7, 7
867 vpaddd zmm0, zmm0, zmm29
868 vpaddd zmm1, zmm1, zmm16
869 vpaddd zmm2, zmm2, zmm18
870 vpaddd zmm3, zmm3, zmm20
871 vpaddd zmm0, zmm0, zmm5
872 vpaddd zmm1, zmm1, zmm6
873 vpaddd zmm2, zmm2, zmm7
874 vpaddd zmm3, zmm3, zmm4
875 vpxord zmm15, zmm15, zmm0
876 vpxord zmm12, zmm12, zmm1
877 vpxord zmm13, zmm13, zmm2
878 vpxord zmm14, zmm14, zmm3
879 vprord zmm15, zmm15, 16
880 vprord zmm12, zmm12, 16
881 vprord zmm13, zmm13, 16
882 vprord zmm14, zmm14, 16
883 vpaddd zmm10, zmm10, zmm15
884 vpaddd zmm11, zmm11, zmm12
885 vpaddd zmm8, zmm8, zmm13
886 vpaddd zmm9, zmm9, zmm14
887 vpxord zmm5, zmm5, zmm10
888 vpxord zmm6, zmm6, zmm11
889 vpxord zmm7, zmm7, zmm8
890 vpxord zmm4, zmm4, zmm9
891 vprord zmm5, zmm5, 12
892 vprord zmm6, zmm6, 12
893 vprord zmm7, zmm7, 12
894 vprord zmm4, zmm4, 12
895 vpaddd zmm0, zmm0, zmm19
896 vpaddd zmm1, zmm1, zmm26
897 vpaddd zmm2, zmm2, zmm22
898 vpaddd zmm3, zmm3, zmm23
899 vpaddd zmm0, zmm0, zmm5
900 vpaddd zmm1, zmm1, zmm6
901 vpaddd zmm2, zmm2, zmm7
902 vpaddd zmm3, zmm3, zmm4
903 vpxord zmm15, zmm15, zmm0
904 vpxord zmm12, zmm12, zmm1
905 vpxord zmm13, zmm13, zmm2
906 vpxord zmm14, zmm14, zmm3
907 vprord zmm15, zmm15, 8
908 vprord zmm12, zmm12, 8
909 vprord zmm13, zmm13, 8
910 vprord zmm14, zmm14, 8
911 vpaddd zmm10, zmm10, zmm15
912 vpaddd zmm11, zmm11, zmm12
913 vpaddd zmm8, zmm8, zmm13
914 vpaddd zmm9, zmm9, zmm14
915 vpxord zmm5, zmm5, zmm10
916 vpxord zmm6, zmm6, zmm11
917 vpxord zmm7, zmm7, zmm8
918 vpxord zmm4, zmm4, zmm9
919 vprord zmm5, zmm5, 7
920 vprord zmm6, zmm6, 7
921 vprord zmm7, zmm7, 7
922 vprord zmm4, zmm4, 7
923 vpaddd zmm0, zmm0, zmm27
924 vpaddd zmm1, zmm1, zmm21
925 vpaddd zmm2, zmm2, zmm17
926 vpaddd zmm3, zmm3, zmm24
927 vpaddd zmm0, zmm0, zmm4
928 vpaddd zmm1, zmm1, zmm5
929 vpaddd zmm2, zmm2, zmm6
930 vpaddd zmm3, zmm3, zmm7
931 vpxord zmm12, zmm12, zmm0
932 vpxord zmm13, zmm13, zmm1
933 vpxord zmm14, zmm14, zmm2
934 vpxord zmm15, zmm15, zmm3
935 vprord zmm12, zmm12, 16
936 vprord zmm13, zmm13, 16
937 vprord zmm14, zmm14, 16
938 vprord zmm15, zmm15, 16
939 vpaddd zmm8, zmm8, zmm12
940 vpaddd zmm9, zmm9, zmm13
941 vpaddd zmm10, zmm10, zmm14
942 vpaddd zmm11, zmm11, zmm15
943 vpxord zmm4, zmm4, zmm8
944 vpxord zmm5, zmm5, zmm9
945 vpxord zmm6, zmm6, zmm10
946 vpxord zmm7, zmm7, zmm11
947 vprord zmm4, zmm4, 12
948 vprord zmm5, zmm5, 12
949 vprord zmm6, zmm6, 12
950 vprord zmm7, zmm7, 12
951 vpaddd zmm0, zmm0, zmm31
952 vpaddd zmm1, zmm1, zmm16
953 vpaddd zmm2, zmm2, zmm25
954 vpaddd zmm3, zmm3, zmm22
955 vpaddd zmm0, zmm0, zmm4
956 vpaddd zmm1, zmm1, zmm5
957 vpaddd zmm2, zmm2, zmm6
958 vpaddd zmm3, zmm3, zmm7
959 vpxord zmm12, zmm12, zmm0
960 vpxord zmm13, zmm13, zmm1
961 vpxord zmm14, zmm14, zmm2
962 vpxord zmm15, zmm15, zmm3
963 vprord zmm12, zmm12, 8
964 vprord zmm13, zmm13, 8
965 vprord zmm14, zmm14, 8
966 vprord zmm15, zmm15, 8
967 vpaddd zmm8, zmm8, zmm12
968 vpaddd zmm9, zmm9, zmm13
969 vpaddd zmm10, zmm10, zmm14
970 vpaddd zmm11, zmm11, zmm15
971 vpxord zmm4, zmm4, zmm8
972 vpxord zmm5, zmm5, zmm9
973 vpxord zmm6, zmm6, zmm10
974 vpxord zmm7, zmm7, zmm11
975 vprord zmm4, zmm4, 7
976 vprord zmm5, zmm5, 7
977 vprord zmm6, zmm6, 7
978 vprord zmm7, zmm7, 7
979 vpaddd zmm0, zmm0, zmm30
980 vpaddd zmm1, zmm1, zmm18
981 vpaddd zmm2, zmm2, zmm19
982 vpaddd zmm3, zmm3, zmm23
983 vpaddd zmm0, zmm0, zmm5
984 vpaddd zmm1, zmm1, zmm6
985 vpaddd zmm2, zmm2, zmm7
986 vpaddd zmm3, zmm3, zmm4
987 vpxord zmm15, zmm15, zmm0
988 vpxord zmm12, zmm12, zmm1
989 vpxord zmm13, zmm13, zmm2
990 vpxord zmm14, zmm14, zmm3
991 vprord zmm15, zmm15, 16
992 vprord zmm12, zmm12, 16
993 vprord zmm13, zmm13, 16
994 vprord zmm14, zmm14, 16
995 vpaddd zmm10, zmm10, zmm15
996 vpaddd zmm11, zmm11, zmm12
997 vpaddd zmm8, zmm8, zmm13
998 vpaddd zmm9, zmm9, zmm14
999 vpxord zmm5, zmm5, zmm10
1000 vpxord zmm6, zmm6, zmm11
1001 vpxord zmm7, zmm7, zmm8
1002 vpxord zmm4, zmm4, zmm9
1003 vprord zmm5, zmm5, 12
1004 vprord zmm6, zmm6, 12
1005 vprord zmm7, zmm7, 12
1006 vprord zmm4, zmm4, 12
1007 vpaddd zmm0, zmm0, zmm26
1008 vpaddd zmm1, zmm1, zmm28
1009 vpaddd zmm2, zmm2, zmm20
1010 vpaddd zmm3, zmm3, zmm29
1011 vpaddd zmm0, zmm0, zmm5
1012 vpaddd zmm1, zmm1, zmm6
1013 vpaddd zmm2, zmm2, zmm7
1014 vpaddd zmm3, zmm3, zmm4
1015 vpxord zmm15, zmm15, zmm0
1016 vpxord zmm12, zmm12, zmm1
1017 vpxord zmm13, zmm13, zmm2
1018 vpxord zmm14, zmm14, zmm3
1019 vprord zmm15, zmm15, 8
1020 vprord zmm12, zmm12, 8
1021 vprord zmm13, zmm13, 8
1022 vprord zmm14, zmm14, 8
1023 vpaddd zmm10, zmm10, zmm15
1024 vpaddd zmm11, zmm11, zmm12
1025 vpaddd zmm8, zmm8, zmm13
1026 vpaddd zmm9, zmm9, zmm14
1027 vpxord zmm5, zmm5, zmm10
1028 vpxord zmm6, zmm6, zmm11
1029 vpxord zmm7, zmm7, zmm8
1030 vpxord zmm4, zmm4, zmm9
1031 vprord zmm5, zmm5, 7
1032 vprord zmm6, zmm6, 7
1033 vprord zmm7, zmm7, 7
1034 vprord zmm4, zmm4, 7
1035 vpxord zmm0, zmm0, zmm8
1036 vpxord zmm1, zmm1, zmm9
1037 vpxord zmm2, zmm2, zmm10
1038 vpxord zmm3, zmm3, zmm11
1039 vpxord zmm4, zmm4, zmm12
1040 vpxord zmm5, zmm5, zmm13
1041 vpxord zmm6, zmm6, zmm14
1042 vpxord zmm7, zmm7, zmm15
1043 movzx eax, byte ptr [rbp+0x38]
1044 jne 9b
1045 mov rbx, qword ptr [rbp+0x50]
1046 vpunpckldq zmm16, zmm0, zmm1
1047 vpunpckhdq zmm17, zmm0, zmm1
1048 vpunpckldq zmm18, zmm2, zmm3
1049 vpunpckhdq zmm19, zmm2, zmm3
1050 vpunpckldq zmm20, zmm4, zmm5
1051 vpunpckhdq zmm21, zmm4, zmm5
1052 vpunpckldq zmm22, zmm6, zmm7
1053 vpunpckhdq zmm23, zmm6, zmm7
1054 vpunpcklqdq zmm0, zmm16, zmm18
1055 vpunpckhqdq zmm1, zmm16, zmm18
1056 vpunpcklqdq zmm2, zmm17, zmm19
1057 vpunpckhqdq zmm3, zmm17, zmm19
1058 vpunpcklqdq zmm4, zmm20, zmm22
1059 vpunpckhqdq zmm5, zmm20, zmm22
1060 vpunpcklqdq zmm6, zmm21, zmm23
1061 vpunpckhqdq zmm7, zmm21, zmm23
1062 vshufi32x4 zmm16, zmm0, zmm4, 0x88
1063 vshufi32x4 zmm17, zmm1, zmm5, 0x88
1064 vshufi32x4 zmm18, zmm2, zmm6, 0x88
1065 vshufi32x4 zmm19, zmm3, zmm7, 0x88
1066 vshufi32x4 zmm20, zmm0, zmm4, 0xDD
1067 vshufi32x4 zmm21, zmm1, zmm5, 0xDD
1068 vshufi32x4 zmm22, zmm2, zmm6, 0xDD
1069 vshufi32x4 zmm23, zmm3, zmm7, 0xDD
1070 vshufi32x4 zmm0, zmm16, zmm17, 0x88
1071 vshufi32x4 zmm1, zmm18, zmm19, 0x88
1072 vshufi32x4 zmm2, zmm20, zmm21, 0x88
1073 vshufi32x4 zmm3, zmm22, zmm23, 0x88
1074 vshufi32x4 zmm4, zmm16, zmm17, 0xDD
1075 vshufi32x4 zmm5, zmm18, zmm19, 0xDD
1076 vshufi32x4 zmm6, zmm20, zmm21, 0xDD
1077 vshufi32x4 zmm7, zmm22, zmm23, 0xDD
1078 vmovdqu32 zmmword ptr [rbx], zmm0
1079 vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
1080 vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
1081 vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
1082 vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
1083 vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
1084 vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
1085 vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
1086 vmovdqa32 zmm0, zmmword ptr [rsp]
1087 vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
1088 vmovdqa32 zmm2, zmm0
1089 vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
1090 vpcmpltud k2, zmm2, zmm0
1091 vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
1092 vmovdqa32 zmmword ptr [rsp], zmm2
1093 vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
1094 add rdi, 128
1095 add rbx, 512
1096 mov qword ptr [rbp+0x50], rbx
1097 sub rsi, 16
1098 cmp rsi, 16
1099 jnc 2b
1100 test rsi, rsi
1101 jnz 3f
11024:
1103 vzeroupper
1104 mov rsp, rbp
1105 pop rbp
1106 pop rbx
1107 pop r12
1108 pop r13
1109 pop r14
1110 pop r15
1111 ret
1112.p2align 6
11133:
1114 test esi, 0x8
1115 je 3f
1116 vpbroadcastd ymm0, dword ptr [rcx]
1117 vpbroadcastd ymm1, dword ptr [rcx+0x4]
1118 vpbroadcastd ymm2, dword ptr [rcx+0x8]
1119 vpbroadcastd ymm3, dword ptr [rcx+0xC]
1120 vpbroadcastd ymm4, dword ptr [rcx+0x10]
1121 vpbroadcastd ymm5, dword ptr [rcx+0x14]
1122 vpbroadcastd ymm6, dword ptr [rcx+0x18]
1123 vpbroadcastd ymm7, dword ptr [rcx+0x1C]
1124 mov r8, qword ptr [rdi]
1125 mov r9, qword ptr [rdi+0x8]
1126 mov r10, qword ptr [rdi+0x10]
1127 mov r11, qword ptr [rdi+0x18]
1128 mov r12, qword ptr [rdi+0x20]
1129 mov r13, qword ptr [rdi+0x28]
1130 mov r14, qword ptr [rdi+0x30]
1131 mov r15, qword ptr [rdi+0x38]
1132 movzx eax, byte ptr [rbp+0x38]
1133 movzx ebx, byte ptr [rbp+0x40]
1134 or eax, ebx
1135 xor edx, edx
11362:
1137 movzx ebx, byte ptr [rbp+0x48]
1138 or ebx, eax
1139 add rdx, 64
1140 cmp rdx, qword ptr [rsp+0x80]
1141 cmove eax, ebx
1142 mov dword ptr [rsp+0x88], eax
1143 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
1144 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
1145 vmovups xmm9, xmmword ptr [r9+rdx-0x40]
1146 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
1147 vunpcklpd ymm12, ymm8, ymm9
1148 vunpckhpd ymm13, ymm8, ymm9
1149 vmovups xmm10, xmmword ptr [r10+rdx-0x40]
1150 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
1151 vmovups xmm11, xmmword ptr [r11+rdx-0x40]
1152 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
1153 vunpcklpd ymm14, ymm10, ymm11
1154 vunpckhpd ymm15, ymm10, ymm11
1155 vshufps ymm16, ymm12, ymm14, 136
1156 vshufps ymm17, ymm12, ymm14, 221
1157 vshufps ymm18, ymm13, ymm15, 136
1158 vshufps ymm19, ymm13, ymm15, 221
1159 vmovups xmm8, xmmword ptr [r8+rdx-0x30]
1160 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
1161 vmovups xmm9, xmmword ptr [r9+rdx-0x30]
1162 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
1163 vunpcklpd ymm12, ymm8, ymm9
1164 vunpckhpd ymm13, ymm8, ymm9
1165 vmovups xmm10, xmmword ptr [r10+rdx-0x30]
1166 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
1167 vmovups xmm11, xmmword ptr [r11+rdx-0x30]
1168 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
1169 vunpcklpd ymm14, ymm10, ymm11
1170 vunpckhpd ymm15, ymm10, ymm11
1171 vshufps ymm20, ymm12, ymm14, 136
1172 vshufps ymm21, ymm12, ymm14, 221
1173 vshufps ymm22, ymm13, ymm15, 136
1174 vshufps ymm23, ymm13, ymm15, 221
1175 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
1176 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
1177 vmovups xmm9, xmmword ptr [r9+rdx-0x20]
1178 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
1179 vunpcklpd ymm12, ymm8, ymm9
1180 vunpckhpd ymm13, ymm8, ymm9
1181 vmovups xmm10, xmmword ptr [r10+rdx-0x20]
1182 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
1183 vmovups xmm11, xmmword ptr [r11+rdx-0x20]
1184 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
1185 vunpcklpd ymm14, ymm10, ymm11
1186 vunpckhpd ymm15, ymm10, ymm11
1187 vshufps ymm24, ymm12, ymm14, 136
1188 vshufps ymm25, ymm12, ymm14, 221
1189 vshufps ymm26, ymm13, ymm15, 136
1190 vshufps ymm27, ymm13, ymm15, 221
1191 vmovups xmm8, xmmword ptr [r8+rdx-0x10]
1192 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
1193 vmovups xmm9, xmmword ptr [r9+rdx-0x10]
1194 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
1195 vunpcklpd ymm12, ymm8, ymm9
1196 vunpckhpd ymm13, ymm8, ymm9
1197 vmovups xmm10, xmmword ptr [r10+rdx-0x10]
1198 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
1199 vmovups xmm11, xmmword ptr [r11+rdx-0x10]
1200 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
1201 vunpcklpd ymm14, ymm10, ymm11
1202 vunpckhpd ymm15, ymm10, ymm11
1203 vshufps ymm28, ymm12, ymm14, 136
1204 vshufps ymm29, ymm12, ymm14, 221
1205 vshufps ymm30, ymm13, ymm15, 136
1206 vshufps ymm31, ymm13, ymm15, 221
1207 vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
1208 vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
1209 vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
1210 vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
1211 vmovdqa ymm12, ymmword ptr [rsp]
1212 vmovdqa ymm13, ymmword ptr [rsp+0x40]
1213 vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
1214 vpbroadcastd ymm15, dword ptr [rsp+0x88]
1215 vpaddd ymm0, ymm0, ymm16
1216 vpaddd ymm1, ymm1, ymm18
1217 vpaddd ymm2, ymm2, ymm20
1218 vpaddd ymm3, ymm3, ymm22
1219 vpaddd ymm0, ymm0, ymm4
1220 vpaddd ymm1, ymm1, ymm5
1221 vpaddd ymm2, ymm2, ymm6
1222 vpaddd ymm3, ymm3, ymm7
1223 vpxord ymm12, ymm12, ymm0
1224 vpxord ymm13, ymm13, ymm1
1225 vpxord ymm14, ymm14, ymm2
1226 vpxord ymm15, ymm15, ymm3
1227 vprord ymm12, ymm12, 16
1228 vprord ymm13, ymm13, 16
1229 vprord ymm14, ymm14, 16
1230 vprord ymm15, ymm15, 16
1231 vpaddd ymm8, ymm8, ymm12
1232 vpaddd ymm9, ymm9, ymm13
1233 vpaddd ymm10, ymm10, ymm14
1234 vpaddd ymm11, ymm11, ymm15
1235 vpxord ymm4, ymm4, ymm8
1236 vpxord ymm5, ymm5, ymm9
1237 vpxord ymm6, ymm6, ymm10
1238 vpxord ymm7, ymm7, ymm11
1239 vprord ymm4, ymm4, 12
1240 vprord ymm5, ymm5, 12
1241 vprord ymm6, ymm6, 12
1242 vprord ymm7, ymm7, 12
1243 vpaddd ymm0, ymm0, ymm17
1244 vpaddd ymm1, ymm1, ymm19
1245 vpaddd ymm2, ymm2, ymm21
1246 vpaddd ymm3, ymm3, ymm23
1247 vpaddd ymm0, ymm0, ymm4
1248 vpaddd ymm1, ymm1, ymm5
1249 vpaddd ymm2, ymm2, ymm6
1250 vpaddd ymm3, ymm3, ymm7
1251 vpxord ymm12, ymm12, ymm0
1252 vpxord ymm13, ymm13, ymm1
1253 vpxord ymm14, ymm14, ymm2
1254 vpxord ymm15, ymm15, ymm3
1255 vprord ymm12, ymm12, 8
1256 vprord ymm13, ymm13, 8
1257 vprord ymm14, ymm14, 8
1258 vprord ymm15, ymm15, 8
1259 vpaddd ymm8, ymm8, ymm12
1260 vpaddd ymm9, ymm9, ymm13
1261 vpaddd ymm10, ymm10, ymm14
1262 vpaddd ymm11, ymm11, ymm15
1263 vpxord ymm4, ymm4, ymm8
1264 vpxord ymm5, ymm5, ymm9
1265 vpxord ymm6, ymm6, ymm10
1266 vpxord ymm7, ymm7, ymm11
1267 vprord ymm4, ymm4, 7
1268 vprord ymm5, ymm5, 7
1269 vprord ymm6, ymm6, 7
1270 vprord ymm7, ymm7, 7
1271 vpaddd ymm0, ymm0, ymm24
1272 vpaddd ymm1, ymm1, ymm26
1273 vpaddd ymm2, ymm2, ymm28
1274 vpaddd ymm3, ymm3, ymm30
1275 vpaddd ymm0, ymm0, ymm5
1276 vpaddd ymm1, ymm1, ymm6
1277 vpaddd ymm2, ymm2, ymm7
1278 vpaddd ymm3, ymm3, ymm4
1279 vpxord ymm15, ymm15, ymm0
1280 vpxord ymm12, ymm12, ymm1
1281 vpxord ymm13, ymm13, ymm2
1282 vpxord ymm14, ymm14, ymm3
1283 vprord ymm15, ymm15, 16
1284 vprord ymm12, ymm12, 16
1285 vprord ymm13, ymm13, 16
1286 vprord ymm14, ymm14, 16
1287 vpaddd ymm10, ymm10, ymm15
1288 vpaddd ymm11, ymm11, ymm12
1289 vpaddd ymm8, ymm8, ymm13
1290 vpaddd ymm9, ymm9, ymm14
1291 vpxord ymm5, ymm5, ymm10
1292 vpxord ymm6, ymm6, ymm11
1293 vpxord ymm7, ymm7, ymm8
1294 vpxord ymm4, ymm4, ymm9
1295 vprord ymm5, ymm5, 12
1296 vprord ymm6, ymm6, 12
1297 vprord ymm7, ymm7, 12
1298 vprord ymm4, ymm4, 12
1299 vpaddd ymm0, ymm0, ymm25
1300 vpaddd ymm1, ymm1, ymm27
1301 vpaddd ymm2, ymm2, ymm29
1302 vpaddd ymm3, ymm3, ymm31
1303 vpaddd ymm0, ymm0, ymm5
1304 vpaddd ymm1, ymm1, ymm6
1305 vpaddd ymm2, ymm2, ymm7
1306 vpaddd ymm3, ymm3, ymm4
1307 vpxord ymm15, ymm15, ymm0
1308 vpxord ymm12, ymm12, ymm1
1309 vpxord ymm13, ymm13, ymm2
1310 vpxord ymm14, ymm14, ymm3
1311 vprord ymm15, ymm15, 8
1312 vprord ymm12, ymm12, 8
1313 vprord ymm13, ymm13, 8
1314 vprord ymm14, ymm14, 8
1315 vpaddd ymm10, ymm10, ymm15
1316 vpaddd ymm11, ymm11, ymm12
1317 vpaddd ymm8, ymm8, ymm13
1318 vpaddd ymm9, ymm9, ymm14
1319 vpxord ymm5, ymm5, ymm10
1320 vpxord ymm6, ymm6, ymm11
1321 vpxord ymm7, ymm7, ymm8
1322 vpxord ymm4, ymm4, ymm9
1323 vprord ymm5, ymm5, 7
1324 vprord ymm6, ymm6, 7
1325 vprord ymm7, ymm7, 7
1326 vprord ymm4, ymm4, 7
1327 vpaddd ymm0, ymm0, ymm18
1328 vpaddd ymm1, ymm1, ymm19
1329 vpaddd ymm2, ymm2, ymm23
1330 vpaddd ymm3, ymm3, ymm20
1331 vpaddd ymm0, ymm0, ymm4
1332 vpaddd ymm1, ymm1, ymm5
1333 vpaddd ymm2, ymm2, ymm6
1334 vpaddd ymm3, ymm3, ymm7
1335 vpxord ymm12, ymm12, ymm0
1336 vpxord ymm13, ymm13, ymm1
1337 vpxord ymm14, ymm14, ymm2
1338 vpxord ymm15, ymm15, ymm3
1339 vprord ymm12, ymm12, 16
1340 vprord ymm13, ymm13, 16
1341 vprord ymm14, ymm14, 16
1342 vprord ymm15, ymm15, 16
1343 vpaddd ymm8, ymm8, ymm12
1344 vpaddd ymm9, ymm9, ymm13
1345 vpaddd ymm10, ymm10, ymm14
1346 vpaddd ymm11, ymm11, ymm15
1347 vpxord ymm4, ymm4, ymm8
1348 vpxord ymm5, ymm5, ymm9
1349 vpxord ymm6, ymm6, ymm10
1350 vpxord ymm7, ymm7, ymm11
1351 vprord ymm4, ymm4, 12
1352 vprord ymm5, ymm5, 12
1353 vprord ymm6, ymm6, 12
1354 vprord ymm7, ymm7, 12
1355 vpaddd ymm0, ymm0, ymm22
1356 vpaddd ymm1, ymm1, ymm26
1357 vpaddd ymm2, ymm2, ymm16
1358 vpaddd ymm3, ymm3, ymm29
1359 vpaddd ymm0, ymm0, ymm4
1360 vpaddd ymm1, ymm1, ymm5
1361 vpaddd ymm2, ymm2, ymm6
1362 vpaddd ymm3, ymm3, ymm7
1363 vpxord ymm12, ymm12, ymm0
1364 vpxord ymm13, ymm13, ymm1
1365 vpxord ymm14, ymm14, ymm2
1366 vpxord ymm15, ymm15, ymm3
1367 vprord ymm12, ymm12, 8
1368 vprord ymm13, ymm13, 8
1369 vprord ymm14, ymm14, 8
1370 vprord ymm15, ymm15, 8
1371 vpaddd ymm8, ymm8, ymm12
1372 vpaddd ymm9, ymm9, ymm13
1373 vpaddd ymm10, ymm10, ymm14
1374 vpaddd ymm11, ymm11, ymm15
1375 vpxord ymm4, ymm4, ymm8
1376 vpxord ymm5, ymm5, ymm9
1377 vpxord ymm6, ymm6, ymm10
1378 vpxord ymm7, ymm7, ymm11
1379 vprord ymm4, ymm4, 7
1380 vprord ymm5, ymm5, 7
1381 vprord ymm6, ymm6, 7
1382 vprord ymm7, ymm7, 7
1383 vpaddd ymm0, ymm0, ymm17
1384 vpaddd ymm1, ymm1, ymm28
1385 vpaddd ymm2, ymm2, ymm25
1386 vpaddd ymm3, ymm3, ymm31
1387 vpaddd ymm0, ymm0, ymm5
1388 vpaddd ymm1, ymm1, ymm6
1389 vpaddd ymm2, ymm2, ymm7
1390 vpaddd ymm3, ymm3, ymm4
1391 vpxord ymm15, ymm15, ymm0
1392 vpxord ymm12, ymm12, ymm1
1393 vpxord ymm13, ymm13, ymm2
1394 vpxord ymm14, ymm14, ymm3
1395 vprord ymm15, ymm15, 16
1396 vprord ymm12, ymm12, 16
1397 vprord ymm13, ymm13, 16
1398 vprord ymm14, ymm14, 16
1399 vpaddd ymm10, ymm10, ymm15
1400 vpaddd ymm11, ymm11, ymm12
1401 vpaddd ymm8, ymm8, ymm13
1402 vpaddd ymm9, ymm9, ymm14
1403 vpxord ymm5, ymm5, ymm10
1404 vpxord ymm6, ymm6, ymm11
1405 vpxord ymm7, ymm7, ymm8
1406 vpxord ymm4, ymm4, ymm9
1407 vprord ymm5, ymm5, 12
1408 vprord ymm6, ymm6, 12
1409 vprord ymm7, ymm7, 12
1410 vprord ymm4, ymm4, 12
1411 vpaddd ymm0, ymm0, ymm27
1412 vpaddd ymm1, ymm1, ymm21
1413 vpaddd ymm2, ymm2, ymm30
1414 vpaddd ymm3, ymm3, ymm24
1415 vpaddd ymm0, ymm0, ymm5
1416 vpaddd ymm1, ymm1, ymm6
1417 vpaddd ymm2, ymm2, ymm7
1418 vpaddd ymm3, ymm3, ymm4
1419 vpxord ymm15, ymm15, ymm0
1420 vpxord ymm12, ymm12, ymm1
1421 vpxord ymm13, ymm13, ymm2
1422 vpxord ymm14, ymm14, ymm3
1423 vprord ymm15, ymm15, 8
1424 vprord ymm12, ymm12, 8
1425 vprord ymm13, ymm13, 8
1426 vprord ymm14, ymm14, 8
1427 vpaddd ymm10, ymm10, ymm15
1428 vpaddd ymm11, ymm11, ymm12
1429 vpaddd ymm8, ymm8, ymm13
1430 vpaddd ymm9, ymm9, ymm14
1431 vpxord ymm5, ymm5, ymm10
1432 vpxord ymm6, ymm6, ymm11
1433 vpxord ymm7, ymm7, ymm8
1434 vpxord ymm4, ymm4, ymm9
1435 vprord ymm5, ymm5, 7
1436 vprord ymm6, ymm6, 7
1437 vprord ymm7, ymm7, 7
1438 vprord ymm4, ymm4, 7
1439 vpaddd ymm0, ymm0, ymm19
1440 vpaddd ymm1, ymm1, ymm26
1441 vpaddd ymm2, ymm2, ymm29
1442 vpaddd ymm3, ymm3, ymm23
1443 vpaddd ymm0, ymm0, ymm4
1444 vpaddd ymm1, ymm1, ymm5
1445 vpaddd ymm2, ymm2, ymm6
1446 vpaddd ymm3, ymm3, ymm7
1447 vpxord ymm12, ymm12, ymm0
1448 vpxord ymm13, ymm13, ymm1
1449 vpxord ymm14, ymm14, ymm2
1450 vpxord ymm15, ymm15, ymm3
1451 vprord ymm12, ymm12, 16
1452 vprord ymm13, ymm13, 16
1453 vprord ymm14, ymm14, 16
1454 vprord ymm15, ymm15, 16
1455 vpaddd ymm8, ymm8, ymm12
1456 vpaddd ymm9, ymm9, ymm13
1457 vpaddd ymm10, ymm10, ymm14
1458 vpaddd ymm11, ymm11, ymm15
1459 vpxord ymm4, ymm4, ymm8
1460 vpxord ymm5, ymm5, ymm9
1461 vpxord ymm6, ymm6, ymm10
1462 vpxord ymm7, ymm7, ymm11
1463 vprord ymm4, ymm4, 12
1464 vprord ymm5, ymm5, 12
1465 vprord ymm6, ymm6, 12
1466 vprord ymm7, ymm7, 12
1467 vpaddd ymm0, ymm0, ymm20
1468 vpaddd ymm1, ymm1, ymm28
1469 vpaddd ymm2, ymm2, ymm18
1470 vpaddd ymm3, ymm3, ymm30
1471 vpaddd ymm0, ymm0, ymm4
1472 vpaddd ymm1, ymm1, ymm5
1473 vpaddd ymm2, ymm2, ymm6
1474 vpaddd ymm3, ymm3, ymm7
1475 vpxord ymm12, ymm12, ymm0
1476 vpxord ymm13, ymm13, ymm1
1477 vpxord ymm14, ymm14, ymm2
1478 vpxord ymm15, ymm15, ymm3
1479 vprord ymm12, ymm12, 8
1480 vprord ymm13, ymm13, 8
1481 vprord ymm14, ymm14, 8
1482 vprord ymm15, ymm15, 8
1483 vpaddd ymm8, ymm8, ymm12
1484 vpaddd ymm9, ymm9, ymm13
1485 vpaddd ymm10, ymm10, ymm14
1486 vpaddd ymm11, ymm11, ymm15
1487 vpxord ymm4, ymm4, ymm8
1488 vpxord ymm5, ymm5, ymm9
1489 vpxord ymm6, ymm6, ymm10
1490 vpxord ymm7, ymm7, ymm11
1491 vprord ymm4, ymm4, 7
1492 vprord ymm5, ymm5, 7
1493 vprord ymm6, ymm6, 7
1494 vprord ymm7, ymm7, 7
1495 vpaddd ymm0, ymm0, ymm22
1496 vpaddd ymm1, ymm1, ymm25
1497 vpaddd ymm2, ymm2, ymm27
1498 vpaddd ymm3, ymm3, ymm24
1499 vpaddd ymm0, ymm0, ymm5
1500 vpaddd ymm1, ymm1, ymm6
1501 vpaddd ymm2, ymm2, ymm7
1502 vpaddd ymm3, ymm3, ymm4
1503 vpxord ymm15, ymm15, ymm0
1504 vpxord ymm12, ymm12, ymm1
1505 vpxord ymm13, ymm13, ymm2
1506 vpxord ymm14, ymm14, ymm3
1507 vprord ymm15, ymm15, 16
1508 vprord ymm12, ymm12, 16
1509 vprord ymm13, ymm13, 16
1510 vprord ymm14, ymm14, 16
1511 vpaddd ymm10, ymm10, ymm15
1512 vpaddd ymm11, ymm11, ymm12
1513 vpaddd ymm8, ymm8, ymm13
1514 vpaddd ymm9, ymm9, ymm14
1515 vpxord ymm5, ymm5, ymm10
1516 vpxord ymm6, ymm6, ymm11
1517 vpxord ymm7, ymm7, ymm8
1518 vpxord ymm4, ymm4, ymm9
1519 vprord ymm5, ymm5, 12
1520 vprord ymm6, ymm6, 12
1521 vprord ymm7, ymm7, 12
1522 vprord ymm4, ymm4, 12
1523 vpaddd ymm0, ymm0, ymm21
1524 vpaddd ymm1, ymm1, ymm16
1525 vpaddd ymm2, ymm2, ymm31
1526 vpaddd ymm3, ymm3, ymm17
1527 vpaddd ymm0, ymm0, ymm5
1528 vpaddd ymm1, ymm1, ymm6
1529 vpaddd ymm2, ymm2, ymm7
1530 vpaddd ymm3, ymm3, ymm4
1531 vpxord ymm15, ymm15, ymm0
1532 vpxord ymm12, ymm12, ymm1
1533 vpxord ymm13, ymm13, ymm2
1534 vpxord ymm14, ymm14, ymm3
1535 vprord ymm15, ymm15, 8
1536 vprord ymm12, ymm12, 8
1537 vprord ymm13, ymm13, 8
1538 vprord ymm14, ymm14, 8
1539 vpaddd ymm10, ymm10, ymm15
1540 vpaddd ymm11, ymm11, ymm12
1541 vpaddd ymm8, ymm8, ymm13
1542 vpaddd ymm9, ymm9, ymm14
1543 vpxord ymm5, ymm5, ymm10
1544 vpxord ymm6, ymm6, ymm11
1545 vpxord ymm7, ymm7, ymm8
1546 vpxord ymm4, ymm4, ymm9
1547 vprord ymm5, ymm5, 7
1548 vprord ymm6, ymm6, 7
1549 vprord ymm7, ymm7, 7
1550 vprord ymm4, ymm4, 7
1551 vpaddd ymm0, ymm0, ymm26
1552 vpaddd ymm1, ymm1, ymm28
1553 vpaddd ymm2, ymm2, ymm30
1554 vpaddd ymm3, ymm3, ymm29
1555 vpaddd ymm0, ymm0, ymm4
1556 vpaddd ymm1, ymm1, ymm5
1557 vpaddd ymm2, ymm2, ymm6
1558 vpaddd ymm3, ymm3, ymm7
1559 vpxord ymm12, ymm12, ymm0
1560 vpxord ymm13, ymm13, ymm1
1561 vpxord ymm14, ymm14, ymm2
1562 vpxord ymm15, ymm15, ymm3
1563 vprord ymm12, ymm12, 16
1564 vprord ymm13, ymm13, 16
1565 vprord ymm14, ymm14, 16
1566 vprord ymm15, ymm15, 16
1567 vpaddd ymm8, ymm8, ymm12
1568 vpaddd ymm9, ymm9, ymm13
1569 vpaddd ymm10, ymm10, ymm14
1570 vpaddd ymm11, ymm11, ymm15
1571 vpxord ymm4, ymm4, ymm8
1572 vpxord ymm5, ymm5, ymm9
1573 vpxord ymm6, ymm6, ymm10
1574 vpxord ymm7, ymm7, ymm11
1575 vprord ymm4, ymm4, 12
1576 vprord ymm5, ymm5, 12
1577 vprord ymm6, ymm6, 12
1578 vprord ymm7, ymm7, 12
1579 vpaddd ymm0, ymm0, ymm23
1580 vpaddd ymm1, ymm1, ymm25
1581 vpaddd ymm2, ymm2, ymm19
1582 vpaddd ymm3, ymm3, ymm31
1583 vpaddd ymm0, ymm0, ymm4
1584 vpaddd ymm1, ymm1, ymm5
1585 vpaddd ymm2, ymm2, ymm6
1586 vpaddd ymm3, ymm3, ymm7
1587 vpxord ymm12, ymm12, ymm0
1588 vpxord ymm13, ymm13, ymm1
1589 vpxord ymm14, ymm14, ymm2
1590 vpxord ymm15, ymm15, ymm3
1591 vprord ymm12, ymm12, 8
1592 vprord ymm13, ymm13, 8
1593 vprord ymm14, ymm14, 8
1594 vprord ymm15, ymm15, 8
1595 vpaddd ymm8, ymm8, ymm12
1596 vpaddd ymm9, ymm9, ymm13
1597 vpaddd ymm10, ymm10, ymm14
1598 vpaddd ymm11, ymm11, ymm15
1599 vpxord ymm4, ymm4, ymm8
1600 vpxord ymm5, ymm5, ymm9
1601 vpxord ymm6, ymm6, ymm10
1602 vpxord ymm7, ymm7, ymm11
1603 vprord ymm4, ymm4, 7
1604 vprord ymm5, ymm5, 7
1605 vprord ymm6, ymm6, 7
1606 vprord ymm7, ymm7, 7
1607 vpaddd ymm0, ymm0, ymm20
1608 vpaddd ymm1, ymm1, ymm27
1609 vpaddd ymm2, ymm2, ymm21
1610 vpaddd ymm3, ymm3, ymm17
1611 vpaddd ymm0, ymm0, ymm5
1612 vpaddd ymm1, ymm1, ymm6
1613 vpaddd ymm2, ymm2, ymm7
1614 vpaddd ymm3, ymm3, ymm4
1615 vpxord ymm15, ymm15, ymm0
1616 vpxord ymm12, ymm12, ymm1
1617 vpxord ymm13, ymm13, ymm2
1618 vpxord ymm14, ymm14, ymm3
1619 vprord ymm15, ymm15, 16
1620 vprord ymm12, ymm12, 16
1621 vprord ymm13, ymm13, 16
1622 vprord ymm14, ymm14, 16
1623 vpaddd ymm10, ymm10, ymm15
1624 vpaddd ymm11, ymm11, ymm12
1625 vpaddd ymm8, ymm8, ymm13
1626 vpaddd ymm9, ymm9, ymm14
1627 vpxord ymm5, ymm5, ymm10
1628 vpxord ymm6, ymm6, ymm11
1629 vpxord ymm7, ymm7, ymm8
1630 vpxord ymm4, ymm4, ymm9
1631 vprord ymm5, ymm5, 12
1632 vprord ymm6, ymm6, 12
1633 vprord ymm7, ymm7, 12
1634 vprord ymm4, ymm4, 12
1635 vpaddd ymm0, ymm0, ymm16
1636 vpaddd ymm1, ymm1, ymm18
1637 vpaddd ymm2, ymm2, ymm24
1638 vpaddd ymm3, ymm3, ymm22
1639 vpaddd ymm0, ymm0, ymm5
1640 vpaddd ymm1, ymm1, ymm6
1641 vpaddd ymm2, ymm2, ymm7
1642 vpaddd ymm3, ymm3, ymm4
1643 vpxord ymm15, ymm15, ymm0
1644 vpxord ymm12, ymm12, ymm1
1645 vpxord ymm13, ymm13, ymm2
1646 vpxord ymm14, ymm14, ymm3
1647 vprord ymm15, ymm15, 8
1648 vprord ymm12, ymm12, 8
1649 vprord ymm13, ymm13, 8
1650 vprord ymm14, ymm14, 8
1651 vpaddd ymm10, ymm10, ymm15
1652 vpaddd ymm11, ymm11, ymm12
1653 vpaddd ymm8, ymm8, ymm13
1654 vpaddd ymm9, ymm9, ymm14
1655 vpxord ymm5, ymm5, ymm10
1656 vpxord ymm6, ymm6, ymm11
1657 vpxord ymm7, ymm7, ymm8
1658 vpxord ymm4, ymm4, ymm9
1659 vprord ymm5, ymm5, 7
1660 vprord ymm6, ymm6, 7
1661 vprord ymm7, ymm7, 7
1662 vprord ymm4, ymm4, 7
1663 vpaddd ymm0, ymm0, ymm28
1664 vpaddd ymm1, ymm1, ymm25
1665 vpaddd ymm2, ymm2, ymm31
1666 vpaddd ymm3, ymm3, ymm30
1667 vpaddd ymm0, ymm0, ymm4
1668 vpaddd ymm1, ymm1, ymm5
1669 vpaddd ymm2, ymm2, ymm6
1670 vpaddd ymm3, ymm3, ymm7
1671 vpxord ymm12, ymm12, ymm0
1672 vpxord ymm13, ymm13, ymm1
1673 vpxord ymm14, ymm14, ymm2
1674 vpxord ymm15, ymm15, ymm3
1675 vprord ymm12, ymm12, 16
1676 vprord ymm13, ymm13, 16
1677 vprord ymm14, ymm14, 16
1678 vprord ymm15, ymm15, 16
1679 vpaddd ymm8, ymm8, ymm12
1680 vpaddd ymm9, ymm9, ymm13
1681 vpaddd ymm10, ymm10, ymm14
1682 vpaddd ymm11, ymm11, ymm15
1683 vpxord ymm4, ymm4, ymm8
1684 vpxord ymm5, ymm5, ymm9
1685 vpxord ymm6, ymm6, ymm10
1686 vpxord ymm7, ymm7, ymm11
1687 vprord ymm4, ymm4, 12
1688 vprord ymm5, ymm5, 12
1689 vprord ymm6, ymm6, 12
1690 vprord ymm7, ymm7, 12
1691 vpaddd ymm0, ymm0, ymm29
1692 vpaddd ymm1, ymm1, ymm27
1693 vpaddd ymm2, ymm2, ymm26
1694 vpaddd ymm3, ymm3, ymm24
1695 vpaddd ymm0, ymm0, ymm4
1696 vpaddd ymm1, ymm1, ymm5
1697 vpaddd ymm2, ymm2, ymm6
1698 vpaddd ymm3, ymm3, ymm7
1699 vpxord ymm12, ymm12, ymm0
1700 vpxord ymm13, ymm13, ymm1
1701 vpxord ymm14, ymm14, ymm2
1702 vpxord ymm15, ymm15, ymm3
1703 vprord ymm12, ymm12, 8
1704 vprord ymm13, ymm13, 8
1705 vprord ymm14, ymm14, 8
1706 vprord ymm15, ymm15, 8
1707 vpaddd ymm8, ymm8, ymm12
1708 vpaddd ymm9, ymm9, ymm13
1709 vpaddd ymm10, ymm10, ymm14
1710 vpaddd ymm11, ymm11, ymm15
1711 vpxord ymm4, ymm4, ymm8
1712 vpxord ymm5, ymm5, ymm9
1713 vpxord ymm6, ymm6, ymm10
1714 vpxord ymm7, ymm7, ymm11
1715 vprord ymm4, ymm4, 7
1716 vprord ymm5, ymm5, 7
1717 vprord ymm6, ymm6, 7
1718 vprord ymm7, ymm7, 7
1719 vpaddd ymm0, ymm0, ymm23
1720 vpaddd ymm1, ymm1, ymm21
1721 vpaddd ymm2, ymm2, ymm16
1722 vpaddd ymm3, ymm3, ymm22
1723 vpaddd ymm0, ymm0, ymm5
1724 vpaddd ymm1, ymm1, ymm6
1725 vpaddd ymm2, ymm2, ymm7
1726 vpaddd ymm3, ymm3, ymm4
1727 vpxord ymm15, ymm15, ymm0
1728 vpxord ymm12, ymm12, ymm1
1729 vpxord ymm13, ymm13, ymm2
1730 vpxord ymm14, ymm14, ymm3
1731 vprord ymm15, ymm15, 16
1732 vprord ymm12, ymm12, 16
1733 vprord ymm13, ymm13, 16
1734 vprord ymm14, ymm14, 16
1735 vpaddd ymm10, ymm10, ymm15
1736 vpaddd ymm11, ymm11, ymm12
1737 vpaddd ymm8, ymm8, ymm13
1738 vpaddd ymm9, ymm9, ymm14
1739 vpxord ymm5, ymm5, ymm10
1740 vpxord ymm6, ymm6, ymm11
1741 vpxord ymm7, ymm7, ymm8
1742 vpxord ymm4, ymm4, ymm9
1743 vprord ymm5, ymm5, 12
1744 vprord ymm6, ymm6, 12
1745 vprord ymm7, ymm7, 12
1746 vprord ymm4, ymm4, 12
1747 vpaddd ymm0, ymm0, ymm18
1748 vpaddd ymm1, ymm1, ymm19
1749 vpaddd ymm2, ymm2, ymm17
1750 vpaddd ymm3, ymm3, ymm20
1751 vpaddd ymm0, ymm0, ymm5
1752 vpaddd ymm1, ymm1, ymm6
1753 vpaddd ymm2, ymm2, ymm7
1754 vpaddd ymm3, ymm3, ymm4
1755 vpxord ymm15, ymm15, ymm0
1756 vpxord ymm12, ymm12, ymm1
1757 vpxord ymm13, ymm13, ymm2
1758 vpxord ymm14, ymm14, ymm3
1759 vprord ymm15, ymm15, 8
1760 vprord ymm12, ymm12, 8
1761 vprord ymm13, ymm13, 8
1762 vprord ymm14, ymm14, 8
1763 vpaddd ymm10, ymm10, ymm15
1764 vpaddd ymm11, ymm11, ymm12
1765 vpaddd ymm8, ymm8, ymm13
1766 vpaddd ymm9, ymm9, ymm14
1767 vpxord ymm5, ymm5, ymm10
1768 vpxord ymm6, ymm6, ymm11
1769 vpxord ymm7, ymm7, ymm8
1770 vpxord ymm4, ymm4, ymm9
1771 vprord ymm5, ymm5, 7
1772 vprord ymm6, ymm6, 7
1773 vprord ymm7, ymm7, 7
1774 vprord ymm4, ymm4, 7
1775 vpaddd ymm0, ymm0, ymm25
1776 vpaddd ymm1, ymm1, ymm27
1777 vpaddd ymm2, ymm2, ymm24
1778 vpaddd ymm3, ymm3, ymm31
1779 vpaddd ymm0, ymm0, ymm4
1780 vpaddd ymm1, ymm1, ymm5
1781 vpaddd ymm2, ymm2, ymm6
1782 vpaddd ymm3, ymm3, ymm7
1783 vpxord ymm12, ymm12, ymm0
1784 vpxord ymm13, ymm13, ymm1
1785 vpxord ymm14, ymm14, ymm2
1786 vpxord ymm15, ymm15, ymm3
1787 vprord ymm12, ymm12, 16
1788 vprord ymm13, ymm13, 16
1789 vprord ymm14, ymm14, 16
1790 vprord ymm15, ymm15, 16
1791 vpaddd ymm8, ymm8, ymm12
1792 vpaddd ymm9, ymm9, ymm13
1793 vpaddd ymm10, ymm10, ymm14
1794 vpaddd ymm11, ymm11, ymm15
1795 vpxord ymm4, ymm4, ymm8
1796 vpxord ymm5, ymm5, ymm9
1797 vpxord ymm6, ymm6, ymm10
1798 vpxord ymm7, ymm7, ymm11
1799 vprord ymm4, ymm4, 12
1800 vprord ymm5, ymm5, 12
1801 vprord ymm6, ymm6, 12
1802 vprord ymm7, ymm7, 12
1803 vpaddd ymm0, ymm0, ymm30
1804 vpaddd ymm1, ymm1, ymm21
1805 vpaddd ymm2, ymm2, ymm28
1806 vpaddd ymm3, ymm3, ymm17
1807 vpaddd ymm0, ymm0, ymm4
1808 vpaddd ymm1, ymm1, ymm5
1809 vpaddd ymm2, ymm2, ymm6
1810 vpaddd ymm3, ymm3, ymm7
1811 vpxord ymm12, ymm12, ymm0
1812 vpxord ymm13, ymm13, ymm1
1813 vpxord ymm14, ymm14, ymm2
1814 vpxord ymm15, ymm15, ymm3
1815 vprord ymm12, ymm12, 8
1816 vprord ymm13, ymm13, 8
1817 vprord ymm14, ymm14, 8
1818 vprord ymm15, ymm15, 8
1819 vpaddd ymm8, ymm8, ymm12
1820 vpaddd ymm9, ymm9, ymm13
1821 vpaddd ymm10, ymm10, ymm14
1822 vpaddd ymm11, ymm11, ymm15
1823 vpxord ymm4, ymm4, ymm8
1824 vpxord ymm5, ymm5, ymm9
1825 vpxord ymm6, ymm6, ymm10
1826 vpxord ymm7, ymm7, ymm11
1827 vprord ymm4, ymm4, 7
1828 vprord ymm5, ymm5, 7
1829 vprord ymm6, ymm6, 7
1830 vprord ymm7, ymm7, 7
1831 vpaddd ymm0, ymm0, ymm29
1832 vpaddd ymm1, ymm1, ymm16
1833 vpaddd ymm2, ymm2, ymm18
1834 vpaddd ymm3, ymm3, ymm20
1835 vpaddd ymm0, ymm0, ymm5
1836 vpaddd ymm1, ymm1, ymm6
1837 vpaddd ymm2, ymm2, ymm7
1838 vpaddd ymm3, ymm3, ymm4
1839 vpxord ymm15, ymm15, ymm0
1840 vpxord ymm12, ymm12, ymm1
1841 vpxord ymm13, ymm13, ymm2
1842 vpxord ymm14, ymm14, ymm3
1843 vprord ymm15, ymm15, 16
1844 vprord ymm12, ymm12, 16
1845 vprord ymm13, ymm13, 16
1846 vprord ymm14, ymm14, 16
1847 vpaddd ymm10, ymm10, ymm15
1848 vpaddd ymm11, ymm11, ymm12
1849 vpaddd ymm8, ymm8, ymm13
1850 vpaddd ymm9, ymm9, ymm14
1851 vpxord ymm5, ymm5, ymm10
1852 vpxord ymm6, ymm6, ymm11
1853 vpxord ymm7, ymm7, ymm8
1854 vpxord ymm4, ymm4, ymm9
1855 vprord ymm5, ymm5, 12
1856 vprord ymm6, ymm6, 12
1857 vprord ymm7, ymm7, 12
1858 vprord ymm4, ymm4, 12
1859 vpaddd ymm0, ymm0, ymm19
1860 vpaddd ymm1, ymm1, ymm26
1861 vpaddd ymm2, ymm2, ymm22
1862 vpaddd ymm3, ymm3, ymm23
1863 vpaddd ymm0, ymm0, ymm5
1864 vpaddd ymm1, ymm1, ymm6
1865 vpaddd ymm2, ymm2, ymm7
1866 vpaddd ymm3, ymm3, ymm4
1867 vpxord ymm15, ymm15, ymm0
1868 vpxord ymm12, ymm12, ymm1
1869 vpxord ymm13, ymm13, ymm2
1870 vpxord ymm14, ymm14, ymm3
1871 vprord ymm15, ymm15, 8
1872 vprord ymm12, ymm12, 8
1873 vprord ymm13, ymm13, 8
1874 vprord ymm14, ymm14, 8
1875 vpaddd ymm10, ymm10, ymm15
1876 vpaddd ymm11, ymm11, ymm12
1877 vpaddd ymm8, ymm8, ymm13
1878 vpaddd ymm9, ymm9, ymm14
1879 vpxord ymm5, ymm5, ymm10
1880 vpxord ymm6, ymm6, ymm11
1881 vpxord ymm7, ymm7, ymm8
1882 vpxord ymm4, ymm4, ymm9
1883 vprord ymm5, ymm5, 7
1884 vprord ymm6, ymm6, 7
1885 vprord ymm7, ymm7, 7
1886 vprord ymm4, ymm4, 7
1887 vpaddd ymm0, ymm0, ymm27
1888 vpaddd ymm1, ymm1, ymm21
1889 vpaddd ymm2, ymm2, ymm17
1890 vpaddd ymm3, ymm3, ymm24
1891 vpaddd ymm0, ymm0, ymm4
1892 vpaddd ymm1, ymm1, ymm5
1893 vpaddd ymm2, ymm2, ymm6
1894 vpaddd ymm3, ymm3, ymm7
1895 vpxord ymm12, ymm12, ymm0
1896 vpxord ymm13, ymm13, ymm1
1897 vpxord ymm14, ymm14, ymm2
1898 vpxord ymm15, ymm15, ymm3
1899 vprord ymm12, ymm12, 16
1900 vprord ymm13, ymm13, 16
1901 vprord ymm14, ymm14, 16
1902 vprord ymm15, ymm15, 16
1903 vpaddd ymm8, ymm8, ymm12
1904 vpaddd ymm9, ymm9, ymm13
1905 vpaddd ymm10, ymm10, ymm14
1906 vpaddd ymm11, ymm11, ymm15
1907 vpxord ymm4, ymm4, ymm8
1908 vpxord ymm5, ymm5, ymm9
1909 vpxord ymm6, ymm6, ymm10
1910 vpxord ymm7, ymm7, ymm11
1911 vprord ymm4, ymm4, 12
1912 vprord ymm5, ymm5, 12
1913 vprord ymm6, ymm6, 12
1914 vprord ymm7, ymm7, 12
1915 vpaddd ymm0, ymm0, ymm31
1916 vpaddd ymm1, ymm1, ymm16
1917 vpaddd ymm2, ymm2, ymm25
1918 vpaddd ymm3, ymm3, ymm22
1919 vpaddd ymm0, ymm0, ymm4
1920 vpaddd ymm1, ymm1, ymm5
1921 vpaddd ymm2, ymm2, ymm6
1922 vpaddd ymm3, ymm3, ymm7
1923 vpxord ymm12, ymm12, ymm0
1924 vpxord ymm13, ymm13, ymm1
1925 vpxord ymm14, ymm14, ymm2
1926 vpxord ymm15, ymm15, ymm3
1927 vprord ymm12, ymm12, 8
1928 vprord ymm13, ymm13, 8
1929 vprord ymm14, ymm14, 8
1930 vprord ymm15, ymm15, 8
1931 vpaddd ymm8, ymm8, ymm12
1932 vpaddd ymm9, ymm9, ymm13
1933 vpaddd ymm10, ymm10, ymm14
1934 vpaddd ymm11, ymm11, ymm15
1935 vpxord ymm4, ymm4, ymm8
1936 vpxord ymm5, ymm5, ymm9
1937 vpxord ymm6, ymm6, ymm10
1938 vpxord ymm7, ymm7, ymm11
1939 vprord ymm4, ymm4, 7
1940 vprord ymm5, ymm5, 7
1941 vprord ymm6, ymm6, 7
1942 vprord ymm7, ymm7, 7
1943 vpaddd ymm0, ymm0, ymm30
1944 vpaddd ymm1, ymm1, ymm18
1945 vpaddd ymm2, ymm2, ymm19
1946 vpaddd ymm3, ymm3, ymm23
1947 vpaddd ymm0, ymm0, ymm5
1948 vpaddd ymm1, ymm1, ymm6
1949 vpaddd ymm2, ymm2, ymm7
1950 vpaddd ymm3, ymm3, ymm4
1951 vpxord ymm15, ymm15, ymm0
1952 vpxord ymm12, ymm12, ymm1
1953 vpxord ymm13, ymm13, ymm2
1954 vpxord ymm14, ymm14, ymm3
1955 vprord ymm15, ymm15, 16
1956 vprord ymm12, ymm12, 16
1957 vprord ymm13, ymm13, 16
1958 vprord ymm14, ymm14, 16
1959 vpaddd ymm10, ymm10, ymm15
1960 vpaddd ymm11, ymm11, ymm12
1961 vpaddd ymm8, ymm8, ymm13
1962 vpaddd ymm9, ymm9, ymm14
1963 vpxord ymm5, ymm5, ymm10
1964 vpxord ymm6, ymm6, ymm11
1965 vpxord ymm7, ymm7, ymm8
1966 vpxord ymm4, ymm4, ymm9
1967 vprord ymm5, ymm5, 12
1968 vprord ymm6, ymm6, 12
1969 vprord ymm7, ymm7, 12
1970 vprord ymm4, ymm4, 12
1971 vpaddd ymm0, ymm0, ymm26
1972 vpaddd ymm1, ymm1, ymm28
1973 vpaddd ymm2, ymm2, ymm20
1974 vpaddd ymm3, ymm3, ymm29
1975 vpaddd ymm0, ymm0, ymm5
1976 vpaddd ymm1, ymm1, ymm6
1977 vpaddd ymm2, ymm2, ymm7
1978 vpaddd ymm3, ymm3, ymm4
1979 vpxord ymm15, ymm15, ymm0
1980 vpxord ymm12, ymm12, ymm1
1981 vpxord ymm13, ymm13, ymm2
1982 vpxord ymm14, ymm14, ymm3
1983 vprord ymm15, ymm15, 8
1984 vprord ymm12, ymm12, 8
1985 vprord ymm13, ymm13, 8
1986 vprord ymm14, ymm14, 8
1987 vpaddd ymm10, ymm10, ymm15
1988 vpaddd ymm11, ymm11, ymm12
1989 vpaddd ymm8, ymm8, ymm13
1990 vpaddd ymm9, ymm9, ymm14
1991 vpxord ymm5, ymm5, ymm10
1992 vpxord ymm6, ymm6, ymm11
1993 vpxord ymm7, ymm7, ymm8
1994 vpxord ymm4, ymm4, ymm9
1995 vprord ymm5, ymm5, 7
1996 vprord ymm6, ymm6, 7
1997 vprord ymm7, ymm7, 7
1998 vprord ymm4, ymm4, 7
1999 vpxor ymm0, ymm0, ymm8
2000 vpxor ymm1, ymm1, ymm9
2001 vpxor ymm2, ymm2, ymm10
2002 vpxor ymm3, ymm3, ymm11
2003 vpxor ymm4, ymm4, ymm12
2004 vpxor ymm5, ymm5, ymm13
2005 vpxor ymm6, ymm6, ymm14
2006 vpxor ymm7, ymm7, ymm15
2007 movzx eax, byte ptr [rbp+0x38]
2008 jne 2b
2009 mov rbx, qword ptr [rbp+0x50]
2010 vunpcklps ymm8, ymm0, ymm1
2011 vunpcklps ymm9, ymm2, ymm3
2012 vunpckhps ymm10, ymm0, ymm1
2013 vunpcklps ymm11, ymm4, ymm5
2014 vunpcklps ymm0, ymm6, ymm7
2015 vshufps ymm12, ymm8, ymm9, 78
2016 vblendps ymm1, ymm8, ymm12, 0xCC
2017 vshufps ymm8, ymm11, ymm0, 78
2018 vunpckhps ymm13, ymm2, ymm3
2019 vblendps ymm2, ymm11, ymm8, 0xCC
2020 vblendps ymm3, ymm12, ymm9, 0xCC
2021 vperm2f128 ymm12, ymm1, ymm2, 0x20
2022 vmovups ymmword ptr [rbx], ymm12
2023 vunpckhps ymm14, ymm4, ymm5
2024 vblendps ymm4, ymm8, ymm0, 0xCC
2025 vunpckhps ymm15, ymm6, ymm7
2026 vperm2f128 ymm7, ymm3, ymm4, 0x20
2027 vmovups ymmword ptr [rbx+0x20], ymm7
2028 vshufps ymm5, ymm10, ymm13, 78
2029 vblendps ymm6, ymm5, ymm13, 0xCC
2030 vshufps ymm13, ymm14, ymm15, 78
2031 vblendps ymm10, ymm10, ymm5, 0xCC
2032 vblendps ymm14, ymm14, ymm13, 0xCC
2033 vperm2f128 ymm8, ymm10, ymm14, 0x20
2034 vmovups ymmword ptr [rbx+0x40], ymm8
2035 vblendps ymm15, ymm13, ymm15, 0xCC
2036 vperm2f128 ymm13, ymm6, ymm15, 0x20
2037 vmovups ymmword ptr [rbx+0x60], ymm13
2038 vperm2f128 ymm9, ymm1, ymm2, 0x31
2039 vperm2f128 ymm11, ymm3, ymm4, 0x31
2040 vmovups ymmword ptr [rbx+0x80], ymm9
2041 vperm2f128 ymm14, ymm10, ymm14, 0x31
2042 vperm2f128 ymm15, ymm6, ymm15, 0x31
2043 vmovups ymmword ptr [rbx+0xA0], ymm11
2044 vmovups ymmword ptr [rbx+0xC0], ymm14
2045 vmovups ymmword ptr [rbx+0xE0], ymm15
2046 vmovdqa ymm0, ymmword ptr [rsp]
2047 vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20]
2048 vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
2049 vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
2050 vmovdqa ymmword ptr [rsp], ymm0
2051 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2
2052 add rbx, 256
2053 mov qword ptr [rbp+0x50], rbx
2054 add rdi, 64
2055 sub rsi, 8
20563:
2057 mov rbx, qword ptr [rbp+0x50]
2058 mov r15, qword ptr [rsp+0x80]
2059 movzx r13, byte ptr [rbp+0x38]
2060 movzx r12, byte ptr [rbp+0x48]
2061 test esi, 0x4
2062 je 3f
2063 vbroadcasti32x4 zmm0, xmmword ptr [rcx]
2064 vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
2065 vmovdqa xmm12, xmmword ptr [rsp]
2066 vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10]
2067 vpunpckldq xmm14, xmm12, xmm13
2068 vpunpckhdq xmm15, xmm12, xmm13
2069 vpermq ymm14, ymm14, 0xDC
2070 vpermq ymm15, ymm15, 0xDC
2071 vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
2072 vinserti64x4 zmm13, zmm14, ymm15, 0x01
2073 mov eax, 17476
2074 kmovw k2, eax
2075 vpblendmd zmm13 {k2}, zmm13, zmm12
2076 vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
2077 mov r8, qword ptr [rdi]
2078 mov r9, qword ptr [rdi+0x8]
2079 mov r10, qword ptr [rdi+0x10]
2080 mov r11, qword ptr [rdi+0x18]
2081 mov eax, 43690
2082 kmovw k3, eax
2083 mov eax, 34952
2084 kmovw k4, eax
2085 movzx eax, byte ptr [rbp+0x40]
2086 or eax, r13d
2087 xor edx, edx
2088.p2align 5
20892:
2090 mov r14d, eax
2091 or eax, r12d
2092 add rdx, 64
2093 cmp rdx, r15
2094 cmovne eax, r14d
2095 mov dword ptr [rsp+0x88], eax
2096 vmovdqa32 zmm2, zmm15
2097 vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
2098 vpblendmd zmm3 {k4}, zmm13, zmm8
2099 vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
2100 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
2101 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
2102 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
2103 vmovups zmm9, zmmword ptr [r8+rdx-0x30]
2104 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
2105 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
2106 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
2107 vshufps zmm4, zmm8, zmm9, 136
2108 vshufps zmm5, zmm8, zmm9, 221
2109 vmovups zmm8, zmmword ptr [r8+rdx-0x20]
2110 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
2111 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
2112 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
2113 vmovups zmm9, zmmword ptr [r8+rdx-0x10]
2114 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
2115 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
2116 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
2117 vshufps zmm6, zmm8, zmm9, 136
2118 vshufps zmm7, zmm8, zmm9, 221
2119 vpshufd zmm6, zmm6, 0x93
2120 vpshufd zmm7, zmm7, 0x93
2121 mov al, 7
21229:
2123 vpaddd zmm0, zmm0, zmm4
2124 vpaddd zmm0, zmm0, zmm1
2125 vpxord zmm3, zmm3, zmm0
2126 vprord zmm3, zmm3, 16
2127 vpaddd zmm2, zmm2, zmm3
2128 vpxord zmm1, zmm1, zmm2
2129 vprord zmm1, zmm1, 12
2130 vpaddd zmm0, zmm0, zmm5
2131 vpaddd zmm0, zmm0, zmm1
2132 vpxord zmm3, zmm3, zmm0
2133 vprord zmm3, zmm3, 8
2134 vpaddd zmm2, zmm2, zmm3
2135 vpxord zmm1, zmm1, zmm2
2136 vprord zmm1, zmm1, 7
2137 vpshufd zmm0, zmm0, 0x93
2138 vpshufd zmm3, zmm3, 0x4E
2139 vpshufd zmm2, zmm2, 0x39
2140 vpaddd zmm0, zmm0, zmm6
2141 vpaddd zmm0, zmm0, zmm1
2142 vpxord zmm3, zmm3, zmm0
2143 vprord zmm3, zmm3, 16
2144 vpaddd zmm2, zmm2, zmm3
2145 vpxord zmm1, zmm1, zmm2
2146 vprord zmm1, zmm1, 12
2147 vpaddd zmm0, zmm0, zmm7
2148 vpaddd zmm0, zmm0, zmm1
2149 vpxord zmm3, zmm3, zmm0
2150 vprord zmm3, zmm3, 8
2151 vpaddd zmm2, zmm2, zmm3
2152 vpxord zmm1, zmm1, zmm2
2153 vprord zmm1, zmm1, 7
2154 vpshufd zmm0, zmm0, 0x39
2155 vpshufd zmm3, zmm3, 0x4E
2156 vpshufd zmm2, zmm2, 0x93
2157 dec al
2158 jz 9f
2159 vshufps zmm8, zmm4, zmm5, 214
2160 vpshufd zmm9, zmm4, 0x0F
2161 vpshufd zmm4, zmm8, 0x39
2162 vshufps zmm8, zmm6, zmm7, 250
2163 vpblendmd zmm9 {k3}, zmm9, zmm8
2164 vpunpcklqdq zmm8, zmm7, zmm5
2165 vpblendmd zmm8 {k4}, zmm8, zmm6
2166 vpshufd zmm8, zmm8, 0x78
2167 vpunpckhdq zmm5, zmm5, zmm7
2168 vpunpckldq zmm6, zmm6, zmm5
2169 vpshufd zmm7, zmm6, 0x1E
2170 vmovdqa32 zmm5, zmm9
2171 vmovdqa32 zmm6, zmm8
2172 jmp 9b
21739:
2174 vpxord zmm0, zmm0, zmm2
2175 vpxord zmm1, zmm1, zmm3
2176 mov eax, r13d
2177 cmp rdx, r15
2178 jne 2b
2179 vmovdqu xmmword ptr [rbx], xmm0
2180 vmovdqu xmmword ptr [rbx+0x10], xmm1
2181 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
2182 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
2183 vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
2184 vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
2185 vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
2186 vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
2187 vmovdqa xmm0, xmmword ptr [rsp]
2188 vmovdqa xmm2, xmmword ptr [rsp+0x40]
2189 vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
2190 vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
2191 vmovdqa xmmword ptr [rsp], xmm0
2192 vmovdqa xmmword ptr [rsp+0x40], xmm2
2193 add rbx, 128
2194 add rdi, 32
2195 sub rsi, 4
21963:
2197 test esi, 0x2
2198 je 3f
2199 vbroadcasti128 ymm0, xmmword ptr [rcx]
2200 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
2201 vmovd xmm13, dword ptr [rsp]
2202 vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
2203 vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2204 vmovd xmm14, dword ptr [rsp+0x4]
2205 vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
2206 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2207 vinserti128 ymm13, ymm13, xmm14, 0x01
2208 mov r8, qword ptr [rdi]
2209 mov r9, qword ptr [rdi+0x8]
2210 movzx eax, byte ptr [rbp+0x40]
2211 or eax, r13d
2212 xor edx, edx
2213.p2align 5
22142:
2215 mov r14d, eax
2216 or eax, r12d
2217 add rdx, 64
2218 cmp rdx, r15
2219 cmovne eax, r14d
2220 mov dword ptr [rsp+0x88], eax
2221 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
2222 vpbroadcastd ymm8, dword ptr [rsp+0x88]
2223 vpblendd ymm3, ymm13, ymm8, 0x88
2224 vmovups ymm8, ymmword ptr [r8+rdx-0x40]
2225 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
2226 vmovups ymm9, ymmword ptr [r8+rdx-0x30]
2227 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
2228 vshufps ymm4, ymm8, ymm9, 136
2229 vshufps ymm5, ymm8, ymm9, 221
2230 vmovups ymm8, ymmword ptr [r8+rdx-0x20]
2231 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
2232 vmovups ymm9, ymmword ptr [r8+rdx-0x10]
2233 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
2234 vshufps ymm6, ymm8, ymm9, 136
2235 vshufps ymm7, ymm8, ymm9, 221
2236 vpshufd ymm6, ymm6, 0x93
2237 vpshufd ymm7, ymm7, 0x93
2238 mov al, 7
22399:
2240 vpaddd ymm0, ymm0, ymm4
2241 vpaddd ymm0, ymm0, ymm1
2242 vpxord ymm3, ymm3, ymm0
2243 vprord ymm3, ymm3, 16
2244 vpaddd ymm2, ymm2, ymm3
2245 vpxord ymm1, ymm1, ymm2
2246 vprord ymm1, ymm1, 12
2247 vpaddd ymm0, ymm0, ymm5
2248 vpaddd ymm0, ymm0, ymm1
2249 vpxord ymm3, ymm3, ymm0
2250 vprord ymm3, ymm3, 8
2251 vpaddd ymm2, ymm2, ymm3
2252 vpxord ymm1, ymm1, ymm2
2253 vprord ymm1, ymm1, 7
2254 vpshufd ymm0, ymm0, 0x93
2255 vpshufd ymm3, ymm3, 0x4E
2256 vpshufd ymm2, ymm2, 0x39
2257 vpaddd ymm0, ymm0, ymm6
2258 vpaddd ymm0, ymm0, ymm1
2259 vpxord ymm3, ymm3, ymm0
2260 vprord ymm3, ymm3, 16
2261 vpaddd ymm2, ymm2, ymm3
2262 vpxord ymm1, ymm1, ymm2
2263 vprord ymm1, ymm1, 12
2264 vpaddd ymm0, ymm0, ymm7
2265 vpaddd ymm0, ymm0, ymm1
2266 vpxord ymm3, ymm3, ymm0
2267 vprord ymm3, ymm3, 8
2268 vpaddd ymm2, ymm2, ymm3
2269 vpxord ymm1, ymm1, ymm2
2270 vprord ymm1, ymm1, 7
2271 vpshufd ymm0, ymm0, 0x39
2272 vpshufd ymm3, ymm3, 0x4E
2273 vpshufd ymm2, ymm2, 0x93
2274 dec al
2275 jz 9f
2276 vshufps ymm8, ymm4, ymm5, 214
2277 vpshufd ymm9, ymm4, 0x0F
2278 vpshufd ymm4, ymm8, 0x39
2279 vshufps ymm8, ymm6, ymm7, 250
2280 vpblendd ymm9, ymm9, ymm8, 0xAA
2281 vpunpcklqdq ymm8, ymm7, ymm5
2282 vpblendd ymm8, ymm8, ymm6, 0x88
2283 vpshufd ymm8, ymm8, 0x78
2284 vpunpckhdq ymm5, ymm5, ymm7
2285 vpunpckldq ymm6, ymm6, ymm5
2286 vpshufd ymm7, ymm6, 0x1E
2287 vmovdqa ymm5, ymm9
2288 vmovdqa ymm6, ymm8
2289 jmp 9b
22909:
2291 vpxor ymm0, ymm0, ymm2
2292 vpxor ymm1, ymm1, ymm3
2293 mov eax, r13d
2294 cmp rdx, r15
2295 jne 2b
2296 vmovdqu xmmword ptr [rbx], xmm0
2297 vmovdqu xmmword ptr [rbx+0x10], xmm1
2298 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
2299 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
2300 vmovdqa xmm0, xmmword ptr [rsp]
2301 vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10]
2302 vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
2303 vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
2304 vmovdqa xmmword ptr [rsp], xmm0
2305 vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2
2306 add rbx, 64
2307 add rdi, 16
2308 sub rsi, 2
23093:
2310 test esi, 0x1
2311 je 4b
2312 vmovdqu xmm0, xmmword ptr [rcx]
2313 vmovdqu xmm1, xmmword ptr [rcx+0x10]
2314 vmovd xmm14, dword ptr [rsp]
2315 vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
2316 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
2317 vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
2318 mov r8, qword ptr [rdi]
2319 movzx eax, byte ptr [rbp+0x40]
2320 or eax, r13d
2321 xor edx, edx
2322.p2align 5
23232:
2324 mov r14d, eax
2325 or eax, r12d
2326 add rdx, 64
2327 cmp rdx, r15
2328 cmovne eax, r14d
2329 vpinsrd xmm3, xmm14, eax, 3
2330 vmovdqa xmm2, xmm15
2331 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
2332 vmovups xmm9, xmmword ptr [r8+rdx-0x30]
2333 vshufps xmm4, xmm8, xmm9, 136
2334 vshufps xmm5, xmm8, xmm9, 221
2335 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
2336 vmovups xmm9, xmmword ptr [r8+rdx-0x10]
2337 vshufps xmm6, xmm8, xmm9, 136
2338 vshufps xmm7, xmm8, xmm9, 221
2339 vpshufd xmm6, xmm6, 0x93
2340 vpshufd xmm7, xmm7, 0x93
2341 mov al, 7
23429:
2343 vpaddd xmm0, xmm0, xmm4
2344 vpaddd xmm0, xmm0, xmm1
2345 vpxord xmm3, xmm3, xmm0
2346 vprord xmm3, xmm3, 16
2347 vpaddd xmm2, xmm2, xmm3
2348 vpxord xmm1, xmm1, xmm2
2349 vprord xmm1, xmm1, 12
2350 vpaddd xmm0, xmm0, xmm5
2351 vpaddd xmm0, xmm0, xmm1
2352 vpxord xmm3, xmm3, xmm0
2353 vprord xmm3, xmm3, 8
2354 vpaddd xmm2, xmm2, xmm3
2355 vpxord xmm1, xmm1, xmm2
2356 vprord xmm1, xmm1, 7
2357 vpshufd xmm0, xmm0, 0x93
2358 vpshufd xmm3, xmm3, 0x4E
2359 vpshufd xmm2, xmm2, 0x39
2360 vpaddd xmm0, xmm0, xmm6
2361 vpaddd xmm0, xmm0, xmm1
2362 vpxord xmm3, xmm3, xmm0
2363 vprord xmm3, xmm3, 16
2364 vpaddd xmm2, xmm2, xmm3
2365 vpxord xmm1, xmm1, xmm2
2366 vprord xmm1, xmm1, 12
2367 vpaddd xmm0, xmm0, xmm7
2368 vpaddd xmm0, xmm0, xmm1
2369 vpxord xmm3, xmm3, xmm0
2370 vprord xmm3, xmm3, 8
2371 vpaddd xmm2, xmm2, xmm3
2372 vpxord xmm1, xmm1, xmm2
2373 vprord xmm1, xmm1, 7
2374 vpshufd xmm0, xmm0, 0x39
2375 vpshufd xmm3, xmm3, 0x4E
2376 vpshufd xmm2, xmm2, 0x93
2377 dec al
2378 jz 9f
2379 vshufps xmm8, xmm4, xmm5, 214
2380 vpshufd xmm9, xmm4, 0x0F
2381 vpshufd xmm4, xmm8, 0x39
2382 vshufps xmm8, xmm6, xmm7, 250
2383 vpblendd xmm9, xmm9, xmm8, 0xAA
2384 vpunpcklqdq xmm8, xmm7, xmm5
2385 vpblendd xmm8, xmm8, xmm6, 0x88
2386 vpshufd xmm8, xmm8, 0x78
2387 vpunpckhdq xmm5, xmm5, xmm7
2388 vpunpckldq xmm6, xmm6, xmm5
2389 vpshufd xmm7, xmm6, 0x1E
2390 vmovdqa xmm5, xmm9
2391 vmovdqa xmm6, xmm8
2392 jmp 9b
23939:
2394 vpxor xmm0, xmm0, xmm2
2395 vpxor xmm1, xmm1, xmm3
2396 mov eax, r13d
2397 cmp rdx, r15
2398 jne 2b
2399 vmovdqu xmmword ptr [rbx], xmm0
2400 vmovdqu xmmword ptr [rbx+0x10], xmm1
2401 jmp 4b
2402.p2align 6
2403_blake3_compress_in_place_avx512:
2404blake3_compress_in_place_avx512:
2405 _CET_ENDBR
2406 vmovdqu xmm0, xmmword ptr [rdi]
2407 vmovdqu xmm1, xmmword ptr [rdi+0x10]
2408 movzx eax, r8b
2409 movzx edx, dl
2410 shl rax, 32
2411 add rdx, rax
2412 vmovq xmm3, rcx
2413 vmovq xmm4, rdx
2414 vpunpcklqdq xmm3, xmm3, xmm4
2415 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
2416 vmovups xmm8, xmmword ptr [rsi]
2417 vmovups xmm9, xmmword ptr [rsi+0x10]
2418 vshufps xmm4, xmm8, xmm9, 136
2419 vshufps xmm5, xmm8, xmm9, 221
2420 vmovups xmm8, xmmword ptr [rsi+0x20]
2421 vmovups xmm9, xmmword ptr [rsi+0x30]
2422 vshufps xmm6, xmm8, xmm9, 136
2423 vshufps xmm7, xmm8, xmm9, 221
2424 vpshufd xmm6, xmm6, 0x93
2425 vpshufd xmm7, xmm7, 0x93
2426 mov al, 7
24279:
2428 vpaddd xmm0, xmm0, xmm4
2429 vpaddd xmm0, xmm0, xmm1
2430 vpxord xmm3, xmm3, xmm0
2431 vprord xmm3, xmm3, 16
2432 vpaddd xmm2, xmm2, xmm3
2433 vpxord xmm1, xmm1, xmm2
2434 vprord xmm1, xmm1, 12
2435 vpaddd xmm0, xmm0, xmm5
2436 vpaddd xmm0, xmm0, xmm1
2437 vpxord xmm3, xmm3, xmm0
2438 vprord xmm3, xmm3, 8
2439 vpaddd xmm2, xmm2, xmm3
2440 vpxord xmm1, xmm1, xmm2
2441 vprord xmm1, xmm1, 7
2442 vpshufd xmm0, xmm0, 0x93
2443 vpshufd xmm3, xmm3, 0x4E
2444 vpshufd xmm2, xmm2, 0x39
2445 vpaddd xmm0, xmm0, xmm6
2446 vpaddd xmm0, xmm0, xmm1
2447 vpxord xmm3, xmm3, xmm0
2448 vprord xmm3, xmm3, 16
2449 vpaddd xmm2, xmm2, xmm3
2450 vpxord xmm1, xmm1, xmm2
2451 vprord xmm1, xmm1, 12
2452 vpaddd xmm0, xmm0, xmm7
2453 vpaddd xmm0, xmm0, xmm1
2454 vpxord xmm3, xmm3, xmm0
2455 vprord xmm3, xmm3, 8
2456 vpaddd xmm2, xmm2, xmm3
2457 vpxord xmm1, xmm1, xmm2
2458 vprord xmm1, xmm1, 7
2459 vpshufd xmm0, xmm0, 0x39
2460 vpshufd xmm3, xmm3, 0x4E
2461 vpshufd xmm2, xmm2, 0x93
2462 dec al
2463 jz 9f
2464 vshufps xmm8, xmm4, xmm5, 214
2465 vpshufd xmm9, xmm4, 0x0F
2466 vpshufd xmm4, xmm8, 0x39
2467 vshufps xmm8, xmm6, xmm7, 250
2468 vpblendd xmm9, xmm9, xmm8, 0xAA
2469 vpunpcklqdq xmm8, xmm7, xmm5
2470 vpblendd xmm8, xmm8, xmm6, 0x88
2471 vpshufd xmm8, xmm8, 0x78
2472 vpunpckhdq xmm5, xmm5, xmm7
2473 vpunpckldq xmm6, xmm6, xmm5
2474 vpshufd xmm7, xmm6, 0x1E
2475 vmovdqa xmm5, xmm9
2476 vmovdqa xmm6, xmm8
2477 jmp 9b
24789:
2479 vpxor xmm0, xmm0, xmm2
2480 vpxor xmm1, xmm1, xmm3
2481 vmovdqu xmmword ptr [rdi], xmm0
2482 vmovdqu xmmword ptr [rdi+0x10], xmm1
2483 ret
2484
2485.p2align 6
2486_blake3_compress_xof_avx512:
2487blake3_compress_xof_avx512:
2488 _CET_ENDBR
2489 vmovdqu xmm0, xmmword ptr [rdi]
2490 vmovdqu xmm1, xmmword ptr [rdi+0x10]
2491 movzx eax, r8b
2492 movzx edx, dl
2493 shl rax, 32
2494 add rdx, rax
2495 vmovq xmm3, rcx
2496 vmovq xmm4, rdx
2497 vpunpcklqdq xmm3, xmm3, xmm4
2498 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
2499 vmovups xmm8, xmmword ptr [rsi]
2500 vmovups xmm9, xmmword ptr [rsi+0x10]
2501 vshufps xmm4, xmm8, xmm9, 136
2502 vshufps xmm5, xmm8, xmm9, 221
2503 vmovups xmm8, xmmword ptr [rsi+0x20]
2504 vmovups xmm9, xmmword ptr [rsi+0x30]
2505 vshufps xmm6, xmm8, xmm9, 136
2506 vshufps xmm7, xmm8, xmm9, 221
2507 vpshufd xmm6, xmm6, 0x93
2508 vpshufd xmm7, xmm7, 0x93
2509 mov al, 7
25109:
2511 vpaddd xmm0, xmm0, xmm4
2512 vpaddd xmm0, xmm0, xmm1
2513 vpxord xmm3, xmm3, xmm0
2514 vprord xmm3, xmm3, 16
2515 vpaddd xmm2, xmm2, xmm3
2516 vpxord xmm1, xmm1, xmm2
2517 vprord xmm1, xmm1, 12
2518 vpaddd xmm0, xmm0, xmm5
2519 vpaddd xmm0, xmm0, xmm1
2520 vpxord xmm3, xmm3, xmm0
2521 vprord xmm3, xmm3, 8
2522 vpaddd xmm2, xmm2, xmm3
2523 vpxord xmm1, xmm1, xmm2
2524 vprord xmm1, xmm1, 7
2525 vpshufd xmm0, xmm0, 0x93
2526 vpshufd xmm3, xmm3, 0x4E
2527 vpshufd xmm2, xmm2, 0x39
2528 vpaddd xmm0, xmm0, xmm6
2529 vpaddd xmm0, xmm0, xmm1
2530 vpxord xmm3, xmm3, xmm0
2531 vprord xmm3, xmm3, 16
2532 vpaddd xmm2, xmm2, xmm3
2533 vpxord xmm1, xmm1, xmm2
2534 vprord xmm1, xmm1, 12
2535 vpaddd xmm0, xmm0, xmm7
2536 vpaddd xmm0, xmm0, xmm1
2537 vpxord xmm3, xmm3, xmm0
2538 vprord xmm3, xmm3, 8
2539 vpaddd xmm2, xmm2, xmm3
2540 vpxord xmm1, xmm1, xmm2
2541 vprord xmm1, xmm1, 7
2542 vpshufd xmm0, xmm0, 0x39
2543 vpshufd xmm3, xmm3, 0x4E
2544 vpshufd xmm2, xmm2, 0x93
2545 dec al
2546 jz 9f
2547 vshufps xmm8, xmm4, xmm5, 214
2548 vpshufd xmm9, xmm4, 0x0F
2549 vpshufd xmm4, xmm8, 0x39
2550 vshufps xmm8, xmm6, xmm7, 250
2551 vpblendd xmm9, xmm9, xmm8, 0xAA
2552 vpunpcklqdq xmm8, xmm7, xmm5
2553 vpblendd xmm8, xmm8, xmm6, 0x88
2554 vpshufd xmm8, xmm8, 0x78
2555 vpunpckhdq xmm5, xmm5, xmm7
2556 vpunpckldq xmm6, xmm6, xmm5
2557 vpshufd xmm7, xmm6, 0x1E
2558 vmovdqa xmm5, xmm9
2559 vmovdqa xmm6, xmm8
2560 jmp 9b
25619:
2562 vpxor xmm0, xmm0, xmm2
2563 vpxor xmm1, xmm1, xmm3
2564 vpxor xmm2, xmm2, [rdi]
2565 vpxor xmm3, xmm3, [rdi+0x10]
2566 vmovdqu xmmword ptr [r9], xmm0
2567 vmovdqu xmmword ptr [r9+0x10], xmm1
2568 vmovdqu xmmword ptr [r9+0x20], xmm2
2569 vmovdqu xmmword ptr [r9+0x30], xmm3
2570 ret
2571
2572#ifdef __APPLE__
2573.static_data
2574#else
2575.section .rodata
2576#endif
2577.p2align 6
2578INDEX0:
2579 .long 0, 1, 2, 3, 16, 17, 18, 19
2580 .long 8, 9, 10, 11, 24, 25, 26, 27
2581INDEX1:
2582 .long 4, 5, 6, 7, 20, 21, 22, 23
2583 .long 12, 13, 14, 15, 28, 29, 30, 31
2584ADD0:
2585 .long 0, 1, 2, 3, 4, 5, 6, 7
2586 .long 8, 9, 10, 11, 12, 13, 14, 15
2587ADD1: .long 1
2588
2589ADD16: .long 16
2590BLAKE3_BLOCK_LEN:
2591 .long 64
2592.p2align 6
2593BLAKE3_IV:
2594BLAKE3_IV_0:
2595 .long 0x6A09E667
2596BLAKE3_IV_1:
2597 .long 0xBB67AE85
2598BLAKE3_IV_2:
2599 .long 0x3C6EF372
2600BLAKE3_IV_3:
2601 .long 0xA54FF53A
2602
2603#endif
2604