2072 lines · plain
1#include "llvm_blake3_prefix.h"2 3.intel_syntax noprefix4.global blake3_hash_many_sse415.global _blake3_hash_many_sse416.global blake3_compress_in_place_sse417.global _blake3_compress_in_place_sse418.global blake3_compress_xof_sse419.global _blake3_compress_xof_sse4110.section .text11 .p2align 612_blake3_hash_many_sse41:13blake3_hash_many_sse41:14 push r1515 push r1416 push r1317 push r1218 push rsi19 push rdi20 push rbx21 push rbp22 mov rbp, rsp23 sub rsp, 52824 and rsp, 0xFFFFFFFFFFFFFFC025 movdqa xmmword ptr [rsp+0x170], xmm626 movdqa xmmword ptr [rsp+0x180], xmm727 movdqa xmmword ptr [rsp+0x190], xmm828 movdqa xmmword ptr [rsp+0x1A0], xmm929 movdqa xmmword ptr [rsp+0x1B0], xmm1030 movdqa xmmword ptr [rsp+0x1C0], xmm1131 movdqa xmmword ptr [rsp+0x1D0], xmm1232 movdqa xmmword ptr [rsp+0x1E0], xmm1333 movdqa xmmword ptr [rsp+0x1F0], xmm1434 movdqa xmmword ptr [rsp+0x200], xmm1535 mov rdi, rcx36 mov rsi, rdx37 mov rdx, r838 mov rcx, r939 mov r8, qword ptr [rbp+0x68]40 movzx r9, byte ptr [rbp+0x70]41 neg r9d42 movd xmm0, r9d43 pshufd xmm0, xmm0, 0x0044 movdqa xmmword ptr [rsp+0x130], xmm045 movdqa xmm1, xmm046 pand xmm1, xmmword ptr [ADD0+rip]47 pand xmm0, xmmword ptr [ADD1+rip]48 movdqa xmmword ptr [rsp+0x150], xmm049 movd xmm0, r8d50 pshufd xmm0, xmm0, 0x0051 paddd xmm0, xmm152 movdqa xmmword ptr [rsp+0x110], xmm053 pxor xmm0, xmmword ptr [CMP_MSB_MASK+rip]54 pxor xmm1, xmmword ptr [CMP_MSB_MASK+rip]55 pcmpgtd xmm1, xmm056 shr r8, 3257 movd xmm2, r8d58 pshufd xmm2, xmm2, 0x0059 psubd xmm2, xmm160 movdqa xmmword ptr [rsp+0x120], xmm261 mov rbx, qword ptr [rbp+0x90]62 mov r15, rdx63 shl r15, 664 movzx r13d, byte ptr [rbp+0x78]65 movzx r12d, byte ptr [rbp+0x88]66 cmp rsi, 467 jc 3f682:69 movdqu xmm3, xmmword ptr [rcx]70 pshufd xmm0, xmm3, 0x0071 pshufd xmm1, xmm3, 0x5572 pshufd xmm2, xmm3, 0xAA73 pshufd xmm3, xmm3, 0xFF74 movdqu xmm7, xmmword ptr [rcx+0x10]75 pshufd xmm4, xmm7, 0x0076 pshufd xmm5, xmm7, 0x5577 pshufd xmm6, xmm7, 0xAA78 pshufd xmm7, xmm7, 0xFF79 mov r8, qword ptr [rdi]80 mov r9, qword ptr [rdi+0x8]81 mov r10, qword ptr [rdi+0x10]82 mov r11, qword ptr [rdi+0x18]83 movzx eax, byte ptr [rbp+0x80]84 or eax, r13d85 xor edx, edx869:87 mov r14d, eax88 or eax, r12d89 add rdx, 6490 cmp rdx, r1591 cmovne eax, r14d92 movdqu xmm8, xmmword ptr [r8+rdx-0x40]93 movdqu xmm9, xmmword ptr [r9+rdx-0x40]94 movdqu xmm10, xmmword ptr [r10+rdx-0x40]95 movdqu xmm11, xmmword ptr [r11+rdx-0x40]96 movdqa xmm12, xmm897 punpckldq xmm8, xmm998 punpckhdq xmm12, xmm999 movdqa xmm14, xmm10100 punpckldq xmm10, xmm11101 punpckhdq xmm14, xmm11102 movdqa xmm9, xmm8103 punpcklqdq xmm8, xmm10104 punpckhqdq xmm9, xmm10105 movdqa xmm13, xmm12106 punpcklqdq xmm12, xmm14107 punpckhqdq xmm13, xmm14108 movdqa xmmword ptr [rsp], xmm8109 movdqa xmmword ptr [rsp+0x10], xmm9110 movdqa xmmword ptr [rsp+0x20], xmm12111 movdqa xmmword ptr [rsp+0x30], xmm13112 movdqu xmm8, xmmword ptr [r8+rdx-0x30]113 movdqu xmm9, xmmword ptr [r9+rdx-0x30]114 movdqu xmm10, xmmword ptr [r10+rdx-0x30]115 movdqu xmm11, xmmword ptr [r11+rdx-0x30]116 movdqa xmm12, xmm8117 punpckldq xmm8, xmm9118 punpckhdq xmm12, xmm9119 movdqa xmm14, xmm10120 punpckldq xmm10, xmm11121 punpckhdq xmm14, xmm11122 movdqa xmm9, xmm8123 punpcklqdq xmm8, xmm10124 punpckhqdq xmm9, xmm10125 movdqa xmm13, xmm12126 punpcklqdq xmm12, xmm14127 punpckhqdq xmm13, xmm14128 movdqa xmmword ptr [rsp+0x40], xmm8129 movdqa xmmword ptr [rsp+0x50], xmm9130 movdqa xmmword ptr [rsp+0x60], xmm12131 movdqa xmmword ptr [rsp+0x70], xmm13132 movdqu xmm8, xmmword ptr [r8+rdx-0x20]133 movdqu xmm9, xmmword ptr [r9+rdx-0x20]134 movdqu xmm10, xmmword ptr [r10+rdx-0x20]135 movdqu xmm11, xmmword ptr [r11+rdx-0x20]136 movdqa xmm12, xmm8137 punpckldq xmm8, xmm9138 punpckhdq xmm12, xmm9139 movdqa xmm14, xmm10140 punpckldq xmm10, xmm11141 punpckhdq xmm14, xmm11142 movdqa xmm9, xmm8143 punpcklqdq xmm8, xmm10144 punpckhqdq xmm9, xmm10145 movdqa xmm13, xmm12146 punpcklqdq xmm12, xmm14147 punpckhqdq xmm13, xmm14148 movdqa xmmword ptr [rsp+0x80], xmm8149 movdqa xmmword ptr [rsp+0x90], xmm9150 movdqa xmmword ptr [rsp+0xA0], xmm12151 movdqa xmmword ptr [rsp+0xB0], xmm13152 movdqu xmm8, xmmword ptr [r8+rdx-0x10]153 movdqu xmm9, xmmword ptr [r9+rdx-0x10]154 movdqu xmm10, xmmword ptr [r10+rdx-0x10]155 movdqu xmm11, xmmword ptr [r11+rdx-0x10]156 movdqa xmm12, xmm8157 punpckldq xmm8, xmm9158 punpckhdq xmm12, xmm9159 movdqa xmm14, xmm10160 punpckldq xmm10, xmm11161 punpckhdq xmm14, xmm11162 movdqa xmm9, xmm8163 punpcklqdq xmm8, xmm10164 punpckhqdq xmm9, xmm10165 movdqa xmm13, xmm12166 punpcklqdq xmm12, xmm14167 punpckhqdq xmm13, xmm14168 movdqa xmmword ptr [rsp+0xC0], xmm8169 movdqa xmmword ptr [rsp+0xD0], xmm9170 movdqa xmmword ptr [rsp+0xE0], xmm12171 movdqa xmmword ptr [rsp+0xF0], xmm13172 movdqa xmm9, xmmword ptr [BLAKE3_IV_1+rip]173 movdqa xmm10, xmmword ptr [BLAKE3_IV_2+rip]174 movdqa xmm11, xmmword ptr [BLAKE3_IV_3+rip]175 movdqa xmm12, xmmword ptr [rsp+0x110]176 movdqa xmm13, xmmword ptr [rsp+0x120]177 movdqa xmm14, xmmword ptr [BLAKE3_BLOCK_LEN+rip]178 movd xmm15, eax179 pshufd xmm15, xmm15, 0x00180 prefetcht0 [r8+rdx+0x80]181 prefetcht0 [r9+rdx+0x80]182 prefetcht0 [r10+rdx+0x80]183 prefetcht0 [r11+rdx+0x80]184 paddd xmm0, xmmword ptr [rsp]185 paddd xmm1, xmmword ptr [rsp+0x20]186 paddd xmm2, xmmword ptr [rsp+0x40]187 paddd xmm3, xmmword ptr [rsp+0x60]188 paddd xmm0, xmm4189 paddd xmm1, xmm5190 paddd xmm2, xmm6191 paddd xmm3, xmm7192 pxor xmm12, xmm0193 pxor xmm13, xmm1194 pxor xmm14, xmm2195 pxor xmm15, xmm3196 movdqa xmm8, xmmword ptr [ROT16+rip]197 pshufb xmm12, xmm8198 pshufb xmm13, xmm8199 pshufb xmm14, xmm8200 pshufb xmm15, xmm8201 movdqa xmm8, xmmword ptr [BLAKE3_IV_0+rip]202 paddd xmm8, xmm12203 paddd xmm9, xmm13204 paddd xmm10, xmm14205 paddd xmm11, xmm15206 pxor xmm4, xmm8207 pxor xmm5, xmm9208 pxor xmm6, xmm10209 pxor xmm7, xmm11210 movdqa xmmword ptr [rsp+0x100], xmm8211 movdqa xmm8, xmm4212 psrld xmm8, 12213 pslld xmm4, 20214 por xmm4, xmm8215 movdqa xmm8, xmm5216 psrld xmm8, 12217 pslld xmm5, 20218 por xmm5, xmm8219 movdqa xmm8, xmm6220 psrld xmm8, 12221 pslld xmm6, 20222 por xmm6, xmm8223 movdqa xmm8, xmm7224 psrld xmm8, 12225 pslld xmm7, 20226 por xmm7, xmm8227 paddd xmm0, xmmword ptr [rsp+0x10]228 paddd xmm1, xmmword ptr [rsp+0x30]229 paddd xmm2, xmmword ptr [rsp+0x50]230 paddd xmm3, xmmword ptr [rsp+0x70]231 paddd xmm0, xmm4232 paddd xmm1, xmm5233 paddd xmm2, xmm6234 paddd xmm3, xmm7235 pxor xmm12, xmm0236 pxor xmm13, xmm1237 pxor xmm14, xmm2238 pxor xmm15, xmm3239 movdqa xmm8, xmmword ptr [ROT8+rip]240 pshufb xmm12, xmm8241 pshufb xmm13, xmm8242 pshufb xmm14, xmm8243 pshufb xmm15, xmm8244 movdqa xmm8, xmmword ptr [rsp+0x100]245 paddd xmm8, xmm12246 paddd xmm9, xmm13247 paddd xmm10, xmm14248 paddd xmm11, xmm15249 pxor xmm4, xmm8250 pxor xmm5, xmm9251 pxor xmm6, xmm10252 pxor xmm7, xmm11253 movdqa xmmword ptr [rsp+0x100], xmm8254 movdqa xmm8, xmm4255 psrld xmm8, 7256 pslld xmm4, 25257 por xmm4, xmm8258 movdqa xmm8, xmm5259 psrld xmm8, 7260 pslld xmm5, 25261 por xmm5, xmm8262 movdqa xmm8, xmm6263 psrld xmm8, 7264 pslld xmm6, 25265 por xmm6, xmm8266 movdqa xmm8, xmm7267 psrld xmm8, 7268 pslld xmm7, 25269 por xmm7, xmm8270 paddd xmm0, xmmword ptr [rsp+0x80]271 paddd xmm1, xmmword ptr [rsp+0xA0]272 paddd xmm2, xmmword ptr [rsp+0xC0]273 paddd xmm3, xmmword ptr [rsp+0xE0]274 paddd xmm0, xmm5275 paddd xmm1, xmm6276 paddd xmm2, xmm7277 paddd xmm3, xmm4278 pxor xmm15, xmm0279 pxor xmm12, xmm1280 pxor xmm13, xmm2281 pxor xmm14, xmm3282 movdqa xmm8, xmmword ptr [ROT16+rip]283 pshufb xmm15, xmm8284 pshufb xmm12, xmm8285 pshufb xmm13, xmm8286 pshufb xmm14, xmm8287 paddd xmm10, xmm15288 paddd xmm11, xmm12289 movdqa xmm8, xmmword ptr [rsp+0x100]290 paddd xmm8, xmm13291 paddd xmm9, xmm14292 pxor xmm5, xmm10293 pxor xmm6, xmm11294 pxor xmm7, xmm8295 pxor xmm4, xmm9296 movdqa xmmword ptr [rsp+0x100], xmm8297 movdqa xmm8, xmm5298 psrld xmm8, 12299 pslld xmm5, 20300 por xmm5, xmm8301 movdqa xmm8, xmm6302 psrld xmm8, 12303 pslld xmm6, 20304 por xmm6, xmm8305 movdqa xmm8, xmm7306 psrld xmm8, 12307 pslld xmm7, 20308 por xmm7, xmm8309 movdqa xmm8, xmm4310 psrld xmm8, 12311 pslld xmm4, 20312 por xmm4, xmm8313 paddd xmm0, xmmword ptr [rsp+0x90]314 paddd xmm1, xmmword ptr [rsp+0xB0]315 paddd xmm2, xmmword ptr [rsp+0xD0]316 paddd xmm3, xmmword ptr [rsp+0xF0]317 paddd xmm0, xmm5318 paddd xmm1, xmm6319 paddd xmm2, xmm7320 paddd xmm3, xmm4321 pxor xmm15, xmm0322 pxor xmm12, xmm1323 pxor xmm13, xmm2324 pxor xmm14, xmm3325 movdqa xmm8, xmmword ptr [ROT8+rip]326 pshufb xmm15, xmm8327 pshufb xmm12, xmm8328 pshufb xmm13, xmm8329 pshufb xmm14, xmm8330 paddd xmm10, xmm15331 paddd xmm11, xmm12332 movdqa xmm8, xmmword ptr [rsp+0x100]333 paddd xmm8, xmm13334 paddd xmm9, xmm14335 pxor xmm5, xmm10336 pxor xmm6, xmm11337 pxor xmm7, xmm8338 pxor xmm4, xmm9339 movdqa xmmword ptr [rsp+0x100], xmm8340 movdqa xmm8, xmm5341 psrld xmm8, 7342 pslld xmm5, 25343 por xmm5, xmm8344 movdqa xmm8, xmm6345 psrld xmm8, 7346 pslld xmm6, 25347 por xmm6, xmm8348 movdqa xmm8, xmm7349 psrld xmm8, 7350 pslld xmm7, 25351 por xmm7, xmm8352 movdqa xmm8, xmm4353 psrld xmm8, 7354 pslld xmm4, 25355 por xmm4, xmm8356 paddd xmm0, xmmword ptr [rsp+0x20]357 paddd xmm1, xmmword ptr [rsp+0x30]358 paddd xmm2, xmmword ptr [rsp+0x70]359 paddd xmm3, xmmword ptr [rsp+0x40]360 paddd xmm0, xmm4361 paddd xmm1, xmm5362 paddd xmm2, xmm6363 paddd xmm3, xmm7364 pxor xmm12, xmm0365 pxor xmm13, xmm1366 pxor xmm14, xmm2367 pxor xmm15, xmm3368 movdqa xmm8, xmmword ptr [ROT16+rip]369 pshufb xmm12, xmm8370 pshufb xmm13, xmm8371 pshufb xmm14, xmm8372 pshufb xmm15, xmm8373 movdqa xmm8, xmmword ptr [rsp+0x100]374 paddd xmm8, xmm12375 paddd xmm9, xmm13376 paddd xmm10, xmm14377 paddd xmm11, xmm15378 pxor xmm4, xmm8379 pxor xmm5, xmm9380 pxor xmm6, xmm10381 pxor xmm7, xmm11382 movdqa xmmword ptr [rsp+0x100], xmm8383 movdqa xmm8, xmm4384 psrld xmm8, 12385 pslld xmm4, 20386 por xmm4, xmm8387 movdqa xmm8, xmm5388 psrld xmm8, 12389 pslld xmm5, 20390 por xmm5, xmm8391 movdqa xmm8, xmm6392 psrld xmm8, 12393 pslld xmm6, 20394 por xmm6, xmm8395 movdqa xmm8, xmm7396 psrld xmm8, 12397 pslld xmm7, 20398 por xmm7, xmm8399 paddd xmm0, xmmword ptr [rsp+0x60]400 paddd xmm1, xmmword ptr [rsp+0xA0]401 paddd xmm2, xmmword ptr [rsp]402 paddd xmm3, xmmword ptr [rsp+0xD0]403 paddd xmm0, xmm4404 paddd xmm1, xmm5405 paddd xmm2, xmm6406 paddd xmm3, xmm7407 pxor xmm12, xmm0408 pxor xmm13, xmm1409 pxor xmm14, xmm2410 pxor xmm15, xmm3411 movdqa xmm8, xmmword ptr [ROT8+rip]412 pshufb xmm12, xmm8413 pshufb xmm13, xmm8414 pshufb xmm14, xmm8415 pshufb xmm15, xmm8416 movdqa xmm8, xmmword ptr [rsp+0x100]417 paddd xmm8, xmm12418 paddd xmm9, xmm13419 paddd xmm10, xmm14420 paddd xmm11, xmm15421 pxor xmm4, xmm8422 pxor xmm5, xmm9423 pxor xmm6, xmm10424 pxor xmm7, xmm11425 movdqa xmmword ptr [rsp+0x100], xmm8426 movdqa xmm8, xmm4427 psrld xmm8, 7428 pslld xmm4, 25429 por xmm4, xmm8430 movdqa xmm8, xmm5431 psrld xmm8, 7432 pslld xmm5, 25433 por xmm5, xmm8434 movdqa xmm8, xmm6435 psrld xmm8, 7436 pslld xmm6, 25437 por xmm6, xmm8438 movdqa xmm8, xmm7439 psrld xmm8, 7440 pslld xmm7, 25441 por xmm7, xmm8442 paddd xmm0, xmmword ptr [rsp+0x10]443 paddd xmm1, xmmword ptr [rsp+0xC0]444 paddd xmm2, xmmword ptr [rsp+0x90]445 paddd xmm3, xmmword ptr [rsp+0xF0]446 paddd xmm0, xmm5447 paddd xmm1, xmm6448 paddd xmm2, xmm7449 paddd xmm3, xmm4450 pxor xmm15, xmm0451 pxor xmm12, xmm1452 pxor xmm13, xmm2453 pxor xmm14, xmm3454 movdqa xmm8, xmmword ptr [ROT16+rip]455 pshufb xmm15, xmm8456 pshufb xmm12, xmm8457 pshufb xmm13, xmm8458 pshufb xmm14, xmm8459 paddd xmm10, xmm15460 paddd xmm11, xmm12461 movdqa xmm8, xmmword ptr [rsp+0x100]462 paddd xmm8, xmm13463 paddd xmm9, xmm14464 pxor xmm5, xmm10465 pxor xmm6, xmm11466 pxor xmm7, xmm8467 pxor xmm4, xmm9468 movdqa xmmword ptr [rsp+0x100], xmm8469 movdqa xmm8, xmm5470 psrld xmm8, 12471 pslld xmm5, 20472 por xmm5, xmm8473 movdqa xmm8, xmm6474 psrld xmm8, 12475 pslld xmm6, 20476 por xmm6, xmm8477 movdqa xmm8, xmm7478 psrld xmm8, 12479 pslld xmm7, 20480 por xmm7, xmm8481 movdqa xmm8, xmm4482 psrld xmm8, 12483 pslld xmm4, 20484 por xmm4, xmm8485 paddd xmm0, xmmword ptr [rsp+0xB0]486 paddd xmm1, xmmword ptr [rsp+0x50]487 paddd xmm2, xmmword ptr [rsp+0xE0]488 paddd xmm3, xmmword ptr [rsp+0x80]489 paddd xmm0, xmm5490 paddd xmm1, xmm6491 paddd xmm2, xmm7492 paddd xmm3, xmm4493 pxor xmm15, xmm0494 pxor xmm12, xmm1495 pxor xmm13, xmm2496 pxor xmm14, xmm3497 movdqa xmm8, xmmword ptr [ROT8+rip]498 pshufb xmm15, xmm8499 pshufb xmm12, xmm8500 pshufb xmm13, xmm8501 pshufb xmm14, xmm8502 paddd xmm10, xmm15503 paddd xmm11, xmm12504 movdqa xmm8, xmmword ptr [rsp+0x100]505 paddd xmm8, xmm13506 paddd xmm9, xmm14507 pxor xmm5, xmm10508 pxor xmm6, xmm11509 pxor xmm7, xmm8510 pxor xmm4, xmm9511 movdqa xmmword ptr [rsp+0x100], xmm8512 movdqa xmm8, xmm5513 psrld xmm8, 7514 pslld xmm5, 25515 por xmm5, xmm8516 movdqa xmm8, xmm6517 psrld xmm8, 7518 pslld xmm6, 25519 por xmm6, xmm8520 movdqa xmm8, xmm7521 psrld xmm8, 7522 pslld xmm7, 25523 por xmm7, xmm8524 movdqa xmm8, xmm4525 psrld xmm8, 7526 pslld xmm4, 25527 por xmm4, xmm8528 paddd xmm0, xmmword ptr [rsp+0x30]529 paddd xmm1, xmmword ptr [rsp+0xA0]530 paddd xmm2, xmmword ptr [rsp+0xD0]531 paddd xmm3, xmmword ptr [rsp+0x70]532 paddd xmm0, xmm4533 paddd xmm1, xmm5534 paddd xmm2, xmm6535 paddd xmm3, xmm7536 pxor xmm12, xmm0537 pxor xmm13, xmm1538 pxor xmm14, xmm2539 pxor xmm15, xmm3540 movdqa xmm8, xmmword ptr [ROT16+rip]541 pshufb xmm12, xmm8542 pshufb xmm13, xmm8543 pshufb xmm14, xmm8544 pshufb xmm15, xmm8545 movdqa xmm8, xmmword ptr [rsp+0x100]546 paddd xmm8, xmm12547 paddd xmm9, xmm13548 paddd xmm10, xmm14549 paddd xmm11, xmm15550 pxor xmm4, xmm8551 pxor xmm5, xmm9552 pxor xmm6, xmm10553 pxor xmm7, xmm11554 movdqa xmmword ptr [rsp+0x100], xmm8555 movdqa xmm8, xmm4556 psrld xmm8, 12557 pslld xmm4, 20558 por xmm4, xmm8559 movdqa xmm8, xmm5560 psrld xmm8, 12561 pslld xmm5, 20562 por xmm5, xmm8563 movdqa xmm8, xmm6564 psrld xmm8, 12565 pslld xmm6, 20566 por xmm6, xmm8567 movdqa xmm8, xmm7568 psrld xmm8, 12569 pslld xmm7, 20570 por xmm7, xmm8571 paddd xmm0, xmmword ptr [rsp+0x40]572 paddd xmm1, xmmword ptr [rsp+0xC0]573 paddd xmm2, xmmword ptr [rsp+0x20]574 paddd xmm3, xmmword ptr [rsp+0xE0]575 paddd xmm0, xmm4576 paddd xmm1, xmm5577 paddd xmm2, xmm6578 paddd xmm3, xmm7579 pxor xmm12, xmm0580 pxor xmm13, xmm1581 pxor xmm14, xmm2582 pxor xmm15, xmm3583 movdqa xmm8, xmmword ptr [ROT8+rip]584 pshufb xmm12, xmm8585 pshufb xmm13, xmm8586 pshufb xmm14, xmm8587 pshufb xmm15, xmm8588 movdqa xmm8, xmmword ptr [rsp+0x100]589 paddd xmm8, xmm12590 paddd xmm9, xmm13591 paddd xmm10, xmm14592 paddd xmm11, xmm15593 pxor xmm4, xmm8594 pxor xmm5, xmm9595 pxor xmm6, xmm10596 pxor xmm7, xmm11597 movdqa xmmword ptr [rsp+0x100], xmm8598 movdqa xmm8, xmm4599 psrld xmm8, 7600 pslld xmm4, 25601 por xmm4, xmm8602 movdqa xmm8, xmm5603 psrld xmm8, 7604 pslld xmm5, 25605 por xmm5, xmm8606 movdqa xmm8, xmm6607 psrld xmm8, 7608 pslld xmm6, 25609 por xmm6, xmm8610 movdqa xmm8, xmm7611 psrld xmm8, 7612 pslld xmm7, 25613 por xmm7, xmm8614 paddd xmm0, xmmword ptr [rsp+0x60]615 paddd xmm1, xmmword ptr [rsp+0x90]616 paddd xmm2, xmmword ptr [rsp+0xB0]617 paddd xmm3, xmmword ptr [rsp+0x80]618 paddd xmm0, xmm5619 paddd xmm1, xmm6620 paddd xmm2, xmm7621 paddd xmm3, xmm4622 pxor xmm15, xmm0623 pxor xmm12, xmm1624 pxor xmm13, xmm2625 pxor xmm14, xmm3626 movdqa xmm8, xmmword ptr [ROT16+rip]627 pshufb xmm15, xmm8628 pshufb xmm12, xmm8629 pshufb xmm13, xmm8630 pshufb xmm14, xmm8631 paddd xmm10, xmm15632 paddd xmm11, xmm12633 movdqa xmm8, xmmword ptr [rsp+0x100]634 paddd xmm8, xmm13635 paddd xmm9, xmm14636 pxor xmm5, xmm10637 pxor xmm6, xmm11638 pxor xmm7, xmm8639 pxor xmm4, xmm9640 movdqa xmmword ptr [rsp+0x100], xmm8641 movdqa xmm8, xmm5642 psrld xmm8, 12643 pslld xmm5, 20644 por xmm5, xmm8645 movdqa xmm8, xmm6646 psrld xmm8, 12647 pslld xmm6, 20648 por xmm6, xmm8649 movdqa xmm8, xmm7650 psrld xmm8, 12651 pslld xmm7, 20652 por xmm7, xmm8653 movdqa xmm8, xmm4654 psrld xmm8, 12655 pslld xmm4, 20656 por xmm4, xmm8657 paddd xmm0, xmmword ptr [rsp+0x50]658 paddd xmm1, xmmword ptr [rsp]659 paddd xmm2, xmmword ptr [rsp+0xF0]660 paddd xmm3, xmmword ptr [rsp+0x10]661 paddd xmm0, xmm5662 paddd xmm1, xmm6663 paddd xmm2, xmm7664 paddd xmm3, xmm4665 pxor xmm15, xmm0666 pxor xmm12, xmm1667 pxor xmm13, xmm2668 pxor xmm14, xmm3669 movdqa xmm8, xmmword ptr [ROT8+rip]670 pshufb xmm15, xmm8671 pshufb xmm12, xmm8672 pshufb xmm13, xmm8673 pshufb xmm14, xmm8674 paddd xmm10, xmm15675 paddd xmm11, xmm12676 movdqa xmm8, xmmword ptr [rsp+0x100]677 paddd xmm8, xmm13678 paddd xmm9, xmm14679 pxor xmm5, xmm10680 pxor xmm6, xmm11681 pxor xmm7, xmm8682 pxor xmm4, xmm9683 movdqa xmmword ptr [rsp+0x100], xmm8684 movdqa xmm8, xmm5685 psrld xmm8, 7686 pslld xmm5, 25687 por xmm5, xmm8688 movdqa xmm8, xmm6689 psrld xmm8, 7690 pslld xmm6, 25691 por xmm6, xmm8692 movdqa xmm8, xmm7693 psrld xmm8, 7694 pslld xmm7, 25695 por xmm7, xmm8696 movdqa xmm8, xmm4697 psrld xmm8, 7698 pslld xmm4, 25699 por xmm4, xmm8700 paddd xmm0, xmmword ptr [rsp+0xA0]701 paddd xmm1, xmmword ptr [rsp+0xC0]702 paddd xmm2, xmmword ptr [rsp+0xE0]703 paddd xmm3, xmmword ptr [rsp+0xD0]704 paddd xmm0, xmm4705 paddd xmm1, xmm5706 paddd xmm2, xmm6707 paddd xmm3, xmm7708 pxor xmm12, xmm0709 pxor xmm13, xmm1710 pxor xmm14, xmm2711 pxor xmm15, xmm3712 movdqa xmm8, xmmword ptr [ROT16+rip]713 pshufb xmm12, xmm8714 pshufb xmm13, xmm8715 pshufb xmm14, xmm8716 pshufb xmm15, xmm8717 movdqa xmm8, xmmword ptr [rsp+0x100]718 paddd xmm8, xmm12719 paddd xmm9, xmm13720 paddd xmm10, xmm14721 paddd xmm11, xmm15722 pxor xmm4, xmm8723 pxor xmm5, xmm9724 pxor xmm6, xmm10725 pxor xmm7, xmm11726 movdqa xmmword ptr [rsp+0x100], xmm8727 movdqa xmm8, xmm4728 psrld xmm8, 12729 pslld xmm4, 20730 por xmm4, xmm8731 movdqa xmm8, xmm5732 psrld xmm8, 12733 pslld xmm5, 20734 por xmm5, xmm8735 movdqa xmm8, xmm6736 psrld xmm8, 12737 pslld xmm6, 20738 por xmm6, xmm8739 movdqa xmm8, xmm7740 psrld xmm8, 12741 pslld xmm7, 20742 por xmm7, xmm8743 paddd xmm0, xmmword ptr [rsp+0x70]744 paddd xmm1, xmmword ptr [rsp+0x90]745 paddd xmm2, xmmword ptr [rsp+0x30]746 paddd xmm3, xmmword ptr [rsp+0xF0]747 paddd xmm0, xmm4748 paddd xmm1, xmm5749 paddd xmm2, xmm6750 paddd xmm3, xmm7751 pxor xmm12, xmm0752 pxor xmm13, xmm1753 pxor xmm14, xmm2754 pxor xmm15, xmm3755 movdqa xmm8, xmmword ptr [ROT8+rip]756 pshufb xmm12, xmm8757 pshufb xmm13, xmm8758 pshufb xmm14, xmm8759 pshufb xmm15, xmm8760 movdqa xmm8, xmmword ptr [rsp+0x100]761 paddd xmm8, xmm12762 paddd xmm9, xmm13763 paddd xmm10, xmm14764 paddd xmm11, xmm15765 pxor xmm4, xmm8766 pxor xmm5, xmm9767 pxor xmm6, xmm10768 pxor xmm7, xmm11769 movdqa xmmword ptr [rsp+0x100], xmm8770 movdqa xmm8, xmm4771 psrld xmm8, 7772 pslld xmm4, 25773 por xmm4, xmm8774 movdqa xmm8, xmm5775 psrld xmm8, 7776 pslld xmm5, 25777 por xmm5, xmm8778 movdqa xmm8, xmm6779 psrld xmm8, 7780 pslld xmm6, 25781 por xmm6, xmm8782 movdqa xmm8, xmm7783 psrld xmm8, 7784 pslld xmm7, 25785 por xmm7, xmm8786 paddd xmm0, xmmword ptr [rsp+0x40]787 paddd xmm1, xmmword ptr [rsp+0xB0]788 paddd xmm2, xmmword ptr [rsp+0x50]789 paddd xmm3, xmmword ptr [rsp+0x10]790 paddd xmm0, xmm5791 paddd xmm1, xmm6792 paddd xmm2, xmm7793 paddd xmm3, xmm4794 pxor xmm15, xmm0795 pxor xmm12, xmm1796 pxor xmm13, xmm2797 pxor xmm14, xmm3798 movdqa xmm8, xmmword ptr [ROT16+rip]799 pshufb xmm15, xmm8800 pshufb xmm12, xmm8801 pshufb xmm13, xmm8802 pshufb xmm14, xmm8803 paddd xmm10, xmm15804 paddd xmm11, xmm12805 movdqa xmm8, xmmword ptr [rsp+0x100]806 paddd xmm8, xmm13807 paddd xmm9, xmm14808 pxor xmm5, xmm10809 pxor xmm6, xmm11810 pxor xmm7, xmm8811 pxor xmm4, xmm9812 movdqa xmmword ptr [rsp+0x100], xmm8813 movdqa xmm8, xmm5814 psrld xmm8, 12815 pslld xmm5, 20816 por xmm5, xmm8817 movdqa xmm8, xmm6818 psrld xmm8, 12819 pslld xmm6, 20820 por xmm6, xmm8821 movdqa xmm8, xmm7822 psrld xmm8, 12823 pslld xmm7, 20824 por xmm7, xmm8825 movdqa xmm8, xmm4826 psrld xmm8, 12827 pslld xmm4, 20828 por xmm4, xmm8829 paddd xmm0, xmmword ptr [rsp]830 paddd xmm1, xmmword ptr [rsp+0x20]831 paddd xmm2, xmmword ptr [rsp+0x80]832 paddd xmm3, xmmword ptr [rsp+0x60]833 paddd xmm0, xmm5834 paddd xmm1, xmm6835 paddd xmm2, xmm7836 paddd xmm3, xmm4837 pxor xmm15, xmm0838 pxor xmm12, xmm1839 pxor xmm13, xmm2840 pxor xmm14, xmm3841 movdqa xmm8, xmmword ptr [ROT8+rip]842 pshufb xmm15, xmm8843 pshufb xmm12, xmm8844 pshufb xmm13, xmm8845 pshufb xmm14, xmm8846 paddd xmm10, xmm15847 paddd xmm11, xmm12848 movdqa xmm8, xmmword ptr [rsp+0x100]849 paddd xmm8, xmm13850 paddd xmm9, xmm14851 pxor xmm5, xmm10852 pxor xmm6, xmm11853 pxor xmm7, xmm8854 pxor xmm4, xmm9855 movdqa xmmword ptr [rsp+0x100], xmm8856 movdqa xmm8, xmm5857 psrld xmm8, 7858 pslld xmm5, 25859 por xmm5, xmm8860 movdqa xmm8, xmm6861 psrld xmm8, 7862 pslld xmm6, 25863 por xmm6, xmm8864 movdqa xmm8, xmm7865 psrld xmm8, 7866 pslld xmm7, 25867 por xmm7, xmm8868 movdqa xmm8, xmm4869 psrld xmm8, 7870 pslld xmm4, 25871 por xmm4, xmm8872 paddd xmm0, xmmword ptr [rsp+0xC0]873 paddd xmm1, xmmword ptr [rsp+0x90]874 paddd xmm2, xmmword ptr [rsp+0xF0]875 paddd xmm3, xmmword ptr [rsp+0xE0]876 paddd xmm0, xmm4877 paddd xmm1, xmm5878 paddd xmm2, xmm6879 paddd xmm3, xmm7880 pxor xmm12, xmm0881 pxor xmm13, xmm1882 pxor xmm14, xmm2883 pxor xmm15, xmm3884 movdqa xmm8, xmmword ptr [ROT16+rip]885 pshufb xmm12, xmm8886 pshufb xmm13, xmm8887 pshufb xmm14, xmm8888 pshufb xmm15, xmm8889 movdqa xmm8, xmmword ptr [rsp+0x100]890 paddd xmm8, xmm12891 paddd xmm9, xmm13892 paddd xmm10, xmm14893 paddd xmm11, xmm15894 pxor xmm4, xmm8895 pxor xmm5, xmm9896 pxor xmm6, xmm10897 pxor xmm7, xmm11898 movdqa xmmword ptr [rsp+0x100], xmm8899 movdqa xmm8, xmm4900 psrld xmm8, 12901 pslld xmm4, 20902 por xmm4, xmm8903 movdqa xmm8, xmm5904 psrld xmm8, 12905 pslld xmm5, 20906 por xmm5, xmm8907 movdqa xmm8, xmm6908 psrld xmm8, 12909 pslld xmm6, 20910 por xmm6, xmm8911 movdqa xmm8, xmm7912 psrld xmm8, 12913 pslld xmm7, 20914 por xmm7, xmm8915 paddd xmm0, xmmword ptr [rsp+0xD0]916 paddd xmm1, xmmword ptr [rsp+0xB0]917 paddd xmm2, xmmword ptr [rsp+0xA0]918 paddd xmm3, xmmword ptr [rsp+0x80]919 paddd xmm0, xmm4920 paddd xmm1, xmm5921 paddd xmm2, xmm6922 paddd xmm3, xmm7923 pxor xmm12, xmm0924 pxor xmm13, xmm1925 pxor xmm14, xmm2926 pxor xmm15, xmm3927 movdqa xmm8, xmmword ptr [ROT8+rip]928 pshufb xmm12, xmm8929 pshufb xmm13, xmm8930 pshufb xmm14, xmm8931 pshufb xmm15, xmm8932 movdqa xmm8, xmmword ptr [rsp+0x100]933 paddd xmm8, xmm12934 paddd xmm9, xmm13935 paddd xmm10, xmm14936 paddd xmm11, xmm15937 pxor xmm4, xmm8938 pxor xmm5, xmm9939 pxor xmm6, xmm10940 pxor xmm7, xmm11941 movdqa xmmword ptr [rsp+0x100], xmm8942 movdqa xmm8, xmm4943 psrld xmm8, 7944 pslld xmm4, 25945 por xmm4, xmm8946 movdqa xmm8, xmm5947 psrld xmm8, 7948 pslld xmm5, 25949 por xmm5, xmm8950 movdqa xmm8, xmm6951 psrld xmm8, 7952 pslld xmm6, 25953 por xmm6, xmm8954 movdqa xmm8, xmm7955 psrld xmm8, 7956 pslld xmm7, 25957 por xmm7, xmm8958 paddd xmm0, xmmword ptr [rsp+0x70]959 paddd xmm1, xmmword ptr [rsp+0x50]960 paddd xmm2, xmmword ptr [rsp]961 paddd xmm3, xmmword ptr [rsp+0x60]962 paddd xmm0, xmm5963 paddd xmm1, xmm6964 paddd xmm2, xmm7965 paddd xmm3, xmm4966 pxor xmm15, xmm0967 pxor xmm12, xmm1968 pxor xmm13, xmm2969 pxor xmm14, xmm3970 movdqa xmm8, xmmword ptr [ROT16+rip]971 pshufb xmm15, xmm8972 pshufb xmm12, xmm8973 pshufb xmm13, xmm8974 pshufb xmm14, xmm8975 paddd xmm10, xmm15976 paddd xmm11, xmm12977 movdqa xmm8, xmmword ptr [rsp+0x100]978 paddd xmm8, xmm13979 paddd xmm9, xmm14980 pxor xmm5, xmm10981 pxor xmm6, xmm11982 pxor xmm7, xmm8983 pxor xmm4, xmm9984 movdqa xmmword ptr [rsp+0x100], xmm8985 movdqa xmm8, xmm5986 psrld xmm8, 12987 pslld xmm5, 20988 por xmm5, xmm8989 movdqa xmm8, xmm6990 psrld xmm8, 12991 pslld xmm6, 20992 por xmm6, xmm8993 movdqa xmm8, xmm7994 psrld xmm8, 12995 pslld xmm7, 20996 por xmm7, xmm8997 movdqa xmm8, xmm4998 psrld xmm8, 12999 pslld xmm4, 201000 por xmm4, xmm81001 paddd xmm0, xmmword ptr [rsp+0x20]1002 paddd xmm1, xmmword ptr [rsp+0x30]1003 paddd xmm2, xmmword ptr [rsp+0x10]1004 paddd xmm3, xmmword ptr [rsp+0x40]1005 paddd xmm0, xmm51006 paddd xmm1, xmm61007 paddd xmm2, xmm71008 paddd xmm3, xmm41009 pxor xmm15, xmm01010 pxor xmm12, xmm11011 pxor xmm13, xmm21012 pxor xmm14, xmm31013 movdqa xmm8, xmmword ptr [ROT8+rip]1014 pshufb xmm15, xmm81015 pshufb xmm12, xmm81016 pshufb xmm13, xmm81017 pshufb xmm14, xmm81018 paddd xmm10, xmm151019 paddd xmm11, xmm121020 movdqa xmm8, xmmword ptr [rsp+0x100]1021 paddd xmm8, xmm131022 paddd xmm9, xmm141023 pxor xmm5, xmm101024 pxor xmm6, xmm111025 pxor xmm7, xmm81026 pxor xmm4, xmm91027 movdqa xmmword ptr [rsp+0x100], xmm81028 movdqa xmm8, xmm51029 psrld xmm8, 71030 pslld xmm5, 251031 por xmm5, xmm81032 movdqa xmm8, xmm61033 psrld xmm8, 71034 pslld xmm6, 251035 por xmm6, xmm81036 movdqa xmm8, xmm71037 psrld xmm8, 71038 pslld xmm7, 251039 por xmm7, xmm81040 movdqa xmm8, xmm41041 psrld xmm8, 71042 pslld xmm4, 251043 por xmm4, xmm81044 paddd xmm0, xmmword ptr [rsp+0x90]1045 paddd xmm1, xmmword ptr [rsp+0xB0]1046 paddd xmm2, xmmword ptr [rsp+0x80]1047 paddd xmm3, xmmword ptr [rsp+0xF0]1048 paddd xmm0, xmm41049 paddd xmm1, xmm51050 paddd xmm2, xmm61051 paddd xmm3, xmm71052 pxor xmm12, xmm01053 pxor xmm13, xmm11054 pxor xmm14, xmm21055 pxor xmm15, xmm31056 movdqa xmm8, xmmword ptr [ROT16+rip]1057 pshufb xmm12, xmm81058 pshufb xmm13, xmm81059 pshufb xmm14, xmm81060 pshufb xmm15, xmm81061 movdqa xmm8, xmmword ptr [rsp+0x100]1062 paddd xmm8, xmm121063 paddd xmm9, xmm131064 paddd xmm10, xmm141065 paddd xmm11, xmm151066 pxor xmm4, xmm81067 pxor xmm5, xmm91068 pxor xmm6, xmm101069 pxor xmm7, xmm111070 movdqa xmmword ptr [rsp+0x100], xmm81071 movdqa xmm8, xmm41072 psrld xmm8, 121073 pslld xmm4, 201074 por xmm4, xmm81075 movdqa xmm8, xmm51076 psrld xmm8, 121077 pslld xmm5, 201078 por xmm5, xmm81079 movdqa xmm8, xmm61080 psrld xmm8, 121081 pslld xmm6, 201082 por xmm6, xmm81083 movdqa xmm8, xmm71084 psrld xmm8, 121085 pslld xmm7, 201086 por xmm7, xmm81087 paddd xmm0, xmmword ptr [rsp+0xE0]1088 paddd xmm1, xmmword ptr [rsp+0x50]1089 paddd xmm2, xmmword ptr [rsp+0xC0]1090 paddd xmm3, xmmword ptr [rsp+0x10]1091 paddd xmm0, xmm41092 paddd xmm1, xmm51093 paddd xmm2, xmm61094 paddd xmm3, xmm71095 pxor xmm12, xmm01096 pxor xmm13, xmm11097 pxor xmm14, xmm21098 pxor xmm15, xmm31099 movdqa xmm8, xmmword ptr [ROT8+rip]1100 pshufb xmm12, xmm81101 pshufb xmm13, xmm81102 pshufb xmm14, xmm81103 pshufb xmm15, xmm81104 movdqa xmm8, xmmword ptr [rsp+0x100]1105 paddd xmm8, xmm121106 paddd xmm9, xmm131107 paddd xmm10, xmm141108 paddd xmm11, xmm151109 pxor xmm4, xmm81110 pxor xmm5, xmm91111 pxor xmm6, xmm101112 pxor xmm7, xmm111113 movdqa xmmword ptr [rsp+0x100], xmm81114 movdqa xmm8, xmm41115 psrld xmm8, 71116 pslld xmm4, 251117 por xmm4, xmm81118 movdqa xmm8, xmm51119 psrld xmm8, 71120 pslld xmm5, 251121 por xmm5, xmm81122 movdqa xmm8, xmm61123 psrld xmm8, 71124 pslld xmm6, 251125 por xmm6, xmm81126 movdqa xmm8, xmm71127 psrld xmm8, 71128 pslld xmm7, 251129 por xmm7, xmm81130 paddd xmm0, xmmword ptr [rsp+0xD0]1131 paddd xmm1, xmmword ptr [rsp]1132 paddd xmm2, xmmword ptr [rsp+0x20]1133 paddd xmm3, xmmword ptr [rsp+0x40]1134 paddd xmm0, xmm51135 paddd xmm1, xmm61136 paddd xmm2, xmm71137 paddd xmm3, xmm41138 pxor xmm15, xmm01139 pxor xmm12, xmm11140 pxor xmm13, xmm21141 pxor xmm14, xmm31142 movdqa xmm8, xmmword ptr [ROT16+rip]1143 pshufb xmm15, xmm81144 pshufb xmm12, xmm81145 pshufb xmm13, xmm81146 pshufb xmm14, xmm81147 paddd xmm10, xmm151148 paddd xmm11, xmm121149 movdqa xmm8, xmmword ptr [rsp+0x100]1150 paddd xmm8, xmm131151 paddd xmm9, xmm141152 pxor xmm5, xmm101153 pxor xmm6, xmm111154 pxor xmm7, xmm81155 pxor xmm4, xmm91156 movdqa xmmword ptr [rsp+0x100], xmm81157 movdqa xmm8, xmm51158 psrld xmm8, 121159 pslld xmm5, 201160 por xmm5, xmm81161 movdqa xmm8, xmm61162 psrld xmm8, 121163 pslld xmm6, 201164 por xmm6, xmm81165 movdqa xmm8, xmm71166 psrld xmm8, 121167 pslld xmm7, 201168 por xmm7, xmm81169 movdqa xmm8, xmm41170 psrld xmm8, 121171 pslld xmm4, 201172 por xmm4, xmm81173 paddd xmm0, xmmword ptr [rsp+0x30]1174 paddd xmm1, xmmword ptr [rsp+0xA0]1175 paddd xmm2, xmmword ptr [rsp+0x60]1176 paddd xmm3, xmmword ptr [rsp+0x70]1177 paddd xmm0, xmm51178 paddd xmm1, xmm61179 paddd xmm2, xmm71180 paddd xmm3, xmm41181 pxor xmm15, xmm01182 pxor xmm12, xmm11183 pxor xmm13, xmm21184 pxor xmm14, xmm31185 movdqa xmm8, xmmword ptr [ROT8+rip]1186 pshufb xmm15, xmm81187 pshufb xmm12, xmm81188 pshufb xmm13, xmm81189 pshufb xmm14, xmm81190 paddd xmm10, xmm151191 paddd xmm11, xmm121192 movdqa xmm8, xmmword ptr [rsp+0x100]1193 paddd xmm8, xmm131194 paddd xmm9, xmm141195 pxor xmm5, xmm101196 pxor xmm6, xmm111197 pxor xmm7, xmm81198 pxor xmm4, xmm91199 movdqa xmmword ptr [rsp+0x100], xmm81200 movdqa xmm8, xmm51201 psrld xmm8, 71202 pslld xmm5, 251203 por xmm5, xmm81204 movdqa xmm8, xmm61205 psrld xmm8, 71206 pslld xmm6, 251207 por xmm6, xmm81208 movdqa xmm8, xmm71209 psrld xmm8, 71210 pslld xmm7, 251211 por xmm7, xmm81212 movdqa xmm8, xmm41213 psrld xmm8, 71214 pslld xmm4, 251215 por xmm4, xmm81216 paddd xmm0, xmmword ptr [rsp+0xB0]1217 paddd xmm1, xmmword ptr [rsp+0x50]1218 paddd xmm2, xmmword ptr [rsp+0x10]1219 paddd xmm3, xmmword ptr [rsp+0x80]1220 paddd xmm0, xmm41221 paddd xmm1, xmm51222 paddd xmm2, xmm61223 paddd xmm3, xmm71224 pxor xmm12, xmm01225 pxor xmm13, xmm11226 pxor xmm14, xmm21227 pxor xmm15, xmm31228 movdqa xmm8, xmmword ptr [ROT16+rip]1229 pshufb xmm12, xmm81230 pshufb xmm13, xmm81231 pshufb xmm14, xmm81232 pshufb xmm15, xmm81233 movdqa xmm8, xmmword ptr [rsp+0x100]1234 paddd xmm8, xmm121235 paddd xmm9, xmm131236 paddd xmm10, xmm141237 paddd xmm11, xmm151238 pxor xmm4, xmm81239 pxor xmm5, xmm91240 pxor xmm6, xmm101241 pxor xmm7, xmm111242 movdqa xmmword ptr [rsp+0x100], xmm81243 movdqa xmm8, xmm41244 psrld xmm8, 121245 pslld xmm4, 201246 por xmm4, xmm81247 movdqa xmm8, xmm51248 psrld xmm8, 121249 pslld xmm5, 201250 por xmm5, xmm81251 movdqa xmm8, xmm61252 psrld xmm8, 121253 pslld xmm6, 201254 por xmm6, xmm81255 movdqa xmm8, xmm71256 psrld xmm8, 121257 pslld xmm7, 201258 por xmm7, xmm81259 paddd xmm0, xmmword ptr [rsp+0xF0]1260 paddd xmm1, xmmword ptr [rsp]1261 paddd xmm2, xmmword ptr [rsp+0x90]1262 paddd xmm3, xmmword ptr [rsp+0x60]1263 paddd xmm0, xmm41264 paddd xmm1, xmm51265 paddd xmm2, xmm61266 paddd xmm3, xmm71267 pxor xmm12, xmm01268 pxor xmm13, xmm11269 pxor xmm14, xmm21270 pxor xmm15, xmm31271 movdqa xmm8, xmmword ptr [ROT8+rip]1272 pshufb xmm12, xmm81273 pshufb xmm13, xmm81274 pshufb xmm14, xmm81275 pshufb xmm15, xmm81276 movdqa xmm8, xmmword ptr [rsp+0x100]1277 paddd xmm8, xmm121278 paddd xmm9, xmm131279 paddd xmm10, xmm141280 paddd xmm11, xmm151281 pxor xmm4, xmm81282 pxor xmm5, xmm91283 pxor xmm6, xmm101284 pxor xmm7, xmm111285 movdqa xmmword ptr [rsp+0x100], xmm81286 movdqa xmm8, xmm41287 psrld xmm8, 71288 pslld xmm4, 251289 por xmm4, xmm81290 movdqa xmm8, xmm51291 psrld xmm8, 71292 pslld xmm5, 251293 por xmm5, xmm81294 movdqa xmm8, xmm61295 psrld xmm8, 71296 pslld xmm6, 251297 por xmm6, xmm81298 movdqa xmm8, xmm71299 psrld xmm8, 71300 pslld xmm7, 251301 por xmm7, xmm81302 paddd xmm0, xmmword ptr [rsp+0xE0]1303 paddd xmm1, xmmword ptr [rsp+0x20]1304 paddd xmm2, xmmword ptr [rsp+0x30]1305 paddd xmm3, xmmword ptr [rsp+0x70]1306 paddd xmm0, xmm51307 paddd xmm1, xmm61308 paddd xmm2, xmm71309 paddd xmm3, xmm41310 pxor xmm15, xmm01311 pxor xmm12, xmm11312 pxor xmm13, xmm21313 pxor xmm14, xmm31314 movdqa xmm8, xmmword ptr [ROT16+rip]1315 pshufb xmm15, xmm81316 pshufb xmm12, xmm81317 pshufb xmm13, xmm81318 pshufb xmm14, xmm81319 paddd xmm10, xmm151320 paddd xmm11, xmm121321 movdqa xmm8, xmmword ptr [rsp+0x100]1322 paddd xmm8, xmm131323 paddd xmm9, xmm141324 pxor xmm5, xmm101325 pxor xmm6, xmm111326 pxor xmm7, xmm81327 pxor xmm4, xmm91328 movdqa xmmword ptr [rsp+0x100], xmm81329 movdqa xmm8, xmm51330 psrld xmm8, 121331 pslld xmm5, 201332 por xmm5, xmm81333 movdqa xmm8, xmm61334 psrld xmm8, 121335 pslld xmm6, 201336 por xmm6, xmm81337 movdqa xmm8, xmm71338 psrld xmm8, 121339 pslld xmm7, 201340 por xmm7, xmm81341 movdqa xmm8, xmm41342 psrld xmm8, 121343 pslld xmm4, 201344 por xmm4, xmm81345 paddd xmm0, xmmword ptr [rsp+0xA0]1346 paddd xmm1, xmmword ptr [rsp+0xC0]1347 paddd xmm2, xmmword ptr [rsp+0x40]1348 paddd xmm3, xmmword ptr [rsp+0xD0]1349 paddd xmm0, xmm51350 paddd xmm1, xmm61351 paddd xmm2, xmm71352 paddd xmm3, xmm41353 pxor xmm15, xmm01354 pxor xmm12, xmm11355 pxor xmm13, xmm21356 pxor xmm14, xmm31357 movdqa xmm8, xmmword ptr [ROT8+rip]1358 pshufb xmm15, xmm81359 pshufb xmm12, xmm81360 pshufb xmm13, xmm81361 pshufb xmm14, xmm81362 paddd xmm10, xmm151363 paddd xmm11, xmm121364 movdqa xmm8, xmmword ptr [rsp+0x100]1365 paddd xmm8, xmm131366 paddd xmm9, xmm141367 pxor xmm5, xmm101368 pxor xmm6, xmm111369 pxor xmm7, xmm81370 pxor xmm4, xmm91371 pxor xmm0, xmm81372 pxor xmm1, xmm91373 pxor xmm2, xmm101374 pxor xmm3, xmm111375 movdqa xmm8, xmm51376 psrld xmm8, 71377 pslld xmm5, 251378 por xmm5, xmm81379 movdqa xmm8, xmm61380 psrld xmm8, 71381 pslld xmm6, 251382 por xmm6, xmm81383 movdqa xmm8, xmm71384 psrld xmm8, 71385 pslld xmm7, 251386 por xmm7, xmm81387 movdqa xmm8, xmm41388 psrld xmm8, 71389 pslld xmm4, 251390 por xmm4, xmm81391 pxor xmm4, xmm121392 pxor xmm5, xmm131393 pxor xmm6, xmm141394 pxor xmm7, xmm151395 mov eax, r13d1396 jne 9b1397 movdqa xmm9, xmm01398 punpckldq xmm0, xmm11399 punpckhdq xmm9, xmm11400 movdqa xmm11, xmm21401 punpckldq xmm2, xmm31402 punpckhdq xmm11, xmm31403 movdqa xmm1, xmm01404 punpcklqdq xmm0, xmm21405 punpckhqdq xmm1, xmm21406 movdqa xmm3, xmm91407 punpcklqdq xmm9, xmm111408 punpckhqdq xmm3, xmm111409 movdqu xmmword ptr [rbx], xmm01410 movdqu xmmword ptr [rbx+0x20], xmm11411 movdqu xmmword ptr [rbx+0x40], xmm91412 movdqu xmmword ptr [rbx+0x60], xmm31413 movdqa xmm9, xmm41414 punpckldq xmm4, xmm51415 punpckhdq xmm9, xmm51416 movdqa xmm11, xmm61417 punpckldq xmm6, xmm71418 punpckhdq xmm11, xmm71419 movdqa xmm5, xmm41420 punpcklqdq xmm4, xmm61421 punpckhqdq xmm5, xmm61422 movdqa xmm7, xmm91423 punpcklqdq xmm9, xmm111424 punpckhqdq xmm7, xmm111425 movdqu xmmword ptr [rbx+0x10], xmm41426 movdqu xmmword ptr [rbx+0x30], xmm51427 movdqu xmmword ptr [rbx+0x50], xmm91428 movdqu xmmword ptr [rbx+0x70], xmm71429 movdqa xmm1, xmmword ptr [rsp+0x110]1430 movdqa xmm0, xmm11431 paddd xmm1, xmmword ptr [rsp+0x150]1432 movdqa xmmword ptr [rsp+0x110], xmm11433 pxor xmm0, xmmword ptr [CMP_MSB_MASK+rip]1434 pxor xmm1, xmmword ptr [CMP_MSB_MASK+rip]1435 pcmpgtd xmm0, xmm11436 movdqa xmm1, xmmword ptr [rsp+0x120]1437 psubd xmm1, xmm01438 movdqa xmmword ptr [rsp+0x120], xmm11439 add rbx, 1281440 add rdi, 321441 sub rsi, 41442 cmp rsi, 41443 jnc 2b1444 test rsi, rsi1445 jne 3f14464:1447 movdqa xmm6, xmmword ptr [rsp+0x170]1448 movdqa xmm7, xmmword ptr [rsp+0x180]1449 movdqa xmm8, xmmword ptr [rsp+0x190]1450 movdqa xmm9, xmmword ptr [rsp+0x1A0]1451 movdqa xmm10, xmmword ptr [rsp+0x1B0]1452 movdqa xmm11, xmmword ptr [rsp+0x1C0]1453 movdqa xmm12, xmmword ptr [rsp+0x1D0]1454 movdqa xmm13, xmmword ptr [rsp+0x1E0]1455 movdqa xmm14, xmmword ptr [rsp+0x1F0]1456 movdqa xmm15, xmmword ptr [rsp+0x200]1457 mov rsp, rbp1458 pop rbp1459 pop rbx1460 pop rdi1461 pop rsi1462 pop r121463 pop r131464 pop r141465 pop r151466 ret1467.p2align 514683:1469 test esi, 0x21470 je 3f1471 movups xmm0, xmmword ptr [rcx]1472 movups xmm1, xmmword ptr [rcx+0x10]1473 movaps xmm8, xmm01474 movaps xmm9, xmm11475 movd xmm13, dword ptr [rsp+0x110]1476 pinsrd xmm13, dword ptr [rsp+0x120], 11477 pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 21478 movaps xmmword ptr [rsp], xmm131479 movd xmm14, dword ptr [rsp+0x114]1480 pinsrd xmm14, dword ptr [rsp+0x124], 11481 pinsrd xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 21482 movaps xmmword ptr [rsp+0x10], xmm141483 mov r8, qword ptr [rdi]1484 mov r9, qword ptr [rdi+0x8]1485 movzx eax, byte ptr [rbp+0x80]1486 or eax, r13d1487 xor edx, edx14882:1489 mov r14d, eax1490 or eax, r12d1491 add rdx, 641492 cmp rdx, r151493 cmovne eax, r14d1494 movaps xmm2, xmmword ptr [BLAKE3_IV+rip]1495 movaps xmm10, xmm21496 movups xmm4, xmmword ptr [r8+rdx-0x40]1497 movups xmm5, xmmword ptr [r8+rdx-0x30]1498 movaps xmm3, xmm41499 shufps xmm4, xmm5, 1361500 shufps xmm3, xmm5, 2211501 movaps xmm5, xmm31502 movups xmm6, xmmword ptr [r8+rdx-0x20]1503 movups xmm7, xmmword ptr [r8+rdx-0x10]1504 movaps xmm3, xmm61505 shufps xmm6, xmm7, 1361506 pshufd xmm6, xmm6, 0x931507 shufps xmm3, xmm7, 2211508 pshufd xmm7, xmm3, 0x931509 movups xmm12, xmmword ptr [r9+rdx-0x40]1510 movups xmm13, xmmword ptr [r9+rdx-0x30]1511 movaps xmm11, xmm121512 shufps xmm12, xmm13, 1361513 shufps xmm11, xmm13, 2211514 movaps xmm13, xmm111515 movups xmm14, xmmword ptr [r9+rdx-0x20]1516 movups xmm15, xmmword ptr [r9+rdx-0x10]1517 movaps xmm11, xmm141518 shufps xmm14, xmm15, 1361519 pshufd xmm14, xmm14, 0x931520 shufps xmm11, xmm15, 2211521 pshufd xmm15, xmm11, 0x931522 movaps xmm3, xmmword ptr [rsp]1523 movaps xmm11, xmmword ptr [rsp+0x10]1524 pinsrd xmm3, eax, 31525 pinsrd xmm11, eax, 31526 mov al, 715279:1528 paddd xmm0, xmm41529 paddd xmm8, xmm121530 movaps xmmword ptr [rsp+0x20], xmm41531 movaps xmmword ptr [rsp+0x30], xmm121532 paddd xmm0, xmm11533 paddd xmm8, xmm91534 pxor xmm3, xmm01535 pxor xmm11, xmm81536 movaps xmm12, xmmword ptr [ROT16+rip]1537 pshufb xmm3, xmm121538 pshufb xmm11, xmm121539 paddd xmm2, xmm31540 paddd xmm10, xmm111541 pxor xmm1, xmm21542 pxor xmm9, xmm101543 movdqa xmm4, xmm11544 pslld xmm1, 201545 psrld xmm4, 121546 por xmm1, xmm41547 movdqa xmm4, xmm91548 pslld xmm9, 201549 psrld xmm4, 121550 por xmm9, xmm41551 paddd xmm0, xmm51552 paddd xmm8, xmm131553 movaps xmmword ptr [rsp+0x40], xmm51554 movaps xmmword ptr [rsp+0x50], xmm131555 paddd xmm0, xmm11556 paddd xmm8, xmm91557 pxor xmm3, xmm01558 pxor xmm11, xmm81559 movaps xmm13, xmmword ptr [ROT8+rip]1560 pshufb xmm3, xmm131561 pshufb xmm11, xmm131562 paddd xmm2, xmm31563 paddd xmm10, xmm111564 pxor xmm1, xmm21565 pxor xmm9, xmm101566 movdqa xmm4, xmm11567 pslld xmm1, 251568 psrld xmm4, 71569 por xmm1, xmm41570 movdqa xmm4, xmm91571 pslld xmm9, 251572 psrld xmm4, 71573 por xmm9, xmm41574 pshufd xmm0, xmm0, 0x931575 pshufd xmm8, xmm8, 0x931576 pshufd xmm3, xmm3, 0x4E1577 pshufd xmm11, xmm11, 0x4E1578 pshufd xmm2, xmm2, 0x391579 pshufd xmm10, xmm10, 0x391580 paddd xmm0, xmm61581 paddd xmm8, xmm141582 paddd xmm0, xmm11583 paddd xmm8, xmm91584 pxor xmm3, xmm01585 pxor xmm11, xmm81586 pshufb xmm3, xmm121587 pshufb xmm11, xmm121588 paddd xmm2, xmm31589 paddd xmm10, xmm111590 pxor xmm1, xmm21591 pxor xmm9, xmm101592 movdqa xmm4, xmm11593 pslld xmm1, 201594 psrld xmm4, 121595 por xmm1, xmm41596 movdqa xmm4, xmm91597 pslld xmm9, 201598 psrld xmm4, 121599 por xmm9, xmm41600 paddd xmm0, xmm71601 paddd xmm8, xmm151602 paddd xmm0, xmm11603 paddd xmm8, xmm91604 pxor xmm3, xmm01605 pxor xmm11, xmm81606 pshufb xmm3, xmm131607 pshufb xmm11, xmm131608 paddd xmm2, xmm31609 paddd xmm10, xmm111610 pxor xmm1, xmm21611 pxor xmm9, xmm101612 movdqa xmm4, xmm11613 pslld xmm1, 251614 psrld xmm4, 71615 por xmm1, xmm41616 movdqa xmm4, xmm91617 pslld xmm9, 251618 psrld xmm4, 71619 por xmm9, xmm41620 pshufd xmm0, xmm0, 0x391621 pshufd xmm8, xmm8, 0x391622 pshufd xmm3, xmm3, 0x4E1623 pshufd xmm11, xmm11, 0x4E1624 pshufd xmm2, xmm2, 0x931625 pshufd xmm10, xmm10, 0x931626 dec al1627 je 9f1628 movdqa xmm12, xmmword ptr [rsp+0x20]1629 movdqa xmm5, xmmword ptr [rsp+0x40]1630 pshufd xmm13, xmm12, 0x0F1631 shufps xmm12, xmm5, 2141632 pshufd xmm4, xmm12, 0x391633 movdqa xmm12, xmm61634 shufps xmm12, xmm7, 2501635 pblendw xmm13, xmm12, 0xCC1636 movdqa xmm12, xmm71637 punpcklqdq xmm12, xmm51638 pblendw xmm12, xmm6, 0xC01639 pshufd xmm12, xmm12, 0x781640 punpckhdq xmm5, xmm71641 punpckldq xmm6, xmm51642 pshufd xmm7, xmm6, 0x1E1643 movdqa xmmword ptr [rsp+0x20], xmm131644 movdqa xmmword ptr [rsp+0x40], xmm121645 movdqa xmm5, xmmword ptr [rsp+0x30]1646 movdqa xmm13, xmmword ptr [rsp+0x50]1647 pshufd xmm6, xmm5, 0x0F1648 shufps xmm5, xmm13, 2141649 pshufd xmm12, xmm5, 0x391650 movdqa xmm5, xmm141651 shufps xmm5, xmm15, 2501652 pblendw xmm6, xmm5, 0xCC1653 movdqa xmm5, xmm151654 punpcklqdq xmm5, xmm131655 pblendw xmm5, xmm14, 0xC01656 pshufd xmm5, xmm5, 0x781657 punpckhdq xmm13, xmm151658 punpckldq xmm14, xmm131659 pshufd xmm15, xmm14, 0x1E1660 movdqa xmm13, xmm61661 movdqa xmm14, xmm51662 movdqa xmm5, xmmword ptr [rsp+0x20]1663 movdqa xmm6, xmmword ptr [rsp+0x40]1664 jmp 9b16659:1666 pxor xmm0, xmm21667 pxor xmm1, xmm31668 pxor xmm8, xmm101669 pxor xmm9, xmm111670 mov eax, r13d1671 cmp rdx, r151672 jne 2b1673 movups xmmword ptr [rbx], xmm01674 movups xmmword ptr [rbx+0x10], xmm11675 movups xmmword ptr [rbx+0x20], xmm81676 movups xmmword ptr [rbx+0x30], xmm91677 movdqa xmm0, xmmword ptr [rsp+0x130]1678 movdqa xmm1, xmmword ptr [rsp+0x110]1679 movdqa xmm2, xmmword ptr [rsp+0x120]1680 movdqu xmm3, xmmword ptr [rsp+0x118]1681 movdqu xmm4, xmmword ptr [rsp+0x128]1682 blendvps xmm1, xmm3, xmm01683 blendvps xmm2, xmm4, xmm01684 movdqa xmmword ptr [rsp+0x110], xmm11685 movdqa xmmword ptr [rsp+0x120], xmm21686 add rdi, 161687 add rbx, 641688 sub rsi, 216893:1690 test esi, 0x11691 je 4b1692 movups xmm0, xmmword ptr [rcx]1693 movups xmm1, xmmword ptr [rcx+0x10]1694 movd xmm13, dword ptr [rsp+0x110]1695 pinsrd xmm13, dword ptr [rsp+0x120], 11696 pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 21697 movaps xmm14, xmmword ptr [ROT8+rip]1698 movaps xmm15, xmmword ptr [ROT16+rip]1699 mov r8, qword ptr [rdi]1700 movzx eax, byte ptr [rbp+0x80]1701 or eax, r13d1702 xor edx, edx17032:1704 mov r14d, eax1705 or eax, r12d1706 add rdx, 641707 cmp rdx, r151708 cmovne eax, r14d1709 movaps xmm2, xmmword ptr [BLAKE3_IV+rip]1710 movaps xmm3, xmm131711 pinsrd xmm3, eax, 31712 movups xmm4, xmmword ptr [r8+rdx-0x40]1713 movups xmm5, xmmword ptr [r8+rdx-0x30]1714 movaps xmm8, xmm41715 shufps xmm4, xmm5, 1361716 shufps xmm8, xmm5, 2211717 movaps xmm5, xmm81718 movups xmm6, xmmword ptr [r8+rdx-0x20]1719 movups xmm7, xmmword ptr [r8+rdx-0x10]1720 movaps xmm8, xmm61721 shufps xmm6, xmm7, 1361722 pshufd xmm6, xmm6, 0x931723 shufps xmm8, xmm7, 2211724 pshufd xmm7, xmm8, 0x931725 mov al, 717269:1727 paddd xmm0, xmm41728 paddd xmm0, xmm11729 pxor xmm3, xmm01730 pshufb xmm3, xmm151731 paddd xmm2, xmm31732 pxor xmm1, xmm21733 movdqa xmm11, xmm11734 pslld xmm1, 201735 psrld xmm11, 121736 por xmm1, xmm111737 paddd xmm0, xmm51738 paddd xmm0, xmm11739 pxor xmm3, xmm01740 pshufb xmm3, xmm141741 paddd xmm2, xmm31742 pxor xmm1, xmm21743 movdqa xmm11, xmm11744 pslld xmm1, 251745 psrld xmm11, 71746 por xmm1, xmm111747 pshufd xmm0, xmm0, 0x931748 pshufd xmm3, xmm3, 0x4E1749 pshufd xmm2, xmm2, 0x391750 paddd xmm0, xmm61751 paddd xmm0, xmm11752 pxor xmm3, xmm01753 pshufb xmm3, xmm151754 paddd xmm2, xmm31755 pxor xmm1, xmm21756 movdqa xmm11, xmm11757 pslld xmm1, 201758 psrld xmm11, 121759 por xmm1, xmm111760 paddd xmm0, xmm71761 paddd xmm0, xmm11762 pxor xmm3, xmm01763 pshufb xmm3, xmm141764 paddd xmm2, xmm31765 pxor xmm1, xmm21766 movdqa xmm11, xmm11767 pslld xmm1, 251768 psrld xmm11, 71769 por xmm1, xmm111770 pshufd xmm0, xmm0, 0x391771 pshufd xmm3, xmm3, 0x4E1772 pshufd xmm2, xmm2, 0x931773 dec al1774 jz 9f1775 movdqa xmm8, xmm41776 shufps xmm8, xmm5, 2141777 pshufd xmm9, xmm4, 0x0F1778 pshufd xmm4, xmm8, 0x391779 movdqa xmm8, xmm61780 shufps xmm8, xmm7, 2501781 pblendw xmm9, xmm8, 0xCC1782 movdqa xmm8, xmm71783 punpcklqdq xmm8, xmm51784 pblendw xmm8, xmm6, 0xC01785 pshufd xmm8, xmm8, 0x781786 punpckhdq xmm5, xmm71787 punpckldq xmm6, xmm51788 pshufd xmm7, xmm6, 0x1E1789 movdqa xmm5, xmm91790 movdqa xmm6, xmm81791 jmp 9b17929:1793 pxor xmm0, xmm21794 pxor xmm1, xmm31795 mov eax, r13d1796 cmp rdx, r151797 jne 2b1798 movups xmmword ptr [rbx], xmm01799 movups xmmword ptr [rbx+0x10], xmm11800 jmp 4b1801 1802.p2align 61803blake3_compress_in_place_sse41:1804_blake3_compress_in_place_sse41:1805 sub rsp, 1201806 movdqa xmmword ptr [rsp], xmm61807 movdqa xmmword ptr [rsp+0x10], xmm71808 movdqa xmmword ptr [rsp+0x20], xmm81809 movdqa xmmword ptr [rsp+0x30], xmm91810 movdqa xmmword ptr [rsp+0x40], xmm111811 movdqa xmmword ptr [rsp+0x50], xmm141812 movdqa xmmword ptr [rsp+0x60], xmm151813 movups xmm0, xmmword ptr [rcx]1814 movups xmm1, xmmword ptr [rcx+0x10]1815 movaps xmm2, xmmword ptr [BLAKE3_IV+rip]1816 movzx eax, byte ptr [rsp+0xA0]1817 movzx r8d, r8b1818 shl rax, 321819 add r8, rax1820 movq xmm3, r91821 movq xmm4, r81822 punpcklqdq xmm3, xmm41823 movups xmm4, xmmword ptr [rdx]1824 movups xmm5, xmmword ptr [rdx+0x10]1825 movaps xmm8, xmm41826 shufps xmm4, xmm5, 1361827 shufps xmm8, xmm5, 2211828 movaps xmm5, xmm81829 movups xmm6, xmmword ptr [rdx+0x20]1830 movups xmm7, xmmword ptr [rdx+0x30]1831 movaps xmm8, xmm61832 shufps xmm6, xmm7, 1361833 pshufd xmm6, xmm6, 0x931834 shufps xmm8, xmm7, 2211835 pshufd xmm7, xmm8, 0x931836 movaps xmm14, xmmword ptr [ROT8+rip]1837 movaps xmm15, xmmword ptr [ROT16+rip]1838 mov al, 718399:1840 paddd xmm0, xmm41841 paddd xmm0, xmm11842 pxor xmm3, xmm01843 pshufb xmm3, xmm151844 paddd xmm2, xmm31845 pxor xmm1, xmm21846 movdqa xmm11, xmm11847 pslld xmm1, 201848 psrld xmm11, 121849 por xmm1, xmm111850 paddd xmm0, xmm51851 paddd xmm0, xmm11852 pxor xmm3, xmm01853 pshufb xmm3, xmm141854 paddd xmm2, xmm31855 pxor xmm1, xmm21856 movdqa xmm11, xmm11857 pslld xmm1, 251858 psrld xmm11, 71859 por xmm1, xmm111860 pshufd xmm0, xmm0, 0x931861 pshufd xmm3, xmm3, 0x4E1862 pshufd xmm2, xmm2, 0x391863 paddd xmm0, xmm61864 paddd xmm0, xmm11865 pxor xmm3, xmm01866 pshufb xmm3, xmm151867 paddd xmm2, xmm31868 pxor xmm1, xmm21869 movdqa xmm11, xmm11870 pslld xmm1, 201871 psrld xmm11, 121872 por xmm1, xmm111873 paddd xmm0, xmm71874 paddd xmm0, xmm11875 pxor xmm3, xmm01876 pshufb xmm3, xmm141877 paddd xmm2, xmm31878 pxor xmm1, xmm21879 movdqa xmm11, xmm11880 pslld xmm1, 251881 psrld xmm11, 71882 por xmm1, xmm111883 pshufd xmm0, xmm0, 0x391884 pshufd xmm3, xmm3, 0x4E1885 pshufd xmm2, xmm2, 0x931886 dec al1887 jz 9f1888 movdqa xmm8, xmm41889 shufps xmm8, xmm5, 2141890 pshufd xmm9, xmm4, 0x0F1891 pshufd xmm4, xmm8, 0x391892 movdqa xmm8, xmm61893 shufps xmm8, xmm7, 2501894 pblendw xmm9, xmm8, 0xCC1895 movdqa xmm8, xmm71896 punpcklqdq xmm8, xmm51897 pblendw xmm8, xmm6, 0xC01898 pshufd xmm8, xmm8, 0x781899 punpckhdq xmm5, xmm71900 punpckldq xmm6, xmm51901 pshufd xmm7, xmm6, 0x1E1902 movdqa xmm5, xmm91903 movdqa xmm6, xmm81904 jmp 9b19059:1906 pxor xmm0, xmm21907 pxor xmm1, xmm31908 movups xmmword ptr [rcx], xmm01909 movups xmmword ptr [rcx+0x10], xmm11910 movdqa xmm6, xmmword ptr [rsp]1911 movdqa xmm7, xmmword ptr [rsp+0x10]1912 movdqa xmm8, xmmword ptr [rsp+0x20]1913 movdqa xmm9, xmmword ptr [rsp+0x30]1914 movdqa xmm11, xmmword ptr [rsp+0x40]1915 movdqa xmm14, xmmword ptr [rsp+0x50]1916 movdqa xmm15, xmmword ptr [rsp+0x60]1917 add rsp, 1201918 ret1919 1920 1921.p2align 61922_blake3_compress_xof_sse41:1923blake3_compress_xof_sse41:1924 sub rsp, 1201925 movdqa xmmword ptr [rsp], xmm61926 movdqa xmmword ptr [rsp+0x10], xmm71927 movdqa xmmword ptr [rsp+0x20], xmm81928 movdqa xmmword ptr [rsp+0x30], xmm91929 movdqa xmmword ptr [rsp+0x40], xmm111930 movdqa xmmword ptr [rsp+0x50], xmm141931 movdqa xmmword ptr [rsp+0x60], xmm151932 movups xmm0, xmmword ptr [rcx]1933 movups xmm1, xmmword ptr [rcx+0x10]1934 movaps xmm2, xmmword ptr [BLAKE3_IV+rip]1935 movzx eax, byte ptr [rsp+0xA0]1936 movzx r8d, r8b1937 mov r10, qword ptr [rsp+0xA8]1938 shl rax, 321939 add r8, rax1940 movq xmm3, r91941 movq xmm4, r81942 punpcklqdq xmm3, xmm41943 movups xmm4, xmmword ptr [rdx]1944 movups xmm5, xmmword ptr [rdx+0x10]1945 movaps xmm8, xmm41946 shufps xmm4, xmm5, 1361947 shufps xmm8, xmm5, 2211948 movaps xmm5, xmm81949 movups xmm6, xmmword ptr [rdx+0x20]1950 movups xmm7, xmmword ptr [rdx+0x30]1951 movaps xmm8, xmm61952 shufps xmm6, xmm7, 1361953 pshufd xmm6, xmm6, 0x931954 shufps xmm8, xmm7, 2211955 pshufd xmm7, xmm8, 0x931956 movaps xmm14, xmmword ptr [ROT8+rip]1957 movaps xmm15, xmmword ptr [ROT16+rip]1958 mov al, 719599:1960 paddd xmm0, xmm41961 paddd xmm0, xmm11962 pxor xmm3, xmm01963 pshufb xmm3, xmm151964 paddd xmm2, xmm31965 pxor xmm1, xmm21966 movdqa xmm11, xmm11967 pslld xmm1, 201968 psrld xmm11, 121969 por xmm1, xmm111970 paddd xmm0, xmm51971 paddd xmm0, xmm11972 pxor xmm3, xmm01973 pshufb xmm3, xmm141974 paddd xmm2, xmm31975 pxor xmm1, xmm21976 movdqa xmm11, xmm11977 pslld xmm1, 251978 psrld xmm11, 71979 por xmm1, xmm111980 pshufd xmm0, xmm0, 0x931981 pshufd xmm3, xmm3, 0x4E1982 pshufd xmm2, xmm2, 0x391983 paddd xmm0, xmm61984 paddd xmm0, xmm11985 pxor xmm3, xmm01986 pshufb xmm3, xmm151987 paddd xmm2, xmm31988 pxor xmm1, xmm21989 movdqa xmm11, xmm11990 pslld xmm1, 201991 psrld xmm11, 121992 por xmm1, xmm111993 paddd xmm0, xmm71994 paddd xmm0, xmm11995 pxor xmm3, xmm01996 pshufb xmm3, xmm141997 paddd xmm2, xmm31998 pxor xmm1, xmm21999 movdqa xmm11, xmm12000 pslld xmm1, 252001 psrld xmm11, 72002 por xmm1, xmm112003 pshufd xmm0, xmm0, 0x392004 pshufd xmm3, xmm3, 0x4E2005 pshufd xmm2, xmm2, 0x932006 dec al2007 jz 9f2008 movdqa xmm8, xmm42009 shufps xmm8, xmm5, 2142010 pshufd xmm9, xmm4, 0x0F2011 pshufd xmm4, xmm8, 0x392012 movdqa xmm8, xmm62013 shufps xmm8, xmm7, 2502014 pblendw xmm9, xmm8, 0xCC2015 movdqa xmm8, xmm72016 punpcklqdq xmm8, xmm52017 pblendw xmm8, xmm6, 0xC02018 pshufd xmm8, xmm8, 0x782019 punpckhdq xmm5, xmm72020 punpckldq xmm6, xmm52021 pshufd xmm7, xmm6, 0x1E2022 movdqa xmm5, xmm92023 movdqa xmm6, xmm82024 jmp 9b20259:2026 movdqu xmm4, xmmword ptr [rcx]2027 movdqu xmm5, xmmword ptr [rcx+0x10]2028 pxor xmm0, xmm22029 pxor xmm1, xmm32030 pxor xmm2, xmm42031 pxor xmm3, xmm52032 movups xmmword ptr [r10], xmm02033 movups xmmword ptr [r10+0x10], xmm12034 movups xmmword ptr [r10+0x20], xmm22035 movups xmmword ptr [r10+0x30], xmm32036 movdqa xmm6, xmmword ptr [rsp]2037 movdqa xmm7, xmmword ptr [rsp+0x10]2038 movdqa xmm8, xmmword ptr [rsp+0x20]2039 movdqa xmm9, xmmword ptr [rsp+0x30]2040 movdqa xmm11, xmmword ptr [rsp+0x40]2041 movdqa xmm14, xmmword ptr [rsp+0x50]2042 movdqa xmm15, xmmword ptr [rsp+0x60]2043 add rsp, 1202044 ret2045 2046 2047.section .rdata2048.p2align 62049BLAKE3_IV:2050 .long 0x6A09E667, 0xBB67AE852051 .long 0x3C6EF372, 0xA54FF53A2052ROT16:2053 .byte 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 132054ROT8:2055 .byte 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 122056ADD0: 2057 .long 0, 1, 2, 32058ADD1:2059 .long 4, 4, 4, 42060BLAKE3_IV_0:2061 .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E6672062BLAKE3_IV_1:2063 .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE852064BLAKE3_IV_2:2065 .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF3722066BLAKE3_IV_3:2067 .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A2068BLAKE3_BLOCK_LEN:2069 .long 64, 64, 64, 642070CMP_MSB_MASK:2071 .long 0x80000000, 0x80000000, 0x80000000, 0x800000002072