1#if defined(__x86_64__) 2 3#if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__)) 4.section .note.GNU-stack,"",%progbits 5#endif 6 7#if defined(__ELF__) && defined(__CET__) && defined(__has_include) 8#if __has_include(<cet.h>) 9#include <cet.h> 10#endif 11#endif 12 13#if !defined(_CET_ENDBR) 14#define _CET_ENDBR 15#endif 16 17#ifdef __APPLE__ 18#define HIDDEN .private_extern 19#else 20#define HIDDEN .hidden 21#endif 22 23.intel_syntax noprefix 24HIDDEN _blake3_hash_many_avx512 25HIDDEN blake3_hash_many_avx512 26HIDDEN blake3_compress_in_place_avx512 27HIDDEN _blake3_compress_in_place_avx512 28HIDDEN blake3_compress_xof_avx512 29HIDDEN _blake3_compress_xof_avx512 30.global _blake3_hash_many_avx512 31.global blake3_hash_many_avx512 32.global blake3_compress_in_place_avx512 33.global _blake3_compress_in_place_avx512 34.global blake3_compress_xof_avx512 35.global _blake3_compress_xof_avx512 36 37#ifdef __APPLE__ 38.text 39#else 40.section .text 41#endif 42.p2align 6 43_blake3_hash_many_avx512: 44blake3_hash_many_avx512: 45 _CET_ENDBR 46 push r15 47 push r14 48 push r13 49 push r12 50 push rbx 51 push rbp 52 mov rbp, rsp 53 sub rsp, 144 54 and rsp, 0xFFFFFFFFFFFFFFC0 55 neg r9 56 kmovw k1, r9d 57 vmovd xmm0, r8d 58 vpbroadcastd ymm0, xmm0 59 shr r8, 32 60 vmovd xmm1, r8d 61 vpbroadcastd ymm1, xmm1 62 vmovdqa ymm4, ymm1 63 vmovdqa ymm5, ymm1 64 vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip] 65 vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip] 66 vpcmpltud k2, ymm2, ymm0 67 vpcmpltud k3, ymm3, ymm0 68 vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8} 69 vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8} 70 knotw k2, k1 71 vmovdqa32 ymm2 {k2}, ymm0 72 vmovdqa32 ymm3 {k2}, ymm0 73 vmovdqa32 ymm4 {k2}, ymm1 74 vmovdqa32 ymm5 {k2}, ymm1 75 vmovdqa ymmword ptr [rsp], ymm2 76 vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3 77 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4 78 vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5 79 shl rdx, 6 80 mov qword ptr [rsp+0x80], rdx 81 cmp rsi, 16 82 jc 3f 832: 84 vpbroadcastd zmm0, dword ptr [rcx] 85 vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4] 86 vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4] 87 vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4] 88 vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4] 89 vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4] 90 vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4] 91 vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4] 92 movzx eax, byte ptr [rbp+0x38] 93 movzx ebx, byte ptr [rbp+0x40] 94 or eax, ebx 95 xor edx, edx 96.p2align 5 979: 98 movzx ebx, byte ptr [rbp+0x48] 99 or ebx, eax 100 add rdx, 64 101 cmp rdx, qword ptr [rsp+0x80] 102 cmove eax, ebx 103 mov dword ptr [rsp+0x88], eax 104 mov r8, qword ptr [rdi] 105 mov r9, qword ptr [rdi+0x8] 106 mov r10, qword ptr [rdi+0x10] 107 mov r11, qword ptr [rdi+0x18] 108 mov r12, qword ptr [rdi+0x40] 109 mov r13, qword ptr [rdi+0x48] 110 mov r14, qword ptr [rdi+0x50] 111 mov r15, qword ptr [rdi+0x58] 112 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20] 113 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01 114 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20] 115 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01 116 vpunpcklqdq zmm8, zmm16, zmm17 117 vpunpckhqdq zmm9, zmm16, zmm17 118 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20] 119 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01 120 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20] 121 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01 122 vpunpcklqdq zmm10, zmm18, zmm19 123 vpunpckhqdq zmm11, zmm18, zmm19 124 mov r8, qword ptr [rdi+0x20] 125 mov r9, qword ptr [rdi+0x28] 126 mov r10, qword ptr [rdi+0x30] 127 mov r11, qword ptr [rdi+0x38] 128 mov r12, qword ptr [rdi+0x60] 129 mov r13, qword ptr [rdi+0x68] 130 mov r14, qword ptr [rdi+0x70] 131 mov r15, qword ptr [rdi+0x78] 132 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20] 133 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01 134 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20] 135 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01 136 vpunpcklqdq zmm12, zmm16, zmm17 137 vpunpckhqdq zmm13, zmm16, zmm17 138 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20] 139 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01 140 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20] 141 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01 142 vpunpcklqdq zmm14, zmm18, zmm19 143 vpunpckhqdq zmm15, zmm18, zmm19 144 vmovdqa32 zmm27, zmmword ptr [INDEX0+rip] 145 vmovdqa32 zmm31, zmmword ptr [INDEX1+rip] 146 vshufps zmm16, zmm8, zmm10, 136 147 vshufps zmm17, zmm12, zmm14, 136 148 vmovdqa32 zmm20, zmm16 149 vpermt2d zmm16, zmm27, zmm17 150 vpermt2d zmm20, zmm31, zmm17 151 vshufps zmm17, zmm8, zmm10, 221 152 vshufps zmm30, zmm12, zmm14, 221 153 vmovdqa32 zmm21, zmm17 154 vpermt2d zmm17, zmm27, zmm30 155 vpermt2d zmm21, zmm31, zmm30 156 vshufps zmm18, zmm9, zmm11, 136 157 vshufps zmm8, zmm13, zmm15, 136 158 vmovdqa32 zmm22, zmm18 159 vpermt2d zmm18, zmm27, zmm8 160 vpermt2d zmm22, zmm31, zmm8 161 vshufps zmm19, zmm9, zmm11, 221 162 vshufps zmm8, zmm13, zmm15, 221 163 vmovdqa32 zmm23, zmm19 164 vpermt2d zmm19, zmm27, zmm8 165 vpermt2d zmm23, zmm31, zmm8 166 mov r8, qword ptr [rdi] 167 mov r9, qword ptr [rdi+0x8] 168 mov r10, qword ptr [rdi+0x10] 169 mov r11, qword ptr [rdi+0x18] 170 mov r12, qword ptr [rdi+0x40] 171 mov r13, qword ptr [rdi+0x48] 172 mov r14, qword ptr [rdi+0x50] 173 mov r15, qword ptr [rdi+0x58] 174 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20] 175 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01 176 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20] 177 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01 178 vpunpcklqdq zmm8, zmm24, zmm25 179 vpunpckhqdq zmm9, zmm24, zmm25 180 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20] 181 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01 182 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20] 183 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01 184 vpunpcklqdq zmm10, zmm24, zmm25 185 vpunpckhqdq zmm11, zmm24, zmm25 186 prefetcht0 [r8+rdx+0x80] 187 prefetcht0 [r12+rdx+0x80] 188 prefetcht0 [r9+rdx+0x80] 189 prefetcht0 [r13+rdx+0x80] 190 prefetcht0 [r10+rdx+0x80] 191 prefetcht0 [r14+rdx+0x80] 192 prefetcht0 [r11+rdx+0x80] 193 prefetcht0 [r15+rdx+0x80] 194 mov r8, qword ptr [rdi+0x20] 195 mov r9, qword ptr [rdi+0x28] 196 mov r10, qword ptr [rdi+0x30] 197 mov r11, qword ptr [rdi+0x38] 198 mov r12, qword ptr [rdi+0x60] 199 mov r13, qword ptr [rdi+0x68] 200 mov r14, qword ptr [rdi+0x70] 201 mov r15, qword ptr [rdi+0x78] 202 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20] 203 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01 204 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20] 205 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01 206 vpunpcklqdq zmm12, zmm24, zmm25 207 vpunpckhqdq zmm13, zmm24, zmm25 208 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20] 209 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01 210 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20] 211 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01 212 vpunpcklqdq zmm14, zmm24, zmm25 213 vpunpckhqdq zmm15, zmm24, zmm25 214 prefetcht0 [r8+rdx+0x80] 215 prefetcht0 [r12+rdx+0x80] 216 prefetcht0 [r9+rdx+0x80] 217 prefetcht0 [r13+rdx+0x80] 218 prefetcht0 [r10+rdx+0x80] 219 prefetcht0 [r14+rdx+0x80] 220 prefetcht0 [r11+rdx+0x80] 221 prefetcht0 [r15+rdx+0x80] 222 vshufps zmm24, zmm8, zmm10, 136 223 vshufps zmm30, zmm12, zmm14, 136 224 vmovdqa32 zmm28, zmm24 225 vpermt2d zmm24, zmm27, zmm30 226 vpermt2d zmm28, zmm31, zmm30 227 vshufps zmm25, zmm8, zmm10, 221 228 vshufps zmm30, zmm12, zmm14, 221 229 vmovdqa32 zmm29, zmm25 230 vpermt2d zmm25, zmm27, zmm30 231 vpermt2d zmm29, zmm31, zmm30 232 vshufps zmm26, zmm9, zmm11, 136 233 vshufps zmm8, zmm13, zmm15, 136 234 vmovdqa32 zmm30, zmm26 235 vpermt2d zmm26, zmm27, zmm8 236 vpermt2d zmm30, zmm31, zmm8 237 vshufps zmm8, zmm9, zmm11, 221 238 vshufps zmm10, zmm13, zmm15, 221 239 vpermi2d zmm27, zmm8, zmm10 240 vpermi2d zmm31, zmm8, zmm10 241 vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip] 242 vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip] 243 vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip] 244 vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip] 245 vmovdqa32 zmm12, zmmword ptr [rsp] 246 vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40] 247 vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip] 248 vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4] 249 vpaddd zmm0, zmm0, zmm16 250 vpaddd zmm1, zmm1, zmm18 251 vpaddd zmm2, zmm2, zmm20 252 vpaddd zmm3, zmm3, zmm22 253 vpaddd zmm0, zmm0, zmm4 254 vpaddd zmm1, zmm1, zmm5 255 vpaddd zmm2, zmm2, zmm6 256 vpaddd zmm3, zmm3, zmm7 257 vpxord zmm12, zmm12, zmm0 258 vpxord zmm13, zmm13, zmm1 259 vpxord zmm14, zmm14, zmm2 260 vpxord zmm15, zmm15, zmm3 261 vprord zmm12, zmm12, 16 262 vprord zmm13, zmm13, 16 263 vprord zmm14, zmm14, 16 264 vprord zmm15, zmm15, 16 265 vpaddd zmm8, zmm8, zmm12 266 vpaddd zmm9, zmm9, zmm13 267 vpaddd zmm10, zmm10, zmm14 268 vpaddd zmm11, zmm11, zmm15 269 vpxord zmm4, zmm4, zmm8 270 vpxord zmm5, zmm5, zmm9 271 vpxord zmm6, zmm6, zmm10 272 vpxord zmm7, zmm7, zmm11 273 vprord zmm4, zmm4, 12 274 vprord zmm5, zmm5, 12 275 vprord zmm6, zmm6, 12 276 vprord zmm7, zmm7, 12 277 vpaddd zmm0, zmm0, zmm17 278 vpaddd zmm1, zmm1, zmm19 279 vpaddd zmm2, zmm2, zmm21 280 vpaddd zmm3, zmm3, zmm23 281 vpaddd zmm0, zmm0, zmm4 282 vpaddd zmm1, zmm1, zmm5 283 vpaddd zmm2, zmm2, zmm6 284 vpaddd zmm3, zmm3, zmm7 285 vpxord zmm12, zmm12, zmm0 286 vpxord zmm13, zmm13, zmm1 287 vpxord zmm14, zmm14, zmm2 288 vpxord zmm15, zmm15, zmm3 289 vprord zmm12, zmm12, 8 290 vprord zmm13, zmm13, 8 291 vprord zmm14, zmm14, 8 292 vprord zmm15, zmm15, 8 293 vpaddd zmm8, zmm8, zmm12 294 vpaddd zmm9, zmm9, zmm13 295 vpaddd zmm10, zmm10, zmm14 296 vpaddd zmm11, zmm11, zmm15 297 vpxord zmm4, zmm4, zmm8 298 vpxord zmm5, zmm5, zmm9 299 vpxord zmm6, zmm6, zmm10 300 vpxord zmm7, zmm7, zmm11 301 vprord zmm4, zmm4, 7 302 vprord zmm5, zmm5, 7 303 vprord zmm6, zmm6, 7 304 vprord zmm7, zmm7, 7 305 vpaddd zmm0, zmm0, zmm24 306 vpaddd zmm1, zmm1, zmm26 307 vpaddd zmm2, zmm2, zmm28 308 vpaddd zmm3, zmm3, zmm30 309 vpaddd zmm0, zmm0, zmm5 310 vpaddd zmm1, zmm1, zmm6 311 vpaddd zmm2, zmm2, zmm7 312 vpaddd zmm3, zmm3, zmm4 313 vpxord zmm15, zmm15, zmm0 314 vpxord zmm12, zmm12, zmm1 315 vpxord zmm13, zmm13, zmm2 316 vpxord zmm14, zmm14, zmm3 317 vprord zmm15, zmm15, 16 318 vprord zmm12, zmm12, 16 319 vprord zmm13, zmm13, 16 320 vprord zmm14, zmm14, 16 321 vpaddd zmm10, zmm10, zmm15 322 vpaddd zmm11, zmm11, zmm12 323 vpaddd zmm8, zmm8, zmm13 324 vpaddd zmm9, zmm9, zmm14 325 vpxord zmm5, zmm5, zmm10 326 vpxord zmm6, zmm6, zmm11 327 vpxord zmm7, zmm7, zmm8 328 vpxord zmm4, zmm4, zmm9 329 vprord zmm5, zmm5, 12 330 vprord zmm6, zmm6, 12 331 vprord zmm7, zmm7, 12 332 vprord zmm4, zmm4, 12 333 vpaddd zmm0, zmm0, zmm25 334 vpaddd zmm1, zmm1, zmm27 335 vpaddd zmm2, zmm2, zmm29 336 vpaddd zmm3, zmm3, zmm31 337 vpaddd zmm0, zmm0, zmm5 338 vpaddd zmm1, zmm1, zmm6 339 vpaddd zmm2, zmm2, zmm7 340 vpaddd zmm3, zmm3, zmm4 341 vpxord zmm15, zmm15, zmm0 342 vpxord zmm12, zmm12, zmm1 343 vpxord zmm13, zmm13, zmm2 344 vpxord zmm14, zmm14, zmm3 345 vprord zmm15, zmm15, 8 346 vprord zmm12, zmm12, 8 347 vprord zmm13, zmm13, 8 348 vprord zmm14, zmm14, 8 349 vpaddd zmm10, zmm10, zmm15 350 vpaddd zmm11, zmm11, zmm12 351 vpaddd zmm8, zmm8, zmm13 352 vpaddd zmm9, zmm9, zmm14 353 vpxord zmm5, zmm5, zmm10 354 vpxord zmm6, zmm6, zmm11 355 vpxord zmm7, zmm7, zmm8 356 vpxord zmm4, zmm4, zmm9 357 vprord zmm5, zmm5, 7 358 vprord zmm6, zmm6, 7 359 vprord zmm7, zmm7, 7 360 vprord zmm4, zmm4, 7 361 vpaddd zmm0, zmm0, zmm18 362 vpaddd zmm1, zmm1, zmm19 363 vpaddd zmm2, zmm2, zmm23 364 vpaddd zmm3, zmm3, zmm20 365 vpaddd zmm0, zmm0, zmm4 366 vpaddd zmm1, zmm1, zmm5 367 vpaddd zmm2, zmm2, zmm6 368 vpaddd zmm3, zmm3, zmm7 369 vpxord zmm12, zmm12, zmm0 370 vpxord zmm13, zmm13, zmm1 371 vpxord zmm14, zmm14, zmm2 372 vpxord zmm15, zmm15, zmm3 373 vprord zmm12, zmm12, 16 374 vprord zmm13, zmm13, 16 375 vprord zmm14, zmm14, 16 376 vprord zmm15, zmm15, 16 377 vpaddd zmm8, zmm8, zmm12 378 vpaddd zmm9, zmm9, zmm13 379 vpaddd zmm10, zmm10, zmm14 380 vpaddd zmm11, zmm11, zmm15 381 vpxord zmm4, zmm4, zmm8 382 vpxord zmm5, zmm5, zmm9 383 vpxord zmm6, zmm6, zmm10 384 vpxord zmm7, zmm7, zmm11 385 vprord zmm4, zmm4, 12 386 vprord zmm5, zmm5, 12 387 vprord zmm6, zmm6, 12 388 vprord zmm7, zmm7, 12 389 vpaddd zmm0, zmm0, zmm22 390 vpaddd zmm1, zmm1, zmm26 391 vpaddd zmm2, zmm2, zmm16 392 vpaddd zmm3, zmm3, zmm29 393 vpaddd zmm0, zmm0, zmm4 394 vpaddd zmm1, zmm1, zmm5 395 vpaddd zmm2, zmm2, zmm6 396 vpaddd zmm3, zmm3, zmm7 397 vpxord zmm12, zmm12, zmm0 398 vpxord zmm13, zmm13, zmm1 399 vpxord zmm14, zmm14, zmm2 400 vpxord zmm15, zmm15, zmm3 401 vprord zmm12, zmm12, 8 402 vprord zmm13, zmm13, 8 403 vprord zmm14, zmm14, 8 404 vprord zmm15, zmm15, 8 405 vpaddd zmm8, zmm8, zmm12 406 vpaddd zmm9, zmm9, zmm13 407 vpaddd zmm10, zmm10, zmm14 408 vpaddd zmm11, zmm11, zmm15 409 vpxord zmm4, zmm4, zmm8 410 vpxord zmm5, zmm5, zmm9 411 vpxord zmm6, zmm6, zmm10 412 vpxord zmm7, zmm7, zmm11 413 vprord zmm4, zmm4, 7 414 vprord zmm5, zmm5, 7 415 vprord zmm6, zmm6, 7 416 vprord zmm7, zmm7, 7 417 vpaddd zmm0, zmm0, zmm17 418 vpaddd zmm1, zmm1, zmm28 419 vpaddd zmm2, zmm2, zmm25 420 vpaddd zmm3, zmm3, zmm31 421 vpaddd zmm0, zmm0, zmm5 422 vpaddd zmm1, zmm1, zmm6 423 vpaddd zmm2, zmm2, zmm7 424 vpaddd zmm3, zmm3, zmm4 425 vpxord zmm15, zmm15, zmm0 426 vpxord zmm12, zmm12, zmm1 427 vpxord zmm13, zmm13, zmm2 428 vpxord zmm14, zmm14, zmm3 429 vprord zmm15, zmm15, 16 430 vprord zmm12, zmm12, 16 431 vprord zmm13, zmm13, 16 432 vprord zmm14, zmm14, 16 433 vpaddd zmm10, zmm10, zmm15 434 vpaddd zmm11, zmm11, zmm12 435 vpaddd zmm8, zmm8, zmm13 436 vpaddd zmm9, zmm9, zmm14 437 vpxord zmm5, zmm5, zmm10 438 vpxord zmm6, zmm6, zmm11 439 vpxord zmm7, zmm7, zmm8 440 vpxord zmm4, zmm4, zmm9 441 vprord zmm5, zmm5, 12 442 vprord zmm6, zmm6, 12 443 vprord zmm7, zmm7, 12 444 vprord zmm4, zmm4, 12 445 vpaddd zmm0, zmm0, zmm27 446 vpaddd zmm1, zmm1, zmm21 447 vpaddd zmm2, zmm2, zmm30 448 vpaddd zmm3, zmm3, zmm24 449 vpaddd zmm0, zmm0, zmm5 450 vpaddd zmm1, zmm1, zmm6 451 vpaddd zmm2, zmm2, zmm7 452 vpaddd zmm3, zmm3, zmm4 453 vpxord zmm15, zmm15, zmm0 454 vpxord zmm12, zmm12, zmm1 455 vpxord zmm13, zmm13, zmm2 456 vpxord zmm14, zmm14, zmm3 457 vprord zmm15, zmm15, 8 458 vprord zmm12, zmm12, 8 459 vprord zmm13, zmm13, 8 460 vprord zmm14, zmm14, 8 461 vpaddd zmm10, zmm10, zmm15 462 vpaddd zmm11, zmm11, zmm12 463 vpaddd zmm8, zmm8, zmm13 464 vpaddd zmm9, zmm9, zmm14 465 vpxord zmm5, zmm5, zmm10 466 vpxord zmm6, zmm6, zmm11 467 vpxord zmm7, zmm7, zmm8 468 vpxord zmm4, zmm4, zmm9 469 vprord zmm5, zmm5, 7 470 vprord zmm6, zmm6, 7 471 vprord zmm7, zmm7, 7 472 vprord zmm4, zmm4, 7 473 vpaddd zmm0, zmm0, zmm19 474 vpaddd zmm1, zmm1, zmm26 475 vpaddd zmm2, zmm2, zmm29 476 vpaddd zmm3, zmm3, zmm23 477 vpaddd zmm0, zmm0, zmm4 478 vpaddd zmm1, zmm1, zmm5 479 vpaddd zmm2, zmm2, zmm6 480 vpaddd zmm3, zmm3, zmm7 481 vpxord zmm12, zmm12, zmm0 482 vpxord zmm13, zmm13, zmm1 483 vpxord zmm14, zmm14, zmm2 484 vpxord zmm15, zmm15, zmm3 485 vprord zmm12, zmm12, 16 486 vprord zmm13, zmm13, 16 487 vprord zmm14, zmm14, 16 488 vprord zmm15, zmm15, 16 489 vpaddd zmm8, zmm8, zmm12 490 vpaddd zmm9, zmm9, zmm13 491 vpaddd zmm10, zmm10, zmm14 492 vpaddd zmm11, zmm11, zmm15 493 vpxord zmm4, zmm4, zmm8 494 vpxord zmm5, zmm5, zmm9 495 vpxord zmm6, zmm6, zmm10 496 vpxord zmm7, zmm7, zmm11 497 vprord zmm4, zmm4, 12 498 vprord zmm5, zmm5, 12 499 vprord zmm6, zmm6, 12 500 vprord zmm7, zmm7, 12 501 vpaddd zmm0, zmm0, zmm20 502 vpaddd zmm1, zmm1, zmm28 503 vpaddd zmm2, zmm2, zmm18 504 vpaddd zmm3, zmm3, zmm30 505 vpaddd zmm0, zmm0, zmm4 506 vpaddd zmm1, zmm1, zmm5 507 vpaddd zmm2, zmm2, zmm6 508 vpaddd zmm3, zmm3, zmm7 509 vpxord zmm12, zmm12, zmm0 510 vpxord zmm13, zmm13, zmm1 511 vpxord zmm14, zmm14, zmm2 512 vpxord zmm15, zmm15, zmm3 513 vprord zmm12, zmm12, 8 514 vprord zmm13, zmm13, 8 515 vprord zmm14, zmm14, 8 516 vprord zmm15, zmm15, 8 517 vpaddd zmm8, zmm8, zmm12 518 vpaddd zmm9, zmm9, zmm13 519 vpaddd zmm10, zmm10, zmm14 520 vpaddd zmm11, zmm11, zmm15 521 vpxord zmm4, zmm4, zmm8 522 vpxord zmm5, zmm5, zmm9 523 vpxord zmm6, zmm6, zmm10 524 vpxord zmm7, zmm7, zmm11 525 vprord zmm4, zmm4, 7 526 vprord zmm5, zmm5, 7 527 vprord zmm6, zmm6, 7 528 vprord zmm7, zmm7, 7 529 vpaddd zmm0, zmm0, zmm22 530 vpaddd zmm1, zmm1, zmm25 531 vpaddd zmm2, zmm2, zmm27 532 vpaddd zmm3, zmm3, zmm24 533 vpaddd zmm0, zmm0, zmm5 534 vpaddd zmm1, zmm1, zmm6 535 vpaddd zmm2, zmm2, zmm7 536 vpaddd zmm3, zmm3, zmm4 537 vpxord zmm15, zmm15, zmm0 538 vpxord zmm12, zmm12, zmm1 539 vpxord zmm13, zmm13, zmm2 540 vpxord zmm14, zmm14, zmm3 541 vprord zmm15, zmm15, 16 542 vprord zmm12, zmm12, 16 543 vprord zmm13, zmm13, 16 544 vprord zmm14, zmm14, 16 545 vpaddd zmm10, zmm10, zmm15 546 vpaddd zmm11, zmm11, zmm12 547 vpaddd zmm8, zmm8, zmm13 548 vpaddd zmm9, zmm9, zmm14 549 vpxord zmm5, zmm5, zmm10 550 vpxord zmm6, zmm6, zmm11 551 vpxord zmm7, zmm7, zmm8 552 vpxord zmm4, zmm4, zmm9 553 vprord zmm5, zmm5, 12 554 vprord zmm6, zmm6, 12 555 vprord zmm7, zmm7, 12 556 vprord zmm4, zmm4, 12 557 vpaddd zmm0, zmm0, zmm21 558 vpaddd zmm1, zmm1, zmm16 559 vpaddd zmm2, zmm2, zmm31 560 vpaddd zmm3, zmm3, zmm17 561 vpaddd zmm0, zmm0, zmm5 562 vpaddd zmm1, zmm1, zmm6 563 vpaddd zmm2, zmm2, zmm7 564 vpaddd zmm3, zmm3, zmm4 565 vpxord zmm15, zmm15, zmm0 566 vpxord zmm12, zmm12, zmm1 567 vpxord zmm13, zmm13, zmm2 568 vpxord zmm14, zmm14, zmm3 569 vprord zmm15, zmm15, 8 570 vprord zmm12, zmm12, 8 571 vprord zmm13, zmm13, 8 572 vprord zmm14, zmm14, 8 573 vpaddd zmm10, zmm10, zmm15 574 vpaddd zmm11, zmm11, zmm12 575 vpaddd zmm8, zmm8, zmm13 576 vpaddd zmm9, zmm9, zmm14 577 vpxord zmm5, zmm5, zmm10 578 vpxord zmm6, zmm6, zmm11 579 vpxord zmm7, zmm7, zmm8 580 vpxord zmm4, zmm4, zmm9 581 vprord zmm5, zmm5, 7 582 vprord zmm6, zmm6, 7 583 vprord zmm7, zmm7, 7 584 vprord zmm4, zmm4, 7 585 vpaddd zmm0, zmm0, zmm26 586 vpaddd zmm1, zmm1, zmm28 587 vpaddd zmm2, zmm2, zmm30 588 vpaddd zmm3, zmm3, zmm29 589 vpaddd zmm0, zmm0, zmm4 590 vpaddd zmm1, zmm1, zmm5 591 vpaddd zmm2, zmm2, zmm6 592 vpaddd zmm3, zmm3, zmm7 593 vpxord zmm12, zmm12, zmm0 594 vpxord zmm13, zmm13, zmm1 595 vpxord zmm14, zmm14, zmm2 596 vpxord zmm15, zmm15, zmm3 597 vprord zmm12, zmm12, 16 598 vprord zmm13, zmm13, 16 599 vprord zmm14, zmm14, 16 600 vprord zmm15, zmm15, 16 601 vpaddd zmm8, zmm8, zmm12 602 vpaddd zmm9, zmm9, zmm13 603 vpaddd zmm10, zmm10, zmm14 604 vpaddd zmm11, zmm11, zmm15 605 vpxord zmm4, zmm4, zmm8 606 vpxord zmm5, zmm5, zmm9 607 vpxord zmm6, zmm6, zmm10 608 vpxord zmm7, zmm7, zmm11 609 vprord zmm4, zmm4, 12 610 vprord zmm5, zmm5, 12 611 vprord zmm6, zmm6, 12 612 vprord zmm7, zmm7, 12 613 vpaddd zmm0, zmm0, zmm23 614 vpaddd zmm1, zmm1, zmm25 615 vpaddd zmm2, zmm2, zmm19 616 vpaddd zmm3, zmm3, zmm31 617 vpaddd zmm0, zmm0, zmm4 618 vpaddd zmm1, zmm1, zmm5 619 vpaddd zmm2, zmm2, zmm6 620 vpaddd zmm3, zmm3, zmm7 621 vpxord zmm12, zmm12, zmm0 622 vpxord zmm13, zmm13, zmm1 623 vpxord zmm14, zmm14, zmm2 624 vpxord zmm15, zmm15, zmm3 625 vprord zmm12, zmm12, 8 626 vprord zmm13, zmm13, 8 627 vprord zmm14, zmm14, 8 628 vprord zmm15, zmm15, 8 629 vpaddd zmm8, zmm8, zmm12 630 vpaddd zmm9, zmm9, zmm13 631 vpaddd zmm10, zmm10, zmm14 632 vpaddd zmm11, zmm11, zmm15 633 vpxord zmm4, zmm4, zmm8 634 vpxord zmm5, zmm5, zmm9 635 vpxord zmm6, zmm6, zmm10 636 vpxord zmm7, zmm7, zmm11 637 vprord zmm4, zmm4, 7 638 vprord zmm5, zmm5, 7 639 vprord zmm6, zmm6, 7 640 vprord zmm7, zmm7, 7 641 vpaddd zmm0, zmm0, zmm20 642 vpaddd zmm1, zmm1, zmm27 643 vpaddd zmm2, zmm2, zmm21 644 vpaddd zmm3, zmm3, zmm17 645 vpaddd zmm0, zmm0, zmm5 646 vpaddd zmm1, zmm1, zmm6 647 vpaddd zmm2, zmm2, zmm7 648 vpaddd zmm3, zmm3, zmm4 649 vpxord zmm15, zmm15, zmm0 650 vpxord zmm12, zmm12, zmm1 651 vpxord zmm13, zmm13, zmm2 652 vpxord zmm14, zmm14, zmm3 653 vprord zmm15, zmm15, 16 654 vprord zmm12, zmm12, 16 655 vprord zmm13, zmm13, 16 656 vprord zmm14, zmm14, 16 657 vpaddd zmm10, zmm10, zmm15 658 vpaddd zmm11, zmm11, zmm12 659 vpaddd zmm8, zmm8, zmm13 660 vpaddd zmm9, zmm9, zmm14 661 vpxord zmm5, zmm5, zmm10 662 vpxord zmm6, zmm6, zmm11 663 vpxord zmm7, zmm7, zmm8 664 vpxord zmm4, zmm4, zmm9 665 vprord zmm5, zmm5, 12 666 vprord zmm6, zmm6, 12 667 vprord zmm7, zmm7, 12 668 vprord zmm4, zmm4, 12 669 vpaddd zmm0, zmm0, zmm16 670 vpaddd zmm1, zmm1, zmm18 671 vpaddd zmm2, zmm2, zmm24 672 vpaddd zmm3, zmm3, zmm22 673 vpaddd zmm0, zmm0, zmm5 674 vpaddd zmm1, zmm1, zmm6 675 vpaddd zmm2, zmm2, zmm7 676 vpaddd zmm3, zmm3, zmm4 677 vpxord zmm15, zmm15, zmm0 678 vpxord zmm12, zmm12, zmm1 679 vpxord zmm13, zmm13, zmm2 680 vpxord zmm14, zmm14, zmm3 681 vprord zmm15, zmm15, 8 682 vprord zmm12, zmm12, 8 683 vprord zmm13, zmm13, 8 684 vprord zmm14, zmm14, 8 685 vpaddd zmm10, zmm10, zmm15 686 vpaddd zmm11, zmm11, zmm12 687 vpaddd zmm8, zmm8, zmm13 688 vpaddd zmm9, zmm9, zmm14 689 vpxord zmm5, zmm5, zmm10 690 vpxord zmm6, zmm6, zmm11 691 vpxord zmm7, zmm7, zmm8 692 vpxord zmm4, zmm4, zmm9 693 vprord zmm5, zmm5, 7 694 vprord zmm6, zmm6, 7 695 vprord zmm7, zmm7, 7 696 vprord zmm4, zmm4, 7 697 vpaddd zmm0, zmm0, zmm28 698 vpaddd zmm1, zmm1, zmm25 699 vpaddd zmm2, zmm2, zmm31 700 vpaddd zmm3, zmm3, zmm30 701 vpaddd zmm0, zmm0, zmm4 702 vpaddd zmm1, zmm1, zmm5 703 vpaddd zmm2, zmm2, zmm6 704 vpaddd zmm3, zmm3, zmm7 705 vpxord zmm12, zmm12, zmm0 706 vpxord zmm13, zmm13, zmm1 707 vpxord zmm14, zmm14, zmm2 708 vpxord zmm15, zmm15, zmm3 709 vprord zmm12, zmm12, 16 710 vprord zmm13, zmm13, 16 711 vprord zmm14, zmm14, 16 712 vprord zmm15, zmm15, 16 713 vpaddd zmm8, zmm8, zmm12 714 vpaddd zmm9, zmm9, zmm13 715 vpaddd zmm10, zmm10, zmm14 716 vpaddd zmm11, zmm11, zmm15 717 vpxord zmm4, zmm4, zmm8 718 vpxord zmm5, zmm5, zmm9 719 vpxord zmm6, zmm6, zmm10 720 vpxord zmm7, zmm7, zmm11 721 vprord zmm4, zmm4, 12 722 vprord zmm5, zmm5, 12 723 vprord zmm6, zmm6, 12 724 vprord zmm7, zmm7, 12 725 vpaddd zmm0, zmm0, zmm29 726 vpaddd zmm1, zmm1, zmm27 727 vpaddd zmm2, zmm2, zmm26 728 vpaddd zmm3, zmm3, zmm24 729 vpaddd zmm0, zmm0, zmm4 730 vpaddd zmm1, zmm1, zmm5 731 vpaddd zmm2, zmm2, zmm6 732 vpaddd zmm3, zmm3, zmm7 733 vpxord zmm12, zmm12, zmm0 734 vpxord zmm13, zmm13, zmm1 735 vpxord zmm14, zmm14, zmm2 736 vpxord zmm15, zmm15, zmm3 737 vprord zmm12, zmm12, 8 738 vprord zmm13, zmm13, 8 739 vprord zmm14, zmm14, 8 740 vprord zmm15, zmm15, 8 741 vpaddd zmm8, zmm8, zmm12 742 vpaddd zmm9, zmm9, zmm13 743 vpaddd zmm10, zmm10, zmm14 744 vpaddd zmm11, zmm11, zmm15 745 vpxord zmm4, zmm4, zmm8 746 vpxord zmm5, zmm5, zmm9 747 vpxord zmm6, zmm6, zmm10 748 vpxord zmm7, zmm7, zmm11 749 vprord zmm4, zmm4, 7 750 vprord zmm5, zmm5, 7 751 vprord zmm6, zmm6, 7 752 vprord zmm7, zmm7, 7 753 vpaddd zmm0, zmm0, zmm23 754 vpaddd zmm1, zmm1, zmm21 755 vpaddd zmm2, zmm2, zmm16 756 vpaddd zmm3, zmm3, zmm22 757 vpaddd zmm0, zmm0, zmm5 758 vpaddd zmm1, zmm1, zmm6 759 vpaddd zmm2, zmm2, zmm7 760 vpaddd zmm3, zmm3, zmm4 761 vpxord zmm15, zmm15, zmm0 762 vpxord zmm12, zmm12, zmm1 763 vpxord zmm13, zmm13, zmm2 764 vpxord zmm14, zmm14, zmm3 765 vprord zmm15, zmm15, 16 766 vprord zmm12, zmm12, 16 767 vprord zmm13, zmm13, 16 768 vprord zmm14, zmm14, 16 769 vpaddd zmm10, zmm10, zmm15 770 vpaddd zmm11, zmm11, zmm12 771 vpaddd zmm8, zmm8, zmm13 772 vpaddd zmm9, zmm9, zmm14 773 vpxord zmm5, zmm5, zmm10 774 vpxord zmm6, zmm6, zmm11 775 vpxord zmm7, zmm7, zmm8 776 vpxord zmm4, zmm4, zmm9 777 vprord zmm5, zmm5, 12 778 vprord zmm6, zmm6, 12 779 vprord zmm7, zmm7, 12 780 vprord zmm4, zmm4, 12 781 vpaddd zmm0, zmm0, zmm18 782 vpaddd zmm1, zmm1, zmm19 783 vpaddd zmm2, zmm2, zmm17 784 vpaddd zmm3, zmm3, zmm20 785 vpaddd zmm0, zmm0, zmm5 786 vpaddd zmm1, zmm1, zmm6 787 vpaddd zmm2, zmm2, zmm7 788 vpaddd zmm3, zmm3, zmm4 789 vpxord zmm15, zmm15, zmm0 790 vpxord zmm12, zmm12, zmm1 791 vpxord zmm13, zmm13, zmm2 792 vpxord zmm14, zmm14, zmm3 793 vprord zmm15, zmm15, 8 794 vprord zmm12, zmm12, 8 795 vprord zmm13, zmm13, 8 796 vprord zmm14, zmm14, 8 797 vpaddd zmm10, zmm10, zmm15 798 vpaddd zmm11, zmm11, zmm12 799 vpaddd zmm8, zmm8, zmm13 800 vpaddd zmm9, zmm9, zmm14 801 vpxord zmm5, zmm5, zmm10 802 vpxord zmm6, zmm6, zmm11 803 vpxord zmm7, zmm7, zmm8 804 vpxord zmm4, zmm4, zmm9 805 vprord zmm5, zmm5, 7 806 vprord zmm6, zmm6, 7 807 vprord zmm7, zmm7, 7 808 vprord zmm4, zmm4, 7 809 vpaddd zmm0, zmm0, zmm25 810 vpaddd zmm1, zmm1, zmm27 811 vpaddd zmm2, zmm2, zmm24 812 vpaddd zmm3, zmm3, zmm31 813 vpaddd zmm0, zmm0, zmm4 814 vpaddd zmm1, zmm1, zmm5 815 vpaddd zmm2, zmm2, zmm6 816 vpaddd zmm3, zmm3, zmm7 817 vpxord zmm12, zmm12, zmm0 818 vpxord zmm13, zmm13, zmm1 819 vpxord zmm14, zmm14, zmm2 820 vpxord zmm15, zmm15, zmm3 821 vprord zmm12, zmm12, 16 822 vprord zmm13, zmm13, 16 823 vprord zmm14, zmm14, 16 824 vprord zmm15, zmm15, 16 825 vpaddd zmm8, zmm8, zmm12 826 vpaddd zmm9, zmm9, zmm13 827 vpaddd zmm10, zmm10, zmm14 828 vpaddd zmm11, zmm11, zmm15 829 vpxord zmm4, zmm4, zmm8 830 vpxord zmm5, zmm5, zmm9 831 vpxord zmm6, zmm6, zmm10 832 vpxord zmm7, zmm7, zmm11 833 vprord zmm4, zmm4, 12 834 vprord zmm5, zmm5, 12 835 vprord zmm6, zmm6, 12 836 vprord zmm7, zmm7, 12 837 vpaddd zmm0, zmm0, zmm30 838 vpaddd zmm1, zmm1, zmm21 839 vpaddd zmm2, zmm2, zmm28 840 vpaddd zmm3, zmm3, zmm17 841 vpaddd zmm0, zmm0, zmm4 842 vpaddd zmm1, zmm1, zmm5 843 vpaddd zmm2, zmm2, zmm6 844 vpaddd zmm3, zmm3, zmm7 845 vpxord zmm12, zmm12, zmm0 846 vpxord zmm13, zmm13, zmm1 847 vpxord zmm14, zmm14, zmm2 848 vpxord zmm15, zmm15, zmm3 849 vprord zmm12, zmm12, 8 850 vprord zmm13, zmm13, 8 851 vprord zmm14, zmm14, 8 852 vprord zmm15, zmm15, 8 853 vpaddd zmm8, zmm8, zmm12 854 vpaddd zmm9, zmm9, zmm13 855 vpaddd zmm10, zmm10, zmm14 856 vpaddd zmm11, zmm11, zmm15 857 vpxord zmm4, zmm4, zmm8 858 vpxord zmm5, zmm5, zmm9 859 vpxord zmm6, zmm6, zmm10 860 vpxord zmm7, zmm7, zmm11 861 vprord zmm4, zmm4, 7 862 vprord zmm5, zmm5, 7 863 vprord zmm6, zmm6, 7 864 vprord zmm7, zmm7, 7 865 vpaddd zmm0, zmm0, zmm29 866 vpaddd zmm1, zmm1, zmm16 867 vpaddd zmm2, zmm2, zmm18 868 vpaddd zmm3, zmm3, zmm20 869 vpaddd zmm0, zmm0, zmm5 870 vpaddd zmm1, zmm1, zmm6 871 vpaddd zmm2, zmm2, zmm7 872 vpaddd zmm3, zmm3, zmm4 873 vpxord zmm15, zmm15, zmm0 874 vpxord zmm12, zmm12, zmm1 875 vpxord zmm13, zmm13, zmm2 876 vpxord zmm14, zmm14, zmm3 877 vprord zmm15, zmm15, 16 878 vprord zmm12, zmm12, 16 879 vprord zmm13, zmm13, 16 880 vprord zmm14, zmm14, 16 881 vpaddd zmm10, zmm10, zmm15 882 vpaddd zmm11, zmm11, zmm12 883 vpaddd zmm8, zmm8, zmm13 884 vpaddd zmm9, zmm9, zmm14 885 vpxord zmm5, zmm5, zmm10 886 vpxord zmm6, zmm6, zmm11 887 vpxord zmm7, zmm7, zmm8 888 vpxord zmm4, zmm4, zmm9 889 vprord zmm5, zmm5, 12 890 vprord zmm6, zmm6, 12 891 vprord zmm7, zmm7, 12 892 vprord zmm4, zmm4, 12 893 vpaddd zmm0, zmm0, zmm19 894 vpaddd zmm1, zmm1, zmm26 895 vpaddd zmm2, zmm2, zmm22 896 vpaddd zmm3, zmm3, zmm23 897 vpaddd zmm0, zmm0, zmm5 898 vpaddd zmm1, zmm1, zmm6 899 vpaddd zmm2, zmm2, zmm7 900 vpaddd zmm3, zmm3, zmm4 901 vpxord zmm15, zmm15, zmm0 902 vpxord zmm12, zmm12, zmm1 903 vpxord zmm13, zmm13, zmm2 904 vpxord zmm14, zmm14, zmm3 905 vprord zmm15, zmm15, 8 906 vprord zmm12, zmm12, 8 907 vprord zmm13, zmm13, 8 908 vprord zmm14, zmm14, 8 909 vpaddd zmm10, zmm10, zmm15 910 vpaddd zmm11, zmm11, zmm12 911 vpaddd zmm8, zmm8, zmm13 912 vpaddd zmm9, zmm9, zmm14 913 vpxord zmm5, zmm5, zmm10 914 vpxord zmm6, zmm6, zmm11 915 vpxord zmm7, zmm7, zmm8 916 vpxord zmm4, zmm4, zmm9 917 vprord zmm5, zmm5, 7 918 vprord zmm6, zmm6, 7 919 vprord zmm7, zmm7, 7 920 vprord zmm4, zmm4, 7 921 vpaddd zmm0, zmm0, zmm27 922 vpaddd zmm1, zmm1, zmm21 923 vpaddd zmm2, zmm2, zmm17 924 vpaddd zmm3, zmm3, zmm24 925 vpaddd zmm0, zmm0, zmm4 926 vpaddd zmm1, zmm1, zmm5 927 vpaddd zmm2, zmm2, zmm6 928 vpaddd zmm3, zmm3, zmm7 929 vpxord zmm12, zmm12, zmm0 930 vpxord zmm13, zmm13, zmm1 931 vpxord zmm14, zmm14, zmm2 932 vpxord zmm15, zmm15, zmm3 933 vprord zmm12, zmm12, 16 934 vprord zmm13, zmm13, 16 935 vprord zmm14, zmm14, 16 936 vprord zmm15, zmm15, 16 937 vpaddd zmm8, zmm8, zmm12 938 vpaddd zmm9, zmm9, zmm13 939 vpaddd zmm10, zmm10, zmm14 940 vpaddd zmm11, zmm11, zmm15 941 vpxord zmm4, zmm4, zmm8 942 vpxord zmm5, zmm5, zmm9 943 vpxord zmm6, zmm6, zmm10 944 vpxord zmm7, zmm7, zmm11 945 vprord zmm4, zmm4, 12 946 vprord zmm5, zmm5, 12 947 vprord zmm6, zmm6, 12 948 vprord zmm7, zmm7, 12 949 vpaddd zmm0, zmm0, zmm31 950 vpaddd zmm1, zmm1, zmm16 951 vpaddd zmm2, zmm2, zmm25 952 vpaddd zmm3, zmm3, zmm22 953 vpaddd zmm0, zmm0, zmm4 954 vpaddd zmm1, zmm1, zmm5 955 vpaddd zmm2, zmm2, zmm6 956 vpaddd zmm3, zmm3, zmm7 957 vpxord zmm12, zmm12, zmm0 958 vpxord zmm13, zmm13, zmm1 959 vpxord zmm14, zmm14, zmm2 960 vpxord zmm15, zmm15, zmm3 961 vprord zmm12, zmm12, 8 962 vprord zmm13, zmm13, 8 963 vprord zmm14, zmm14, 8 964 vprord zmm15, zmm15, 8 965 vpaddd zmm8, zmm8, zmm12 966 vpaddd zmm9, zmm9, zmm13 967 vpaddd zmm10, zmm10, zmm14 968 vpaddd zmm11, zmm11, zmm15 969 vpxord zmm4, zmm4, zmm8 970 vpxord zmm5, zmm5, zmm9 971 vpxord zmm6, zmm6, zmm10 972 vpxord zmm7, zmm7, zmm11 973 vprord zmm4, zmm4, 7 974 vprord zmm5, zmm5, 7 975 vprord zmm6, zmm6, 7 976 vprord zmm7, zmm7, 7 977 vpaddd zmm0, zmm0, zmm30 978 vpaddd zmm1, zmm1, zmm18 979 vpaddd zmm2, zmm2, zmm19 980 vpaddd zmm3, zmm3, zmm23 981 vpaddd zmm0, zmm0, zmm5 982 vpaddd zmm1, zmm1, zmm6 983 vpaddd zmm2, zmm2, zmm7 984 vpaddd zmm3, zmm3, zmm4 985 vpxord zmm15, zmm15, zmm0 986 vpxord zmm12, zmm12, zmm1 987 vpxord zmm13, zmm13, zmm2 988 vpxord zmm14, zmm14, zmm3 989 vprord zmm15, zmm15, 16 990 vprord zmm12, zmm12, 16 991 vprord zmm13, zmm13, 16 992 vprord zmm14, zmm14, 16 993 vpaddd zmm10, zmm10, zmm15 994 vpaddd zmm11, zmm11, zmm12 995 vpaddd zmm8, zmm8, zmm13 996 vpaddd zmm9, zmm9, zmm14 997 vpxord zmm5, zmm5, zmm10 998 vpxord zmm6, zmm6, zmm11 999 vpxord zmm7, zmm7, zmm8 1000 vpxord zmm4, zmm4, zmm9 1001 vprord zmm5, zmm5, 12 1002 vprord zmm6, zmm6, 12 1003 vprord zmm7, zmm7, 12 1004 vprord zmm4, zmm4, 12 1005 vpaddd zmm0, zmm0, zmm26 1006 vpaddd zmm1, zmm1, zmm28 1007 vpaddd zmm2, zmm2, zmm20 1008 vpaddd zmm3, zmm3, zmm29 1009 vpaddd zmm0, zmm0, zmm5 1010 vpaddd zmm1, zmm1, zmm6 1011 vpaddd zmm2, zmm2, zmm7 1012 vpaddd zmm3, zmm3, zmm4 1013 vpxord zmm15, zmm15, zmm0 1014 vpxord zmm12, zmm12, zmm1 1015 vpxord zmm13, zmm13, zmm2 1016 vpxord zmm14, zmm14, zmm3 1017 vprord zmm15, zmm15, 8 1018 vprord zmm12, zmm12, 8 1019 vprord zmm13, zmm13, 8 1020 vprord zmm14, zmm14, 8 1021 vpaddd zmm10, zmm10, zmm15 1022 vpaddd zmm11, zmm11, zmm12 1023 vpaddd zmm8, zmm8, zmm13 1024 vpaddd zmm9, zmm9, zmm14 1025 vpxord zmm5, zmm5, zmm10 1026 vpxord zmm6, zmm6, zmm11 1027 vpxord zmm7, zmm7, zmm8 1028 vpxord zmm4, zmm4, zmm9 1029 vprord zmm5, zmm5, 7 1030 vprord zmm6, zmm6, 7 1031 vprord zmm7, zmm7, 7 1032 vprord zmm4, zmm4, 7 1033 vpxord zmm0, zmm0, zmm8 1034 vpxord zmm1, zmm1, zmm9 1035 vpxord zmm2, zmm2, zmm10 1036 vpxord zmm3, zmm3, zmm11 1037 vpxord zmm4, zmm4, zmm12 1038 vpxord zmm5, zmm5, zmm13 1039 vpxord zmm6, zmm6, zmm14 1040 vpxord zmm7, zmm7, zmm15 1041 movzx eax, byte ptr [rbp+0x38] 1042 jne 9b 1043 mov rbx, qword ptr [rbp+0x50] 1044 vpunpckldq zmm16, zmm0, zmm1 1045 vpunpckhdq zmm17, zmm0, zmm1 1046 vpunpckldq zmm18, zmm2, zmm3 1047 vpunpckhdq zmm19, zmm2, zmm3 1048 vpunpckldq zmm20, zmm4, zmm5 1049 vpunpckhdq zmm21, zmm4, zmm5 1050 vpunpckldq zmm22, zmm6, zmm7 1051 vpunpckhdq zmm23, zmm6, zmm7 1052 vpunpcklqdq zmm0, zmm16, zmm18 1053 vpunpckhqdq zmm1, zmm16, zmm18 1054 vpunpcklqdq zmm2, zmm17, zmm19 1055 vpunpckhqdq zmm3, zmm17, zmm19 1056 vpunpcklqdq zmm4, zmm20, zmm22 1057 vpunpckhqdq zmm5, zmm20, zmm22 1058 vpunpcklqdq zmm6, zmm21, zmm23 1059 vpunpckhqdq zmm7, zmm21, zmm23 1060 vshufi32x4 zmm16, zmm0, zmm4, 0x88 1061 vshufi32x4 zmm17, zmm1, zmm5, 0x88 1062 vshufi32x4 zmm18, zmm2, zmm6, 0x88 1063 vshufi32x4 zmm19, zmm3, zmm7, 0x88 1064 vshufi32x4 zmm20, zmm0, zmm4, 0xDD 1065 vshufi32x4 zmm21, zmm1, zmm5, 0xDD 1066 vshufi32x4 zmm22, zmm2, zmm6, 0xDD 1067 vshufi32x4 zmm23, zmm3, zmm7, 0xDD 1068 vshufi32x4 zmm0, zmm16, zmm17, 0x88 1069 vshufi32x4 zmm1, zmm18, zmm19, 0x88 1070 vshufi32x4 zmm2, zmm20, zmm21, 0x88 1071 vshufi32x4 zmm3, zmm22, zmm23, 0x88 1072 vshufi32x4 zmm4, zmm16, zmm17, 0xDD 1073 vshufi32x4 zmm5, zmm18, zmm19, 0xDD 1074 vshufi32x4 zmm6, zmm20, zmm21, 0xDD 1075 vshufi32x4 zmm7, zmm22, zmm23, 0xDD 1076 vmovdqu32 zmmword ptr [rbx], zmm0 1077 vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1 1078 vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2 1079 vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3 1080 vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4 1081 vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5 1082 vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6 1083 vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7 1084 vmovdqa32 zmm0, zmmword ptr [rsp] 1085 vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40] 1086 vmovdqa32 zmm2, zmm0 1087 vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16} 1088 vpcmpltud k2, zmm2, zmm0 1089 vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16} 1090 vmovdqa32 zmmword ptr [rsp], zmm2 1091 vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1 1092 add rdi, 128 1093 add rbx, 512 1094 mov qword ptr [rbp+0x50], rbx 1095 sub rsi, 16 1096 cmp rsi, 16 1097 jnc 2b 1098 test rsi, rsi 1099 jnz 3f 11004: 1101 vzeroupper 1102 mov rsp, rbp 1103 pop rbp 1104 pop rbx 1105 pop r12 1106 pop r13 1107 pop r14 1108 pop r15 1109 ret 1110.p2align 6 11113: 1112 test esi, 0x8 1113 je 3f 1114 vpbroadcastd ymm0, dword ptr [rcx] 1115 vpbroadcastd ymm1, dword ptr [rcx+0x4] 1116 vpbroadcastd ymm2, dword ptr [rcx+0x8] 1117 vpbroadcastd ymm3, dword ptr [rcx+0xC] 1118 vpbroadcastd ymm4, dword ptr [rcx+0x10] 1119 vpbroadcastd ymm5, dword ptr [rcx+0x14] 1120 vpbroadcastd ymm6, dword ptr [rcx+0x18] 1121 vpbroadcastd ymm7, dword ptr [rcx+0x1C] 1122 mov r8, qword ptr [rdi] 1123 mov r9, qword ptr [rdi+0x8] 1124 mov r10, qword ptr [rdi+0x10] 1125 mov r11, qword ptr [rdi+0x18] 1126 mov r12, qword ptr [rdi+0x20] 1127 mov r13, qword ptr [rdi+0x28] 1128 mov r14, qword ptr [rdi+0x30] 1129 mov r15, qword ptr [rdi+0x38] 1130 movzx eax, byte ptr [rbp+0x38] 1131 movzx ebx, byte ptr [rbp+0x40] 1132 or eax, ebx 1133 xor edx, edx 11342: 1135 movzx ebx, byte ptr [rbp+0x48] 1136 or ebx, eax 1137 add rdx, 64 1138 cmp rdx, qword ptr [rsp+0x80] 1139 cmove eax, ebx 1140 mov dword ptr [rsp+0x88], eax 1141 vmovups xmm8, xmmword ptr [r8+rdx-0x40] 1142 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01 1143 vmovups xmm9, xmmword ptr [r9+rdx-0x40] 1144 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01 1145 vunpcklpd ymm12, ymm8, ymm9 1146 vunpckhpd ymm13, ymm8, ymm9 1147 vmovups xmm10, xmmword ptr [r10+rdx-0x40] 1148 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01 1149 vmovups xmm11, xmmword ptr [r11+rdx-0x40] 1150 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01 1151 vunpcklpd ymm14, ymm10, ymm11 1152 vunpckhpd ymm15, ymm10, ymm11 1153 vshufps ymm16, ymm12, ymm14, 136 1154 vshufps ymm17, ymm12, ymm14, 221 1155 vshufps ymm18, ymm13, ymm15, 136 1156 vshufps ymm19, ymm13, ymm15, 221 1157 vmovups xmm8, xmmword ptr [r8+rdx-0x30] 1158 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01 1159 vmovups xmm9, xmmword ptr [r9+rdx-0x30] 1160 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01 1161 vunpcklpd ymm12, ymm8, ymm9 1162 vunpckhpd ymm13, ymm8, ymm9 1163 vmovups xmm10, xmmword ptr [r10+rdx-0x30] 1164 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01 1165 vmovups xmm11, xmmword ptr [r11+rdx-0x30] 1166 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01 1167 vunpcklpd ymm14, ymm10, ymm11 1168 vunpckhpd ymm15, ymm10, ymm11 1169 vshufps ymm20, ymm12, ymm14, 136 1170 vshufps ymm21, ymm12, ymm14, 221 1171 vshufps ymm22, ymm13, ymm15, 136 1172 vshufps ymm23, ymm13, ymm15, 221 1173 vmovups xmm8, xmmword ptr [r8+rdx-0x20] 1174 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01 1175 vmovups xmm9, xmmword ptr [r9+rdx-0x20] 1176 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01 1177 vunpcklpd ymm12, ymm8, ymm9 1178 vunpckhpd ymm13, ymm8, ymm9 1179 vmovups xmm10, xmmword ptr [r10+rdx-0x20] 1180 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01 1181 vmovups xmm11, xmmword ptr [r11+rdx-0x20] 1182 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01 1183 vunpcklpd ymm14, ymm10, ymm11 1184 vunpckhpd ymm15, ymm10, ymm11 1185 vshufps ymm24, ymm12, ymm14, 136 1186 vshufps ymm25, ymm12, ymm14, 221 1187 vshufps ymm26, ymm13, ymm15, 136 1188 vshufps ymm27, ymm13, ymm15, 221 1189 vmovups xmm8, xmmword ptr [r8+rdx-0x10] 1190 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01 1191 vmovups xmm9, xmmword ptr [r9+rdx-0x10] 1192 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01 1193 vunpcklpd ymm12, ymm8, ymm9 1194 vunpckhpd ymm13, ymm8, ymm9 1195 vmovups xmm10, xmmword ptr [r10+rdx-0x10] 1196 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01 1197 vmovups xmm11, xmmword ptr [r11+rdx-0x10] 1198 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01 1199 vunpcklpd ymm14, ymm10, ymm11 1200 vunpckhpd ymm15, ymm10, ymm11 1201 vshufps ymm28, ymm12, ymm14, 136 1202 vshufps ymm29, ymm12, ymm14, 221 1203 vshufps ymm30, ymm13, ymm15, 136 1204 vshufps ymm31, ymm13, ymm15, 221 1205 vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip] 1206 vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip] 1207 vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip] 1208 vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip] 1209 vmovdqa ymm12, ymmword ptr [rsp] 1210 vmovdqa ymm13, ymmword ptr [rsp+0x40] 1211 vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip] 1212 vpbroadcastd ymm15, dword ptr [rsp+0x88] 1213 vpaddd ymm0, ymm0, ymm16 1214 vpaddd ymm1, ymm1, ymm18 1215 vpaddd ymm2, ymm2, ymm20 1216 vpaddd ymm3, ymm3, ymm22 1217 vpaddd ymm0, ymm0, ymm4 1218 vpaddd ymm1, ymm1, ymm5 1219 vpaddd ymm2, ymm2, ymm6 1220 vpaddd ymm3, ymm3, ymm7 1221 vpxord ymm12, ymm12, ymm0 1222 vpxord ymm13, ymm13, ymm1 1223 vpxord ymm14, ymm14, ymm2 1224 vpxord ymm15, ymm15, ymm3 1225 vprord ymm12, ymm12, 16 1226 vprord ymm13, ymm13, 16 1227 vprord ymm14, ymm14, 16 1228 vprord ymm15, ymm15, 16 1229 vpaddd ymm8, ymm8, ymm12 1230 vpaddd ymm9, ymm9, ymm13 1231 vpaddd ymm10, ymm10, ymm14 1232 vpaddd ymm11, ymm11, ymm15 1233 vpxord ymm4, ymm4, ymm8 1234 vpxord ymm5, ymm5, ymm9 1235 vpxord ymm6, ymm6, ymm10 1236 vpxord ymm7, ymm7, ymm11 1237 vprord ymm4, ymm4, 12 1238 vprord ymm5, ymm5, 12 1239 vprord ymm6, ymm6, 12 1240 vprord ymm7, ymm7, 12 1241 vpaddd ymm0, ymm0, ymm17 1242 vpaddd ymm1, ymm1, ymm19 1243 vpaddd ymm2, ymm2, ymm21 1244 vpaddd ymm3, ymm3, ymm23 1245 vpaddd ymm0, ymm0, ymm4 1246 vpaddd ymm1, ymm1, ymm5 1247 vpaddd ymm2, ymm2, ymm6 1248 vpaddd ymm3, ymm3, ymm7 1249 vpxord ymm12, ymm12, ymm0 1250 vpxord ymm13, ymm13, ymm1 1251 vpxord ymm14, ymm14, ymm2 1252 vpxord ymm15, ymm15, ymm3 1253 vprord ymm12, ymm12, 8 1254 vprord ymm13, ymm13, 8 1255 vprord ymm14, ymm14, 8 1256 vprord ymm15, ymm15, 8 1257 vpaddd ymm8, ymm8, ymm12 1258 vpaddd ymm9, ymm9, ymm13 1259 vpaddd ymm10, ymm10, ymm14 1260 vpaddd ymm11, ymm11, ymm15 1261 vpxord ymm4, ymm4, ymm8 1262 vpxord ymm5, ymm5, ymm9 1263 vpxord ymm6, ymm6, ymm10 1264 vpxord ymm7, ymm7, ymm11 1265 vprord ymm4, ymm4, 7 1266 vprord ymm5, ymm5, 7 1267 vprord ymm6, ymm6, 7 1268 vprord ymm7, ymm7, 7 1269 vpaddd ymm0, ymm0, ymm24 1270 vpaddd ymm1, ymm1, ymm26 1271 vpaddd ymm2, ymm2, ymm28 1272 vpaddd ymm3, ymm3, ymm30 1273 vpaddd ymm0, ymm0, ymm5 1274 vpaddd ymm1, ymm1, ymm6 1275 vpaddd ymm2, ymm2, ymm7 1276 vpaddd ymm3, ymm3, ymm4 1277 vpxord ymm15, ymm15, ymm0 1278 vpxord ymm12, ymm12, ymm1 1279 vpxord ymm13, ymm13, ymm2 1280 vpxord ymm14, ymm14, ymm3 1281 vprord ymm15, ymm15, 16 1282 vprord ymm12, ymm12, 16 1283 vprord ymm13, ymm13, 16 1284 vprord ymm14, ymm14, 16 1285 vpaddd ymm10, ymm10, ymm15 1286 vpaddd ymm11, ymm11, ymm12 1287 vpaddd ymm8, ymm8, ymm13 1288 vpaddd ymm9, ymm9, ymm14 1289 vpxord ymm5, ymm5, ymm10 1290 vpxord ymm6, ymm6, ymm11 1291 vpxord ymm7, ymm7, ymm8 1292 vpxord ymm4, ymm4, ymm9 1293 vprord ymm5, ymm5, 12 1294 vprord ymm6, ymm6, 12 1295 vprord ymm7, ymm7, 12 1296 vprord ymm4, ymm4, 12 1297 vpaddd ymm0, ymm0, ymm25 1298 vpaddd ymm1, ymm1, ymm27 1299 vpaddd ymm2, ymm2, ymm29 1300 vpaddd ymm3, ymm3, ymm31 1301 vpaddd ymm0, ymm0, ymm5 1302 vpaddd ymm1, ymm1, ymm6 1303 vpaddd ymm2, ymm2, ymm7 1304 vpaddd ymm3, ymm3, ymm4 1305 vpxord ymm15, ymm15, ymm0 1306 vpxord ymm12, ymm12, ymm1 1307 vpxord ymm13, ymm13, ymm2 1308 vpxord ymm14, ymm14, ymm3 1309 vprord ymm15, ymm15, 8 1310 vprord ymm12, ymm12, 8 1311 vprord ymm13, ymm13, 8 1312 vprord ymm14, ymm14, 8 1313 vpaddd ymm10, ymm10, ymm15 1314 vpaddd ymm11, ymm11, ymm12 1315 vpaddd ymm8, ymm8, ymm13 1316 vpaddd ymm9, ymm9, ymm14 1317 vpxord ymm5, ymm5, ymm10 1318 vpxord ymm6, ymm6, ymm11 1319 vpxord ymm7, ymm7, ymm8 1320 vpxord ymm4, ymm4, ymm9 1321 vprord ymm5, ymm5, 7 1322 vprord ymm6, ymm6, 7 1323 vprord ymm7, ymm7, 7 1324 vprord ymm4, ymm4, 7 1325 vpaddd ymm0, ymm0, ymm18 1326 vpaddd ymm1, ymm1, ymm19 1327 vpaddd ymm2, ymm2, ymm23 1328 vpaddd ymm3, ymm3, ymm20 1329 vpaddd ymm0, ymm0, ymm4 1330 vpaddd ymm1, ymm1, ymm5 1331 vpaddd ymm2, ymm2, ymm6 1332 vpaddd ymm3, ymm3, ymm7 1333 vpxord ymm12, ymm12, ymm0 1334 vpxord ymm13, ymm13, ymm1 1335 vpxord ymm14, ymm14, ymm2 1336 vpxord ymm15, ymm15, ymm3 1337 vprord ymm12, ymm12, 16 1338 vprord ymm13, ymm13, 16 1339 vprord ymm14, ymm14, 16 1340 vprord ymm15, ymm15, 16 1341 vpaddd ymm8, ymm8, ymm12 1342 vpaddd ymm9, ymm9, ymm13 1343 vpaddd ymm10, ymm10, ymm14 1344 vpaddd ymm11, ymm11, ymm15 1345 vpxord ymm4, ymm4, ymm8 1346 vpxord ymm5, ymm5, ymm9 1347 vpxord ymm6, ymm6, ymm10 1348 vpxord ymm7, ymm7, ymm11 1349 vprord ymm4, ymm4, 12 1350 vprord ymm5, ymm5, 12 1351 vprord ymm6, ymm6, 12 1352 vprord ymm7, ymm7, 12 1353 vpaddd ymm0, ymm0, ymm22 1354 vpaddd ymm1, ymm1, ymm26 1355 vpaddd ymm2, ymm2, ymm16 1356 vpaddd ymm3, ymm3, ymm29 1357 vpaddd ymm0, ymm0, ymm4 1358 vpaddd ymm1, ymm1, ymm5 1359 vpaddd ymm2, ymm2, ymm6 1360 vpaddd ymm3, ymm3, ymm7 1361 vpxord ymm12, ymm12, ymm0 1362 vpxord ymm13, ymm13, ymm1 1363 vpxord ymm14, ymm14, ymm2 1364 vpxord ymm15, ymm15, ymm3 1365 vprord ymm12, ymm12, 8 1366 vprord ymm13, ymm13, 8 1367 vprord ymm14, ymm14, 8 1368 vprord ymm15, ymm15, 8 1369 vpaddd ymm8, ymm8, ymm12 1370 vpaddd ymm9, ymm9, ymm13 1371 vpaddd ymm10, ymm10, ymm14 1372 vpaddd ymm11, ymm11, ymm15 1373 vpxord ymm4, ymm4, ymm8 1374 vpxord ymm5, ymm5, ymm9 1375 vpxord ymm6, ymm6, ymm10 1376 vpxord ymm7, ymm7, ymm11 1377 vprord ymm4, ymm4, 7 1378 vprord ymm5, ymm5, 7 1379 vprord ymm6, ymm6, 7 1380 vprord ymm7, ymm7, 7 1381 vpaddd ymm0, ymm0, ymm17 1382 vpaddd ymm1, ymm1, ymm28 1383 vpaddd ymm2, ymm2, ymm25 1384 vpaddd ymm3, ymm3, ymm31 1385 vpaddd ymm0, ymm0, ymm5 1386 vpaddd ymm1, ymm1, ymm6 1387 vpaddd ymm2, ymm2, ymm7 1388 vpaddd ymm3, ymm3, ymm4 1389 vpxord ymm15, ymm15, ymm0 1390 vpxord ymm12, ymm12, ymm1 1391 vpxord ymm13, ymm13, ymm2 1392 vpxord ymm14, ymm14, ymm3 1393 vprord ymm15, ymm15, 16 1394 vprord ymm12, ymm12, 16 1395 vprord ymm13, ymm13, 16 1396 vprord ymm14, ymm14, 16 1397 vpaddd ymm10, ymm10, ymm15 1398 vpaddd ymm11, ymm11, ymm12 1399 vpaddd ymm8, ymm8, ymm13 1400 vpaddd ymm9, ymm9, ymm14 1401 vpxord ymm5, ymm5, ymm10 1402 vpxord ymm6, ymm6, ymm11 1403 vpxord ymm7, ymm7, ymm8 1404 vpxord ymm4, ymm4, ymm9 1405 vprord ymm5, ymm5, 12 1406 vprord ymm6, ymm6, 12 1407 vprord ymm7, ymm7, 12 1408 vprord ymm4, ymm4, 12 1409 vpaddd ymm0, ymm0, ymm27 1410 vpaddd ymm1, ymm1, ymm21 1411 vpaddd ymm2, ymm2, ymm30 1412 vpaddd ymm3, ymm3, ymm24 1413 vpaddd ymm0, ymm0, ymm5 1414 vpaddd ymm1, ymm1, ymm6 1415 vpaddd ymm2, ymm2, ymm7 1416 vpaddd ymm3, ymm3, ymm4 1417 vpxord ymm15, ymm15, ymm0 1418 vpxord ymm12, ymm12, ymm1 1419 vpxord ymm13, ymm13, ymm2 1420 vpxord ymm14, ymm14, ymm3 1421 vprord ymm15, ymm15, 8 1422 vprord ymm12, ymm12, 8 1423 vprord ymm13, ymm13, 8 1424 vprord ymm14, ymm14, 8 1425 vpaddd ymm10, ymm10, ymm15 1426 vpaddd ymm11, ymm11, ymm12 1427 vpaddd ymm8, ymm8, ymm13 1428 vpaddd ymm9, ymm9, ymm14 1429 vpxord ymm5, ymm5, ymm10 1430 vpxord ymm6, ymm6, ymm11 1431 vpxord ymm7, ymm7, ymm8 1432 vpxord ymm4, ymm4, ymm9 1433 vprord ymm5, ymm5, 7 1434 vprord ymm6, ymm6, 7 1435 vprord ymm7, ymm7, 7 1436 vprord ymm4, ymm4, 7 1437 vpaddd ymm0, ymm0, ymm19 1438 vpaddd ymm1, ymm1, ymm26 1439 vpaddd ymm2, ymm2, ymm29 1440 vpaddd ymm3, ymm3, ymm23 1441 vpaddd ymm0, ymm0, ymm4 1442 vpaddd ymm1, ymm1, ymm5 1443 vpaddd ymm2, ymm2, ymm6 1444 vpaddd ymm3, ymm3, ymm7 1445 vpxord ymm12, ymm12, ymm0 1446 vpxord ymm13, ymm13, ymm1 1447 vpxord ymm14, ymm14, ymm2 1448 vpxord ymm15, ymm15, ymm3 1449 vprord ymm12, ymm12, 16 1450 vprord ymm13, ymm13, 16 1451 vprord ymm14, ymm14, 16 1452 vprord ymm15, ymm15, 16 1453 vpaddd ymm8, ymm8, ymm12 1454 vpaddd ymm9, ymm9, ymm13 1455 vpaddd ymm10, ymm10, ymm14 1456 vpaddd ymm11, ymm11, ymm15 1457 vpxord ymm4, ymm4, ymm8 1458 vpxord ymm5, ymm5, ymm9 1459 vpxord ymm6, ymm6, ymm10 1460 vpxord ymm7, ymm7, ymm11 1461 vprord ymm4, ymm4, 12 1462 vprord ymm5, ymm5, 12 1463 vprord ymm6, ymm6, 12 1464 vprord ymm7, ymm7, 12 1465 vpaddd ymm0, ymm0, ymm20 1466 vpaddd ymm1, ymm1, ymm28 1467 vpaddd ymm2, ymm2, ymm18 1468 vpaddd ymm3, ymm3, ymm30 1469 vpaddd ymm0, ymm0, ymm4 1470 vpaddd ymm1, ymm1, ymm5 1471 vpaddd ymm2, ymm2, ymm6 1472 vpaddd ymm3, ymm3, ymm7 1473 vpxord ymm12, ymm12, ymm0 1474 vpxord ymm13, ymm13, ymm1 1475 vpxord ymm14, ymm14, ymm2 1476 vpxord ymm15, ymm15, ymm3 1477 vprord ymm12, ymm12, 8 1478 vprord ymm13, ymm13, 8 1479 vprord ymm14, ymm14, 8 1480 vprord ymm15, ymm15, 8 1481 vpaddd ymm8, ymm8, ymm12 1482 vpaddd ymm9, ymm9, ymm13 1483 vpaddd ymm10, ymm10, ymm14 1484 vpaddd ymm11, ymm11, ymm15 1485 vpxord ymm4, ymm4, ymm8 1486 vpxord ymm5, ymm5, ymm9 1487 vpxord ymm6, ymm6, ymm10 1488 vpxord ymm7, ymm7, ymm11 1489 vprord ymm4, ymm4, 7 1490 vprord ymm5, ymm5, 7 1491 vprord ymm6, ymm6, 7 1492 vprord ymm7, ymm7, 7 1493 vpaddd ymm0, ymm0, ymm22 1494 vpaddd ymm1, ymm1, ymm25 1495 vpaddd ymm2, ymm2, ymm27 1496 vpaddd ymm3, ymm3, ymm24 1497 vpaddd ymm0, ymm0, ymm5 1498 vpaddd ymm1, ymm1, ymm6 1499 vpaddd ymm2, ymm2, ymm7 1500 vpaddd ymm3, ymm3, ymm4 1501 vpxord ymm15, ymm15, ymm0 1502 vpxord ymm12, ymm12, ymm1 1503 vpxord ymm13, ymm13, ymm2 1504 vpxord ymm14, ymm14, ymm3 1505 vprord ymm15, ymm15, 16 1506 vprord ymm12, ymm12, 16 1507 vprord ymm13, ymm13, 16 1508 vprord ymm14, ymm14, 16 1509 vpaddd ymm10, ymm10, ymm15 1510 vpaddd ymm11, ymm11, ymm12 1511 vpaddd ymm8, ymm8, ymm13 1512 vpaddd ymm9, ymm9, ymm14 1513 vpxord ymm5, ymm5, ymm10 1514 vpxord ymm6, ymm6, ymm11 1515 vpxord ymm7, ymm7, ymm8 1516 vpxord ymm4, ymm4, ymm9 1517 vprord ymm5, ymm5, 12 1518 vprord ymm6, ymm6, 12 1519 vprord ymm7, ymm7, 12 1520 vprord ymm4, ymm4, 12 1521 vpaddd ymm0, ymm0, ymm21 1522 vpaddd ymm1, ymm1, ymm16 1523 vpaddd ymm2, ymm2, ymm31 1524 vpaddd ymm3, ymm3, ymm17 1525 vpaddd ymm0, ymm0, ymm5 1526 vpaddd ymm1, ymm1, ymm6 1527 vpaddd ymm2, ymm2, ymm7 1528 vpaddd ymm3, ymm3, ymm4 1529 vpxord ymm15, ymm15, ymm0 1530 vpxord ymm12, ymm12, ymm1 1531 vpxord ymm13, ymm13, ymm2 1532 vpxord ymm14, ymm14, ymm3 1533 vprord ymm15, ymm15, 8 1534 vprord ymm12, ymm12, 8 1535 vprord ymm13, ymm13, 8 1536 vprord ymm14, ymm14, 8 1537 vpaddd ymm10, ymm10, ymm15 1538 vpaddd ymm11, ymm11, ymm12 1539 vpaddd ymm8, ymm8, ymm13 1540 vpaddd ymm9, ymm9, ymm14 1541 vpxord ymm5, ymm5, ymm10 1542 vpxord ymm6, ymm6, ymm11 1543 vpxord ymm7, ymm7, ymm8 1544 vpxord ymm4, ymm4, ymm9 1545 vprord ymm5, ymm5, 7 1546 vprord ymm6, ymm6, 7 1547 vprord ymm7, ymm7, 7 1548 vprord ymm4, ymm4, 7 1549 vpaddd ymm0, ymm0, ymm26 1550 vpaddd ymm1, ymm1, ymm28 1551 vpaddd ymm2, ymm2, ymm30 1552 vpaddd ymm3, ymm3, ymm29 1553 vpaddd ymm0, ymm0, ymm4 1554 vpaddd ymm1, ymm1, ymm5 1555 vpaddd ymm2, ymm2, ymm6 1556 vpaddd ymm3, ymm3, ymm7 1557 vpxord ymm12, ymm12, ymm0 1558 vpxord ymm13, ymm13, ymm1 1559 vpxord ymm14, ymm14, ymm2 1560 vpxord ymm15, ymm15, ymm3 1561 vprord ymm12, ymm12, 16 1562 vprord ymm13, ymm13, 16 1563 vprord ymm14, ymm14, 16 1564 vprord ymm15, ymm15, 16 1565 vpaddd ymm8, ymm8, ymm12 1566 vpaddd ymm9, ymm9, ymm13 1567 vpaddd ymm10, ymm10, ymm14 1568 vpaddd ymm11, ymm11, ymm15 1569 vpxord ymm4, ymm4, ymm8 1570 vpxord ymm5, ymm5, ymm9 1571 vpxord ymm6, ymm6, ymm10 1572 vpxord ymm7, ymm7, ymm11 1573 vprord ymm4, ymm4, 12 1574 vprord ymm5, ymm5, 12 1575 vprord ymm6, ymm6, 12 1576 vprord ymm7, ymm7, 12 1577 vpaddd ymm0, ymm0, ymm23 1578 vpaddd ymm1, ymm1, ymm25 1579 vpaddd ymm2, ymm2, ymm19 1580 vpaddd ymm3, ymm3, ymm31 1581 vpaddd ymm0, ymm0, ymm4 1582 vpaddd ymm1, ymm1, ymm5 1583 vpaddd ymm2, ymm2, ymm6 1584 vpaddd ymm3, ymm3, ymm7 1585 vpxord ymm12, ymm12, ymm0 1586 vpxord ymm13, ymm13, ymm1 1587 vpxord ymm14, ymm14, ymm2 1588 vpxord ymm15, ymm15, ymm3 1589 vprord ymm12, ymm12, 8 1590 vprord ymm13, ymm13, 8 1591 vprord ymm14, ymm14, 8 1592 vprord ymm15, ymm15, 8 1593 vpaddd ymm8, ymm8, ymm12 1594 vpaddd ymm9, ymm9, ymm13 1595 vpaddd ymm10, ymm10, ymm14 1596 vpaddd ymm11, ymm11, ymm15 1597 vpxord ymm4, ymm4, ymm8 1598 vpxord ymm5, ymm5, ymm9 1599 vpxord ymm6, ymm6, ymm10 1600 vpxord ymm7, ymm7, ymm11 1601 vprord ymm4, ymm4, 7 1602 vprord ymm5, ymm5, 7 1603 vprord ymm6, ymm6, 7 1604 vprord ymm7, ymm7, 7 1605 vpaddd ymm0, ymm0, ymm20 1606 vpaddd ymm1, ymm1, ymm27 1607 vpaddd ymm2, ymm2, ymm21 1608 vpaddd ymm3, ymm3, ymm17 1609 vpaddd ymm0, ymm0, ymm5 1610 vpaddd ymm1, ymm1, ymm6 1611 vpaddd ymm2, ymm2, ymm7 1612 vpaddd ymm3, ymm3, ymm4 1613 vpxord ymm15, ymm15, ymm0 1614 vpxord ymm12, ymm12, ymm1 1615 vpxord ymm13, ymm13, ymm2 1616 vpxord ymm14, ymm14, ymm3 1617 vprord ymm15, ymm15, 16 1618 vprord ymm12, ymm12, 16 1619 vprord ymm13, ymm13, 16 1620 vprord ymm14, ymm14, 16 1621 vpaddd ymm10, ymm10, ymm15 1622 vpaddd ymm11, ymm11, ymm12 1623 vpaddd ymm8, ymm8, ymm13 1624 vpaddd ymm9, ymm9, ymm14 1625 vpxord ymm5, ymm5, ymm10 1626 vpxord ymm6, ymm6, ymm11 1627 vpxord ymm7, ymm7, ymm8 1628 vpxord ymm4, ymm4, ymm9 1629 vprord ymm5, ymm5, 12 1630 vprord ymm6, ymm6, 12 1631 vprord ymm7, ymm7, 12 1632 vprord ymm4, ymm4, 12 1633 vpaddd ymm0, ymm0, ymm16 1634 vpaddd ymm1, ymm1, ymm18 1635 vpaddd ymm2, ymm2, ymm24 1636 vpaddd ymm3, ymm3, ymm22 1637 vpaddd ymm0, ymm0, ymm5 1638 vpaddd ymm1, ymm1, ymm6 1639 vpaddd ymm2, ymm2, ymm7 1640 vpaddd ymm3, ymm3, ymm4 1641 vpxord ymm15, ymm15, ymm0 1642 vpxord ymm12, ymm12, ymm1 1643 vpxord ymm13, ymm13, ymm2 1644 vpxord ymm14, ymm14, ymm3 1645 vprord ymm15, ymm15, 8 1646 vprord ymm12, ymm12, 8 1647 vprord ymm13, ymm13, 8 1648 vprord ymm14, ymm14, 8 1649 vpaddd ymm10, ymm10, ymm15 1650 vpaddd ymm11, ymm11, ymm12 1651 vpaddd ymm8, ymm8, ymm13 1652 vpaddd ymm9, ymm9, ymm14 1653 vpxord ymm5, ymm5, ymm10 1654 vpxord ymm6, ymm6, ymm11 1655 vpxord ymm7, ymm7, ymm8 1656 vpxord ymm4, ymm4, ymm9 1657 vprord ymm5, ymm5, 7 1658 vprord ymm6, ymm6, 7 1659 vprord ymm7, ymm7, 7 1660 vprord ymm4, ymm4, 7 1661 vpaddd ymm0, ymm0, ymm28 1662 vpaddd ymm1, ymm1, ymm25 1663 vpaddd ymm2, ymm2, ymm31 1664 vpaddd ymm3, ymm3, ymm30 1665 vpaddd ymm0, ymm0, ymm4 1666 vpaddd ymm1, ymm1, ymm5 1667 vpaddd ymm2, ymm2, ymm6 1668 vpaddd ymm3, ymm3, ymm7 1669 vpxord ymm12, ymm12, ymm0 1670 vpxord ymm13, ymm13, ymm1 1671 vpxord ymm14, ymm14, ymm2 1672 vpxord ymm15, ymm15, ymm3 1673 vprord ymm12, ymm12, 16 1674 vprord ymm13, ymm13, 16 1675 vprord ymm14, ymm14, 16 1676 vprord ymm15, ymm15, 16 1677 vpaddd ymm8, ymm8, ymm12 1678 vpaddd ymm9, ymm9, ymm13 1679 vpaddd ymm10, ymm10, ymm14 1680 vpaddd ymm11, ymm11, ymm15 1681 vpxord ymm4, ymm4, ymm8 1682 vpxord ymm5, ymm5, ymm9 1683 vpxord ymm6, ymm6, ymm10 1684 vpxord ymm7, ymm7, ymm11 1685 vprord ymm4, ymm4, 12 1686 vprord ymm5, ymm5, 12 1687 vprord ymm6, ymm6, 12 1688 vprord ymm7, ymm7, 12 1689 vpaddd ymm0, ymm0, ymm29 1690 vpaddd ymm1, ymm1, ymm27 1691 vpaddd ymm2, ymm2, ymm26 1692 vpaddd ymm3, ymm3, ymm24 1693 vpaddd ymm0, ymm0, ymm4 1694 vpaddd ymm1, ymm1, ymm5 1695 vpaddd ymm2, ymm2, ymm6 1696 vpaddd ymm3, ymm3, ymm7 1697 vpxord ymm12, ymm12, ymm0 1698 vpxord ymm13, ymm13, ymm1 1699 vpxord ymm14, ymm14, ymm2 1700 vpxord ymm15, ymm15, ymm3 1701 vprord ymm12, ymm12, 8 1702 vprord ymm13, ymm13, 8 1703 vprord ymm14, ymm14, 8 1704 vprord ymm15, ymm15, 8 1705 vpaddd ymm8, ymm8, ymm12 1706 vpaddd ymm9, ymm9, ymm13 1707 vpaddd ymm10, ymm10, ymm14 1708 vpaddd ymm11, ymm11, ymm15 1709 vpxord ymm4, ymm4, ymm8 1710 vpxord ymm5, ymm5, ymm9 1711 vpxord ymm6, ymm6, ymm10 1712 vpxord ymm7, ymm7, ymm11 1713 vprord ymm4, ymm4, 7 1714 vprord ymm5, ymm5, 7 1715 vprord ymm6, ymm6, 7 1716 vprord ymm7, ymm7, 7 1717 vpaddd ymm0, ymm0, ymm23 1718 vpaddd ymm1, ymm1, ymm21 1719 vpaddd ymm2, ymm2, ymm16 1720 vpaddd ymm3, ymm3, ymm22 1721 vpaddd ymm0, ymm0, ymm5 1722 vpaddd ymm1, ymm1, ymm6 1723 vpaddd ymm2, ymm2, ymm7 1724 vpaddd ymm3, ymm3, ymm4 1725 vpxord ymm15, ymm15, ymm0 1726 vpxord ymm12, ymm12, ymm1 1727 vpxord ymm13, ymm13, ymm2 1728 vpxord ymm14, ymm14, ymm3 1729 vprord ymm15, ymm15, 16 1730 vprord ymm12, ymm12, 16 1731 vprord ymm13, ymm13, 16 1732 vprord ymm14, ymm14, 16 1733 vpaddd ymm10, ymm10, ymm15 1734 vpaddd ymm11, ymm11, ymm12 1735 vpaddd ymm8, ymm8, ymm13 1736 vpaddd ymm9, ymm9, ymm14 1737 vpxord ymm5, ymm5, ymm10 1738 vpxord ymm6, ymm6, ymm11 1739 vpxord ymm7, ymm7, ymm8 1740 vpxord ymm4, ymm4, ymm9 1741 vprord ymm5, ymm5, 12 1742 vprord ymm6, ymm6, 12 1743 vprord ymm7, ymm7, 12 1744 vprord ymm4, ymm4, 12 1745 vpaddd ymm0, ymm0, ymm18 1746 vpaddd ymm1, ymm1, ymm19 1747 vpaddd ymm2, ymm2, ymm17 1748 vpaddd ymm3, ymm3, ymm20 1749 vpaddd ymm0, ymm0, ymm5 1750 vpaddd ymm1, ymm1, ymm6 1751 vpaddd ymm2, ymm2, ymm7 1752 vpaddd ymm3, ymm3, ymm4 1753 vpxord ymm15, ymm15, ymm0 1754 vpxord ymm12, ymm12, ymm1 1755 vpxord ymm13, ymm13, ymm2 1756 vpxord ymm14, ymm14, ymm3 1757 vprord ymm15, ymm15, 8 1758 vprord ymm12, ymm12, 8 1759 vprord ymm13, ymm13, 8 1760 vprord ymm14, ymm14, 8 1761 vpaddd ymm10, ymm10, ymm15 1762 vpaddd ymm11, ymm11, ymm12 1763 vpaddd ymm8, ymm8, ymm13 1764 vpaddd ymm9, ymm9, ymm14 1765 vpxord ymm5, ymm5, ymm10 1766 vpxord ymm6, ymm6, ymm11 1767 vpxord ymm7, ymm7, ymm8 1768 vpxord ymm4, ymm4, ymm9 1769 vprord ymm5, ymm5, 7 1770 vprord ymm6, ymm6, 7 1771 vprord ymm7, ymm7, 7 1772 vprord ymm4, ymm4, 7 1773 vpaddd ymm0, ymm0, ymm25 1774 vpaddd ymm1, ymm1, ymm27 1775 vpaddd ymm2, ymm2, ymm24 1776 vpaddd ymm3, ymm3, ymm31 1777 vpaddd ymm0, ymm0, ymm4 1778 vpaddd ymm1, ymm1, ymm5 1779 vpaddd ymm2, ymm2, ymm6 1780 vpaddd ymm3, ymm3, ymm7 1781 vpxord ymm12, ymm12, ymm0 1782 vpxord ymm13, ymm13, ymm1 1783 vpxord ymm14, ymm14, ymm2 1784 vpxord ymm15, ymm15, ymm3 1785 vprord ymm12, ymm12, 16 1786 vprord ymm13, ymm13, 16 1787 vprord ymm14, ymm14, 16 1788 vprord ymm15, ymm15, 16 1789 vpaddd ymm8, ymm8, ymm12 1790 vpaddd ymm9, ymm9, ymm13 1791 vpaddd ymm10, ymm10, ymm14 1792 vpaddd ymm11, ymm11, ymm15 1793 vpxord ymm4, ymm4, ymm8 1794 vpxord ymm5, ymm5, ymm9 1795 vpxord ymm6, ymm6, ymm10 1796 vpxord ymm7, ymm7, ymm11 1797 vprord ymm4, ymm4, 12 1798 vprord ymm5, ymm5, 12 1799 vprord ymm6, ymm6, 12 1800 vprord ymm7, ymm7, 12 1801 vpaddd ymm0, ymm0, ymm30 1802 vpaddd ymm1, ymm1, ymm21 1803 vpaddd ymm2, ymm2, ymm28 1804 vpaddd ymm3, ymm3, ymm17 1805 vpaddd ymm0, ymm0, ymm4 1806 vpaddd ymm1, ymm1, ymm5 1807 vpaddd ymm2, ymm2, ymm6 1808 vpaddd ymm3, ymm3, ymm7 1809 vpxord ymm12, ymm12, ymm0 1810 vpxord ymm13, ymm13, ymm1 1811 vpxord ymm14, ymm14, ymm2 1812 vpxord ymm15, ymm15, ymm3 1813 vprord ymm12, ymm12, 8 1814 vprord ymm13, ymm13, 8 1815 vprord ymm14, ymm14, 8 1816 vprord ymm15, ymm15, 8 1817 vpaddd ymm8, ymm8, ymm12 1818 vpaddd ymm9, ymm9, ymm13 1819 vpaddd ymm10, ymm10, ymm14 1820 vpaddd ymm11, ymm11, ymm15 1821 vpxord ymm4, ymm4, ymm8 1822 vpxord ymm5, ymm5, ymm9 1823 vpxord ymm6, ymm6, ymm10 1824 vpxord ymm7, ymm7, ymm11 1825 vprord ymm4, ymm4, 7 1826 vprord ymm5, ymm5, 7 1827 vprord ymm6, ymm6, 7 1828 vprord ymm7, ymm7, 7 1829 vpaddd ymm0, ymm0, ymm29 1830 vpaddd ymm1, ymm1, ymm16 1831 vpaddd ymm2, ymm2, ymm18 1832 vpaddd ymm3, ymm3, ymm20 1833 vpaddd ymm0, ymm0, ymm5 1834 vpaddd ymm1, ymm1, ymm6 1835 vpaddd ymm2, ymm2, ymm7 1836 vpaddd ymm3, ymm3, ymm4 1837 vpxord ymm15, ymm15, ymm0 1838 vpxord ymm12, ymm12, ymm1 1839 vpxord ymm13, ymm13, ymm2 1840 vpxord ymm14, ymm14, ymm3 1841 vprord ymm15, ymm15, 16 1842 vprord ymm12, ymm12, 16 1843 vprord ymm13, ymm13, 16 1844 vprord ymm14, ymm14, 16 1845 vpaddd ymm10, ymm10, ymm15 1846 vpaddd ymm11, ymm11, ymm12 1847 vpaddd ymm8, ymm8, ymm13 1848 vpaddd ymm9, ymm9, ymm14 1849 vpxord ymm5, ymm5, ymm10 1850 vpxord ymm6, ymm6, ymm11 1851 vpxord ymm7, ymm7, ymm8 1852 vpxord ymm4, ymm4, ymm9 1853 vprord ymm5, ymm5, 12 1854 vprord ymm6, ymm6, 12 1855 vprord ymm7, ymm7, 12 1856 vprord ymm4, ymm4, 12 1857 vpaddd ymm0, ymm0, ymm19 1858 vpaddd ymm1, ymm1, ymm26 1859 vpaddd ymm2, ymm2, ymm22 1860 vpaddd ymm3, ymm3, ymm23 1861 vpaddd ymm0, ymm0, ymm5 1862 vpaddd ymm1, ymm1, ymm6 1863 vpaddd ymm2, ymm2, ymm7 1864 vpaddd ymm3, ymm3, ymm4 1865 vpxord ymm15, ymm15, ymm0 1866 vpxord ymm12, ymm12, ymm1 1867 vpxord ymm13, ymm13, ymm2 1868 vpxord ymm14, ymm14, ymm3 1869 vprord ymm15, ymm15, 8 1870 vprord ymm12, ymm12, 8 1871 vprord ymm13, ymm13, 8 1872 vprord ymm14, ymm14, 8 1873 vpaddd ymm10, ymm10, ymm15 1874 vpaddd ymm11, ymm11, ymm12 1875 vpaddd ymm8, ymm8, ymm13 1876 vpaddd ymm9, ymm9, ymm14 1877 vpxord ymm5, ymm5, ymm10 1878 vpxord ymm6, ymm6, ymm11 1879 vpxord ymm7, ymm7, ymm8 1880 vpxord ymm4, ymm4, ymm9 1881 vprord ymm5, ymm5, 7 1882 vprord ymm6, ymm6, 7 1883 vprord ymm7, ymm7, 7 1884 vprord ymm4, ymm4, 7 1885 vpaddd ymm0, ymm0, ymm27 1886 vpaddd ymm1, ymm1, ymm21 1887 vpaddd ymm2, ymm2, ymm17 1888 vpaddd ymm3, ymm3, ymm24 1889 vpaddd ymm0, ymm0, ymm4 1890 vpaddd ymm1, ymm1, ymm5 1891 vpaddd ymm2, ymm2, ymm6 1892 vpaddd ymm3, ymm3, ymm7 1893 vpxord ymm12, ymm12, ymm0 1894 vpxord ymm13, ymm13, ymm1 1895 vpxord ymm14, ymm14, ymm2 1896 vpxord ymm15, ymm15, ymm3 1897 vprord ymm12, ymm12, 16 1898 vprord ymm13, ymm13, 16 1899 vprord ymm14, ymm14, 16 1900 vprord ymm15, ymm15, 16 1901 vpaddd ymm8, ymm8, ymm12 1902 vpaddd ymm9, ymm9, ymm13 1903 vpaddd ymm10, ymm10, ymm14 1904 vpaddd ymm11, ymm11, ymm15 1905 vpxord ymm4, ymm4, ymm8 1906 vpxord ymm5, ymm5, ymm9 1907 vpxord ymm6, ymm6, ymm10 1908 vpxord ymm7, ymm7, ymm11 1909 vprord ymm4, ymm4, 12 1910 vprord ymm5, ymm5, 12 1911 vprord ymm6, ymm6, 12 1912 vprord ymm7, ymm7, 12 1913 vpaddd ymm0, ymm0, ymm31 1914 vpaddd ymm1, ymm1, ymm16 1915 vpaddd ymm2, ymm2, ymm25 1916 vpaddd ymm3, ymm3, ymm22 1917 vpaddd ymm0, ymm0, ymm4 1918 vpaddd ymm1, ymm1, ymm5 1919 vpaddd ymm2, ymm2, ymm6 1920 vpaddd ymm3, ymm3, ymm7 1921 vpxord ymm12, ymm12, ymm0 1922 vpxord ymm13, ymm13, ymm1 1923 vpxord ymm14, ymm14, ymm2 1924 vpxord ymm15, ymm15, ymm3 1925 vprord ymm12, ymm12, 8 1926 vprord ymm13, ymm13, 8 1927 vprord ymm14, ymm14, 8 1928 vprord ymm15, ymm15, 8 1929 vpaddd ymm8, ymm8, ymm12 1930 vpaddd ymm9, ymm9, ymm13 1931 vpaddd ymm10, ymm10, ymm14 1932 vpaddd ymm11, ymm11, ymm15 1933 vpxord ymm4, ymm4, ymm8 1934 vpxord ymm5, ymm5, ymm9 1935 vpxord ymm6, ymm6, ymm10 1936 vpxord ymm7, ymm7, ymm11 1937 vprord ymm4, ymm4, 7 1938 vprord ymm5, ymm5, 7 1939 vprord ymm6, ymm6, 7 1940 vprord ymm7, ymm7, 7 1941 vpaddd ymm0, ymm0, ymm30 1942 vpaddd ymm1, ymm1, ymm18 1943 vpaddd ymm2, ymm2, ymm19 1944 vpaddd ymm3, ymm3, ymm23 1945 vpaddd ymm0, ymm0, ymm5 1946 vpaddd ymm1, ymm1, ymm6 1947 vpaddd ymm2, ymm2, ymm7 1948 vpaddd ymm3, ymm3, ymm4 1949 vpxord ymm15, ymm15, ymm0 1950 vpxord ymm12, ymm12, ymm1 1951 vpxord ymm13, ymm13, ymm2 1952 vpxord ymm14, ymm14, ymm3 1953 vprord ymm15, ymm15, 16 1954 vprord ymm12, ymm12, 16 1955 vprord ymm13, ymm13, 16 1956 vprord ymm14, ymm14, 16 1957 vpaddd ymm10, ymm10, ymm15 1958 vpaddd ymm11, ymm11, ymm12 1959 vpaddd ymm8, ymm8, ymm13 1960 vpaddd ymm9, ymm9, ymm14 1961 vpxord ymm5, ymm5, ymm10 1962 vpxord ymm6, ymm6, ymm11 1963 vpxord ymm7, ymm7, ymm8 1964 vpxord ymm4, ymm4, ymm9 1965 vprord ymm5, ymm5, 12 1966 vprord ymm6, ymm6, 12 1967 vprord ymm7, ymm7, 12 1968 vprord ymm4, ymm4, 12 1969 vpaddd ymm0, ymm0, ymm26 1970 vpaddd ymm1, ymm1, ymm28 1971 vpaddd ymm2, ymm2, ymm20 1972 vpaddd ymm3, ymm3, ymm29 1973 vpaddd ymm0, ymm0, ymm5 1974 vpaddd ymm1, ymm1, ymm6 1975 vpaddd ymm2, ymm2, ymm7 1976 vpaddd ymm3, ymm3, ymm4 1977 vpxord ymm15, ymm15, ymm0 1978 vpxord ymm12, ymm12, ymm1 1979 vpxord ymm13, ymm13, ymm2 1980 vpxord ymm14, ymm14, ymm3 1981 vprord ymm15, ymm15, 8 1982 vprord ymm12, ymm12, 8 1983 vprord ymm13, ymm13, 8 1984 vprord ymm14, ymm14, 8 1985 vpaddd ymm10, ymm10, ymm15 1986 vpaddd ymm11, ymm11, ymm12 1987 vpaddd ymm8, ymm8, ymm13 1988 vpaddd ymm9, ymm9, ymm14 1989 vpxord ymm5, ymm5, ymm10 1990 vpxord ymm6, ymm6, ymm11 1991 vpxord ymm7, ymm7, ymm8 1992 vpxord ymm4, ymm4, ymm9 1993 vprord ymm5, ymm5, 7 1994 vprord ymm6, ymm6, 7 1995 vprord ymm7, ymm7, 7 1996 vprord ymm4, ymm4, 7 1997 vpxor ymm0, ymm0, ymm8 1998 vpxor ymm1, ymm1, ymm9 1999 vpxor ymm2, ymm2, ymm10 2000 vpxor ymm3, ymm3, ymm11 2001 vpxor ymm4, ymm4, ymm12 2002 vpxor ymm5, ymm5, ymm13 2003 vpxor ymm6, ymm6, ymm14 2004 vpxor ymm7, ymm7, ymm15 2005 movzx eax, byte ptr [rbp+0x38] 2006 jne 2b 2007 mov rbx, qword ptr [rbp+0x50] 2008 vunpcklps ymm8, ymm0, ymm1 2009 vunpcklps ymm9, ymm2, ymm3 2010 vunpckhps ymm10, ymm0, ymm1 2011 vunpcklps ymm11, ymm4, ymm5 2012 vunpcklps ymm0, ymm6, ymm7 2013 vshufps ymm12, ymm8, ymm9, 78 2014 vblendps ymm1, ymm8, ymm12, 0xCC 2015 vshufps ymm8, ymm11, ymm0, 78 2016 vunpckhps ymm13, ymm2, ymm3 2017 vblendps ymm2, ymm11, ymm8, 0xCC 2018 vblendps ymm3, ymm12, ymm9, 0xCC 2019 vperm2f128 ymm12, ymm1, ymm2, 0x20 2020 vmovups ymmword ptr [rbx], ymm12 2021 vunpckhps ymm14, ymm4, ymm5 2022 vblendps ymm4, ymm8, ymm0, 0xCC 2023 vunpckhps ymm15, ymm6, ymm7 2024 vperm2f128 ymm7, ymm3, ymm4, 0x20 2025 vmovups ymmword ptr [rbx+0x20], ymm7 2026 vshufps ymm5, ymm10, ymm13, 78 2027 vblendps ymm6, ymm5, ymm13, 0xCC 2028 vshufps ymm13, ymm14, ymm15, 78 2029 vblendps ymm10, ymm10, ymm5, 0xCC 2030 vblendps ymm14, ymm14, ymm13, 0xCC 2031 vperm2f128 ymm8, ymm10, ymm14, 0x20 2032 vmovups ymmword ptr [rbx+0x40], ymm8 2033 vblendps ymm15, ymm13, ymm15, 0xCC 2034 vperm2f128 ymm13, ymm6, ymm15, 0x20 2035 vmovups ymmword ptr [rbx+0x60], ymm13 2036 vperm2f128 ymm9, ymm1, ymm2, 0x31 2037 vperm2f128 ymm11, ymm3, ymm4, 0x31 2038 vmovups ymmword ptr [rbx+0x80], ymm9 2039 vperm2f128 ymm14, ymm10, ymm14, 0x31 2040 vperm2f128 ymm15, ymm6, ymm15, 0x31 2041 vmovups ymmword ptr [rbx+0xA0], ymm11 2042 vmovups ymmword ptr [rbx+0xC0], ymm14 2043 vmovups ymmword ptr [rbx+0xE0], ymm15 2044 vmovdqa ymm0, ymmword ptr [rsp] 2045 vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20] 2046 vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20] 2047 vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20] 2048 vmovdqa ymmword ptr [rsp], ymm0 2049 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2 2050 add rbx, 256 2051 mov qword ptr [rbp+0x50], rbx 2052 add rdi, 64 2053 sub rsi, 8 20543: 2055 mov rbx, qword ptr [rbp+0x50] 2056 mov r15, qword ptr [rsp+0x80] 2057 movzx r13, byte ptr [rbp+0x38] 2058 movzx r12, byte ptr [rbp+0x48] 2059 test esi, 0x4 2060 je 3f 2061 vbroadcasti32x4 zmm0, xmmword ptr [rcx] 2062 vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10] 2063 vmovdqa xmm12, xmmword ptr [rsp] 2064 vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10] 2065 vpunpckldq xmm14, xmm12, xmm13 2066 vpunpckhdq xmm15, xmm12, xmm13 2067 vpermq ymm14, ymm14, 0xDC 2068 vpermq ymm15, ymm15, 0xDC 2069 vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip] 2070 vinserti64x4 zmm13, zmm14, ymm15, 0x01 2071 mov eax, 17476 2072 kmovw k2, eax 2073 vpblendmd zmm13 {k2}, zmm13, zmm12 2074 vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip] 2075 mov r8, qword ptr [rdi] 2076 mov r9, qword ptr [rdi+0x8] 2077 mov r10, qword ptr [rdi+0x10] 2078 mov r11, qword ptr [rdi+0x18] 2079 mov eax, 43690 2080 kmovw k3, eax 2081 mov eax, 34952 2082 kmovw k4, eax 2083 movzx eax, byte ptr [rbp+0x40] 2084 or eax, r13d 2085 xor edx, edx 2086.p2align 5 20872: 2088 mov r14d, eax 2089 or eax, r12d 2090 add rdx, 64 2091 cmp rdx, r15 2092 cmovne eax, r14d 2093 mov dword ptr [rsp+0x88], eax 2094 vmovdqa32 zmm2, zmm15 2095 vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4] 2096 vpblendmd zmm3 {k4}, zmm13, zmm8 2097 vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40] 2098 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01 2099 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02 2100 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03 2101 vmovups zmm9, zmmword ptr [r8+rdx-0x30] 2102 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01 2103 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02 2104 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03 2105 vshufps zmm4, zmm8, zmm9, 136 2106 vshufps zmm5, zmm8, zmm9, 221 2107 vmovups zmm8, zmmword ptr [r8+rdx-0x20] 2108 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01 2109 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02 2110 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03 2111 vmovups zmm9, zmmword ptr [r8+rdx-0x10] 2112 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01 2113 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02 2114 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03 2115 vshufps zmm6, zmm8, zmm9, 136 2116 vshufps zmm7, zmm8, zmm9, 221 2117 vpshufd zmm6, zmm6, 0x93 2118 vpshufd zmm7, zmm7, 0x93 2119 mov al, 7 21209: 2121 vpaddd zmm0, zmm0, zmm4 2122 vpaddd zmm0, zmm0, zmm1 2123 vpxord zmm3, zmm3, zmm0 2124 vprord zmm3, zmm3, 16 2125 vpaddd zmm2, zmm2, zmm3 2126 vpxord zmm1, zmm1, zmm2 2127 vprord zmm1, zmm1, 12 2128 vpaddd zmm0, zmm0, zmm5 2129 vpaddd zmm0, zmm0, zmm1 2130 vpxord zmm3, zmm3, zmm0 2131 vprord zmm3, zmm3, 8 2132 vpaddd zmm2, zmm2, zmm3 2133 vpxord zmm1, zmm1, zmm2 2134 vprord zmm1, zmm1, 7 2135 vpshufd zmm0, zmm0, 0x93 2136 vpshufd zmm3, zmm3, 0x4E 2137 vpshufd zmm2, zmm2, 0x39 2138 vpaddd zmm0, zmm0, zmm6 2139 vpaddd zmm0, zmm0, zmm1 2140 vpxord zmm3, zmm3, zmm0 2141 vprord zmm3, zmm3, 16 2142 vpaddd zmm2, zmm2, zmm3 2143 vpxord zmm1, zmm1, zmm2 2144 vprord zmm1, zmm1, 12 2145 vpaddd zmm0, zmm0, zmm7 2146 vpaddd zmm0, zmm0, zmm1 2147 vpxord zmm3, zmm3, zmm0 2148 vprord zmm3, zmm3, 8 2149 vpaddd zmm2, zmm2, zmm3 2150 vpxord zmm1, zmm1, zmm2 2151 vprord zmm1, zmm1, 7 2152 vpshufd zmm0, zmm0, 0x39 2153 vpshufd zmm3, zmm3, 0x4E 2154 vpshufd zmm2, zmm2, 0x93 2155 dec al 2156 jz 9f 2157 vshufps zmm8, zmm4, zmm5, 214 2158 vpshufd zmm9, zmm4, 0x0F 2159 vpshufd zmm4, zmm8, 0x39 2160 vshufps zmm8, zmm6, zmm7, 250 2161 vpblendmd zmm9 {k3}, zmm9, zmm8 2162 vpunpcklqdq zmm8, zmm7, zmm5 2163 vpblendmd zmm8 {k4}, zmm8, zmm6 2164 vpshufd zmm8, zmm8, 0x78 2165 vpunpckhdq zmm5, zmm5, zmm7 2166 vpunpckldq zmm6, zmm6, zmm5 2167 vpshufd zmm7, zmm6, 0x1E 2168 vmovdqa32 zmm5, zmm9 2169 vmovdqa32 zmm6, zmm8 2170 jmp 9b 21719: 2172 vpxord zmm0, zmm0, zmm2 2173 vpxord zmm1, zmm1, zmm3 2174 mov eax, r13d 2175 cmp rdx, r15 2176 jne 2b 2177 vmovdqu xmmword ptr [rbx], xmm0 2178 vmovdqu xmmword ptr [rbx+0x10], xmm1 2179 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01 2180 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01 2181 vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02 2182 vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02 2183 vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03 2184 vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03 2185 vmovdqa xmm0, xmmword ptr [rsp] 2186 vmovdqa xmm2, xmmword ptr [rsp+0x40] 2187 vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10] 2188 vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10] 2189 vmovdqa xmmword ptr [rsp], xmm0 2190 vmovdqa xmmword ptr [rsp+0x40], xmm2 2191 add rbx, 128 2192 add rdi, 32 2193 sub rsi, 4 21943: 2195 test esi, 0x2 2196 je 3f 2197 vbroadcasti128 ymm0, xmmword ptr [rcx] 2198 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10] 2199 vmovd xmm13, dword ptr [rsp] 2200 vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1 2201 vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2202 vmovd xmm14, dword ptr [rsp+0x4] 2203 vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1 2204 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2205 vinserti128 ymm13, ymm13, xmm14, 0x01 2206 mov r8, qword ptr [rdi] 2207 mov r9, qword ptr [rdi+0x8] 2208 movzx eax, byte ptr [rbp+0x40] 2209 or eax, r13d 2210 xor edx, edx 2211.p2align 5 22122: 2213 mov r14d, eax 2214 or eax, r12d 2215 add rdx, 64 2216 cmp rdx, r15 2217 cmovne eax, r14d 2218 mov dword ptr [rsp+0x88], eax 2219 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip] 2220 vpbroadcastd ymm8, dword ptr [rsp+0x88] 2221 vpblendd ymm3, ymm13, ymm8, 0x88 2222 vmovups ymm8, ymmword ptr [r8+rdx-0x40] 2223 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01 2224 vmovups ymm9, ymmword ptr [r8+rdx-0x30] 2225 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01 2226 vshufps ymm4, ymm8, ymm9, 136 2227 vshufps ymm5, ymm8, ymm9, 221 2228 vmovups ymm8, ymmword ptr [r8+rdx-0x20] 2229 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01 2230 vmovups ymm9, ymmword ptr [r8+rdx-0x10] 2231 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01 2232 vshufps ymm6, ymm8, ymm9, 136 2233 vshufps ymm7, ymm8, ymm9, 221 2234 vpshufd ymm6, ymm6, 0x93 2235 vpshufd ymm7, ymm7, 0x93 2236 mov al, 7 22379: 2238 vpaddd ymm0, ymm0, ymm4 2239 vpaddd ymm0, ymm0, ymm1 2240 vpxord ymm3, ymm3, ymm0 2241 vprord ymm3, ymm3, 16 2242 vpaddd ymm2, ymm2, ymm3 2243 vpxord ymm1, ymm1, ymm2 2244 vprord ymm1, ymm1, 12 2245 vpaddd ymm0, ymm0, ymm5 2246 vpaddd ymm0, ymm0, ymm1 2247 vpxord ymm3, ymm3, ymm0 2248 vprord ymm3, ymm3, 8 2249 vpaddd ymm2, ymm2, ymm3 2250 vpxord ymm1, ymm1, ymm2 2251 vprord ymm1, ymm1, 7 2252 vpshufd ymm0, ymm0, 0x93 2253 vpshufd ymm3, ymm3, 0x4E 2254 vpshufd ymm2, ymm2, 0x39 2255 vpaddd ymm0, ymm0, ymm6 2256 vpaddd ymm0, ymm0, ymm1 2257 vpxord ymm3, ymm3, ymm0 2258 vprord ymm3, ymm3, 16 2259 vpaddd ymm2, ymm2, ymm3 2260 vpxord ymm1, ymm1, ymm2 2261 vprord ymm1, ymm1, 12 2262 vpaddd ymm0, ymm0, ymm7 2263 vpaddd ymm0, ymm0, ymm1 2264 vpxord ymm3, ymm3, ymm0 2265 vprord ymm3, ymm3, 8 2266 vpaddd ymm2, ymm2, ymm3 2267 vpxord ymm1, ymm1, ymm2 2268 vprord ymm1, ymm1, 7 2269 vpshufd ymm0, ymm0, 0x39 2270 vpshufd ymm3, ymm3, 0x4E 2271 vpshufd ymm2, ymm2, 0x93 2272 dec al 2273 jz 9f 2274 vshufps ymm8, ymm4, ymm5, 214 2275 vpshufd ymm9, ymm4, 0x0F 2276 vpshufd ymm4, ymm8, 0x39 2277 vshufps ymm8, ymm6, ymm7, 250 2278 vpblendd ymm9, ymm9, ymm8, 0xAA 2279 vpunpcklqdq ymm8, ymm7, ymm5 2280 vpblendd ymm8, ymm8, ymm6, 0x88 2281 vpshufd ymm8, ymm8, 0x78 2282 vpunpckhdq ymm5, ymm5, ymm7 2283 vpunpckldq ymm6, ymm6, ymm5 2284 vpshufd ymm7, ymm6, 0x1E 2285 vmovdqa ymm5, ymm9 2286 vmovdqa ymm6, ymm8 2287 jmp 9b 22889: 2289 vpxor ymm0, ymm0, ymm2 2290 vpxor ymm1, ymm1, ymm3 2291 mov eax, r13d 2292 cmp rdx, r15 2293 jne 2b 2294 vmovdqu xmmword ptr [rbx], xmm0 2295 vmovdqu xmmword ptr [rbx+0x10], xmm1 2296 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01 2297 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01 2298 vmovdqa xmm0, xmmword ptr [rsp] 2299 vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10] 2300 vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8] 2301 vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48] 2302 vmovdqa xmmword ptr [rsp], xmm0 2303 vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2 2304 add rbx, 64 2305 add rdi, 16 2306 sub rsi, 2 23073: 2308 test esi, 0x1 2309 je 4b 2310 vmovdqu xmm0, xmmword ptr [rcx] 2311 vmovdqu xmm1, xmmword ptr [rcx+0x10] 2312 vmovd xmm14, dword ptr [rsp] 2313 vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1 2314 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2315 vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip] 2316 mov r8, qword ptr [rdi] 2317 movzx eax, byte ptr [rbp+0x40] 2318 or eax, r13d 2319 xor edx, edx 2320.p2align 5 23212: 2322 mov r14d, eax 2323 or eax, r12d 2324 add rdx, 64 2325 cmp rdx, r15 2326 cmovne eax, r14d 2327 vpinsrd xmm3, xmm14, eax, 3 2328 vmovdqa xmm2, xmm15 2329 vmovups xmm8, xmmword ptr [r8+rdx-0x40] 2330 vmovups xmm9, xmmword ptr [r8+rdx-0x30] 2331 vshufps xmm4, xmm8, xmm9, 136 2332 vshufps xmm5, xmm8, xmm9, 221 2333 vmovups xmm8, xmmword ptr [r8+rdx-0x20] 2334 vmovups xmm9, xmmword ptr [r8+rdx-0x10] 2335 vshufps xmm6, xmm8, xmm9, 136 2336 vshufps xmm7, xmm8, xmm9, 221 2337 vpshufd xmm6, xmm6, 0x93 2338 vpshufd xmm7, xmm7, 0x93 2339 mov al, 7 23409: 2341 vpaddd xmm0, xmm0, xmm4 2342 vpaddd xmm0, xmm0, xmm1 2343 vpxord xmm3, xmm3, xmm0 2344 vprord xmm3, xmm3, 16 2345 vpaddd xmm2, xmm2, xmm3 2346 vpxord xmm1, xmm1, xmm2 2347 vprord xmm1, xmm1, 12 2348 vpaddd xmm0, xmm0, xmm5 2349 vpaddd xmm0, xmm0, xmm1 2350 vpxord xmm3, xmm3, xmm0 2351 vprord xmm3, xmm3, 8 2352 vpaddd xmm2, xmm2, xmm3 2353 vpxord xmm1, xmm1, xmm2 2354 vprord xmm1, xmm1, 7 2355 vpshufd xmm0, xmm0, 0x93 2356 vpshufd xmm3, xmm3, 0x4E 2357 vpshufd xmm2, xmm2, 0x39 2358 vpaddd xmm0, xmm0, xmm6 2359 vpaddd xmm0, xmm0, xmm1 2360 vpxord xmm3, xmm3, xmm0 2361 vprord xmm3, xmm3, 16 2362 vpaddd xmm2, xmm2, xmm3 2363 vpxord xmm1, xmm1, xmm2 2364 vprord xmm1, xmm1, 12 2365 vpaddd xmm0, xmm0, xmm7 2366 vpaddd xmm0, xmm0, xmm1 2367 vpxord xmm3, xmm3, xmm0 2368 vprord xmm3, xmm3, 8 2369 vpaddd xmm2, xmm2, xmm3 2370 vpxord xmm1, xmm1, xmm2 2371 vprord xmm1, xmm1, 7 2372 vpshufd xmm0, xmm0, 0x39 2373 vpshufd xmm3, xmm3, 0x4E 2374 vpshufd xmm2, xmm2, 0x93 2375 dec al 2376 jz 9f 2377 vshufps xmm8, xmm4, xmm5, 214 2378 vpshufd xmm9, xmm4, 0x0F 2379 vpshufd xmm4, xmm8, 0x39 2380 vshufps xmm8, xmm6, xmm7, 250 2381 vpblendd xmm9, xmm9, xmm8, 0xAA 2382 vpunpcklqdq xmm8, xmm7, xmm5 2383 vpblendd xmm8, xmm8, xmm6, 0x88 2384 vpshufd xmm8, xmm8, 0x78 2385 vpunpckhdq xmm5, xmm5, xmm7 2386 vpunpckldq xmm6, xmm6, xmm5 2387 vpshufd xmm7, xmm6, 0x1E 2388 vmovdqa xmm5, xmm9 2389 vmovdqa xmm6, xmm8 2390 jmp 9b 23919: 2392 vpxor xmm0, xmm0, xmm2 2393 vpxor xmm1, xmm1, xmm3 2394 mov eax, r13d 2395 cmp rdx, r15 2396 jne 2b 2397 vmovdqu xmmword ptr [rbx], xmm0 2398 vmovdqu xmmword ptr [rbx+0x10], xmm1 2399 jmp 4b 2400.p2align 6 2401_blake3_compress_in_place_avx512: 2402blake3_compress_in_place_avx512: 2403 _CET_ENDBR 2404 vmovdqu xmm0, xmmword ptr [rdi] 2405 vmovdqu xmm1, xmmword ptr [rdi+0x10] 2406 movzx eax, r8b 2407 movzx edx, dl 2408 shl rax, 32 2409 add rdx, rax 2410 vmovq xmm3, rcx 2411 vmovq xmm4, rdx 2412 vpunpcklqdq xmm3, xmm3, xmm4 2413 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip] 2414 vmovups xmm8, xmmword ptr [rsi] 2415 vmovups xmm9, xmmword ptr [rsi+0x10] 2416 vshufps xmm4, xmm8, xmm9, 136 2417 vshufps xmm5, xmm8, xmm9, 221 2418 vmovups xmm8, xmmword ptr [rsi+0x20] 2419 vmovups xmm9, xmmword ptr [rsi+0x30] 2420 vshufps xmm6, xmm8, xmm9, 136 2421 vshufps xmm7, xmm8, xmm9, 221 2422 vpshufd xmm6, xmm6, 0x93 2423 vpshufd xmm7, xmm7, 0x93 2424 mov al, 7 24259: 2426 vpaddd xmm0, xmm0, xmm4 2427 vpaddd xmm0, xmm0, xmm1 2428 vpxord xmm3, xmm3, xmm0 2429 vprord xmm3, xmm3, 16 2430 vpaddd xmm2, xmm2, xmm3 2431 vpxord xmm1, xmm1, xmm2 2432 vprord xmm1, xmm1, 12 2433 vpaddd xmm0, xmm0, xmm5 2434 vpaddd xmm0, xmm0, xmm1 2435 vpxord xmm3, xmm3, xmm0 2436 vprord xmm3, xmm3, 8 2437 vpaddd xmm2, xmm2, xmm3 2438 vpxord xmm1, xmm1, xmm2 2439 vprord xmm1, xmm1, 7 2440 vpshufd xmm0, xmm0, 0x93 2441 vpshufd xmm3, xmm3, 0x4E 2442 vpshufd xmm2, xmm2, 0x39 2443 vpaddd xmm0, xmm0, xmm6 2444 vpaddd xmm0, xmm0, xmm1 2445 vpxord xmm3, xmm3, xmm0 2446 vprord xmm3, xmm3, 16 2447 vpaddd xmm2, xmm2, xmm3 2448 vpxord xmm1, xmm1, xmm2 2449 vprord xmm1, xmm1, 12 2450 vpaddd xmm0, xmm0, xmm7 2451 vpaddd xmm0, xmm0, xmm1 2452 vpxord xmm3, xmm3, xmm0 2453 vprord xmm3, xmm3, 8 2454 vpaddd xmm2, xmm2, xmm3 2455 vpxord xmm1, xmm1, xmm2 2456 vprord xmm1, xmm1, 7 2457 vpshufd xmm0, xmm0, 0x39 2458 vpshufd xmm3, xmm3, 0x4E 2459 vpshufd xmm2, xmm2, 0x93 2460 dec al 2461 jz 9f 2462 vshufps xmm8, xmm4, xmm5, 214 2463 vpshufd xmm9, xmm4, 0x0F 2464 vpshufd xmm4, xmm8, 0x39 2465 vshufps xmm8, xmm6, xmm7, 250 2466 vpblendd xmm9, xmm9, xmm8, 0xAA 2467 vpunpcklqdq xmm8, xmm7, xmm5 2468 vpblendd xmm8, xmm8, xmm6, 0x88 2469 vpshufd xmm8, xmm8, 0x78 2470 vpunpckhdq xmm5, xmm5, xmm7 2471 vpunpckldq xmm6, xmm6, xmm5 2472 vpshufd xmm7, xmm6, 0x1E 2473 vmovdqa xmm5, xmm9 2474 vmovdqa xmm6, xmm8 2475 jmp 9b 24769: 2477 vpxor xmm0, xmm0, xmm2 2478 vpxor xmm1, xmm1, xmm3 2479 vmovdqu xmmword ptr [rdi], xmm0 2480 vmovdqu xmmword ptr [rdi+0x10], xmm1 2481 ret 2482 2483.p2align 6 2484_blake3_compress_xof_avx512: 2485blake3_compress_xof_avx512: 2486 _CET_ENDBR 2487 vmovdqu xmm0, xmmword ptr [rdi] 2488 vmovdqu xmm1, xmmword ptr [rdi+0x10] 2489 movzx eax, r8b 2490 movzx edx, dl 2491 shl rax, 32 2492 add rdx, rax 2493 vmovq xmm3, rcx 2494 vmovq xmm4, rdx 2495 vpunpcklqdq xmm3, xmm3, xmm4 2496 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip] 2497 vmovups xmm8, xmmword ptr [rsi] 2498 vmovups xmm9, xmmword ptr [rsi+0x10] 2499 vshufps xmm4, xmm8, xmm9, 136 2500 vshufps xmm5, xmm8, xmm9, 221 2501 vmovups xmm8, xmmword ptr [rsi+0x20] 2502 vmovups xmm9, xmmword ptr [rsi+0x30] 2503 vshufps xmm6, xmm8, xmm9, 136 2504 vshufps xmm7, xmm8, xmm9, 221 2505 vpshufd xmm6, xmm6, 0x93 2506 vpshufd xmm7, xmm7, 0x93 2507 mov al, 7 25089: 2509 vpaddd xmm0, xmm0, xmm4 2510 vpaddd xmm0, xmm0, xmm1 2511 vpxord xmm3, xmm3, xmm0 2512 vprord xmm3, xmm3, 16 2513 vpaddd xmm2, xmm2, xmm3 2514 vpxord xmm1, xmm1, xmm2 2515 vprord xmm1, xmm1, 12 2516 vpaddd xmm0, xmm0, xmm5 2517 vpaddd xmm0, xmm0, xmm1 2518 vpxord xmm3, xmm3, xmm0 2519 vprord xmm3, xmm3, 8 2520 vpaddd xmm2, xmm2, xmm3 2521 vpxord xmm1, xmm1, xmm2 2522 vprord xmm1, xmm1, 7 2523 vpshufd xmm0, xmm0, 0x93 2524 vpshufd xmm3, xmm3, 0x4E 2525 vpshufd xmm2, xmm2, 0x39 2526 vpaddd xmm0, xmm0, xmm6 2527 vpaddd xmm0, xmm0, xmm1 2528 vpxord xmm3, xmm3, xmm0 2529 vprord xmm3, xmm3, 16 2530 vpaddd xmm2, xmm2, xmm3 2531 vpxord xmm1, xmm1, xmm2 2532 vprord xmm1, xmm1, 12 2533 vpaddd xmm0, xmm0, xmm7 2534 vpaddd xmm0, xmm0, xmm1 2535 vpxord xmm3, xmm3, xmm0 2536 vprord xmm3, xmm3, 8 2537 vpaddd xmm2, xmm2, xmm3 2538 vpxord xmm1, xmm1, xmm2 2539 vprord xmm1, xmm1, 7 2540 vpshufd xmm0, xmm0, 0x39 2541 vpshufd xmm3, xmm3, 0x4E 2542 vpshufd xmm2, xmm2, 0x93 2543 dec al 2544 jz 9f 2545 vshufps xmm8, xmm4, xmm5, 214 2546 vpshufd xmm9, xmm4, 0x0F 2547 vpshufd xmm4, xmm8, 0x39 2548 vshufps xmm8, xmm6, xmm7, 250 2549 vpblendd xmm9, xmm9, xmm8, 0xAA 2550 vpunpcklqdq xmm8, xmm7, xmm5 2551 vpblendd xmm8, xmm8, xmm6, 0x88 2552 vpshufd xmm8, xmm8, 0x78 2553 vpunpckhdq xmm5, xmm5, xmm7 2554 vpunpckldq xmm6, xmm6, xmm5 2555 vpshufd xmm7, xmm6, 0x1E 2556 vmovdqa xmm5, xmm9 2557 vmovdqa xmm6, xmm8 2558 jmp 9b 25599: 2560 vpxor xmm0, xmm0, xmm2 2561 vpxor xmm1, xmm1, xmm3 2562 vpxor xmm2, xmm2, [rdi] 2563 vpxor xmm3, xmm3, [rdi+0x10] 2564 vmovdqu xmmword ptr [r9], xmm0 2565 vmovdqu xmmword ptr [r9+0x10], xmm1 2566 vmovdqu xmmword ptr [r9+0x20], xmm2 2567 vmovdqu xmmword ptr [r9+0x30], xmm3 2568 ret 2569 2570#ifdef __APPLE__ 2571.static_data 2572#else 2573.section .rodata 2574#endif 2575.p2align 6 2576INDEX0: 2577 .long 0, 1, 2, 3, 16, 17, 18, 19 2578 .long 8, 9, 10, 11, 24, 25, 26, 27 2579INDEX1: 2580 .long 4, 5, 6, 7, 20, 21, 22, 23 2581 .long 12, 13, 14, 15, 28, 29, 30, 31 2582ADD0: 2583 .long 0, 1, 2, 3, 4, 5, 6, 7 2584 .long 8, 9, 10, 11, 12, 13, 14, 15 2585ADD1: .long 1 2586 2587ADD16: .long 16 2588BLAKE3_BLOCK_LEN: 2589 .long 64 2590.p2align 6 2591BLAKE3_IV: 2592BLAKE3_IV_0: 2593 .long 0x6A09E667 2594BLAKE3_IV_1: 2595 .long 0xBB67AE85 2596BLAKE3_IV_2: 2597 .long 0x3C6EF372 2598BLAKE3_IV_3: 2599 .long 0xA54FF53A 2600 2601#endif 2602