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