git / moonbite-core / src/crypto/blake3/blake3_avx2_x86-64_windows_msvc.asm · raw

public _blake3_hash_many_avx2public blake3_hash_many_avx2_TEXT   SEGMENT ALIGN(16) 'CODE'ALIGN   16blake3_hash_many_avx2 PROC_blake3_hash_many_avx2 PROC        push    r15        push    r14        push    r13        push    r12        push    rsi        push    rdi        push    rbx        push    rbp        mov     rbp, rsp        sub     rsp, 880        and     rsp, 0FFFFFFFFFFFFFFC0H        vmovdqa xmmword ptr [rsp+2D0H], xmm6        vmovdqa xmmword ptr [rsp+2E0H], xmm7        vmovdqa xmmword ptr [rsp+2F0H], xmm8        vmovdqa xmmword ptr [rsp+300H], xmm9        vmovdqa xmmword ptr [rsp+310H], xmm10        vmovdqa xmmword ptr [rsp+320H], xmm11        vmovdqa xmmword ptr [rsp+330H], xmm12        vmovdqa xmmword ptr [rsp+340H], xmm13        vmovdqa xmmword ptr [rsp+350H], xmm14        vmovdqa xmmword ptr [rsp+360H], xmm15        mov     rdi, rcx        mov     rsi, rdx        mov     rdx, r8        mov     rcx, r9        mov     r8, qword ptr [rbp+68H]        movzx   r9, byte ptr [rbp+70H]        neg     r9d        vmovd   xmm0, r9d        vpbroadcastd ymm0, xmm0        vmovdqa ymmword ptr [rsp+260H], ymm0        vpand   ymm1, ymm0, ymmword ptr [ADD0]        vpand   ymm2, ymm0, ymmword ptr [ADD1]        vmovdqa ymmword ptr [rsp+2A0H], ymm2        vmovd   xmm2, r8d        vpbroadcastd ymm2, xmm2        vpaddd  ymm2, ymm2, ymm1        vmovdqa ymmword ptr [rsp+220H], ymm2        vpxor   ymm1, ymm1, ymmword ptr [CMP_MSB_MASK]        vpxor   ymm2, ymm2, ymmword ptr [CMP_MSB_MASK]        vpcmpgtd ymm2, ymm1, ymm2        shr     r8, 32        vmovd   xmm3, r8d        vpbroadcastd ymm3, xmm3        vpsubd  ymm3, ymm3, ymm2        vmovdqa ymmword ptr [rsp+240H], ymm3        shl     rdx, 6        mov     qword ptr [rsp+2C0H], rdx        cmp     rsi, 8        jc      final7blocksouterloop8:        vpbroadcastd ymm0, dword ptr [rcx]        vpbroadcastd ymm1, dword ptr [rcx+4H]        vpbroadcastd ymm2, dword ptr [rcx+8H]        vpbroadcastd ymm3, dword ptr [rcx+0CH]        vpbroadcastd ymm4, dword ptr [rcx+10H]        vpbroadcastd ymm5, dword ptr [rcx+14H]        vpbroadcastd ymm6, dword ptr [rcx+18H]        vpbroadcastd ymm7, dword ptr [rcx+1CH]        mov     r8, qword ptr [rdi]        mov     r9, qword ptr [rdi+8H]        mov     r10, qword ptr [rdi+10H]        mov     r11, qword ptr [rdi+18H]        mov     r12, qword ptr [rdi+20H]        mov     r13, qword ptr [rdi+28H]        mov     r14, qword ptr [rdi+30H]        mov     r15, qword ptr [rdi+38H]        movzx   eax, byte ptr [rbp+78H]        movzx   ebx, byte ptr [rbp+80H]        or      eax, ebx        xor     edx, edxALIGN   16innerloop8:        movzx   ebx, byte ptr [rbp+88H]        or      ebx, eax        add     rdx, 64        cmp     rdx, qword ptr [rsp+2C0H]        cmove   eax, ebx        mov     dword ptr [rsp+200H], eax        vmovups xmm8, xmmword ptr [r8+rdx-40H]        vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-40H], 01H        vmovups xmm9, xmmword ptr [r9+rdx-40H]        vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-40H], 01H        vunpcklpd ymm12, ymm8, ymm9        vunpckhpd ymm13, ymm8, ymm9        vmovups xmm10, xmmword ptr [r10+rdx-40H]        vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-40H], 01H        vmovups xmm11, xmmword ptr [r11+rdx-40H]        vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-40H], 01H        vunpcklpd ymm14, ymm10, ymm11        vunpckhpd ymm15, ymm10, ymm11        vshufps ymm8, ymm12, ymm14, 136        vmovaps ymmword ptr [rsp], ymm8        vshufps ymm9, ymm12, ymm14, 221        vmovaps ymmword ptr [rsp+20H], ymm9        vshufps ymm10, ymm13, ymm15, 136        vmovaps ymmword ptr [rsp+40H], ymm10        vshufps ymm11, ymm13, ymm15, 221        vmovaps ymmword ptr [rsp+60H], ymm11        vmovups xmm8, xmmword ptr [r8+rdx-30H]        vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-30H], 01H        vmovups xmm9, xmmword ptr [r9+rdx-30H]        vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-30H], 01H        vunpcklpd ymm12, ymm8, ymm9        vunpckhpd ymm13, ymm8, ymm9        vmovups xmm10, xmmword ptr [r10+rdx-30H]        vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-30H], 01H        vmovups xmm11, xmmword ptr [r11+rdx-30H]        vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-30H], 01H        vunpcklpd ymm14, ymm10, ymm11        vunpckhpd ymm15, ymm10, ymm11        vshufps ymm8, ymm12, ymm14, 136        vmovaps ymmword ptr [rsp+80H], ymm8        vshufps ymm9, ymm12, ymm14, 221        vmovaps ymmword ptr [rsp+0A0H], ymm9        vshufps ymm10, ymm13, ymm15, 136        vmovaps ymmword ptr [rsp+0C0H], ymm10        vshufps ymm11, ymm13, ymm15, 221        vmovaps ymmword ptr [rsp+0E0H], ymm11        vmovups xmm8, xmmword ptr [r8+rdx-20H]        vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-20H], 01H        vmovups xmm9, xmmword ptr [r9+rdx-20H]        vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-20H], 01H        vunpcklpd ymm12, ymm8, ymm9        vunpckhpd ymm13, ymm8, ymm9        vmovups xmm10, xmmword ptr [r10+rdx-20H]        vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-20H], 01H        vmovups xmm11, xmmword ptr [r11+rdx-20H]        vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-20H], 01H        vunpcklpd ymm14, ymm10, ymm11        vunpckhpd ymm15, ymm10, ymm11        vshufps ymm8, ymm12, ymm14, 136        vmovaps ymmword ptr [rsp+100H], ymm8        vshufps ymm9, ymm12, ymm14, 221        vmovaps ymmword ptr [rsp+120H], ymm9        vshufps ymm10, ymm13, ymm15, 136        vmovaps ymmword ptr [rsp+140H], ymm10        vshufps ymm11, ymm13, ymm15, 221        vmovaps ymmword ptr [rsp+160H], ymm11        vmovups xmm8, xmmword ptr [r8+rdx-10H]        vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-10H], 01H        vmovups xmm9, xmmword ptr [r9+rdx-10H]        vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-10H], 01H        vunpcklpd ymm12, ymm8, ymm9        vunpckhpd ymm13, ymm8, ymm9        vmovups xmm10, xmmword ptr [r10+rdx-10H]        vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-10H], 01H        vmovups xmm11, xmmword ptr [r11+rdx-10H]        vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-10H], 01H        vunpcklpd ymm14, ymm10, ymm11        vunpckhpd ymm15, ymm10, ymm11        vshufps ymm8, ymm12, ymm14, 136        vmovaps ymmword ptr [rsp+180H], ymm8        vshufps ymm9, ymm12, ymm14, 221        vmovaps ymmword ptr [rsp+1A0H], ymm9        vshufps ymm10, ymm13, ymm15, 136        vmovaps ymmword ptr [rsp+1C0H], ymm10        vshufps ymm11, ymm13, ymm15, 221        vmovaps ymmword ptr [rsp+1E0H], ymm11        vpbroadcastd ymm15, dword ptr [rsp+200H]        prefetcht0 byte ptr [r8+rdx+80H]        prefetcht0 byte ptr [r12+rdx+80H]        prefetcht0 byte ptr [r9+rdx+80H]        prefetcht0 byte ptr [r13+rdx+80H]        prefetcht0 byte ptr [r10+rdx+80H]        prefetcht0 byte ptr [r14+rdx+80H]        prefetcht0 byte ptr [r11+rdx+80H]        prefetcht0 byte ptr [r15+rdx+80H]        vpaddd  ymm0, ymm0, ymmword ptr [rsp]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+40H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+80H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0C0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm0, ymmword ptr [rsp+220H]        vpxor   ymm13, ymm1, ymmword ptr [rsp+240H]        vpxor   ymm14, ymm2, ymmword ptr [BLAKE3_BLOCK_LEN]        vpxor   ymm15, ymm3, ymm15        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [BLAKE3_IV_0]        vpaddd  ymm9, ymm13, ymmword ptr [BLAKE3_IV_1]        vpaddd  ymm10, ymm14, ymmword ptr [BLAKE3_IV_2]        vpaddd  ymm11, ymm15, ymmword ptr [BLAKE3_IV_3]        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+20H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+60H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+0A0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0E0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+100H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+140H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+180H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1C0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+120H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+160H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1A0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1E0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+40H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+60H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+0E0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+80H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+0C0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+140H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1A0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+20H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+180H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+120H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1E0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+160H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+0A0H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1C0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+100H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+60H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+140H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1A0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0E0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+80H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+180H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+40H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1C0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+0C0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+120H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+160H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+100H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+0A0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1E0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+20H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+140H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+180H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1C0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1A0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+0E0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+120H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+60H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1E0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+80H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+160H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+0A0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+20H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+40H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+100H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0C0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+180H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+120H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+1E0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1C0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+1A0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+160H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+140H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+100H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+0E0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+0A0H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0C0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+40H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+60H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+20H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+80H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+120H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+160H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+100H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1E0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+1C0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+0A0H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+180H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+20H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+1A0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+40H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+80H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+60H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+140H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+0C0H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0E0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+160H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+0A0H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+20H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+100H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+1E0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+120H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0C0H]        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm1, ymm1, ymm5        vpaddd  ymm2, ymm2, ymm6        vpaddd  ymm3, ymm3, ymm7        vpxor   ymm12, ymm12, ymm0        vpxor   ymm13, ymm13, ymm1        vpxor   ymm14, ymm14, ymm2        vpxor   ymm15, ymm15, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpshufb ymm15, ymm15, ymm8        vpaddd  ymm8, ymm12, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm13        vpaddd  ymm10, ymm10, ymm14        vpaddd  ymm11, ymm11, ymm15        vpxor   ymm4, ymm4, ymm8        vpxor   ymm5, ymm5, ymm9        vpxor   ymm6, ymm6, ymm10        vpxor   ymm7, ymm7, ymm11        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+1C0H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+40H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+60H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+0E0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT16]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vmovdqa ymmword ptr [rsp+200H], ymm8        vpsrld  ymm8, ymm5, 12        vpslld  ymm5, ymm5, 20        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 12        vpslld  ymm6, ymm6, 20        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 12        vpslld  ymm7, ymm7, 20        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 12        vpslld  ymm4, ymm4, 20        vpor    ymm4, ymm4, ymm8        vpaddd  ymm0, ymm0, ymmword ptr [rsp+140H]        vpaddd  ymm1, ymm1, ymmword ptr [rsp+180H]        vpaddd  ymm2, ymm2, ymmword ptr [rsp+80H]        vpaddd  ymm3, ymm3, ymmword ptr [rsp+1A0H]        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm1, ymm1, ymm6        vpaddd  ymm2, ymm2, ymm7        vpaddd  ymm3, ymm3, ymm4        vpxor   ymm15, ymm15, ymm0        vpxor   ymm12, ymm12, ymm1        vpxor   ymm13, ymm13, ymm2        vpxor   ymm14, ymm14, ymm3        vbroadcasti128 ymm8, xmmword ptr [ROT8]        vpshufb ymm15, ymm15, ymm8        vpshufb ymm12, ymm12, ymm8        vpshufb ymm13, ymm13, ymm8        vpshufb ymm14, ymm14, ymm8        vpaddd  ymm10, ymm10, ymm15        vpaddd  ymm11, ymm11, ymm12        vpaddd  ymm8, ymm13, ymmword ptr [rsp+200H]        vpaddd  ymm9, ymm9, ymm14        vpxor   ymm5, ymm5, ymm10        vpxor   ymm6, ymm6, ymm11        vpxor   ymm7, ymm7, ymm8        vpxor   ymm4, ymm4, ymm9        vpxor   ymm0, ymm0, ymm8        vpxor   ymm1, ymm1, ymm9        vpxor   ymm2, ymm2, ymm10        vpxor   ymm3, ymm3, ymm11        vpsrld  ymm8, ymm5, 7        vpslld  ymm5, ymm5, 25        vpor    ymm5, ymm5, ymm8        vpsrld  ymm8, ymm6, 7        vpslld  ymm6, ymm6, 25        vpor    ymm6, ymm6, ymm8        vpsrld  ymm8, ymm7, 7        vpslld  ymm7, ymm7, 25        vpor    ymm7, ymm7, ymm8        vpsrld  ymm8, ymm4, 7        vpslld  ymm4, ymm4, 25        vpor    ymm4, ymm4, ymm8        vpxor   ymm4, ymm4, ymm12        vpxor   ymm5, ymm5, ymm13        vpxor   ymm6, ymm6, ymm14        vpxor   ymm7, ymm7, ymm15        movzx   eax, byte ptr [rbp+78H]        jne     innerloop8        mov     rbx, qword ptr [rbp+90H]        vunpcklps ymm8, ymm0, ymm1        vunpcklps ymm9, ymm2, ymm3        vunpckhps ymm10, ymm0, ymm1        vunpcklps ymm11, ymm4, ymm5        vunpcklps ymm0, ymm6, ymm7        vshufps ymm12, ymm8, ymm9, 78        vblendps ymm1, ymm8, ymm12, 0CCH        vshufps ymm8, ymm11, ymm0, 78        vunpckhps ymm13, ymm2, ymm3        vblendps ymm2, ymm11, ymm8, 0CCH        vblendps ymm3, ymm12, ymm9, 0CCH        vperm2f128 ymm12, ymm1, ymm2, 20H        vmovups ymmword ptr [rbx], ymm12        vunpckhps ymm14, ymm4, ymm5        vblendps ymm4, ymm8, ymm0, 0CCH        vunpckhps ymm15, ymm6, ymm7        vperm2f128 ymm7, ymm3, ymm4, 20H        vmovups ymmword ptr [rbx+20H], ymm7        vshufps ymm5, ymm10, ymm13, 78        vblendps ymm6, ymm5, ymm13, 0CCH        vshufps ymm13, ymm14, ymm15, 78        vblendps ymm10, ymm10, ymm5, 0CCH        vblendps ymm14, ymm14, ymm13, 0CCH        vperm2f128 ymm8, ymm10, ymm14, 20H        vmovups ymmword ptr [rbx+40H], ymm8        vblendps ymm15, ymm13, ymm15, 0CCH        vperm2f128 ymm13, ymm6, ymm15, 20H        vmovups ymmword ptr [rbx+60H], ymm13        vperm2f128 ymm9, ymm1, ymm2, 31H        vperm2f128 ymm11, ymm3, ymm4, 31H        vmovups ymmword ptr [rbx+80H], ymm9        vperm2f128 ymm14, ymm10, ymm14, 31H        vperm2f128 ymm15, ymm6, ymm15, 31H        vmovups ymmword ptr [rbx+0A0H], ymm11        vmovups ymmword ptr [rbx+0C0H], ymm14        vmovups ymmword ptr [rbx+0E0H], ymm15        vmovdqa ymm0, ymmword ptr [rsp+2A0H]        vpaddd  ymm1, ymm0, ymmword ptr [rsp+220H]        vmovdqa ymmword ptr [rsp+220H], ymm1        vpxor   ymm0, ymm0, ymmword ptr [CMP_MSB_MASK]        vpxor   ymm2, ymm1, ymmword ptr [CMP_MSB_MASK]        vpcmpgtd ymm2, ymm0, ymm2        vmovdqa ymm0, ymmword ptr [rsp+240H]        vpsubd  ymm2, ymm0, ymm2        vmovdqa ymmword ptr [rsp+240H], ymm2        add     rdi, 64        add     rbx, 256        mov     qword ptr [rbp+90H], rbx        sub     rsi, 8        cmp     rsi, 8        jnc     outerloop8        test    rsi, rsi        jnz     final7blocksunwind:        vzeroupper        vmovdqa xmm6, xmmword ptr [rsp+2D0H]        vmovdqa xmm7, xmmword ptr [rsp+2E0H]        vmovdqa xmm8, xmmword ptr [rsp+2F0H]        vmovdqa xmm9, xmmword ptr [rsp+300H]        vmovdqa xmm10, xmmword ptr [rsp+310H]        vmovdqa xmm11, xmmword ptr [rsp+320H]        vmovdqa xmm12, xmmword ptr [rsp+330H]        vmovdqa xmm13, xmmword ptr [rsp+340H]        vmovdqa xmm14, xmmword ptr [rsp+350H]        vmovdqa xmm15, xmmword ptr [rsp+360H]        mov     rsp, rbp        pop     rbp        pop     rbx        pop     rdi        pop     rsi        pop     r12        pop     r13        pop     r14        pop     r15        retALIGN   16final7blocks:        mov     rbx, qword ptr [rbp+90H]        mov     r15, qword ptr [rsp+2C0H]        movzx   r13d, byte ptr [rbp+78H]        movzx   r12d, byte ptr [rbp+88H]        test    rsi, 4H        je      final3blocks        vbroadcasti128 ymm0, xmmword ptr [rcx]        vbroadcasti128 ymm1, xmmword ptr [rcx+10H]        vmovdqa ymm8, ymm0        vmovdqa ymm9, ymm1        vbroadcasti128 ymm12, xmmword ptr [rsp+220H]        vbroadcasti128 ymm13, xmmword ptr [rsp+240H]        vpunpckldq ymm14, ymm12, ymm13        vpunpckhdq ymm15, ymm12, ymm13        vpermq  ymm14, ymm14, 50H        vpermq  ymm15, ymm15, 50H        vbroadcasti128 ymm12, xmmword ptr [BLAKE3_BLOCK_LEN]        vpblendd ymm14, ymm14, ymm12, 44H        vpblendd ymm15, ymm15, ymm12, 44H        vmovdqa ymmword ptr [rsp], ymm14        vmovdqa ymmword ptr [rsp+20H], ymm15        mov     r8, qword ptr [rdi]        mov     r9, qword ptr [rdi+8H]        mov     r10, qword ptr [rdi+10H]        mov     r11, qword ptr [rdi+18H]        movzx   eax, byte ptr [rbp+80H]        or      eax, r13d        xor     edx, edxALIGN   16innerloop4:        mov     r14d, eax        or      eax, r12d        add     rdx, 64        cmp     rdx, r15        cmovne  eax, r14d        mov     dword ptr [rsp+200H], eax        vmovups ymm2, ymmword ptr [r8+rdx-40H]        vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-40H], 01H        vmovups ymm3, ymmword ptr [r8+rdx-30H]        vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-30H], 01H        vshufps ymm4, ymm2, ymm3, 136        vshufps ymm5, ymm2, ymm3, 221        vmovups ymm2, ymmword ptr [r8+rdx-20H]        vinsertf128 ymm2, ymm2, xmmword ptr [r9+rdx-20H], 01H        vmovups ymm3, ymmword ptr [r8+rdx-10H]        vinsertf128 ymm3, ymm3, xmmword ptr [r9+rdx-10H], 01H        vshufps ymm6, ymm2, ymm3, 136        vshufps ymm7, ymm2, ymm3, 221        vpshufd ymm6, ymm6, 93H        vpshufd ymm7, ymm7, 93H        vmovups ymm10, ymmword ptr [r10+rdx-40H]        vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-40H], 01H        vmovups ymm11, ymmword ptr [r10+rdx-30H]        vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-30H], 01H        vshufps ymm12, ymm10, ymm11, 136        vshufps ymm13, ymm10, ymm11, 221        vmovups ymm10, ymmword ptr [r10+rdx-20H]        vinsertf128 ymm10, ymm10, xmmword ptr [r11+rdx-20H], 01H        vmovups ymm11, ymmword ptr [r10+rdx-10H]        vinsertf128 ymm11, ymm11, xmmword ptr [r11+rdx-10H], 01H        vshufps ymm14, ymm10, ymm11, 136        vshufps ymm15, ymm10, ymm11, 221        vpshufd ymm14, ymm14, 93H        vpshufd ymm15, ymm15, 93H        vpbroadcastd ymm2, dword ptr [rsp+200H]        vmovdqa ymm3, ymmword ptr [rsp]        vmovdqa ymm11, ymmword ptr [rsp+20H]        vpblendd ymm3, ymm3, ymm2, 88H        vpblendd ymm11, ymm11, ymm2, 88H        vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV]        vmovdqa ymm10, ymm2        mov     al, 7roundloop4:        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm8, ymm8, ymm12        vmovdqa ymmword ptr [rsp+40H], ymm4        nop        vmovdqa ymmword ptr [rsp+60H], ymm12        nop        vpaddd  ymm0, ymm0, ymm1        vpaddd  ymm8, ymm8, ymm9        vpxor   ymm3, ymm3, ymm0        vpxor   ymm11, ymm11, ymm8        vbroadcasti128 ymm4, xmmword ptr [ROT16]        vpshufb ymm3, ymm3, ymm4        vpshufb ymm11, ymm11, ymm4        vpaddd  ymm2, ymm2, ymm3        vpaddd  ymm10, ymm10, ymm11        vpxor   ymm1, ymm1, ymm2        vpxor   ymm9, ymm9, ymm10        vpsrld  ymm4, ymm1, 12        vpslld  ymm1, ymm1, 20        vpor    ymm1, ymm1, ymm4        vpsrld  ymm4, ymm9, 12        vpslld  ymm9, ymm9, 20        vpor    ymm9, ymm9, ymm4        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm8, ymm8, ymm13        vpaddd  ymm0, ymm0, ymm1        vpaddd  ymm8, ymm8, ymm9        vmovdqa ymmword ptr [rsp+80H], ymm5        vmovdqa ymmword ptr [rsp+0A0H], ymm13        vpxor   ymm3, ymm3, ymm0        vpxor   ymm11, ymm11, ymm8        vbroadcasti128 ymm4, xmmword ptr [ROT8]        vpshufb ymm3, ymm3, ymm4        vpshufb ymm11, ymm11, ymm4        vpaddd  ymm2, ymm2, ymm3        vpaddd  ymm10, ymm10, ymm11        vpxor   ymm1, ymm1, ymm2        vpxor   ymm9, ymm9, ymm10        vpsrld  ymm4, ymm1, 7        vpslld  ymm1, ymm1, 25        vpor    ymm1, ymm1, ymm4        vpsrld  ymm4, ymm9, 7        vpslld  ymm9, ymm9, 25        vpor    ymm9, ymm9, ymm4        vpshufd ymm0, ymm0, 93H        vpshufd ymm8, ymm8, 93H        vpshufd ymm3, ymm3, 4EH        vpshufd ymm11, ymm11, 4EH        vpshufd ymm2, ymm2, 39H        vpshufd ymm10, ymm10, 39H        vpaddd  ymm0, ymm0, ymm6        vpaddd  ymm8, ymm8, ymm14        vpaddd  ymm0, ymm0, ymm1        vpaddd  ymm8, ymm8, ymm9        vpxor   ymm3, ymm3, ymm0        vpxor   ymm11, ymm11, ymm8        vbroadcasti128 ymm4, xmmword ptr [ROT16]        vpshufb ymm3, ymm3, ymm4        vpshufb ymm11, ymm11, ymm4        vpaddd  ymm2, ymm2, ymm3        vpaddd  ymm10, ymm10, ymm11        vpxor   ymm1, ymm1, ymm2        vpxor   ymm9, ymm9, ymm10        vpsrld  ymm4, ymm1, 12        vpslld  ymm1, ymm1, 20        vpor    ymm1, ymm1, ymm4        vpsrld  ymm4, ymm9, 12        vpslld  ymm9, ymm9, 20        vpor    ymm9, ymm9, ymm4        vpaddd  ymm0, ymm0, ymm7        vpaddd  ymm8, ymm8, ymm15        vpaddd  ymm0, ymm0, ymm1        vpaddd  ymm8, ymm8, ymm9        vpxor   ymm3, ymm3, ymm0        vpxor   ymm11, ymm11, ymm8        vbroadcasti128 ymm4, xmmword ptr [ROT8]        vpshufb ymm3, ymm3, ymm4        vpshufb ymm11, ymm11, ymm4        vpaddd  ymm2, ymm2, ymm3        vpaddd  ymm10, ymm10, ymm11        vpxor   ymm1, ymm1, ymm2        vpxor   ymm9, ymm9, ymm10        vpsrld  ymm4, ymm1, 7        vpslld  ymm1, ymm1, 25        vpor    ymm1, ymm1, ymm4        vpsrld  ymm4, ymm9, 7        vpslld  ymm9, ymm9, 25        vpor    ymm9, ymm9, ymm4        vpshufd ymm0, ymm0, 39H        vpshufd ymm8, ymm8, 39H        vpshufd ymm3, ymm3, 4EH        vpshufd ymm11, ymm11, 4EH        vpshufd ymm2, ymm2, 93H        vpshufd ymm10, ymm10, 93H        dec     al        je      endroundloop4        vmovdqa ymm4, ymmword ptr [rsp+40H]        vmovdqa ymm5, ymmword ptr [rsp+80H]        vshufps ymm12, ymm4, ymm5, 214        vpshufd ymm13, ymm4, 0FH        vpshufd ymm4, ymm12, 39H        vshufps ymm12, ymm6, ymm7, 250        vpblendd ymm13, ymm13, ymm12, 0AAH        vpunpcklqdq ymm12, ymm7, ymm5        vpblendd ymm12, ymm12, ymm6, 88H        vpshufd ymm12, ymm12, 78H        vpunpckhdq ymm5, ymm5, ymm7        vpunpckldq ymm6, ymm6, ymm5        vpshufd ymm7, ymm6, 1EH        vmovdqa ymmword ptr [rsp+40H], ymm13        vmovdqa ymmword ptr [rsp+80H], ymm12        vmovdqa ymm12, ymmword ptr [rsp+60H]        vmovdqa ymm13, ymmword ptr [rsp+0A0H]        vshufps ymm5, ymm12, ymm13, 214        vpshufd ymm6, ymm12, 0FH        vpshufd ymm12, ymm5, 39H        vshufps ymm5, ymm14, ymm15, 250        vpblendd ymm6, ymm6, ymm5, 0AAH        vpunpcklqdq ymm5, ymm15, ymm13        vpblendd ymm5, ymm5, ymm14, 88H        vpshufd ymm5, ymm5, 78H        vpunpckhdq ymm13, ymm13, ymm15        vpunpckldq ymm14, ymm14, ymm13        vpshufd ymm15, ymm14, 1EH        vmovdqa ymm13, ymm6        vmovdqa ymm14, ymm5        vmovdqa ymm5, ymmword ptr [rsp+40H]        vmovdqa ymm6, ymmword ptr [rsp+80H]        jmp     roundloop4endroundloop4:        vpxor   ymm0, ymm0, ymm2        vpxor   ymm1, ymm1, ymm3        vpxor   ymm8, ymm8, ymm10        vpxor   ymm9, ymm9, ymm11        mov     eax, r13d        cmp     rdx, r15        jne     innerloop4        vmovdqu xmmword ptr [rbx], xmm0        vmovdqu xmmword ptr [rbx+10H], xmm1        vextracti128 xmmword ptr [rbx+20H], ymm0, 01H        vextracti128 xmmword ptr [rbx+30H], ymm1, 01H        vmovdqu xmmword ptr [rbx+40H], xmm8        vmovdqu xmmword ptr [rbx+50H], xmm9        vextracti128 xmmword ptr [rbx+60H], ymm8, 01H        vextracti128 xmmword ptr [rbx+70H], ymm9, 01H        vmovaps xmm8, xmmword ptr [rsp+260H]        vmovaps xmm0, xmmword ptr [rsp+220H]        vmovaps xmm1, xmmword ptr [rsp+230H]        vmovaps xmm2, xmmword ptr [rsp+240H]        vmovaps xmm3, xmmword ptr [rsp+250H]        vblendvps xmm0, xmm0, xmm1, xmm8        vblendvps xmm2, xmm2, xmm3, xmm8        vmovaps xmmword ptr [rsp+220H], xmm0        vmovaps xmmword ptr [rsp+240H], xmm2        add     rbx, 128        add     rdi, 32        sub     rsi, 4final3blocks:        test    rsi, 2H        je      final1blocks        vbroadcasti128 ymm0, xmmword ptr [rcx]        vbroadcasti128 ymm1, xmmword ptr [rcx+10H]        vmovd   xmm13, dword ptr [rsp+220H]        vpinsrd xmm13, xmm13, dword ptr [rsp+240H], 1        vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN], 2        vmovd   xmm14, dword ptr [rsp+224H]        vpinsrd xmm14, xmm14, dword ptr [rsp+244H], 1        vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN], 2        vinserti128 ymm13, ymm13, xmm14, 01H        vbroadcasti128 ymm14, xmmword ptr [ROT16]        vbroadcasti128 ymm15, xmmword ptr [ROT8]        mov     r8, qword ptr [rdi]        mov     r9, qword ptr [rdi+8H]        movzx   eax, byte ptr [rbp+80H]        or      eax, r13d        xor     edx, edxALIGN   16innerloop2:        mov     r14d, eax        or      eax, r12d        add     rdx, 64        cmp     rdx, r15        cmovne  eax, r14d        mov     dword ptr [rsp+200H], eax        vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV]        vpbroadcastd ymm8, dword ptr [rsp+200H]        vpblendd ymm3, ymm13, ymm8, 88H        vmovups ymm8, ymmword ptr [r8+rdx-40H]        vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-40H], 01H        vmovups ymm9, ymmword ptr [r8+rdx-30H]        vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-30H], 01H        vshufps ymm4, ymm8, ymm9, 136        vshufps ymm5, ymm8, ymm9, 221        vmovups ymm8, ymmword ptr [r8+rdx-20H]        vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-20H], 01H        vmovups ymm9, ymmword ptr [r8+rdx-10H]        vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-10H], 01H        vshufps ymm6, ymm8, ymm9, 136        vshufps ymm7, ymm8, ymm9, 221        vpshufd ymm6, ymm6, 93H        vpshufd ymm7, ymm7, 93H        mov     al, 7roundloop2:        vpaddd  ymm0, ymm0, ymm4        vpaddd  ymm0, ymm0, ymm1        vpxor   ymm3, ymm3, ymm0        vpshufb ymm3, ymm3, ymm14        vpaddd  ymm2, ymm2, ymm3        vpxor   ymm1, ymm1, ymm2        vpsrld  ymm8, ymm1, 12        vpslld  ymm1, ymm1, 20        vpor    ymm1, ymm1, ymm8        vpaddd  ymm0, ymm0, ymm5        vpaddd  ymm0, ymm0, ymm1        vpxor   ymm3, ymm3, ymm0        vpshufb ymm3, ymm3, ymm15        vpaddd  ymm2, ymm2, ymm3        vpxor   ymm1, ymm1, ymm2        vpsrld  ymm8, ymm1, 7        vpslld  ymm1, ymm1, 25        vpor    ymm1, ymm1, ymm8        vpshufd ymm0, ymm0, 93H        vpshufd ymm3, ymm3, 4EH        vpshufd ymm2, ymm2, 39H        vpaddd  ymm0, ymm0, ymm6        vpaddd  ymm0, ymm0, ymm1        vpxor   ymm3, ymm3, ymm0        vpshufb ymm3, ymm3, ymm14        vpaddd  ymm2, ymm2, ymm3        vpxor   ymm1, ymm1, ymm2        vpsrld  ymm8, ymm1, 12        vpslld  ymm1, ymm1, 20        vpor    ymm1, ymm1, ymm8        vpaddd  ymm0, ymm0, ymm7        vpaddd  ymm0, ymm0, ymm1        vpxor   ymm3, ymm3, ymm0        vpshufb ymm3, ymm3, ymm15        vpaddd  ymm2, ymm2, ymm3        vpxor   ymm1, ymm1, ymm2        vpsrld  ymm8, ymm1, 7        vpslld  ymm1, ymm1, 25        vpor    ymm1, ymm1, ymm8        vpshufd ymm0, ymm0, 39H        vpshufd ymm3, ymm3, 4EH        vpshufd ymm2, ymm2, 93H        dec     al        jz      endroundloop2        vshufps ymm8, ymm4, ymm5, 214        vpshufd ymm9, ymm4, 0FH        vpshufd ymm4, ymm8, 39H        vshufps ymm8, ymm6, ymm7, 250        vpblendd ymm9, ymm9, ymm8, 0AAH        vpunpcklqdq ymm8, ymm7, ymm5        vpblendd ymm8, ymm8, ymm6, 88H        vpshufd ymm8, ymm8, 78H        vpunpckhdq ymm5, ymm5, ymm7        vpunpckldq ymm6, ymm6, ymm5        vpshufd ymm7, ymm6, 1EH        vmovdqa ymm5, ymm9        vmovdqa ymm6, ymm8        jmp     roundloop2endroundloop2:        vpxor   ymm0, ymm0, ymm2        vpxor   ymm1, ymm1, ymm3        mov     eax, r13d        cmp     rdx, r15        jne     innerloop2        vmovdqu xmmword ptr [rbx], xmm0        vmovdqu xmmword ptr [rbx+10H], xmm1        vextracti128 xmmword ptr [rbx+20H], ymm0, 01H        vextracti128 xmmword ptr [rbx+30H], ymm1, 01H        vmovaps ymm8, ymmword ptr [rsp+260H]        vmovaps ymm0, ymmword ptr [rsp+220H]        vmovups ymm1, ymmword ptr [rsp+228H]        vmovaps ymm2, ymmword ptr [rsp+240H]        vmovups ymm3, ymmword ptr [rsp+248H]        vblendvps ymm0, ymm0, ymm1, ymm8        vblendvps ymm2, ymm2, ymm3, ymm8        vmovaps ymmword ptr [rsp+220H], ymm0        vmovaps ymmword ptr [rsp+240H], ymm2        add     rbx, 64        add     rdi, 16        sub     rsi, 2final1blocks:        test    rsi, 1H        je      unwind        vmovdqu xmm0, xmmword ptr [rcx]        vmovdqu xmm1, xmmword ptr [rcx+10H]        vmovd   xmm3, dword ptr [rsp+220H]        vpinsrd xmm3, xmm3, dword ptr [rsp+240H], 1        vpinsrd xmm13, xmm3, dword ptr [BLAKE3_BLOCK_LEN], 2        vmovdqa xmm14, xmmword ptr [ROT16]        vmovdqa xmm15, xmmword ptr [ROT8]        mov     r8, qword ptr [rdi]        movzx   eax, byte ptr [rbp+80H]        or      eax, r13d        xor     edx, edxALIGN   16innerloop1:        mov     r14d, eax        or      eax, r12d        add     rdx, 64        cmp     rdx, r15        cmovne  eax, r14d        vmovdqa xmm2, xmmword ptr [BLAKE3_IV]        vmovdqa xmm3, xmm13        vpinsrd xmm3, xmm3, eax, 3        vmovups xmm8, xmmword ptr [r8+rdx-40H]        vmovups xmm9, xmmword ptr [r8+rdx-30H]        vshufps xmm4, xmm8, xmm9, 136        vshufps xmm5, xmm8, xmm9, 221        vmovups xmm8, xmmword ptr [r8+rdx-20H]        vmovups xmm9, xmmword ptr [r8+rdx-10H]        vshufps xmm6, xmm8, xmm9, 136        vshufps xmm7, xmm8, xmm9, 221        vpshufd xmm6, xmm6, 93H        vpshufd xmm7, xmm7, 93H        mov     al, 7roundloop1:        vpaddd  xmm0, xmm0, xmm4        vpaddd  xmm0, xmm0, xmm1        vpxor   xmm3, xmm3, xmm0        vpshufb xmm3, xmm3, xmm14        vpaddd  xmm2, xmm2, xmm3        vpxor   xmm1, xmm1, xmm2        vpsrld  xmm8, xmm1, 12        vpslld  xmm1, xmm1, 20        vpor    xmm1, xmm1, xmm8        vpaddd  xmm0, xmm0, xmm5        vpaddd  xmm0, xmm0, xmm1        vpxor   xmm3, xmm3, xmm0        vpshufb xmm3, xmm3, xmm15        vpaddd  xmm2, xmm2, xmm3        vpxor   xmm1, xmm1, xmm2        vpsrld  xmm8, xmm1, 7        vpslld  xmm1, xmm1, 25        vpor    xmm1, xmm1, xmm8        vpshufd xmm0, xmm0, 93H        vpshufd xmm3, xmm3, 4EH        vpshufd xmm2, xmm2, 39H        vpaddd  xmm0, xmm0, xmm6        vpaddd  xmm0, xmm0, xmm1        vpxor   xmm3, xmm3, xmm0        vpshufb xmm3, xmm3, xmm14        vpaddd  xmm2, xmm2, xmm3        vpxor   xmm1, xmm1, xmm2        vpsrld  xmm8, xmm1, 12        vpslld  xmm1, xmm1, 20        vpor    xmm1, xmm1, xmm8        vpaddd  xmm0, xmm0, xmm7        vpaddd  xmm0, xmm0, xmm1        vpxor   xmm3, xmm3, xmm0        vpshufb xmm3, xmm3, xmm15        vpaddd  xmm2, xmm2, xmm3        vpxor   xmm1, xmm1, xmm2        vpsrld  xmm8, xmm1, 7        vpslld  xmm1, xmm1, 25        vpor    xmm1, xmm1, xmm8        vpshufd xmm0, xmm0, 39H        vpshufd xmm3, xmm3, 4EH        vpshufd xmm2, xmm2, 93H        dec     al        jz      endroundloop1        vshufps xmm8, xmm4, xmm5, 214        vpshufd xmm9, xmm4, 0FH        vpshufd xmm4, xmm8, 39H        vshufps xmm8, xmm6, xmm7, 250        vpblendd xmm9, xmm9, xmm8, 0AAH        vpunpcklqdq xmm8, xmm7, xmm5        vpblendd xmm8, xmm8, xmm6, 88H        vpshufd xmm8, xmm8, 78H        vpunpckhdq xmm5, xmm5, xmm7        vpunpckldq xmm6, xmm6, xmm5        vpshufd xmm7, xmm6, 1EH        vmovdqa xmm5, xmm9        vmovdqa xmm6, xmm8        jmp     roundloop1endroundloop1:        vpxor   xmm0, xmm0, xmm2        vpxor   xmm1, xmm1, xmm3        mov     eax, r13d        cmp     rdx, r15        jne     innerloop1        vmovdqu xmmword ptr [rbx], xmm0        vmovdqu xmmword ptr [rbx+10H], xmm1        jmp     unwind_blake3_hash_many_avx2 ENDPblake3_hash_many_avx2 ENDP_TEXT ENDS_RDATA SEGMENT READONLY PAGE ALIAS(".rdata") 'CONST'ALIGN   64ADD0:        dd 0, 1, 2, 3, 4, 5, 6, 7ADD1:        dd 8 dup (8)BLAKE3_IV_0:        dd 8 dup (6A09E667H)BLAKE3_IV_1:        dd 8 dup (0BB67AE85H)BLAKE3_IV_2:        dd 8 dup (3C6EF372H)BLAKE3_IV_3:        dd 8 dup (0A54FF53AH)BLAKE3_BLOCK_LEN:        dd 8 dup (64)ROT16:        db 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13ROT8:        db 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12CMP_MSB_MASK:        dd 8 dup(80000000H)BLAKE3_IV:        dd 6A09E667H, 0BB67AE85H, 3C6EF372H, 0A54FF53AH_RDATA ENDSEND