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