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