digest-blake3 0.0.1

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