4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or https://opensource.org/licenses/CDDL-1.0.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
24 * Copyright (c) 2019-2020 Samuel Neves
25 * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
28 #if defined(HAVE_AVX2)
31 #include <sys/asm_linkage.h>
33 .intel_syntax noprefix
36 ENTRY_ALIGN(zfs_blake3_hash_many_avx2, 64)
46 and rsp, 0xFFFFFFFFFFFFFFC0
49 vpbroadcastd ymm0, xmm0
50 vmovdqa ymmword ptr [rsp+0x280], ymm0
51 vpand ymm1, ymm0, ymmword ptr [ADD0+rip]
52 vpand ymm2, ymm0, ymmword ptr [ADD1+rip]
53 vmovdqa ymmword ptr [rsp+0x220], ymm2
55 vpbroadcastd ymm2, xmm2
56 vpaddd ymm2, ymm2, ymm1
57 vmovdqa ymmword ptr [rsp+0x240], ymm2
58 vpxor ymm1, ymm1, ymmword ptr [CMP_MSB_MASK+rip]
59 vpxor ymm2, ymm2, ymmword ptr [CMP_MSB_MASK+rip]
60 vpcmpgtd ymm2, ymm1, ymm2
63 vpbroadcastd ymm3, xmm3
64 vpsubd ymm3, ymm3, ymm2
65 vmovdqa ymmword ptr [rsp+0x260], ymm3
67 mov qword ptr [rsp+0x2A0], rdx
71 vpbroadcastd ymm0, dword ptr [rcx]
72 vpbroadcastd ymm1, dword ptr [rcx+0x4]
73 vpbroadcastd ymm2, dword ptr [rcx+0x8]
74 vpbroadcastd ymm3, dword ptr [rcx+0xC]
75 vpbroadcastd ymm4, dword ptr [rcx+0x10]
76 vpbroadcastd ymm5, dword ptr [rcx+0x14]
77 vpbroadcastd ymm6, dword ptr [rcx+0x18]
78 vpbroadcastd ymm7, dword ptr [rcx+0x1C]
79 mov r8, qword ptr [rdi]
80 mov r9, qword ptr [rdi+0x8]
81 mov r10, qword ptr [rdi+0x10]
82 mov r11, qword ptr [rdi+0x18]
83 mov r12, qword ptr [rdi+0x20]
84 mov r13, qword ptr [rdi+0x28]
85 mov r14, qword ptr [rdi+0x30]
86 mov r15, qword ptr [rdi+0x38]
87 movzx eax, byte ptr [rbp+0x38]
88 movzx ebx, byte ptr [rbp+0x40]
93 movzx ebx, byte ptr [rbp+0x48]
96 cmp rdx, qword ptr [rsp+0x2A0]
98 mov dword ptr [rsp+0x200], eax
99 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
100 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
101 vmovups xmm9, xmmword ptr [r9+rdx-0x40]
102 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
103 vunpcklpd ymm12, ymm8, ymm9
104 vunpckhpd ymm13, ymm8, ymm9
105 vmovups xmm10, xmmword ptr [r10+rdx-0x40]
106 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
107 vmovups xmm11, xmmword ptr [r11+rdx-0x40]
108 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
109 vunpcklpd ymm14, ymm10, ymm11
110 vunpckhpd ymm15, ymm10, ymm11
111 vshufps ymm8, ymm12, ymm14, 136
112 vmovaps ymmword ptr [rsp], ymm8
113 vshufps ymm9, ymm12, ymm14, 221
114 vmovaps ymmword ptr [rsp+0x20], ymm9
115 vshufps ymm10, ymm13, ymm15, 136
116 vmovaps ymmword ptr [rsp+0x40], ymm10
117 vshufps ymm11, ymm13, ymm15, 221
118 vmovaps ymmword ptr [rsp+0x60], ymm11
119 vmovups xmm8, xmmword ptr [r8+rdx-0x30]
120 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
121 vmovups xmm9, xmmword ptr [r9+rdx-0x30]
122 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
123 vunpcklpd ymm12, ymm8, ymm9
124 vunpckhpd ymm13, ymm8, ymm9
125 vmovups xmm10, xmmword ptr [r10+rdx-0x30]
126 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
127 vmovups xmm11, xmmword ptr [r11+rdx-0x30]
128 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
129 vunpcklpd ymm14, ymm10, ymm11
130 vunpckhpd ymm15, ymm10, ymm11
131 vshufps ymm8, ymm12, ymm14, 136
132 vmovaps ymmword ptr [rsp+0x80], ymm8
133 vshufps ymm9, ymm12, ymm14, 221
134 vmovaps ymmword ptr [rsp+0xA0], ymm9
135 vshufps ymm10, ymm13, ymm15, 136
136 vmovaps ymmword ptr [rsp+0xC0], ymm10
137 vshufps ymm11, ymm13, ymm15, 221
138 vmovaps ymmword ptr [rsp+0xE0], ymm11
139 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
140 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
141 vmovups xmm9, xmmword ptr [r9+rdx-0x20]
142 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
143 vunpcklpd ymm12, ymm8, ymm9
144 vunpckhpd ymm13, ymm8, ymm9
145 vmovups xmm10, xmmword ptr [r10+rdx-0x20]
146 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
147 vmovups xmm11, xmmword ptr [r11+rdx-0x20]
148 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
149 vunpcklpd ymm14, ymm10, ymm11
150 vunpckhpd ymm15, ymm10, ymm11
151 vshufps ymm8, ymm12, ymm14, 136
152 vmovaps ymmword ptr [rsp+0x100], ymm8
153 vshufps ymm9, ymm12, ymm14, 221
154 vmovaps ymmword ptr [rsp+0x120], ymm9
155 vshufps ymm10, ymm13, ymm15, 136
156 vmovaps ymmword ptr [rsp+0x140], ymm10
157 vshufps ymm11, ymm13, ymm15, 221
158 vmovaps ymmword ptr [rsp+0x160], ymm11
159 vmovups xmm8, xmmword ptr [r8+rdx-0x10]
160 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
161 vmovups xmm9, xmmword ptr [r9+rdx-0x10]
162 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
163 vunpcklpd ymm12, ymm8, ymm9
164 vunpckhpd ymm13, ymm8, ymm9
165 vmovups xmm10, xmmword ptr [r10+rdx-0x10]
166 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
167 vmovups xmm11, xmmword ptr [r11+rdx-0x10]
168 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
169 vunpcklpd ymm14, ymm10, ymm11
170 vunpckhpd ymm15, ymm10, ymm11
171 vshufps ymm8, ymm12, ymm14, 136
172 vmovaps ymmword ptr [rsp+0x180], ymm8
173 vshufps ymm9, ymm12, ymm14, 221
174 vmovaps ymmword ptr [rsp+0x1A0], ymm9
175 vshufps ymm10, ymm13, ymm15, 136
176 vmovaps ymmword ptr [rsp+0x1C0], ymm10
177 vshufps ymm11, ymm13, ymm15, 221
178 vmovaps ymmword ptr [rsp+0x1E0], ymm11
179 vpbroadcastd ymm15, dword ptr [rsp+0x200]
180 prefetcht0 [r8+rdx+0x80]
181 prefetcht0 [r12+rdx+0x80]
182 prefetcht0 [r9+rdx+0x80]
183 prefetcht0 [r13+rdx+0x80]
184 prefetcht0 [r10+rdx+0x80]
185 prefetcht0 [r14+rdx+0x80]
186 prefetcht0 [r11+rdx+0x80]
187 prefetcht0 [r15+rdx+0x80]
188 vpaddd ymm0, ymm0, ymmword ptr [rsp]
189 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x40]
190 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x80]
191 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
192 vpaddd ymm0, ymm0, ymm4
193 vpaddd ymm1, ymm1, ymm5
194 vpaddd ymm2, ymm2, ymm6
195 vpaddd ymm3, ymm3, ymm7
196 vpxor ymm12, ymm0, ymmword ptr [rsp+0x240]
197 vpxor ymm13, ymm1, ymmword ptr [rsp+0x260]
198 vpxor ymm14, ymm2, ymmword ptr [BLAKE3_BLOCK_LEN+rip]
199 vpxor ymm15, ymm3, ymm15
200 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
201 vpshufb ymm12, ymm12, ymm8
202 vpshufb ymm13, ymm13, ymm8
203 vpshufb ymm14, ymm14, ymm8
204 vpshufb ymm15, ymm15, ymm8
205 vpaddd ymm8, ymm12, ymmword ptr [BLAKE3_IV_0+rip]
206 vpaddd ymm9, ymm13, ymmword ptr [BLAKE3_IV_1+rip]
207 vpaddd ymm10, ymm14, ymmword ptr [BLAKE3_IV_2+rip]
208 vpaddd ymm11, ymm15, ymmword ptr [BLAKE3_IV_3+rip]
209 vpxor ymm4, ymm4, ymm8
210 vpxor ymm5, ymm5, ymm9
211 vpxor ymm6, ymm6, ymm10
212 vpxor ymm7, ymm7, ymm11
213 vmovdqa ymmword ptr [rsp+0x200], ymm8
214 vpsrld ymm8, ymm4, 12
215 vpslld ymm4, ymm4, 20
216 vpor ymm4, ymm4, ymm8
217 vpsrld ymm8, ymm5, 12
218 vpslld ymm5, ymm5, 20
219 vpor ymm5, ymm5, ymm8
220 vpsrld ymm8, ymm6, 12
221 vpslld ymm6, ymm6, 20
222 vpor ymm6, ymm6, ymm8
223 vpsrld ymm8, ymm7, 12
224 vpslld ymm7, ymm7, 20
225 vpor ymm7, ymm7, ymm8
226 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x20]
227 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x60]
228 vpaddd ymm2, ymm2, ymmword ptr [rsp+0xA0]
229 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
230 vpaddd ymm0, ymm0, ymm4
231 vpaddd ymm1, ymm1, ymm5
232 vpaddd ymm2, ymm2, ymm6
233 vpaddd ymm3, ymm3, ymm7
234 vpxor ymm12, ymm12, ymm0
235 vpxor ymm13, ymm13, ymm1
236 vpxor ymm14, ymm14, ymm2
237 vpxor ymm15, ymm15, ymm3
238 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
239 vpshufb ymm12, ymm12, ymm8
240 vpshufb ymm13, ymm13, ymm8
241 vpshufb ymm14, ymm14, ymm8
242 vpshufb ymm15, ymm15, ymm8
243 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
244 vpaddd ymm9, ymm9, ymm13
245 vpaddd ymm10, ymm10, ymm14
246 vpaddd ymm11, ymm11, ymm15
247 vpxor ymm4, ymm4, ymm8
248 vpxor ymm5, ymm5, ymm9
249 vpxor ymm6, ymm6, ymm10
250 vpxor ymm7, ymm7, ymm11
251 vmovdqa ymmword ptr [rsp+0x200], ymm8
253 vpslld ymm4, ymm4, 25
254 vpor ymm4, ymm4, ymm8
256 vpslld ymm5, ymm5, 25
257 vpor ymm5, ymm5, ymm8
259 vpslld ymm6, ymm6, 25
260 vpor ymm6, ymm6, ymm8
262 vpslld ymm7, ymm7, 25
263 vpor ymm7, ymm7, ymm8
264 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x100]
265 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
266 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x180]
267 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
268 vpaddd ymm0, ymm0, ymm5
269 vpaddd ymm1, ymm1, ymm6
270 vpaddd ymm2, ymm2, ymm7
271 vpaddd ymm3, ymm3, ymm4
272 vpxor ymm15, ymm15, ymm0
273 vpxor ymm12, ymm12, ymm1
274 vpxor ymm13, ymm13, ymm2
275 vpxor ymm14, ymm14, ymm3
276 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
277 vpshufb ymm15, ymm15, ymm8
278 vpshufb ymm12, ymm12, ymm8
279 vpshufb ymm13, ymm13, ymm8
280 vpshufb ymm14, ymm14, ymm8
281 vpaddd ymm10, ymm10, ymm15
282 vpaddd ymm11, ymm11, ymm12
283 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
284 vpaddd ymm9, ymm9, ymm14
285 vpxor ymm5, ymm5, ymm10
286 vpxor ymm6, ymm6, ymm11
287 vpxor ymm7, ymm7, ymm8
288 vpxor ymm4, ymm4, ymm9
289 vmovdqa ymmword ptr [rsp+0x200], ymm8
290 vpsrld ymm8, ymm5, 12
291 vpslld ymm5, ymm5, 20
292 vpor ymm5, ymm5, ymm8
293 vpsrld ymm8, ymm6, 12
294 vpslld ymm6, ymm6, 20
295 vpor ymm6, ymm6, ymm8
296 vpsrld ymm8, ymm7, 12
297 vpslld ymm7, ymm7, 20
298 vpor ymm7, ymm7, ymm8
299 vpsrld ymm8, ymm4, 12
300 vpslld ymm4, ymm4, 20
301 vpor ymm4, ymm4, ymm8
302 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x120]
303 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
304 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1A0]
305 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
306 vpaddd ymm0, ymm0, ymm5
307 vpaddd ymm1, ymm1, ymm6
308 vpaddd ymm2, ymm2, ymm7
309 vpaddd ymm3, ymm3, ymm4
310 vpxor ymm15, ymm15, ymm0
311 vpxor ymm12, ymm12, ymm1
312 vpxor ymm13, ymm13, ymm2
313 vpxor ymm14, ymm14, ymm3
314 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
315 vpshufb ymm15, ymm15, ymm8
316 vpshufb ymm12, ymm12, ymm8
317 vpshufb ymm13, ymm13, ymm8
318 vpshufb ymm14, ymm14, ymm8
319 vpaddd ymm10, ymm10, ymm15
320 vpaddd ymm11, ymm11, ymm12
321 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
322 vpaddd ymm9, ymm9, ymm14
323 vpxor ymm5, ymm5, ymm10
324 vpxor ymm6, ymm6, ymm11
325 vpxor ymm7, ymm7, ymm8
326 vpxor ymm4, ymm4, ymm9
327 vmovdqa ymmword ptr [rsp+0x200], ymm8
329 vpslld ymm5, ymm5, 25
330 vpor ymm5, ymm5, ymm8
332 vpslld ymm6, ymm6, 25
333 vpor ymm6, ymm6, ymm8
335 vpslld ymm7, ymm7, 25
336 vpor ymm7, ymm7, ymm8
338 vpslld ymm4, ymm4, 25
339 vpor ymm4, ymm4, ymm8
340 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x40]
341 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x60]
342 vpaddd ymm2, ymm2, ymmword ptr [rsp+0xE0]
343 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x80]
344 vpaddd ymm0, ymm0, ymm4
345 vpaddd ymm1, ymm1, ymm5
346 vpaddd ymm2, ymm2, ymm6
347 vpaddd ymm3, ymm3, ymm7
348 vpxor ymm12, ymm12, ymm0
349 vpxor ymm13, ymm13, ymm1
350 vpxor ymm14, ymm14, ymm2
351 vpxor ymm15, ymm15, ymm3
352 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
353 vpshufb ymm12, ymm12, ymm8
354 vpshufb ymm13, ymm13, ymm8
355 vpshufb ymm14, ymm14, ymm8
356 vpshufb ymm15, ymm15, ymm8
357 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
358 vpaddd ymm9, ymm9, ymm13
359 vpaddd ymm10, ymm10, ymm14
360 vpaddd ymm11, ymm11, ymm15
361 vpxor ymm4, ymm4, ymm8
362 vpxor ymm5, ymm5, ymm9
363 vpxor ymm6, ymm6, ymm10
364 vpxor ymm7, ymm7, ymm11
365 vmovdqa ymmword ptr [rsp+0x200], ymm8
366 vpsrld ymm8, ymm4, 12
367 vpslld ymm4, ymm4, 20
368 vpor ymm4, ymm4, ymm8
369 vpsrld ymm8, ymm5, 12
370 vpslld ymm5, ymm5, 20
371 vpor ymm5, ymm5, ymm8
372 vpsrld ymm8, ymm6, 12
373 vpslld ymm6, ymm6, 20
374 vpor ymm6, ymm6, ymm8
375 vpsrld ymm8, ymm7, 12
376 vpslld ymm7, ymm7, 20
377 vpor ymm7, ymm7, ymm8
378 vpaddd ymm0, ymm0, ymmword ptr [rsp+0xC0]
379 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
380 vpaddd ymm2, ymm2, ymmword ptr [rsp]
381 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1A0]
382 vpaddd ymm0, ymm0, ymm4
383 vpaddd ymm1, ymm1, ymm5
384 vpaddd ymm2, ymm2, ymm6
385 vpaddd ymm3, ymm3, ymm7
386 vpxor ymm12, ymm12, ymm0
387 vpxor ymm13, ymm13, ymm1
388 vpxor ymm14, ymm14, ymm2
389 vpxor ymm15, ymm15, ymm3
390 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
391 vpshufb ymm12, ymm12, ymm8
392 vpshufb ymm13, ymm13, ymm8
393 vpshufb ymm14, ymm14, ymm8
394 vpshufb ymm15, ymm15, ymm8
395 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
396 vpaddd ymm9, ymm9, ymm13
397 vpaddd ymm10, ymm10, ymm14
398 vpaddd ymm11, ymm11, ymm15
399 vpxor ymm4, ymm4, ymm8
400 vpxor ymm5, ymm5, ymm9
401 vpxor ymm6, ymm6, ymm10
402 vpxor ymm7, ymm7, ymm11
403 vmovdqa ymmword ptr [rsp+0x200], ymm8
405 vpslld ymm4, ymm4, 25
406 vpor ymm4, ymm4, ymm8
408 vpslld ymm5, ymm5, 25
409 vpor ymm5, ymm5, ymm8
411 vpslld ymm6, ymm6, 25
412 vpor ymm6, ymm6, ymm8
414 vpslld ymm7, ymm7, 25
415 vpor ymm7, ymm7, ymm8
416 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x20]
417 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
418 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x120]
419 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
420 vpaddd ymm0, ymm0, ymm5
421 vpaddd ymm1, ymm1, ymm6
422 vpaddd ymm2, ymm2, ymm7
423 vpaddd ymm3, ymm3, ymm4
424 vpxor ymm15, ymm15, ymm0
425 vpxor ymm12, ymm12, ymm1
426 vpxor ymm13, ymm13, ymm2
427 vpxor ymm14, ymm14, ymm3
428 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
429 vpshufb ymm15, ymm15, ymm8
430 vpshufb ymm12, ymm12, ymm8
431 vpshufb ymm13, ymm13, ymm8
432 vpshufb ymm14, ymm14, ymm8
433 vpaddd ymm10, ymm10, ymm15
434 vpaddd ymm11, ymm11, ymm12
435 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
436 vpaddd ymm9, ymm9, ymm14
437 vpxor ymm5, ymm5, ymm10
438 vpxor ymm6, ymm6, ymm11
439 vpxor ymm7, ymm7, ymm8
440 vpxor ymm4, ymm4, ymm9
441 vmovdqa ymmword ptr [rsp+0x200], ymm8
442 vpsrld ymm8, ymm5, 12
443 vpslld ymm5, ymm5, 20
444 vpor ymm5, ymm5, ymm8
445 vpsrld ymm8, ymm6, 12
446 vpslld ymm6, ymm6, 20
447 vpor ymm6, ymm6, ymm8
448 vpsrld ymm8, ymm7, 12
449 vpslld ymm7, ymm7, 20
450 vpor ymm7, ymm7, ymm8
451 vpsrld ymm8, ymm4, 12
452 vpslld ymm4, ymm4, 20
453 vpor ymm4, ymm4, ymm8
454 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x160]
455 vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
456 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1C0]
457 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
458 vpaddd ymm0, ymm0, ymm5
459 vpaddd ymm1, ymm1, ymm6
460 vpaddd ymm2, ymm2, ymm7
461 vpaddd ymm3, ymm3, ymm4
462 vpxor ymm15, ymm15, ymm0
463 vpxor ymm12, ymm12, ymm1
464 vpxor ymm13, ymm13, ymm2
465 vpxor ymm14, ymm14, ymm3
466 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
467 vpshufb ymm15, ymm15, ymm8
468 vpshufb ymm12, ymm12, ymm8
469 vpshufb ymm13, ymm13, ymm8
470 vpshufb ymm14, ymm14, ymm8
471 vpaddd ymm10, ymm10, ymm15
472 vpaddd ymm11, ymm11, ymm12
473 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
474 vpaddd ymm9, ymm9, ymm14
475 vpxor ymm5, ymm5, ymm10
476 vpxor ymm6, ymm6, ymm11
477 vpxor ymm7, ymm7, ymm8
478 vpxor ymm4, ymm4, ymm9
479 vmovdqa ymmword ptr [rsp+0x200], ymm8
481 vpslld ymm5, ymm5, 25
482 vpor ymm5, ymm5, ymm8
484 vpslld ymm6, ymm6, 25
485 vpor ymm6, ymm6, ymm8
487 vpslld ymm7, ymm7, 25
488 vpor ymm7, ymm7, ymm8
490 vpslld ymm4, ymm4, 25
491 vpor ymm4, ymm4, ymm8
492 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x60]
493 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
494 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1A0]
495 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
496 vpaddd ymm0, ymm0, ymm4
497 vpaddd ymm1, ymm1, ymm5
498 vpaddd ymm2, ymm2, ymm6
499 vpaddd ymm3, ymm3, ymm7
500 vpxor ymm12, ymm12, ymm0
501 vpxor ymm13, ymm13, ymm1
502 vpxor ymm14, ymm14, ymm2
503 vpxor ymm15, ymm15, ymm3
504 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
505 vpshufb ymm12, ymm12, ymm8
506 vpshufb ymm13, ymm13, ymm8
507 vpshufb ymm14, ymm14, ymm8
508 vpshufb ymm15, ymm15, ymm8
509 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
510 vpaddd ymm9, ymm9, ymm13
511 vpaddd ymm10, ymm10, ymm14
512 vpaddd ymm11, ymm11, ymm15
513 vpxor ymm4, ymm4, ymm8
514 vpxor ymm5, ymm5, ymm9
515 vpxor ymm6, ymm6, ymm10
516 vpxor ymm7, ymm7, ymm11
517 vmovdqa ymmword ptr [rsp+0x200], ymm8
518 vpsrld ymm8, ymm4, 12
519 vpslld ymm4, ymm4, 20
520 vpor ymm4, ymm4, ymm8
521 vpsrld ymm8, ymm5, 12
522 vpslld ymm5, ymm5, 20
523 vpor ymm5, ymm5, ymm8
524 vpsrld ymm8, ymm6, 12
525 vpslld ymm6, ymm6, 20
526 vpor ymm6, ymm6, ymm8
527 vpsrld ymm8, ymm7, 12
528 vpslld ymm7, ymm7, 20
529 vpor ymm7, ymm7, ymm8
530 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x80]
531 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
532 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x40]
533 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
534 vpaddd ymm0, ymm0, ymm4
535 vpaddd ymm1, ymm1, ymm5
536 vpaddd ymm2, ymm2, ymm6
537 vpaddd ymm3, ymm3, ymm7
538 vpxor ymm12, ymm12, ymm0
539 vpxor ymm13, ymm13, ymm1
540 vpxor ymm14, ymm14, ymm2
541 vpxor ymm15, ymm15, ymm3
542 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
543 vpshufb ymm12, ymm12, ymm8
544 vpshufb ymm13, ymm13, ymm8
545 vpshufb ymm14, ymm14, ymm8
546 vpshufb ymm15, ymm15, ymm8
547 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
548 vpaddd ymm9, ymm9, ymm13
549 vpaddd ymm10, ymm10, ymm14
550 vpaddd ymm11, ymm11, ymm15
551 vpxor ymm4, ymm4, ymm8
552 vpxor ymm5, ymm5, ymm9
553 vpxor ymm6, ymm6, ymm10
554 vpxor ymm7, ymm7, ymm11
555 vmovdqa ymmword ptr [rsp+0x200], ymm8
557 vpslld ymm4, ymm4, 25
558 vpor ymm4, ymm4, ymm8
560 vpslld ymm5, ymm5, 25
561 vpor ymm5, ymm5, ymm8
563 vpslld ymm6, ymm6, 25
564 vpor ymm6, ymm6, ymm8
566 vpslld ymm7, ymm7, 25
567 vpor ymm7, ymm7, ymm8
568 vpaddd ymm0, ymm0, ymmword ptr [rsp+0xC0]
569 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
570 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x160]
571 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
572 vpaddd ymm0, ymm0, ymm5
573 vpaddd ymm1, ymm1, ymm6
574 vpaddd ymm2, ymm2, ymm7
575 vpaddd ymm3, ymm3, ymm4
576 vpxor ymm15, ymm15, ymm0
577 vpxor ymm12, ymm12, ymm1
578 vpxor ymm13, ymm13, ymm2
579 vpxor ymm14, ymm14, ymm3
580 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
581 vpshufb ymm15, ymm15, ymm8
582 vpshufb ymm12, ymm12, ymm8
583 vpshufb ymm13, ymm13, ymm8
584 vpshufb ymm14, ymm14, ymm8
585 vpaddd ymm10, ymm10, ymm15
586 vpaddd ymm11, ymm11, ymm12
587 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
588 vpaddd ymm9, ymm9, ymm14
589 vpxor ymm5, ymm5, ymm10
590 vpxor ymm6, ymm6, ymm11
591 vpxor ymm7, ymm7, ymm8
592 vpxor ymm4, ymm4, ymm9
593 vmovdqa ymmword ptr [rsp+0x200], ymm8
594 vpsrld ymm8, ymm5, 12
595 vpslld ymm5, ymm5, 20
596 vpor ymm5, ymm5, ymm8
597 vpsrld ymm8, ymm6, 12
598 vpslld ymm6, ymm6, 20
599 vpor ymm6, ymm6, ymm8
600 vpsrld ymm8, ymm7, 12
601 vpslld ymm7, ymm7, 20
602 vpor ymm7, ymm7, ymm8
603 vpsrld ymm8, ymm4, 12
604 vpslld ymm4, ymm4, 20
605 vpor ymm4, ymm4, ymm8
606 vpaddd ymm0, ymm0, ymmword ptr [rsp+0xA0]
607 vpaddd ymm1, ymm1, ymmword ptr [rsp]
608 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1E0]
609 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x20]
610 vpaddd ymm0, ymm0, ymm5
611 vpaddd ymm1, ymm1, ymm6
612 vpaddd ymm2, ymm2, ymm7
613 vpaddd ymm3, ymm3, ymm4
614 vpxor ymm15, ymm15, ymm0
615 vpxor ymm12, ymm12, ymm1
616 vpxor ymm13, ymm13, ymm2
617 vpxor ymm14, ymm14, ymm3
618 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
619 vpshufb ymm15, ymm15, ymm8
620 vpshufb ymm12, ymm12, ymm8
621 vpshufb ymm13, ymm13, ymm8
622 vpshufb ymm14, ymm14, ymm8
623 vpaddd ymm10, ymm10, ymm15
624 vpaddd ymm11, ymm11, ymm12
625 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
626 vpaddd ymm9, ymm9, ymm14
627 vpxor ymm5, ymm5, ymm10
628 vpxor ymm6, ymm6, ymm11
629 vpxor ymm7, ymm7, ymm8
630 vpxor ymm4, ymm4, ymm9
631 vmovdqa ymmword ptr [rsp+0x200], ymm8
633 vpslld ymm5, ymm5, 25
634 vpor ymm5, ymm5, ymm8
636 vpslld ymm6, ymm6, 25
637 vpor ymm6, ymm6, ymm8
639 vpslld ymm7, ymm7, 25
640 vpor ymm7, ymm7, ymm8
642 vpslld ymm4, ymm4, 25
643 vpor ymm4, ymm4, ymm8
644 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x140]
645 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
646 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1C0]
647 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1A0]
648 vpaddd ymm0, ymm0, ymm4
649 vpaddd ymm1, ymm1, ymm5
650 vpaddd ymm2, ymm2, ymm6
651 vpaddd ymm3, ymm3, ymm7
652 vpxor ymm12, ymm12, ymm0
653 vpxor ymm13, ymm13, ymm1
654 vpxor ymm14, ymm14, ymm2
655 vpxor ymm15, ymm15, ymm3
656 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
657 vpshufb ymm12, ymm12, ymm8
658 vpshufb ymm13, ymm13, ymm8
659 vpshufb ymm14, ymm14, ymm8
660 vpshufb ymm15, ymm15, ymm8
661 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
662 vpaddd ymm9, ymm9, ymm13
663 vpaddd ymm10, ymm10, ymm14
664 vpaddd ymm11, ymm11, ymm15
665 vpxor ymm4, ymm4, ymm8
666 vpxor ymm5, ymm5, ymm9
667 vpxor ymm6, ymm6, ymm10
668 vpxor ymm7, ymm7, ymm11
669 vmovdqa ymmword ptr [rsp+0x200], ymm8
670 vpsrld ymm8, ymm4, 12
671 vpslld ymm4, ymm4, 20
672 vpor ymm4, ymm4, ymm8
673 vpsrld ymm8, ymm5, 12
674 vpslld ymm5, ymm5, 20
675 vpor ymm5, ymm5, ymm8
676 vpsrld ymm8, ymm6, 12
677 vpslld ymm6, ymm6, 20
678 vpor ymm6, ymm6, ymm8
679 vpsrld ymm8, ymm7, 12
680 vpslld ymm7, ymm7, 20
681 vpor ymm7, ymm7, ymm8
682 vpaddd ymm0, ymm0, ymmword ptr [rsp+0xE0]
683 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
684 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x60]
685 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
686 vpaddd ymm0, ymm0, ymm4
687 vpaddd ymm1, ymm1, ymm5
688 vpaddd ymm2, ymm2, ymm6
689 vpaddd ymm3, ymm3, ymm7
690 vpxor ymm12, ymm12, ymm0
691 vpxor ymm13, ymm13, ymm1
692 vpxor ymm14, ymm14, ymm2
693 vpxor ymm15, ymm15, ymm3
694 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
695 vpshufb ymm12, ymm12, ymm8
696 vpshufb ymm13, ymm13, ymm8
697 vpshufb ymm14, ymm14, ymm8
698 vpshufb ymm15, ymm15, ymm8
699 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
700 vpaddd ymm9, ymm9, ymm13
701 vpaddd ymm10, ymm10, ymm14
702 vpaddd ymm11, ymm11, ymm15
703 vpxor ymm4, ymm4, ymm8
704 vpxor ymm5, ymm5, ymm9
705 vpxor ymm6, ymm6, ymm10
706 vpxor ymm7, ymm7, ymm11
707 vmovdqa ymmword ptr [rsp+0x200], ymm8
709 vpslld ymm4, ymm4, 25
710 vpor ymm4, ymm4, ymm8
712 vpslld ymm5, ymm5, 25
713 vpor ymm5, ymm5, ymm8
715 vpslld ymm6, ymm6, 25
716 vpor ymm6, ymm6, ymm8
718 vpslld ymm7, ymm7, 25
719 vpor ymm7, ymm7, ymm8
720 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x80]
721 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
722 vpaddd ymm2, ymm2, ymmword ptr [rsp+0xA0]
723 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x20]
724 vpaddd ymm0, ymm0, ymm5
725 vpaddd ymm1, ymm1, ymm6
726 vpaddd ymm2, ymm2, ymm7
727 vpaddd ymm3, ymm3, ymm4
728 vpxor ymm15, ymm15, ymm0
729 vpxor ymm12, ymm12, ymm1
730 vpxor ymm13, ymm13, ymm2
731 vpxor ymm14, ymm14, ymm3
732 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
733 vpshufb ymm15, ymm15, ymm8
734 vpshufb ymm12, ymm12, ymm8
735 vpshufb ymm13, ymm13, ymm8
736 vpshufb ymm14, ymm14, ymm8
737 vpaddd ymm10, ymm10, ymm15
738 vpaddd ymm11, ymm11, ymm12
739 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
740 vpaddd ymm9, ymm9, ymm14
741 vpxor ymm5, ymm5, ymm10
742 vpxor ymm6, ymm6, ymm11
743 vpxor ymm7, ymm7, ymm8
744 vpxor ymm4, ymm4, ymm9
745 vmovdqa ymmword ptr [rsp+0x200], ymm8
746 vpsrld ymm8, ymm5, 12
747 vpslld ymm5, ymm5, 20
748 vpor ymm5, ymm5, ymm8
749 vpsrld ymm8, ymm6, 12
750 vpslld ymm6, ymm6, 20
751 vpor ymm6, ymm6, ymm8
752 vpsrld ymm8, ymm7, 12
753 vpslld ymm7, ymm7, 20
754 vpor ymm7, ymm7, ymm8
755 vpsrld ymm8, ymm4, 12
756 vpslld ymm4, ymm4, 20
757 vpor ymm4, ymm4, ymm8
758 vpaddd ymm0, ymm0, ymmword ptr [rsp]
759 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x40]
760 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x100]
761 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
762 vpaddd ymm0, ymm0, ymm5
763 vpaddd ymm1, ymm1, ymm6
764 vpaddd ymm2, ymm2, ymm7
765 vpaddd ymm3, ymm3, ymm4
766 vpxor ymm15, ymm15, ymm0
767 vpxor ymm12, ymm12, ymm1
768 vpxor ymm13, ymm13, ymm2
769 vpxor ymm14, ymm14, ymm3
770 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
771 vpshufb ymm15, ymm15, ymm8
772 vpshufb ymm12, ymm12, ymm8
773 vpshufb ymm13, ymm13, ymm8
774 vpshufb ymm14, ymm14, ymm8
775 vpaddd ymm10, ymm10, ymm15
776 vpaddd ymm11, ymm11, ymm12
777 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
778 vpaddd ymm9, ymm9, ymm14
779 vpxor ymm5, ymm5, ymm10
780 vpxor ymm6, ymm6, ymm11
781 vpxor ymm7, ymm7, ymm8
782 vpxor ymm4, ymm4, ymm9
783 vmovdqa ymmword ptr [rsp+0x200], ymm8
785 vpslld ymm5, ymm5, 25
786 vpor ymm5, ymm5, ymm8
788 vpslld ymm6, ymm6, 25
789 vpor ymm6, ymm6, ymm8
791 vpslld ymm7, ymm7, 25
792 vpor ymm7, ymm7, ymm8
794 vpslld ymm4, ymm4, 25
795 vpor ymm4, ymm4, ymm8
796 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x180]
797 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x120]
798 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x1E0]
799 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1C0]
800 vpaddd ymm0, ymm0, ymm4
801 vpaddd ymm1, ymm1, ymm5
802 vpaddd ymm2, ymm2, ymm6
803 vpaddd ymm3, ymm3, ymm7
804 vpxor ymm12, ymm12, ymm0
805 vpxor ymm13, ymm13, ymm1
806 vpxor ymm14, ymm14, ymm2
807 vpxor ymm15, ymm15, ymm3
808 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
809 vpshufb ymm12, ymm12, ymm8
810 vpshufb ymm13, ymm13, ymm8
811 vpshufb ymm14, ymm14, ymm8
812 vpshufb ymm15, ymm15, ymm8
813 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
814 vpaddd ymm9, ymm9, ymm13
815 vpaddd ymm10, ymm10, ymm14
816 vpaddd ymm11, ymm11, ymm15
817 vpxor ymm4, ymm4, ymm8
818 vpxor ymm5, ymm5, ymm9
819 vpxor ymm6, ymm6, ymm10
820 vpxor ymm7, ymm7, ymm11
821 vmovdqa ymmword ptr [rsp+0x200], ymm8
822 vpsrld ymm8, ymm4, 12
823 vpslld ymm4, ymm4, 20
824 vpor ymm4, ymm4, ymm8
825 vpsrld ymm8, ymm5, 12
826 vpslld ymm5, ymm5, 20
827 vpor ymm5, ymm5, ymm8
828 vpsrld ymm8, ymm6, 12
829 vpslld ymm6, ymm6, 20
830 vpor ymm6, ymm6, ymm8
831 vpsrld ymm8, ymm7, 12
832 vpslld ymm7, ymm7, 20
833 vpor ymm7, ymm7, ymm8
834 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1A0]
835 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
836 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x140]
837 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
838 vpaddd ymm0, ymm0, ymm4
839 vpaddd ymm1, ymm1, ymm5
840 vpaddd ymm2, ymm2, ymm6
841 vpaddd ymm3, ymm3, ymm7
842 vpxor ymm12, ymm12, ymm0
843 vpxor ymm13, ymm13, ymm1
844 vpxor ymm14, ymm14, ymm2
845 vpxor ymm15, ymm15, ymm3
846 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
847 vpshufb ymm12, ymm12, ymm8
848 vpshufb ymm13, ymm13, ymm8
849 vpshufb ymm14, ymm14, ymm8
850 vpshufb ymm15, ymm15, ymm8
851 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
852 vpaddd ymm9, ymm9, ymm13
853 vpaddd ymm10, ymm10, ymm14
854 vpaddd ymm11, ymm11, ymm15
855 vpxor ymm4, ymm4, ymm8
856 vpxor ymm5, ymm5, ymm9
857 vpxor ymm6, ymm6, ymm10
858 vpxor ymm7, ymm7, ymm11
859 vmovdqa ymmword ptr [rsp+0x200], ymm8
861 vpslld ymm4, ymm4, 25
862 vpor ymm4, ymm4, ymm8
864 vpslld ymm5, ymm5, 25
865 vpor ymm5, ymm5, ymm8
867 vpslld ymm6, ymm6, 25
868 vpor ymm6, ymm6, ymm8
870 vpslld ymm7, ymm7, 25
871 vpor ymm7, ymm7, ymm8
872 vpaddd ymm0, ymm0, ymmword ptr [rsp+0xE0]
873 vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
874 vpaddd ymm2, ymm2, ymmword ptr [rsp]
875 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
876 vpaddd ymm0, ymm0, ymm5
877 vpaddd ymm1, ymm1, ymm6
878 vpaddd ymm2, ymm2, ymm7
879 vpaddd ymm3, ymm3, ymm4
880 vpxor ymm15, ymm15, ymm0
881 vpxor ymm12, ymm12, ymm1
882 vpxor ymm13, ymm13, ymm2
883 vpxor ymm14, ymm14, ymm3
884 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
885 vpshufb ymm15, ymm15, ymm8
886 vpshufb ymm12, ymm12, ymm8
887 vpshufb ymm13, ymm13, ymm8
888 vpshufb ymm14, ymm14, ymm8
889 vpaddd ymm10, ymm10, ymm15
890 vpaddd ymm11, ymm11, ymm12
891 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
892 vpaddd ymm9, ymm9, ymm14
893 vpxor ymm5, ymm5, ymm10
894 vpxor ymm6, ymm6, ymm11
895 vpxor ymm7, ymm7, ymm8
896 vpxor ymm4, ymm4, ymm9
897 vmovdqa ymmword ptr [rsp+0x200], ymm8
898 vpsrld ymm8, ymm5, 12
899 vpslld ymm5, ymm5, 20
900 vpor ymm5, ymm5, ymm8
901 vpsrld ymm8, ymm6, 12
902 vpslld ymm6, ymm6, 20
903 vpor ymm6, ymm6, ymm8
904 vpsrld ymm8, ymm7, 12
905 vpslld ymm7, ymm7, 20
906 vpor ymm7, ymm7, ymm8
907 vpsrld ymm8, ymm4, 12
908 vpslld ymm4, ymm4, 20
909 vpor ymm4, ymm4, ymm8
910 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x40]
911 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x60]
912 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x20]
913 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x80]
914 vpaddd ymm0, ymm0, ymm5
915 vpaddd ymm1, ymm1, ymm6
916 vpaddd ymm2, ymm2, ymm7
917 vpaddd ymm3, ymm3, ymm4
918 vpxor ymm15, ymm15, ymm0
919 vpxor ymm12, ymm12, ymm1
920 vpxor ymm13, ymm13, ymm2
921 vpxor ymm14, ymm14, ymm3
922 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
923 vpshufb ymm15, ymm15, ymm8
924 vpshufb ymm12, ymm12, ymm8
925 vpshufb ymm13, ymm13, ymm8
926 vpshufb ymm14, ymm14, ymm8
927 vpaddd ymm10, ymm10, ymm15
928 vpaddd ymm11, ymm11, ymm12
929 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
930 vpaddd ymm9, ymm9, ymm14
931 vpxor ymm5, ymm5, ymm10
932 vpxor ymm6, ymm6, ymm11
933 vpxor ymm7, ymm7, ymm8
934 vpxor ymm4, ymm4, ymm9
935 vmovdqa ymmword ptr [rsp+0x200], ymm8
937 vpslld ymm5, ymm5, 25
938 vpor ymm5, ymm5, ymm8
940 vpslld ymm6, ymm6, 25
941 vpor ymm6, ymm6, ymm8
943 vpslld ymm7, ymm7, 25
944 vpor ymm7, ymm7, ymm8
946 vpslld ymm4, ymm4, 25
947 vpor ymm4, ymm4, ymm8
948 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x120]
949 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x160]
950 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x100]
951 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1E0]
952 vpaddd ymm0, ymm0, ymm4
953 vpaddd ymm1, ymm1, ymm5
954 vpaddd ymm2, ymm2, ymm6
955 vpaddd ymm3, ymm3, ymm7
956 vpxor ymm12, ymm12, ymm0
957 vpxor ymm13, ymm13, ymm1
958 vpxor ymm14, ymm14, ymm2
959 vpxor ymm15, ymm15, ymm3
960 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
961 vpshufb ymm12, ymm12, ymm8
962 vpshufb ymm13, ymm13, ymm8
963 vpshufb ymm14, ymm14, ymm8
964 vpshufb ymm15, ymm15, ymm8
965 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
966 vpaddd ymm9, ymm9, ymm13
967 vpaddd ymm10, ymm10, ymm14
968 vpaddd ymm11, ymm11, ymm15
969 vpxor ymm4, ymm4, ymm8
970 vpxor ymm5, ymm5, ymm9
971 vpxor ymm6, ymm6, ymm10
972 vpxor ymm7, ymm7, ymm11
973 vmovdqa ymmword ptr [rsp+0x200], ymm8
974 vpsrld ymm8, ymm4, 12
975 vpslld ymm4, ymm4, 20
976 vpor ymm4, ymm4, ymm8
977 vpsrld ymm8, ymm5, 12
978 vpslld ymm5, ymm5, 20
979 vpor ymm5, ymm5, ymm8
980 vpsrld ymm8, ymm6, 12
981 vpslld ymm6, ymm6, 20
982 vpor ymm6, ymm6, ymm8
983 vpsrld ymm8, ymm7, 12
984 vpslld ymm7, ymm7, 20
985 vpor ymm7, ymm7, ymm8
986 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1C0]
987 vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
988 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x180]
989 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x20]
990 vpaddd ymm0, ymm0, ymm4
991 vpaddd ymm1, ymm1, ymm5
992 vpaddd ymm2, ymm2, ymm6
993 vpaddd ymm3, ymm3, ymm7
994 vpxor ymm12, ymm12, ymm0
995 vpxor ymm13, ymm13, ymm1
996 vpxor ymm14, ymm14, ymm2
997 vpxor ymm15, ymm15, ymm3
998 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
999 vpshufb ymm12, ymm12, ymm8
1000 vpshufb ymm13, ymm13, ymm8
1001 vpshufb ymm14, ymm14, ymm8
1002 vpshufb ymm15, ymm15, ymm8
1003 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
1004 vpaddd ymm9, ymm9, ymm13
1005 vpaddd ymm10, ymm10, ymm14
1006 vpaddd ymm11, ymm11, ymm15
1007 vpxor ymm4, ymm4, ymm8
1008 vpxor ymm5, ymm5, ymm9
1009 vpxor ymm6, ymm6, ymm10
1010 vpxor ymm7, ymm7, ymm11
1011 vmovdqa ymmword ptr [rsp+0x200], ymm8
1012 vpsrld ymm8, ymm4, 7
1013 vpslld ymm4, ymm4, 25
1014 vpor ymm4, ymm4, ymm8
1015 vpsrld ymm8, ymm5, 7
1016 vpslld ymm5, ymm5, 25
1017 vpor ymm5, ymm5, ymm8
1018 vpsrld ymm8, ymm6, 7
1019 vpslld ymm6, ymm6, 25
1020 vpor ymm6, ymm6, ymm8
1021 vpsrld ymm8, ymm7, 7
1022 vpslld ymm7, ymm7, 25
1023 vpor ymm7, ymm7, ymm8
1024 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1A0]
1025 vpaddd ymm1, ymm1, ymmword ptr [rsp]
1026 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x40]
1027 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x80]
1028 vpaddd ymm0, ymm0, ymm5
1029 vpaddd ymm1, ymm1, ymm6
1030 vpaddd ymm2, ymm2, ymm7
1031 vpaddd ymm3, ymm3, ymm4
1032 vpxor ymm15, ymm15, ymm0
1033 vpxor ymm12, ymm12, ymm1
1034 vpxor ymm13, ymm13, ymm2
1035 vpxor ymm14, ymm14, ymm3
1036 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
1037 vpshufb ymm15, ymm15, ymm8
1038 vpshufb ymm12, ymm12, ymm8
1039 vpshufb ymm13, ymm13, ymm8
1040 vpshufb ymm14, ymm14, ymm8
1041 vpaddd ymm10, ymm10, ymm15
1042 vpaddd ymm11, ymm11, ymm12
1043 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
1044 vpaddd ymm9, ymm9, ymm14
1045 vpxor ymm5, ymm5, ymm10
1046 vpxor ymm6, ymm6, ymm11
1047 vpxor ymm7, ymm7, ymm8
1048 vpxor ymm4, ymm4, ymm9
1049 vmovdqa ymmword ptr [rsp+0x200], ymm8
1050 vpsrld ymm8, ymm5, 12
1051 vpslld ymm5, ymm5, 20
1052 vpor ymm5, ymm5, ymm8
1053 vpsrld ymm8, ymm6, 12
1054 vpslld ymm6, ymm6, 20
1055 vpor ymm6, ymm6, ymm8
1056 vpsrld ymm8, ymm7, 12
1057 vpslld ymm7, ymm7, 20
1058 vpor ymm7, ymm7, ymm8
1059 vpsrld ymm8, ymm4, 12
1060 vpslld ymm4, ymm4, 20
1061 vpor ymm4, ymm4, ymm8
1062 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x60]
1063 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x140]
1064 vpaddd ymm2, ymm2, ymmword ptr [rsp+0xC0]
1065 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
1066 vpaddd ymm0, ymm0, ymm5
1067 vpaddd ymm1, ymm1, ymm6
1068 vpaddd ymm2, ymm2, ymm7
1069 vpaddd ymm3, ymm3, ymm4
1070 vpxor ymm15, ymm15, ymm0
1071 vpxor ymm12, ymm12, ymm1
1072 vpxor ymm13, ymm13, ymm2
1073 vpxor ymm14, ymm14, ymm3
1074 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
1075 vpshufb ymm15, ymm15, ymm8
1076 vpshufb ymm12, ymm12, ymm8
1077 vpshufb ymm13, ymm13, ymm8
1078 vpshufb ymm14, ymm14, ymm8
1079 vpaddd ymm10, ymm10, ymm15
1080 vpaddd ymm11, ymm11, ymm12
1081 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
1082 vpaddd ymm9, ymm9, ymm14
1083 vpxor ymm5, ymm5, ymm10
1084 vpxor ymm6, ymm6, ymm11
1085 vpxor ymm7, ymm7, ymm8
1086 vpxor ymm4, ymm4, ymm9
1087 vmovdqa ymmword ptr [rsp+0x200], ymm8
1088 vpsrld ymm8, ymm5, 7
1089 vpslld ymm5, ymm5, 25
1090 vpor ymm5, ymm5, ymm8
1091 vpsrld ymm8, ymm6, 7
1092 vpslld ymm6, ymm6, 25
1093 vpor ymm6, ymm6, ymm8
1094 vpsrld ymm8, ymm7, 7
1095 vpslld ymm7, ymm7, 25
1096 vpor ymm7, ymm7, ymm8
1097 vpsrld ymm8, ymm4, 7
1098 vpslld ymm4, ymm4, 25
1099 vpor ymm4, ymm4, ymm8
1100 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x160]
1101 vpaddd ymm1, ymm1, ymmword ptr [rsp+0xA0]
1102 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x20]
1103 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x100]
1104 vpaddd ymm0, ymm0, ymm4
1105 vpaddd ymm1, ymm1, ymm5
1106 vpaddd ymm2, ymm2, ymm6
1107 vpaddd ymm3, ymm3, ymm7
1108 vpxor ymm12, ymm12, ymm0
1109 vpxor ymm13, ymm13, ymm1
1110 vpxor ymm14, ymm14, ymm2
1111 vpxor ymm15, ymm15, ymm3
1112 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
1113 vpshufb ymm12, ymm12, ymm8
1114 vpshufb ymm13, ymm13, ymm8
1115 vpshufb ymm14, ymm14, ymm8
1116 vpshufb ymm15, ymm15, ymm8
1117 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
1118 vpaddd ymm9, ymm9, ymm13
1119 vpaddd ymm10, ymm10, ymm14
1120 vpaddd ymm11, ymm11, ymm15
1121 vpxor ymm4, ymm4, ymm8
1122 vpxor ymm5, ymm5, ymm9
1123 vpxor ymm6, ymm6, ymm10
1124 vpxor ymm7, ymm7, ymm11
1125 vmovdqa ymmword ptr [rsp+0x200], ymm8
1126 vpsrld ymm8, ymm4, 12
1127 vpslld ymm4, ymm4, 20
1128 vpor ymm4, ymm4, ymm8
1129 vpsrld ymm8, ymm5, 12
1130 vpslld ymm5, ymm5, 20
1131 vpor ymm5, ymm5, ymm8
1132 vpsrld ymm8, ymm6, 12
1133 vpslld ymm6, ymm6, 20
1134 vpor ymm6, ymm6, ymm8
1135 vpsrld ymm8, ymm7, 12
1136 vpslld ymm7, ymm7, 20
1137 vpor ymm7, ymm7, ymm8
1138 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1E0]
1139 vpaddd ymm1, ymm1, ymmword ptr [rsp]
1140 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x120]
1141 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xC0]
1142 vpaddd ymm0, ymm0, ymm4
1143 vpaddd ymm1, ymm1, ymm5
1144 vpaddd ymm2, ymm2, ymm6
1145 vpaddd ymm3, ymm3, ymm7
1146 vpxor ymm12, ymm12, ymm0
1147 vpxor ymm13, ymm13, ymm1
1148 vpxor ymm14, ymm14, ymm2
1149 vpxor ymm15, ymm15, ymm3
1150 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
1151 vpshufb ymm12, ymm12, ymm8
1152 vpshufb ymm13, ymm13, ymm8
1153 vpshufb ymm14, ymm14, ymm8
1154 vpshufb ymm15, ymm15, ymm8
1155 vpaddd ymm8, ymm12, ymmword ptr [rsp+0x200]
1156 vpaddd ymm9, ymm9, ymm13
1157 vpaddd ymm10, ymm10, ymm14
1158 vpaddd ymm11, ymm11, ymm15
1159 vpxor ymm4, ymm4, ymm8
1160 vpxor ymm5, ymm5, ymm9
1161 vpxor ymm6, ymm6, ymm10
1162 vpxor ymm7, ymm7, ymm11
1163 vmovdqa ymmword ptr [rsp+0x200], ymm8
1164 vpsrld ymm8, ymm4, 7
1165 vpslld ymm4, ymm4, 25
1166 vpor ymm4, ymm4, ymm8
1167 vpsrld ymm8, ymm5, 7
1168 vpslld ymm5, ymm5, 25
1169 vpor ymm5, ymm5, ymm8
1170 vpsrld ymm8, ymm6, 7
1171 vpslld ymm6, ymm6, 25
1172 vpor ymm6, ymm6, ymm8
1173 vpsrld ymm8, ymm7, 7
1174 vpslld ymm7, ymm7, 25
1175 vpor ymm7, ymm7, ymm8
1176 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x1C0]
1177 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x40]
1178 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x60]
1179 vpaddd ymm3, ymm3, ymmword ptr [rsp+0xE0]
1180 vpaddd ymm0, ymm0, ymm5
1181 vpaddd ymm1, ymm1, ymm6
1182 vpaddd ymm2, ymm2, ymm7
1183 vpaddd ymm3, ymm3, ymm4
1184 vpxor ymm15, ymm15, ymm0
1185 vpxor ymm12, ymm12, ymm1
1186 vpxor ymm13, ymm13, ymm2
1187 vpxor ymm14, ymm14, ymm3
1188 vbroadcasti128 ymm8, xmmword ptr [ROT16+rip]
1189 vpshufb ymm15, ymm15, ymm8
1190 vpshufb ymm12, ymm12, ymm8
1191 vpshufb ymm13, ymm13, ymm8
1192 vpshufb ymm14, ymm14, ymm8
1193 vpaddd ymm10, ymm10, ymm15
1194 vpaddd ymm11, ymm11, ymm12
1195 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
1196 vpaddd ymm9, ymm9, ymm14
1197 vpxor ymm5, ymm5, ymm10
1198 vpxor ymm6, ymm6, ymm11
1199 vpxor ymm7, ymm7, ymm8
1200 vpxor ymm4, ymm4, ymm9
1201 vmovdqa ymmword ptr [rsp+0x200], ymm8
1202 vpsrld ymm8, ymm5, 12
1203 vpslld ymm5, ymm5, 20
1204 vpor ymm5, ymm5, ymm8
1205 vpsrld ymm8, ymm6, 12
1206 vpslld ymm6, ymm6, 20
1207 vpor ymm6, ymm6, ymm8
1208 vpsrld ymm8, ymm7, 12
1209 vpslld ymm7, ymm7, 20
1210 vpor ymm7, ymm7, ymm8
1211 vpsrld ymm8, ymm4, 12
1212 vpslld ymm4, ymm4, 20
1213 vpor ymm4, ymm4, ymm8
1214 vpaddd ymm0, ymm0, ymmword ptr [rsp+0x140]
1215 vpaddd ymm1, ymm1, ymmword ptr [rsp+0x180]
1216 vpaddd ymm2, ymm2, ymmword ptr [rsp+0x80]
1217 vpaddd ymm3, ymm3, ymmword ptr [rsp+0x1A0]
1218 vpaddd ymm0, ymm0, ymm5
1219 vpaddd ymm1, ymm1, ymm6
1220 vpaddd ymm2, ymm2, ymm7
1221 vpaddd ymm3, ymm3, ymm4
1222 vpxor ymm15, ymm15, ymm0
1223 vpxor ymm12, ymm12, ymm1
1224 vpxor ymm13, ymm13, ymm2
1225 vpxor ymm14, ymm14, ymm3
1226 vbroadcasti128 ymm8, xmmword ptr [ROT8+rip]
1227 vpshufb ymm15, ymm15, ymm8
1228 vpshufb ymm12, ymm12, ymm8
1229 vpshufb ymm13, ymm13, ymm8
1230 vpshufb ymm14, ymm14, ymm8
1231 vpaddd ymm10, ymm10, ymm15
1232 vpaddd ymm11, ymm11, ymm12
1233 vpaddd ymm8, ymm13, ymmword ptr [rsp+0x200]
1234 vpaddd ymm9, ymm9, ymm14
1235 vpxor ymm5, ymm5, ymm10
1236 vpxor ymm6, ymm6, ymm11
1237 vpxor ymm7, ymm7, ymm8
1238 vpxor ymm4, ymm4, ymm9
1239 vpxor ymm0, ymm0, ymm8
1240 vpxor ymm1, ymm1, ymm9
1241 vpxor ymm2, ymm2, ymm10
1242 vpxor ymm3, ymm3, ymm11
1243 vpsrld ymm8, ymm5, 7
1244 vpslld ymm5, ymm5, 25
1245 vpor ymm5, ymm5, ymm8
1246 vpsrld ymm8, ymm6, 7
1247 vpslld ymm6, ymm6, 25
1248 vpor ymm6, ymm6, ymm8
1249 vpsrld ymm8, ymm7, 7
1250 vpslld ymm7, ymm7, 25
1251 vpor ymm7, ymm7, ymm8
1252 vpsrld ymm8, ymm4, 7
1253 vpslld ymm4, ymm4, 25
1254 vpor ymm4, ymm4, ymm8
1255 vpxor ymm4, ymm4, ymm12
1256 vpxor ymm5, ymm5, ymm13
1257 vpxor ymm6, ymm6, ymm14
1258 vpxor ymm7, ymm7, ymm15
1259 movzx eax, byte ptr [rbp+0x38]
1261 mov rbx, qword ptr [rbp+0x50]
1262 vunpcklps ymm8, ymm0, ymm1
1263 vunpcklps ymm9, ymm2, ymm3
1264 vunpckhps ymm10, ymm0, ymm1
1265 vunpcklps ymm11, ymm4, ymm5
1266 vunpcklps ymm0, ymm6, ymm7
1267 vshufps ymm12, ymm8, ymm9, 78
1268 vblendps ymm1, ymm8, ymm12, 0xCC
1269 vshufps ymm8, ymm11, ymm0, 78
1270 vunpckhps ymm13, ymm2, ymm3
1271 vblendps ymm2, ymm11, ymm8, 0xCC
1272 vblendps ymm3, ymm12, ymm9, 0xCC
1273 vperm2f128 ymm12, ymm1, ymm2, 0x20
1274 vmovups ymmword ptr [rbx], ymm12
1275 vunpckhps ymm14, ymm4, ymm5
1276 vblendps ymm4, ymm8, ymm0, 0xCC
1277 vunpckhps ymm15, ymm6, ymm7
1278 vperm2f128 ymm7, ymm3, ymm4, 0x20
1279 vmovups ymmword ptr [rbx+0x20], ymm7
1280 vshufps ymm5, ymm10, ymm13, 78
1281 vblendps ymm6, ymm5, ymm13, 0xCC
1282 vshufps ymm13, ymm14, ymm15, 78
1283 vblendps ymm10, ymm10, ymm5, 0xCC
1284 vblendps ymm14, ymm14, ymm13, 0xCC
1285 vperm2f128 ymm8, ymm10, ymm14, 0x20
1286 vmovups ymmword ptr [rbx+0x40], ymm8
1287 vblendps ymm15, ymm13, ymm15, 0xCC
1288 vperm2f128 ymm13, ymm6, ymm15, 0x20
1289 vmovups ymmword ptr [rbx+0x60], ymm13
1290 vperm2f128 ymm9, ymm1, ymm2, 0x31
1291 vperm2f128 ymm11, ymm3, ymm4, 0x31
1292 vmovups ymmword ptr [rbx+0x80], ymm9
1293 vperm2f128 ymm14, ymm10, ymm14, 0x31
1294 vperm2f128 ymm15, ymm6, ymm15, 0x31
1295 vmovups ymmword ptr [rbx+0xA0], ymm11
1296 vmovups ymmword ptr [rbx+0xC0], ymm14
1297 vmovups ymmword ptr [rbx+0xE0], ymm15
1298 vmovdqa ymm0, ymmword ptr [rsp+0x220]
1299 vpaddd ymm1, ymm0, ymmword ptr [rsp+0x240]
1300 vmovdqa ymmword ptr [rsp+0x240], ymm1
1301 vpxor ymm0, ymm0, ymmword ptr [CMP_MSB_MASK+rip]
1302 vpxor ymm2, ymm1, ymmword ptr [CMP_MSB_MASK+rip]
1303 vpcmpgtd ymm2, ymm0, ymm2
1304 vmovdqa ymm0, ymmword ptr [rsp+0x260]
1305 vpsubd ymm2, ymm0, ymm2
1306 vmovdqa ymmword ptr [rsp+0x260], ymm2
1309 mov qword ptr [rbp+0x50], rbx
1327 mov rbx, qword ptr [rbp+0x50]
1328 mov r15, qword ptr [rsp+0x2A0]
1329 movzx r13d, byte ptr [rbp+0x38]
1330 movzx r12d, byte ptr [rbp+0x48]
1333 vbroadcasti128 ymm0, xmmword ptr [rcx]
1334 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
1337 vbroadcasti128 ymm12, xmmword ptr [rsp+0x240]
1338 vbroadcasti128 ymm13, xmmword ptr [rsp+0x260]
1339 vpunpckldq ymm14, ymm12, ymm13
1340 vpunpckhdq ymm15, ymm12, ymm13
1341 vpermq ymm14, ymm14, 0x50
1342 vpermq ymm15, ymm15, 0x50
1343 vbroadcasti128 ymm12, xmmword ptr [BLAKE3_BLOCK_LEN+rip]
1344 vpblendd ymm14, ymm14, ymm12, 0x44
1345 vpblendd ymm15, ymm15, ymm12, 0x44
1346 vmovdqa ymmword ptr [rsp], ymm14
1347 vmovdqa ymmword ptr [rsp+0x20], ymm15
1348 mov r8, qword ptr [rdi]
1349 mov r9, qword ptr [rdi+0x8]
1350 mov r10, qword ptr [rdi+0x10]
1351 mov r11, qword ptr [rdi+0x18]
1352 movzx eax, byte ptr [rbp+0x40]
1362 mov dword ptr [rsp+0x200], eax
1363 vmovups ymm2, ymmword ptr [r8+rdx-0x40]
1364 vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-0x40], 0x01
1365 vmovups ymm3, ymmword ptr [r8+rdx-0x30]
1366 vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-0x30], 0x01
1367 vshufps ymm4, ymm2, ymm3, 136
1368 vshufps ymm5, ymm2, ymm3, 221
1369 vmovups ymm2, ymmword ptr [r8+rdx-0x20]
1370 vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-0x20], 0x01
1371 vmovups ymm3, ymmword ptr [r8+rdx-0x10]
1372 vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-0x10], 0x01
1373 vshufps ymm6, ymm2, ymm3, 136
1374 vshufps ymm7, ymm2, ymm3, 221
1375 vpshufd ymm6, ymm6, 0x93
1376 vpshufd ymm7, ymm7, 0x93
1377 vmovups ymm10, ymmword ptr [r10+rdx-0x40]
1378 vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-0x40], 0x01
1379 vmovups ymm11, ymmword ptr [r10+rdx-0x30]
1380 vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-0x30], 0x01
1381 vshufps ymm12, ymm10, ymm11, 136
1382 vshufps ymm13, ymm10, ymm11, 221
1383 vmovups ymm10, ymmword ptr [r10+rdx-0x20]
1384 vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-0x20], 0x01
1385 vmovups ymm11, ymmword ptr [r10+rdx-0x10]
1386 vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-0x10], 0x01
1387 vshufps ymm14, ymm10, ymm11, 136
1388 vshufps ymm15, ymm10, ymm11, 221
1389 vpshufd ymm14, ymm14, 0x93
1390 vpshufd ymm15, ymm15, 0x93
1391 prefetcht0 [r8+rdx+0x80]
1392 prefetcht0 [r9+rdx+0x80]
1393 prefetcht0 [r10+rdx+0x80]
1394 prefetcht0 [r11+rdx+0x80]
1395 vpbroadcastd ymm2, dword ptr [rsp+0x200]
1396 vmovdqa ymm3, ymmword ptr [rsp]
1397 vmovdqa ymm11, ymmword ptr [rsp+0x20]
1398 vpblendd ymm3, ymm3, ymm2, 0x88
1399 vpblendd ymm11, ymm11, ymm2, 0x88
1400 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
1404 vpaddd ymm0, ymm0, ymm4
1405 vpaddd ymm8, ymm8, ymm12
1406 vmovdqa ymmword ptr [rsp+0x40], ymm4
1408 vmovdqa ymmword ptr [rsp+0x60], ymm12
1410 vpaddd ymm0, ymm0, ymm1
1411 vpaddd ymm8, ymm8, ymm9
1412 vpxor ymm3, ymm3, ymm0
1413 vpxor ymm11, ymm11, ymm8
1414 vbroadcasti128 ymm4, xmmword ptr [ROT16+rip]
1415 vpshufb ymm3, ymm3, ymm4
1416 vpshufb ymm11, ymm11, ymm4
1417 vpaddd ymm2, ymm2, ymm3
1418 vpaddd ymm10, ymm10, ymm11
1419 vpxor ymm1, ymm1, ymm2
1420 vpxor ymm9, ymm9, ymm10
1421 vpsrld ymm4, ymm1, 12
1422 vpslld ymm1, ymm1, 20
1423 vpor ymm1, ymm1, ymm4
1424 vpsrld ymm4, ymm9, 12
1425 vpslld ymm9, ymm9, 20
1426 vpor ymm9, ymm9, ymm4
1427 vpaddd ymm0, ymm0, ymm5
1428 vpaddd ymm8, ymm8, ymm13
1429 vpaddd ymm0, ymm0, ymm1
1430 vpaddd ymm8, ymm8, ymm9
1431 vmovdqa ymmword ptr [rsp+0x80], ymm5
1432 vmovdqa ymmword ptr [rsp+0xA0], ymm13
1433 vpxor ymm3, ymm3, ymm0
1434 vpxor ymm11, ymm11, ymm8
1435 vbroadcasti128 ymm4, xmmword ptr [ROT8+rip]
1436 vpshufb ymm3, ymm3, ymm4
1437 vpshufb ymm11, ymm11, ymm4
1438 vpaddd ymm2, ymm2, ymm3
1439 vpaddd ymm10, ymm10, ymm11
1440 vpxor ymm1, ymm1, ymm2
1441 vpxor ymm9, ymm9, ymm10
1442 vpsrld ymm4, ymm1, 7
1443 vpslld ymm1, ymm1, 25
1444 vpor ymm1, ymm1, ymm4
1445 vpsrld ymm4, ymm9, 7
1446 vpslld ymm9, ymm9, 25
1447 vpor ymm9, ymm9, ymm4
1448 vpshufd ymm0, ymm0, 0x93
1449 vpshufd ymm8, ymm8, 0x93
1450 vpshufd ymm3, ymm3, 0x4E
1451 vpshufd ymm11, ymm11, 0x4E
1452 vpshufd ymm2, ymm2, 0x39
1453 vpshufd ymm10, ymm10, 0x39
1454 vpaddd ymm0, ymm0, ymm6
1455 vpaddd ymm8, ymm8, ymm14
1456 vpaddd ymm0, ymm0, ymm1
1457 vpaddd ymm8, ymm8, ymm9
1458 vpxor ymm3, ymm3, ymm0
1459 vpxor ymm11, ymm11, ymm8
1460 vbroadcasti128 ymm4, xmmword ptr [ROT16+rip]
1461 vpshufb ymm3, ymm3, ymm4
1462 vpshufb ymm11, ymm11, ymm4
1463 vpaddd ymm2, ymm2, ymm3
1464 vpaddd ymm10, ymm10, ymm11
1465 vpxor ymm1, ymm1, ymm2
1466 vpxor ymm9, ymm9, ymm10
1467 vpsrld ymm4, ymm1, 12
1468 vpslld ymm1, ymm1, 20
1469 vpor ymm1, ymm1, ymm4
1470 vpsrld ymm4, ymm9, 12
1471 vpslld ymm9, ymm9, 20
1472 vpor ymm9, ymm9, ymm4
1473 vpaddd ymm0, ymm0, ymm7
1474 vpaddd ymm8, ymm8, ymm15
1475 vpaddd ymm0, ymm0, ymm1
1476 vpaddd ymm8, ymm8, ymm9
1477 vpxor ymm3, ymm3, ymm0
1478 vpxor ymm11, ymm11, ymm8
1479 vbroadcasti128 ymm4, xmmword ptr [ROT8+rip]
1480 vpshufb ymm3, ymm3, ymm4
1481 vpshufb ymm11, ymm11, ymm4
1482 vpaddd ymm2, ymm2, ymm3
1483 vpaddd ymm10, ymm10, ymm11
1484 vpxor ymm1, ymm1, ymm2
1485 vpxor ymm9, ymm9, ymm10
1486 vpsrld ymm4, ymm1, 7
1487 vpslld ymm1, ymm1, 25
1488 vpor ymm1, ymm1, ymm4
1489 vpsrld ymm4, ymm9, 7
1490 vpslld ymm9, ymm9, 25
1491 vpor ymm9, ymm9, ymm4
1492 vpshufd ymm0, ymm0, 0x39
1493 vpshufd ymm8, ymm8, 0x39
1494 vpshufd ymm3, ymm3, 0x4E
1495 vpshufd ymm11, ymm11, 0x4E
1496 vpshufd ymm2, ymm2, 0x93
1497 vpshufd ymm10, ymm10, 0x93
1500 vmovdqa ymm4, ymmword ptr [rsp+0x40]
1501 vmovdqa ymm5, ymmword ptr [rsp+0x80]
1502 vshufps ymm12, ymm4, ymm5, 214
1503 vpshufd ymm13, ymm4, 0x0F
1504 vpshufd ymm4, ymm12, 0x39
1505 vshufps ymm12, ymm6, ymm7, 250
1506 vpblendd ymm13, ymm13, ymm12, 0xAA
1507 vpunpcklqdq ymm12, ymm7, ymm5
1508 vpblendd ymm12, ymm12, ymm6, 0x88
1509 vpshufd ymm12, ymm12, 0x78
1510 vpunpckhdq ymm5, ymm5, ymm7
1511 vpunpckldq ymm6, ymm6, ymm5
1512 vpshufd ymm7, ymm6, 0x1E
1513 vmovdqa ymmword ptr [rsp+0x40], ymm13
1514 vmovdqa ymmword ptr [rsp+0x80], ymm12
1515 vmovdqa ymm12, ymmword ptr [rsp+0x60]
1516 vmovdqa ymm13, ymmword ptr [rsp+0xA0]
1517 vshufps ymm5, ymm12, ymm13, 214
1518 vpshufd ymm6, ymm12, 0x0F
1519 vpshufd ymm12, ymm5, 0x39
1520 vshufps ymm5, ymm14, ymm15, 250
1521 vpblendd ymm6, ymm6, ymm5, 0xAA
1522 vpunpcklqdq ymm5, ymm15, ymm13
1523 vpblendd ymm5, ymm5, ymm14, 0x88
1524 vpshufd ymm5, ymm5, 0x78
1525 vpunpckhdq ymm13, ymm13, ymm15
1526 vpunpckldq ymm14, ymm14, ymm13
1527 vpshufd ymm15, ymm14, 0x1E
1530 vmovdqa ymm5, ymmword ptr [rsp+0x40]
1531 vmovdqa ymm6, ymmword ptr [rsp+0x80]
1534 vpxor ymm0, ymm0, ymm2
1535 vpxor ymm1, ymm1, ymm3
1536 vpxor ymm8, ymm8, ymm10
1537 vpxor ymm9, ymm9, ymm11
1541 vmovdqu xmmword ptr [rbx], xmm0
1542 vmovdqu xmmword ptr [rbx+0x10], xmm1
1543 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
1544 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
1545 vmovdqu xmmword ptr [rbx+0x40], xmm8
1546 vmovdqu xmmword ptr [rbx+0x50], xmm9
1547 vextracti128 xmmword ptr [rbx+0x60], ymm8, 0x01
1548 vextracti128 xmmword ptr [rbx+0x70], ymm9, 0x01
1549 vmovaps xmm8, xmmword ptr [rsp+0x280]
1550 vmovaps xmm0, xmmword ptr [rsp+0x240]
1551 vmovaps xmm1, xmmword ptr [rsp+0x250]
1552 vmovaps xmm2, xmmword ptr [rsp+0x260]
1553 vmovaps xmm3, xmmword ptr [rsp+0x270]
1554 vblendvps xmm0, xmm0, xmm1, xmm8
1555 vblendvps xmm2, xmm2, xmm3, xmm8
1556 vmovaps xmmword ptr [rsp+0x240], xmm0
1557 vmovaps xmmword ptr [rsp+0x260], xmm2
1564 vbroadcasti128 ymm0, xmmword ptr [rcx]
1565 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
1566 vmovd xmm13, dword ptr [rsp+0x240]
1567 vpinsrd xmm13, xmm13, dword ptr [rsp+0x260], 1
1568 vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
1569 vmovd xmm14, dword ptr [rsp+0x244]
1570 vpinsrd xmm14, xmm14, dword ptr [rsp+0x264], 1
1571 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
1572 vinserti128 ymm13, ymm13, xmm14, 0x01
1573 vbroadcasti128 ymm14, xmmword ptr [ROT16+rip]
1574 vbroadcasti128 ymm15, xmmword ptr [ROT8+rip]
1575 mov r8, qword ptr [rdi]
1576 mov r9, qword ptr [rdi+0x8]
1577 movzx eax, byte ptr [rbp+0x40]
1587 mov dword ptr [rsp+0x200], eax
1588 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
1589 vpbroadcastd ymm8, dword ptr [rsp+0x200]
1590 vpblendd ymm3, ymm13, ymm8, 0x88
1591 vmovups ymm8, ymmword ptr [r8+rdx-0x40]
1592 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
1593 vmovups ymm9, ymmword ptr [r8+rdx-0x30]
1594 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
1595 vshufps ymm4, ymm8, ymm9, 136
1596 vshufps ymm5, ymm8, ymm9, 221
1597 vmovups ymm8, ymmword ptr [r8+rdx-0x20]
1598 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
1599 vmovups ymm9, ymmword ptr [r8+rdx-0x10]
1600 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
1601 vshufps ymm6, ymm8, ymm9, 136
1602 vshufps ymm7, ymm8, ymm9, 221
1603 vpshufd ymm6, ymm6, 0x93
1604 vpshufd ymm7, ymm7, 0x93
1607 vpaddd ymm0, ymm0, ymm4
1608 vpaddd ymm0, ymm0, ymm1
1609 vpxor ymm3, ymm3, ymm0
1610 vpshufb ymm3, ymm3, ymm14
1611 vpaddd ymm2, ymm2, ymm3
1612 vpxor ymm1, ymm1, ymm2
1613 vpsrld ymm8, ymm1, 12
1614 vpslld ymm1, ymm1, 20
1615 vpor ymm1, ymm1, ymm8
1616 vpaddd ymm0, ymm0, ymm5
1617 vpaddd ymm0, ymm0, ymm1
1618 vpxor ymm3, ymm3, ymm0
1619 vpshufb ymm3, ymm3, ymm15
1620 vpaddd ymm2, ymm2, ymm3
1621 vpxor ymm1, ymm1, ymm2
1622 vpsrld ymm8, ymm1, 7
1623 vpslld ymm1, ymm1, 25
1624 vpor ymm1, ymm1, ymm8
1625 vpshufd ymm0, ymm0, 0x93
1626 vpshufd ymm3, ymm3, 0x4E
1627 vpshufd ymm2, ymm2, 0x39
1628 vpaddd ymm0, ymm0, ymm6
1629 vpaddd ymm0, ymm0, ymm1
1630 vpxor ymm3, ymm3, ymm0
1631 vpshufb ymm3, ymm3, ymm14
1632 vpaddd ymm2, ymm2, ymm3
1633 vpxor ymm1, ymm1, ymm2
1634 vpsrld ymm8, ymm1, 12
1635 vpslld ymm1, ymm1, 20
1636 vpor ymm1, ymm1, ymm8
1637 vpaddd ymm0, ymm0, ymm7
1638 vpaddd ymm0, ymm0, ymm1
1639 vpxor ymm3, ymm3, ymm0
1640 vpshufb ymm3, ymm3, ymm15
1641 vpaddd ymm2, ymm2, ymm3
1642 vpxor ymm1, ymm1, ymm2
1643 vpsrld ymm8, ymm1, 7
1644 vpslld ymm1, ymm1, 25
1645 vpor ymm1, ymm1, ymm8
1646 vpshufd ymm0, ymm0, 0x39
1647 vpshufd ymm3, ymm3, 0x4E
1648 vpshufd ymm2, ymm2, 0x93
1651 vshufps ymm8, ymm4, ymm5, 214
1652 vpshufd ymm9, ymm4, 0x0F
1653 vpshufd ymm4, ymm8, 0x39
1654 vshufps ymm8, ymm6, ymm7, 250
1655 vpblendd ymm9, ymm9, ymm8, 0xAA
1656 vpunpcklqdq ymm8, ymm7, ymm5
1657 vpblendd ymm8, ymm8, ymm6, 0x88
1658 vpshufd ymm8, ymm8, 0x78
1659 vpunpckhdq ymm5, ymm5, ymm7
1660 vpunpckldq ymm6, ymm6, ymm5
1661 vpshufd ymm7, ymm6, 0x1E
1666 vpxor ymm0, ymm0, ymm2
1667 vpxor ymm1, ymm1, ymm3
1671 vmovdqu xmmword ptr [rbx], xmm0
1672 vmovdqu xmmword ptr [rbx+0x10], xmm1
1673 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
1674 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
1675 vmovaps ymm8, ymmword ptr [rsp+0x280]
1676 vmovaps ymm0, ymmword ptr [rsp+0x240]
1677 vmovups ymm1, ymmword ptr [rsp+0x248]
1678 vmovaps ymm2, ymmword ptr [rsp+0x260]
1679 vmovups ymm3, ymmword ptr [rsp+0x268]
1680 vblendvps ymm0, ymm0, ymm1, ymm8
1681 vblendvps ymm2, ymm2, ymm3, ymm8
1682 vmovaps ymmword ptr [rsp+0x240], ymm0
1683 vmovaps ymmword ptr [rsp+0x260], ymm2
1690 vmovdqu xmm0, xmmword ptr [rcx]
1691 vmovdqu xmm1, xmmword ptr [rcx+0x10]
1692 vmovd xmm3, dword ptr [rsp+0x240]
1693 vpinsrd xmm3, xmm3, dword ptr [rsp+0x260], 1
1694 vpinsrd xmm13, xmm3, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
1695 vmovdqa xmm14, xmmword ptr [ROT16+rip]
1696 vmovdqa xmm15, xmmword ptr [ROT8+rip]
1697 mov r8, qword ptr [rdi]
1698 movzx eax, byte ptr [rbp+0x40]
1708 vmovdqa xmm2, xmmword ptr [BLAKE3_IV+rip]
1710 vpinsrd xmm3, xmm3, eax, 3
1711 vmovups xmm8, xmmword ptr [r8+rdx-0x40]
1712 vmovups xmm9, xmmword ptr [r8+rdx-0x30]
1713 vshufps xmm4, xmm8, xmm9, 136
1714 vshufps xmm5, xmm8, xmm9, 221
1715 vmovups xmm8, xmmword ptr [r8+rdx-0x20]
1716 vmovups xmm9, xmmword ptr [r8+rdx-0x10]
1717 vshufps xmm6, xmm8, xmm9, 136
1718 vshufps xmm7, xmm8, xmm9, 221
1719 vpshufd xmm6, xmm6, 0x93
1720 vpshufd xmm7, xmm7, 0x93
1723 vpaddd xmm0, xmm0, xmm4
1724 vpaddd xmm0, xmm0, xmm1
1725 vpxor xmm3, xmm3, xmm0
1726 vpshufb xmm3, xmm3, xmm14
1727 vpaddd xmm2, xmm2, xmm3
1728 vpxor xmm1, xmm1, xmm2
1729 vpsrld xmm8, xmm1, 12
1730 vpslld xmm1, xmm1, 20
1731 vpor xmm1, xmm1, xmm8
1732 vpaddd xmm0, xmm0, xmm5
1733 vpaddd xmm0, xmm0, xmm1
1734 vpxor xmm3, xmm3, xmm0
1735 vpshufb xmm3, xmm3, xmm15
1736 vpaddd xmm2, xmm2, xmm3
1737 vpxor xmm1, xmm1, xmm2
1738 vpsrld xmm8, xmm1, 7
1739 vpslld xmm1, xmm1, 25
1740 vpor xmm1, xmm1, xmm8
1741 vpshufd xmm0, xmm0, 0x93
1742 vpshufd xmm3, xmm3, 0x4E
1743 vpshufd xmm2, xmm2, 0x39
1744 vpaddd xmm0, xmm0, xmm6
1745 vpaddd xmm0, xmm0, xmm1
1746 vpxor xmm3, xmm3, xmm0
1747 vpshufb xmm3, xmm3, xmm14
1748 vpaddd xmm2, xmm2, xmm3
1749 vpxor xmm1, xmm1, xmm2
1750 vpsrld xmm8, xmm1, 12
1751 vpslld xmm1, xmm1, 20
1752 vpor xmm1, xmm1, xmm8
1753 vpaddd xmm0, xmm0, xmm7
1754 vpaddd xmm0, xmm0, xmm1
1755 vpxor xmm3, xmm3, xmm0
1756 vpshufb xmm3, xmm3, xmm15
1757 vpaddd xmm2, xmm2, xmm3
1758 vpxor xmm1, xmm1, xmm2
1759 vpsrld xmm8, xmm1, 7
1760 vpslld xmm1, xmm1, 25
1761 vpor xmm1, xmm1, xmm8
1762 vpshufd xmm0, xmm0, 0x39
1763 vpshufd xmm3, xmm3, 0x4E
1764 vpshufd xmm2, xmm2, 0x93
1767 vshufps xmm8, xmm4, xmm5, 214
1768 vpshufd xmm9, xmm4, 0x0F
1769 vpshufd xmm4, xmm8, 0x39
1770 vshufps xmm8, xmm6, xmm7, 250
1771 vpblendd xmm9, xmm9, xmm8, 0xAA
1772 vpunpcklqdq xmm8, xmm7, xmm5
1773 vpblendd xmm8, xmm8, xmm6, 0x88
1774 vpshufd xmm8, xmm8, 0x78
1775 vpunpckhdq xmm5, xmm5, xmm7
1776 vpunpckldq xmm6, xmm6, xmm5
1777 vpshufd xmm7, xmm6, 0x1E
1782 vpxor xmm0, xmm0, xmm2
1783 vpxor xmm1, xmm1, xmm3
1787 vmovdqu xmmword ptr [rbx], xmm0
1788 vmovdqu xmmword ptr [rbx+0x10], xmm1
1791 SET_SIZE(zfs_blake3_hash_many_avx2)
1797 .long 0, 1, 2, 3, 4, 5, 6, 7
1799 .long 8, 8, 8, 8, 8, 8, 8, 8
1801 .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667
1802 .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667
1804 .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85
1805 .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85
1807 .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372
1808 .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372
1810 .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A
1811 .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A
1813 .long 0x00000040, 0x00000040, 0x00000040, 0x00000040
1814 .long 0x00000040, 0x00000040, 0x00000040, 0x00000040
1816 .byte 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13
1818 .byte 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12
1820 .long 0x80000000, 0x80000000, 0x80000000, 0x80000000
1821 .long 0x80000000, 0x80000000, 0x80000000, 0x80000000
1823 .long 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A
1824 #endif /* HAVE_AVX2 */
1827 .section .note.GNU-stack,"",%progbits