digest-blake3 0.0.1

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