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