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