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