digest-blake3 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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