digest-blake3 0.0.1

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