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