uncle_blake3 0.0.1

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