chibipub

experimental activitypub node in C
git clone git://jb55.com/chibipub
Log | Files | Refs | README | LICENSE

blake3_avx512_x86-64_windows_gnu.S (91004B)


      1 .intel_syntax noprefix
      2 
      3 .global _blake3_hash_many_avx512
      4 .global blake3_hash_many_avx512
      5 .global blake3_compress_in_place_avx512
      6 .global _blake3_compress_in_place_avx512
      7 .global blake3_compress_xof_avx512
      8 .global _blake3_compress_xof_avx512
      9 
     10 .section .text
     11 .p2align  6
     12 _blake3_hash_many_avx512:
     13 blake3_hash_many_avx512:
     14         push    r15
     15         push    r14
     16         push    r13
     17         push    r12
     18         push    rdi
     19         push    rsi
     20         push    rbx
     21         push    rbp
     22         mov     rbp, rsp
     23         sub     rsp, 304
     24         and     rsp, 0xFFFFFFFFFFFFFFC0
     25         vmovdqa xmmword ptr [rsp+0x90], xmm6
     26         vmovdqa xmmword ptr [rsp+0xA0], xmm7
     27         vmovdqa xmmword ptr [rsp+0xB0], xmm8
     28         vmovdqa xmmword ptr [rsp+0xC0], xmm9
     29         vmovdqa xmmword ptr [rsp+0xD0], xmm10
     30         vmovdqa xmmword ptr [rsp+0xE0], xmm11
     31         vmovdqa xmmword ptr [rsp+0xF0], xmm12
     32         vmovdqa xmmword ptr [rsp+0x100], xmm13
     33         vmovdqa xmmword ptr [rsp+0x110], xmm14
     34         vmovdqa xmmword ptr [rsp+0x120], xmm15
     35         mov     rdi, rcx
     36         mov     rsi, rdx
     37         mov     rdx, r8
     38         mov     rcx, r9
     39         mov     r8, qword ptr [rbp+0x68]
     40         movzx   r9, byte ptr [rbp+0x70]
     41         neg     r9
     42         kmovw   k1, r9d
     43         vmovd   xmm0, r8d
     44         vpbroadcastd ymm0, xmm0
     45         shr     r8, 32
     46         vmovd   xmm1, r8d
     47         vpbroadcastd ymm1, xmm1
     48         vmovdqa ymm4, ymm1
     49         vmovdqa ymm5, ymm1
     50         vpaddd  ymm2, ymm0, ymmword ptr [ADD0+rip]
     51         vpaddd  ymm3, ymm0, ymmword ptr [ADD0+32+rip]
     52         vpcmpltud k2, ymm2, ymm0
     53         vpcmpltud k3, ymm3, ymm0
     54         vpaddd  ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
     55         vpaddd  ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
     56         knotw   k2, k1
     57         vmovdqa32 ymm2 {k2}, ymm0
     58         vmovdqa32 ymm3 {k2}, ymm0
     59         vmovdqa32 ymm4 {k2}, ymm1
     60         vmovdqa32 ymm5 {k2}, ymm1
     61         vmovdqa ymmword ptr [rsp], ymm2
     62         vmovdqa ymmword ptr [rsp+0x20], ymm3
     63         vmovdqa ymmword ptr [rsp+0x40], ymm4
     64         vmovdqa ymmword ptr [rsp+0x60], ymm5
     65         shl     rdx, 6
     66         mov     qword ptr [rsp+0x80], rdx
     67         cmp     rsi, 16
     68         jc      3f
     69 2:
     70         vpbroadcastd zmm0, dword ptr [rcx]
     71         vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
     72         vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
     73         vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
     74         vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
     75         vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
     76         vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
     77         vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
     78         movzx   eax, byte ptr [rbp+0x78]
     79         movzx   ebx, byte ptr [rbp+0x80]
     80         or      eax, ebx
     81         xor     edx, edx
     82 .p2align 5
     83 9:
     84         movzx   ebx, byte ptr [rbp+0x88]
     85         or      ebx, eax
     86         add     rdx, 64
     87         cmp     rdx, qword ptr [rsp+0x80]
     88         cmove   eax, ebx
     89         mov     dword ptr [rsp+0x88], eax
     90         mov     r8, qword ptr [rdi]
     91         mov     r9, qword ptr [rdi+0x8]
     92         mov     r10, qword ptr [rdi+0x10]
     93         mov     r11, qword ptr [rdi+0x18]
     94         mov     r12, qword ptr [rdi+0x40]
     95         mov     r13, qword ptr [rdi+0x48]
     96         mov     r14, qword ptr [rdi+0x50]
     97         mov     r15, qword ptr [rdi+0x58]
     98         vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
     99         vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
    100         vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
    101         vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
    102         vpunpcklqdq zmm8, zmm16, zmm17
    103         vpunpckhqdq zmm9, zmm16, zmm17
    104         vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
    105         vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
    106         vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
    107         vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
    108         vpunpcklqdq zmm10, zmm18, zmm19
    109         vpunpckhqdq zmm11, zmm18, zmm19
    110         mov     r8, qword ptr [rdi+0x20]
    111         mov     r9, qword ptr [rdi+0x28]
    112         mov     r10, qword ptr [rdi+0x30]
    113         mov     r11, qword ptr [rdi+0x38]
    114         mov     r12, qword ptr [rdi+0x60]
    115         mov     r13, qword ptr [rdi+0x68]
    116         mov     r14, qword ptr [rdi+0x70]
    117         mov     r15, qword ptr [rdi+0x78]
    118         vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
    119         vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
    120         vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
    121         vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
    122         vpunpcklqdq zmm12, zmm16, zmm17
    123         vpunpckhqdq zmm13, zmm16, zmm17
    124         vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
    125         vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
    126         vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
    127         vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
    128         vpunpcklqdq zmm14, zmm18, zmm19
    129         vpunpckhqdq zmm15, zmm18, zmm19
    130         vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
    131         vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
    132         vshufps zmm16, zmm8, zmm10, 136
    133         vshufps zmm17, zmm12, zmm14, 136
    134         vmovdqa32 zmm20, zmm16
    135         vpermt2d zmm16, zmm27, zmm17
    136         vpermt2d zmm20, zmm31, zmm17
    137         vshufps zmm17, zmm8, zmm10, 221
    138         vshufps zmm30, zmm12, zmm14, 221
    139         vmovdqa32 zmm21, zmm17
    140         vpermt2d zmm17, zmm27, zmm30
    141         vpermt2d zmm21, zmm31, zmm30
    142         vshufps zmm18, zmm9, zmm11, 136
    143         vshufps zmm8, zmm13, zmm15, 136
    144         vmovdqa32 zmm22, zmm18
    145         vpermt2d zmm18, zmm27, zmm8
    146         vpermt2d zmm22, zmm31, zmm8
    147         vshufps zmm19, zmm9, zmm11, 221
    148         vshufps zmm8, zmm13, zmm15, 221
    149         vmovdqa32 zmm23, zmm19
    150         vpermt2d zmm19, zmm27, zmm8
    151         vpermt2d zmm23, zmm31, zmm8
    152         mov     r8, qword ptr [rdi]
    153         mov     r9, qword ptr [rdi+0x8]
    154         mov     r10, qword ptr [rdi+0x10]
    155         mov     r11, qword ptr [rdi+0x18]
    156         mov     r12, qword ptr [rdi+0x40]
    157         mov     r13, qword ptr [rdi+0x48]
    158         mov     r14, qword ptr [rdi+0x50]
    159         mov     r15, qword ptr [rdi+0x58]
    160         vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
    161         vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
    162         vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
    163         vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
    164         vpunpcklqdq zmm8, zmm24, zmm25
    165         vpunpckhqdq zmm9, zmm24, zmm25
    166         vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
    167         vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
    168         vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
    169         vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
    170         vpunpcklqdq zmm10, zmm24, zmm25
    171         vpunpckhqdq zmm11, zmm24, zmm25
    172         prefetcht0 [r8+rdx+0x80]
    173         prefetcht0 [r12+rdx+0x80]
    174         prefetcht0 [r9+rdx+0x80]
    175         prefetcht0 [r13+rdx+0x80]
    176         prefetcht0 [r10+rdx+0x80]
    177         prefetcht0 [r14+rdx+0x80]
    178         prefetcht0 [r11+rdx+0x80]
    179         prefetcht0 [r15+rdx+0x80]
    180         mov     r8, qword ptr [rdi+0x20]
    181         mov     r9, qword ptr [rdi+0x28]
    182         mov     r10, qword ptr [rdi+0x30]
    183         mov     r11, qword ptr [rdi+0x38]
    184         mov     r12, qword ptr [rdi+0x60]
    185         mov     r13, qword ptr [rdi+0x68]
    186         mov     r14, qword ptr [rdi+0x70]
    187         mov     r15, qword ptr [rdi+0x78]
    188         vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
    189         vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
    190         vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
    191         vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
    192         vpunpcklqdq zmm12, zmm24, zmm25
    193         vpunpckhqdq zmm13, zmm24, zmm25
    194         vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
    195         vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
    196         vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
    197         vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
    198         vpunpcklqdq zmm14, zmm24, zmm25
    199         vpunpckhqdq zmm15, zmm24, zmm25
    200         prefetcht0 [r8+rdx+0x80]
    201         prefetcht0 [r12+rdx+0x80]
    202         prefetcht0 [r9+rdx+0x80]
    203         prefetcht0 [r13+rdx+0x80]
    204         prefetcht0 [r10+rdx+0x80]
    205         prefetcht0 [r14+rdx+0x80]
    206         prefetcht0 [r11+rdx+0x80]
    207         prefetcht0 [r15+rdx+0x80]
    208         vshufps zmm24, zmm8, zmm10, 136
    209         vshufps zmm30, zmm12, zmm14, 136
    210         vmovdqa32 zmm28, zmm24
    211         vpermt2d zmm24, zmm27, zmm30
    212         vpermt2d zmm28, zmm31, zmm30
    213         vshufps zmm25, zmm8, zmm10, 221
    214         vshufps zmm30, zmm12, zmm14, 221
    215         vmovdqa32 zmm29, zmm25
    216         vpermt2d zmm25, zmm27, zmm30
    217         vpermt2d zmm29, zmm31, zmm30
    218         vshufps zmm26, zmm9, zmm11, 136
    219         vshufps zmm8, zmm13, zmm15, 136
    220         vmovdqa32 zmm30, zmm26
    221         vpermt2d zmm26, zmm27, zmm8
    222         vpermt2d zmm30, zmm31, zmm8
    223         vshufps zmm8, zmm9, zmm11, 221
    224         vshufps zmm10, zmm13, zmm15, 221
    225         vpermi2d zmm27, zmm8, zmm10
    226         vpermi2d zmm31, zmm8, zmm10
    227         vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
    228         vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
    229         vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
    230         vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
    231         vmovdqa32 zmm12, zmmword ptr [rsp]
    232         vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
    233         vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
    234         vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
    235         vpaddd  zmm0, zmm0, zmm16
    236         vpaddd  zmm1, zmm1, zmm18
    237         vpaddd  zmm2, zmm2, zmm20
    238         vpaddd  zmm3, zmm3, zmm22
    239         vpaddd  zmm0, zmm0, zmm4
    240         vpaddd  zmm1, zmm1, zmm5
    241         vpaddd  zmm2, zmm2, zmm6
    242         vpaddd  zmm3, zmm3, zmm7
    243         vpxord  zmm12, zmm12, zmm0
    244         vpxord  zmm13, zmm13, zmm1
    245         vpxord  zmm14, zmm14, zmm2
    246         vpxord  zmm15, zmm15, zmm3
    247         vprord  zmm12, zmm12, 16
    248         vprord  zmm13, zmm13, 16
    249         vprord  zmm14, zmm14, 16
    250         vprord  zmm15, zmm15, 16
    251         vpaddd  zmm8, zmm8, zmm12
    252         vpaddd  zmm9, zmm9, zmm13
    253         vpaddd  zmm10, zmm10, zmm14
    254         vpaddd  zmm11, zmm11, zmm15
    255         vpxord  zmm4, zmm4, zmm8
    256         vpxord  zmm5, zmm5, zmm9
    257         vpxord  zmm6, zmm6, zmm10
    258         vpxord  zmm7, zmm7, zmm11
    259         vprord  zmm4, zmm4, 12
    260         vprord  zmm5, zmm5, 12
    261         vprord  zmm6, zmm6, 12
    262         vprord  zmm7, zmm7, 12
    263         vpaddd  zmm0, zmm0, zmm17
    264         vpaddd  zmm1, zmm1, zmm19
    265         vpaddd  zmm2, zmm2, zmm21
    266         vpaddd  zmm3, zmm3, zmm23
    267         vpaddd  zmm0, zmm0, zmm4
    268         vpaddd  zmm1, zmm1, zmm5
    269         vpaddd  zmm2, zmm2, zmm6
    270         vpaddd  zmm3, zmm3, zmm7
    271         vpxord  zmm12, zmm12, zmm0
    272         vpxord  zmm13, zmm13, zmm1
    273         vpxord  zmm14, zmm14, zmm2
    274         vpxord  zmm15, zmm15, zmm3
    275         vprord  zmm12, zmm12, 8
    276         vprord  zmm13, zmm13, 8
    277         vprord  zmm14, zmm14, 8
    278         vprord  zmm15, zmm15, 8
    279         vpaddd  zmm8, zmm8, zmm12
    280         vpaddd  zmm9, zmm9, zmm13
    281         vpaddd  zmm10, zmm10, zmm14
    282         vpaddd  zmm11, zmm11, zmm15
    283         vpxord  zmm4, zmm4, zmm8
    284         vpxord  zmm5, zmm5, zmm9
    285         vpxord  zmm6, zmm6, zmm10
    286         vpxord  zmm7, zmm7, zmm11
    287         vprord  zmm4, zmm4, 7
    288         vprord  zmm5, zmm5, 7
    289         vprord  zmm6, zmm6, 7
    290         vprord  zmm7, zmm7, 7
    291         vpaddd  zmm0, zmm0, zmm24
    292         vpaddd  zmm1, zmm1, zmm26
    293         vpaddd  zmm2, zmm2, zmm28
    294         vpaddd  zmm3, zmm3, zmm30
    295         vpaddd  zmm0, zmm0, zmm5
    296         vpaddd  zmm1, zmm1, zmm6
    297         vpaddd  zmm2, zmm2, zmm7
    298         vpaddd  zmm3, zmm3, zmm4
    299         vpxord  zmm15, zmm15, zmm0
    300         vpxord  zmm12, zmm12, zmm1
    301         vpxord  zmm13, zmm13, zmm2
    302         vpxord  zmm14, zmm14, zmm3
    303         vprord  zmm15, zmm15, 16
    304         vprord  zmm12, zmm12, 16
    305         vprord  zmm13, zmm13, 16
    306         vprord  zmm14, zmm14, 16
    307         vpaddd  zmm10, zmm10, zmm15
    308         vpaddd  zmm11, zmm11, zmm12
    309         vpaddd  zmm8, zmm8, zmm13
    310         vpaddd  zmm9, zmm9, zmm14
    311         vpxord  zmm5, zmm5, zmm10
    312         vpxord  zmm6, zmm6, zmm11
    313         vpxord  zmm7, zmm7, zmm8
    314         vpxord  zmm4, zmm4, zmm9
    315         vprord  zmm5, zmm5, 12
    316         vprord  zmm6, zmm6, 12
    317         vprord  zmm7, zmm7, 12
    318         vprord  zmm4, zmm4, 12
    319         vpaddd  zmm0, zmm0, zmm25
    320         vpaddd  zmm1, zmm1, zmm27
    321         vpaddd  zmm2, zmm2, zmm29
    322         vpaddd  zmm3, zmm3, zmm31
    323         vpaddd  zmm0, zmm0, zmm5
    324         vpaddd  zmm1, zmm1, zmm6
    325         vpaddd  zmm2, zmm2, zmm7
    326         vpaddd  zmm3, zmm3, zmm4
    327         vpxord  zmm15, zmm15, zmm0
    328         vpxord  zmm12, zmm12, zmm1
    329         vpxord  zmm13, zmm13, zmm2
    330         vpxord  zmm14, zmm14, zmm3
    331         vprord  zmm15, zmm15, 8
    332         vprord  zmm12, zmm12, 8
    333         vprord  zmm13, zmm13, 8
    334         vprord  zmm14, zmm14, 8
    335         vpaddd  zmm10, zmm10, zmm15
    336         vpaddd  zmm11, zmm11, zmm12
    337         vpaddd  zmm8, zmm8, zmm13
    338         vpaddd  zmm9, zmm9, zmm14
    339         vpxord  zmm5, zmm5, zmm10
    340         vpxord  zmm6, zmm6, zmm11
    341         vpxord  zmm7, zmm7, zmm8
    342         vpxord  zmm4, zmm4, zmm9
    343         vprord  zmm5, zmm5, 7
    344         vprord  zmm6, zmm6, 7
    345         vprord  zmm7, zmm7, 7
    346         vprord  zmm4, zmm4, 7
    347         vpaddd  zmm0, zmm0, zmm18
    348         vpaddd  zmm1, zmm1, zmm19
    349         vpaddd  zmm2, zmm2, zmm23
    350         vpaddd  zmm3, zmm3, zmm20
    351         vpaddd  zmm0, zmm0, zmm4
    352         vpaddd  zmm1, zmm1, zmm5
    353         vpaddd  zmm2, zmm2, zmm6
    354         vpaddd  zmm3, zmm3, zmm7
    355         vpxord  zmm12, zmm12, zmm0
    356         vpxord  zmm13, zmm13, zmm1
    357         vpxord  zmm14, zmm14, zmm2
    358         vpxord  zmm15, zmm15, zmm3
    359         vprord  zmm12, zmm12, 16
    360         vprord  zmm13, zmm13, 16
    361         vprord  zmm14, zmm14, 16
    362         vprord  zmm15, zmm15, 16
    363         vpaddd  zmm8, zmm8, zmm12
    364         vpaddd  zmm9, zmm9, zmm13
    365         vpaddd  zmm10, zmm10, zmm14
    366         vpaddd  zmm11, zmm11, zmm15
    367         vpxord  zmm4, zmm4, zmm8
    368         vpxord  zmm5, zmm5, zmm9
    369         vpxord  zmm6, zmm6, zmm10
    370         vpxord  zmm7, zmm7, zmm11
    371         vprord  zmm4, zmm4, 12
    372         vprord  zmm5, zmm5, 12
    373         vprord  zmm6, zmm6, 12
    374         vprord  zmm7, zmm7, 12
    375         vpaddd  zmm0, zmm0, zmm22
    376         vpaddd  zmm1, zmm1, zmm26
    377         vpaddd  zmm2, zmm2, zmm16
    378         vpaddd  zmm3, zmm3, zmm29
    379         vpaddd  zmm0, zmm0, zmm4
    380         vpaddd  zmm1, zmm1, zmm5
    381         vpaddd  zmm2, zmm2, zmm6
    382         vpaddd  zmm3, zmm3, zmm7
    383         vpxord  zmm12, zmm12, zmm0
    384         vpxord  zmm13, zmm13, zmm1
    385         vpxord  zmm14, zmm14, zmm2
    386         vpxord  zmm15, zmm15, zmm3
    387         vprord  zmm12, zmm12, 8
    388         vprord  zmm13, zmm13, 8
    389         vprord  zmm14, zmm14, 8
    390         vprord  zmm15, zmm15, 8
    391         vpaddd  zmm8, zmm8, zmm12
    392         vpaddd  zmm9, zmm9, zmm13
    393         vpaddd  zmm10, zmm10, zmm14
    394         vpaddd  zmm11, zmm11, zmm15
    395         vpxord  zmm4, zmm4, zmm8
    396         vpxord  zmm5, zmm5, zmm9
    397         vpxord  zmm6, zmm6, zmm10
    398         vpxord  zmm7, zmm7, zmm11
    399         vprord  zmm4, zmm4, 7
    400         vprord  zmm5, zmm5, 7
    401         vprord  zmm6, zmm6, 7
    402         vprord  zmm7, zmm7, 7
    403         vpaddd  zmm0, zmm0, zmm17
    404         vpaddd  zmm1, zmm1, zmm28
    405         vpaddd  zmm2, zmm2, zmm25
    406         vpaddd  zmm3, zmm3, zmm31
    407         vpaddd  zmm0, zmm0, zmm5
    408         vpaddd  zmm1, zmm1, zmm6
    409         vpaddd  zmm2, zmm2, zmm7
    410         vpaddd  zmm3, zmm3, zmm4
    411         vpxord  zmm15, zmm15, zmm0
    412         vpxord  zmm12, zmm12, zmm1
    413         vpxord  zmm13, zmm13, zmm2
    414         vpxord  zmm14, zmm14, zmm3
    415         vprord  zmm15, zmm15, 16
    416         vprord  zmm12, zmm12, 16
    417         vprord  zmm13, zmm13, 16
    418         vprord  zmm14, zmm14, 16
    419         vpaddd  zmm10, zmm10, zmm15
    420         vpaddd  zmm11, zmm11, zmm12
    421         vpaddd  zmm8, zmm8, zmm13
    422         vpaddd  zmm9, zmm9, zmm14
    423         vpxord  zmm5, zmm5, zmm10
    424         vpxord  zmm6, zmm6, zmm11
    425         vpxord  zmm7, zmm7, zmm8
    426         vpxord  zmm4, zmm4, zmm9
    427         vprord  zmm5, zmm5, 12
    428         vprord  zmm6, zmm6, 12
    429         vprord  zmm7, zmm7, 12
    430         vprord  zmm4, zmm4, 12
    431         vpaddd  zmm0, zmm0, zmm27
    432         vpaddd  zmm1, zmm1, zmm21
    433         vpaddd  zmm2, zmm2, zmm30
    434         vpaddd  zmm3, zmm3, zmm24
    435         vpaddd  zmm0, zmm0, zmm5
    436         vpaddd  zmm1, zmm1, zmm6
    437         vpaddd  zmm2, zmm2, zmm7
    438         vpaddd  zmm3, zmm3, zmm4
    439         vpxord  zmm15, zmm15, zmm0
    440         vpxord  zmm12, zmm12, zmm1
    441         vpxord  zmm13, zmm13, zmm2
    442         vpxord  zmm14, zmm14, zmm3
    443         vprord  zmm15, zmm15, 8
    444         vprord  zmm12, zmm12, 8
    445         vprord  zmm13, zmm13, 8
    446         vprord  zmm14, zmm14, 8
    447         vpaddd  zmm10, zmm10, zmm15
    448         vpaddd  zmm11, zmm11, zmm12
    449         vpaddd  zmm8, zmm8, zmm13
    450         vpaddd  zmm9, zmm9, zmm14
    451         vpxord  zmm5, zmm5, zmm10
    452         vpxord  zmm6, zmm6, zmm11
    453         vpxord  zmm7, zmm7, zmm8
    454         vpxord  zmm4, zmm4, zmm9
    455         vprord  zmm5, zmm5, 7
    456         vprord  zmm6, zmm6, 7
    457         vprord  zmm7, zmm7, 7
    458         vprord  zmm4, zmm4, 7
    459         vpaddd  zmm0, zmm0, zmm19
    460         vpaddd  zmm1, zmm1, zmm26
    461         vpaddd  zmm2, zmm2, zmm29
    462         vpaddd  zmm3, zmm3, zmm23
    463         vpaddd  zmm0, zmm0, zmm4
    464         vpaddd  zmm1, zmm1, zmm5
    465         vpaddd  zmm2, zmm2, zmm6
    466         vpaddd  zmm3, zmm3, zmm7
    467         vpxord  zmm12, zmm12, zmm0
    468         vpxord  zmm13, zmm13, zmm1
    469         vpxord  zmm14, zmm14, zmm2
    470         vpxord  zmm15, zmm15, zmm3
    471         vprord  zmm12, zmm12, 16
    472         vprord  zmm13, zmm13, 16
    473         vprord  zmm14, zmm14, 16
    474         vprord  zmm15, zmm15, 16
    475         vpaddd  zmm8, zmm8, zmm12
    476         vpaddd  zmm9, zmm9, zmm13
    477         vpaddd  zmm10, zmm10, zmm14
    478         vpaddd  zmm11, zmm11, zmm15
    479         vpxord  zmm4, zmm4, zmm8
    480         vpxord  zmm5, zmm5, zmm9
    481         vpxord  zmm6, zmm6, zmm10
    482         vpxord  zmm7, zmm7, zmm11
    483         vprord  zmm4, zmm4, 12
    484         vprord  zmm5, zmm5, 12
    485         vprord  zmm6, zmm6, 12
    486         vprord  zmm7, zmm7, 12
    487         vpaddd  zmm0, zmm0, zmm20
    488         vpaddd  zmm1, zmm1, zmm28
    489         vpaddd  zmm2, zmm2, zmm18
    490         vpaddd  zmm3, zmm3, zmm30
    491         vpaddd  zmm0, zmm0, zmm4
    492         vpaddd  zmm1, zmm1, zmm5
    493         vpaddd  zmm2, zmm2, zmm6
    494         vpaddd  zmm3, zmm3, zmm7
    495         vpxord  zmm12, zmm12, zmm0
    496         vpxord  zmm13, zmm13, zmm1
    497         vpxord  zmm14, zmm14, zmm2
    498         vpxord  zmm15, zmm15, zmm3
    499         vprord  zmm12, zmm12, 8
    500         vprord  zmm13, zmm13, 8
    501         vprord  zmm14, zmm14, 8
    502         vprord  zmm15, zmm15, 8
    503         vpaddd  zmm8, zmm8, zmm12
    504         vpaddd  zmm9, zmm9, zmm13
    505         vpaddd  zmm10, zmm10, zmm14
    506         vpaddd  zmm11, zmm11, zmm15
    507         vpxord  zmm4, zmm4, zmm8
    508         vpxord  zmm5, zmm5, zmm9
    509         vpxord  zmm6, zmm6, zmm10
    510         vpxord  zmm7, zmm7, zmm11
    511         vprord  zmm4, zmm4, 7
    512         vprord  zmm5, zmm5, 7
    513         vprord  zmm6, zmm6, 7
    514         vprord  zmm7, zmm7, 7
    515         vpaddd  zmm0, zmm0, zmm22
    516         vpaddd  zmm1, zmm1, zmm25
    517         vpaddd  zmm2, zmm2, zmm27
    518         vpaddd  zmm3, zmm3, zmm24
    519         vpaddd  zmm0, zmm0, zmm5
    520         vpaddd  zmm1, zmm1, zmm6
    521         vpaddd  zmm2, zmm2, zmm7
    522         vpaddd  zmm3, zmm3, zmm4
    523         vpxord  zmm15, zmm15, zmm0
    524         vpxord  zmm12, zmm12, zmm1
    525         vpxord  zmm13, zmm13, zmm2
    526         vpxord  zmm14, zmm14, zmm3
    527         vprord  zmm15, zmm15, 16
    528         vprord  zmm12, zmm12, 16
    529         vprord  zmm13, zmm13, 16
    530         vprord  zmm14, zmm14, 16
    531         vpaddd  zmm10, zmm10, zmm15
    532         vpaddd  zmm11, zmm11, zmm12
    533         vpaddd  zmm8, zmm8, zmm13
    534         vpaddd  zmm9, zmm9, zmm14
    535         vpxord  zmm5, zmm5, zmm10
    536         vpxord  zmm6, zmm6, zmm11
    537         vpxord  zmm7, zmm7, zmm8
    538         vpxord  zmm4, zmm4, zmm9
    539         vprord  zmm5, zmm5, 12
    540         vprord  zmm6, zmm6, 12
    541         vprord  zmm7, zmm7, 12
    542         vprord  zmm4, zmm4, 12
    543         vpaddd  zmm0, zmm0, zmm21
    544         vpaddd  zmm1, zmm1, zmm16
    545         vpaddd  zmm2, zmm2, zmm31
    546         vpaddd  zmm3, zmm3, zmm17
    547         vpaddd  zmm0, zmm0, zmm5
    548         vpaddd  zmm1, zmm1, zmm6
    549         vpaddd  zmm2, zmm2, zmm7
    550         vpaddd  zmm3, zmm3, zmm4
    551         vpxord  zmm15, zmm15, zmm0
    552         vpxord  zmm12, zmm12, zmm1
    553         vpxord  zmm13, zmm13, zmm2
    554         vpxord  zmm14, zmm14, zmm3
    555         vprord  zmm15, zmm15, 8
    556         vprord  zmm12, zmm12, 8
    557         vprord  zmm13, zmm13, 8
    558         vprord  zmm14, zmm14, 8
    559         vpaddd  zmm10, zmm10, zmm15
    560         vpaddd  zmm11, zmm11, zmm12
    561         vpaddd  zmm8, zmm8, zmm13
    562         vpaddd  zmm9, zmm9, zmm14
    563         vpxord  zmm5, zmm5, zmm10
    564         vpxord  zmm6, zmm6, zmm11
    565         vpxord  zmm7, zmm7, zmm8
    566         vpxord  zmm4, zmm4, zmm9
    567         vprord  zmm5, zmm5, 7
    568         vprord  zmm6, zmm6, 7
    569         vprord  zmm7, zmm7, 7
    570         vprord  zmm4, zmm4, 7
    571         vpaddd  zmm0, zmm0, zmm26
    572         vpaddd  zmm1, zmm1, zmm28
    573         vpaddd  zmm2, zmm2, zmm30
    574         vpaddd  zmm3, zmm3, zmm29
    575         vpaddd  zmm0, zmm0, zmm4
    576         vpaddd  zmm1, zmm1, zmm5
    577         vpaddd  zmm2, zmm2, zmm6
    578         vpaddd  zmm3, zmm3, zmm7
    579         vpxord  zmm12, zmm12, zmm0
    580         vpxord  zmm13, zmm13, zmm1
    581         vpxord  zmm14, zmm14, zmm2
    582         vpxord  zmm15, zmm15, zmm3
    583         vprord  zmm12, zmm12, 16
    584         vprord  zmm13, zmm13, 16
    585         vprord  zmm14, zmm14, 16
    586         vprord  zmm15, zmm15, 16
    587         vpaddd  zmm8, zmm8, zmm12
    588         vpaddd  zmm9, zmm9, zmm13
    589         vpaddd  zmm10, zmm10, zmm14
    590         vpaddd  zmm11, zmm11, zmm15
    591         vpxord  zmm4, zmm4, zmm8
    592         vpxord  zmm5, zmm5, zmm9
    593         vpxord  zmm6, zmm6, zmm10
    594         vpxord  zmm7, zmm7, zmm11
    595         vprord  zmm4, zmm4, 12
    596         vprord  zmm5, zmm5, 12
    597         vprord  zmm6, zmm6, 12
    598         vprord  zmm7, zmm7, 12
    599         vpaddd  zmm0, zmm0, zmm23
    600         vpaddd  zmm1, zmm1, zmm25
    601         vpaddd  zmm2, zmm2, zmm19
    602         vpaddd  zmm3, zmm3, zmm31
    603         vpaddd  zmm0, zmm0, zmm4
    604         vpaddd  zmm1, zmm1, zmm5
    605         vpaddd  zmm2, zmm2, zmm6
    606         vpaddd  zmm3, zmm3, zmm7
    607         vpxord  zmm12, zmm12, zmm0
    608         vpxord  zmm13, zmm13, zmm1
    609         vpxord  zmm14, zmm14, zmm2
    610         vpxord  zmm15, zmm15, zmm3
    611         vprord  zmm12, zmm12, 8
    612         vprord  zmm13, zmm13, 8
    613         vprord  zmm14, zmm14, 8
    614         vprord  zmm15, zmm15, 8
    615         vpaddd  zmm8, zmm8, zmm12
    616         vpaddd  zmm9, zmm9, zmm13
    617         vpaddd  zmm10, zmm10, zmm14
    618         vpaddd  zmm11, zmm11, zmm15
    619         vpxord  zmm4, zmm4, zmm8
    620         vpxord  zmm5, zmm5, zmm9
    621         vpxord  zmm6, zmm6, zmm10
    622         vpxord  zmm7, zmm7, zmm11
    623         vprord  zmm4, zmm4, 7
    624         vprord  zmm5, zmm5, 7
    625         vprord  zmm6, zmm6, 7
    626         vprord  zmm7, zmm7, 7
    627         vpaddd  zmm0, zmm0, zmm20
    628         vpaddd  zmm1, zmm1, zmm27
    629         vpaddd  zmm2, zmm2, zmm21
    630         vpaddd  zmm3, zmm3, zmm17
    631         vpaddd  zmm0, zmm0, zmm5
    632         vpaddd  zmm1, zmm1, zmm6
    633         vpaddd  zmm2, zmm2, zmm7
    634         vpaddd  zmm3, zmm3, zmm4
    635         vpxord  zmm15, zmm15, zmm0
    636         vpxord  zmm12, zmm12, zmm1
    637         vpxord  zmm13, zmm13, zmm2
    638         vpxord  zmm14, zmm14, zmm3
    639         vprord  zmm15, zmm15, 16
    640         vprord  zmm12, zmm12, 16
    641         vprord  zmm13, zmm13, 16
    642         vprord  zmm14, zmm14, 16
    643         vpaddd  zmm10, zmm10, zmm15
    644         vpaddd  zmm11, zmm11, zmm12
    645         vpaddd  zmm8, zmm8, zmm13
    646         vpaddd  zmm9, zmm9, zmm14
    647         vpxord  zmm5, zmm5, zmm10
    648         vpxord  zmm6, zmm6, zmm11
    649         vpxord  zmm7, zmm7, zmm8
    650         vpxord  zmm4, zmm4, zmm9
    651         vprord  zmm5, zmm5, 12
    652         vprord  zmm6, zmm6, 12
    653         vprord  zmm7, zmm7, 12
    654         vprord  zmm4, zmm4, 12
    655         vpaddd  zmm0, zmm0, zmm16
    656         vpaddd  zmm1, zmm1, zmm18
    657         vpaddd  zmm2, zmm2, zmm24
    658         vpaddd  zmm3, zmm3, zmm22
    659         vpaddd  zmm0, zmm0, zmm5
    660         vpaddd  zmm1, zmm1, zmm6
    661         vpaddd  zmm2, zmm2, zmm7
    662         vpaddd  zmm3, zmm3, zmm4
    663         vpxord  zmm15, zmm15, zmm0
    664         vpxord  zmm12, zmm12, zmm1
    665         vpxord  zmm13, zmm13, zmm2
    666         vpxord  zmm14, zmm14, zmm3
    667         vprord  zmm15, zmm15, 8
    668         vprord  zmm12, zmm12, 8
    669         vprord  zmm13, zmm13, 8
    670         vprord  zmm14, zmm14, 8
    671         vpaddd  zmm10, zmm10, zmm15
    672         vpaddd  zmm11, zmm11, zmm12
    673         vpaddd  zmm8, zmm8, zmm13
    674         vpaddd  zmm9, zmm9, zmm14
    675         vpxord  zmm5, zmm5, zmm10
    676         vpxord  zmm6, zmm6, zmm11
    677         vpxord  zmm7, zmm7, zmm8
    678         vpxord  zmm4, zmm4, zmm9
    679         vprord  zmm5, zmm5, 7
    680         vprord  zmm6, zmm6, 7
    681         vprord  zmm7, zmm7, 7
    682         vprord  zmm4, zmm4, 7
    683         vpaddd  zmm0, zmm0, zmm28
    684         vpaddd  zmm1, zmm1, zmm25
    685         vpaddd  zmm2, zmm2, zmm31
    686         vpaddd  zmm3, zmm3, zmm30
    687         vpaddd  zmm0, zmm0, zmm4
    688         vpaddd  zmm1, zmm1, zmm5
    689         vpaddd  zmm2, zmm2, zmm6
    690         vpaddd  zmm3, zmm3, zmm7
    691         vpxord  zmm12, zmm12, zmm0
    692         vpxord  zmm13, zmm13, zmm1
    693         vpxord  zmm14, zmm14, zmm2
    694         vpxord  zmm15, zmm15, zmm3
    695         vprord  zmm12, zmm12, 16
    696         vprord  zmm13, zmm13, 16
    697         vprord  zmm14, zmm14, 16
    698         vprord  zmm15, zmm15, 16
    699         vpaddd  zmm8, zmm8, zmm12
    700         vpaddd  zmm9, zmm9, zmm13
    701         vpaddd  zmm10, zmm10, zmm14
    702         vpaddd  zmm11, zmm11, zmm15
    703         vpxord  zmm4, zmm4, zmm8
    704         vpxord  zmm5, zmm5, zmm9
    705         vpxord  zmm6, zmm6, zmm10
    706         vpxord  zmm7, zmm7, zmm11
    707         vprord  zmm4, zmm4, 12
    708         vprord  zmm5, zmm5, 12
    709         vprord  zmm6, zmm6, 12
    710         vprord  zmm7, zmm7, 12
    711         vpaddd  zmm0, zmm0, zmm29
    712         vpaddd  zmm1, zmm1, zmm27
    713         vpaddd  zmm2, zmm2, zmm26
    714         vpaddd  zmm3, zmm3, zmm24
    715         vpaddd  zmm0, zmm0, zmm4
    716         vpaddd  zmm1, zmm1, zmm5
    717         vpaddd  zmm2, zmm2, zmm6
    718         vpaddd  zmm3, zmm3, zmm7
    719         vpxord  zmm12, zmm12, zmm0
    720         vpxord  zmm13, zmm13, zmm1
    721         vpxord  zmm14, zmm14, zmm2
    722         vpxord  zmm15, zmm15, zmm3
    723         vprord  zmm12, zmm12, 8
    724         vprord  zmm13, zmm13, 8
    725         vprord  zmm14, zmm14, 8
    726         vprord  zmm15, zmm15, 8
    727         vpaddd  zmm8, zmm8, zmm12
    728         vpaddd  zmm9, zmm9, zmm13
    729         vpaddd  zmm10, zmm10, zmm14
    730         vpaddd  zmm11, zmm11, zmm15
    731         vpxord  zmm4, zmm4, zmm8
    732         vpxord  zmm5, zmm5, zmm9
    733         vpxord  zmm6, zmm6, zmm10
    734         vpxord  zmm7, zmm7, zmm11
    735         vprord  zmm4, zmm4, 7
    736         vprord  zmm5, zmm5, 7
    737         vprord  zmm6, zmm6, 7
    738         vprord  zmm7, zmm7, 7
    739         vpaddd  zmm0, zmm0, zmm23
    740         vpaddd  zmm1, zmm1, zmm21
    741         vpaddd  zmm2, zmm2, zmm16
    742         vpaddd  zmm3, zmm3, zmm22
    743         vpaddd  zmm0, zmm0, zmm5
    744         vpaddd  zmm1, zmm1, zmm6
    745         vpaddd  zmm2, zmm2, zmm7
    746         vpaddd  zmm3, zmm3, zmm4
    747         vpxord  zmm15, zmm15, zmm0
    748         vpxord  zmm12, zmm12, zmm1
    749         vpxord  zmm13, zmm13, zmm2
    750         vpxord  zmm14, zmm14, zmm3
    751         vprord  zmm15, zmm15, 16
    752         vprord  zmm12, zmm12, 16
    753         vprord  zmm13, zmm13, 16
    754         vprord  zmm14, zmm14, 16
    755         vpaddd  zmm10, zmm10, zmm15
    756         vpaddd  zmm11, zmm11, zmm12
    757         vpaddd  zmm8, zmm8, zmm13
    758         vpaddd  zmm9, zmm9, zmm14
    759         vpxord  zmm5, zmm5, zmm10
    760         vpxord  zmm6, zmm6, zmm11
    761         vpxord  zmm7, zmm7, zmm8
    762         vpxord  zmm4, zmm4, zmm9
    763         vprord  zmm5, zmm5, 12
    764         vprord  zmm6, zmm6, 12
    765         vprord  zmm7, zmm7, 12
    766         vprord  zmm4, zmm4, 12
    767         vpaddd  zmm0, zmm0, zmm18
    768         vpaddd  zmm1, zmm1, zmm19
    769         vpaddd  zmm2, zmm2, zmm17
    770         vpaddd  zmm3, zmm3, zmm20
    771         vpaddd  zmm0, zmm0, zmm5
    772         vpaddd  zmm1, zmm1, zmm6
    773         vpaddd  zmm2, zmm2, zmm7
    774         vpaddd  zmm3, zmm3, zmm4
    775         vpxord  zmm15, zmm15, zmm0
    776         vpxord  zmm12, zmm12, zmm1
    777         vpxord  zmm13, zmm13, zmm2
    778         vpxord  zmm14, zmm14, zmm3
    779         vprord  zmm15, zmm15, 8
    780         vprord  zmm12, zmm12, 8
    781         vprord  zmm13, zmm13, 8
    782         vprord  zmm14, zmm14, 8
    783         vpaddd  zmm10, zmm10, zmm15
    784         vpaddd  zmm11, zmm11, zmm12
    785         vpaddd  zmm8, zmm8, zmm13
    786         vpaddd  zmm9, zmm9, zmm14
    787         vpxord  zmm5, zmm5, zmm10
    788         vpxord  zmm6, zmm6, zmm11
    789         vpxord  zmm7, zmm7, zmm8
    790         vpxord  zmm4, zmm4, zmm9
    791         vprord  zmm5, zmm5, 7
    792         vprord  zmm6, zmm6, 7
    793         vprord  zmm7, zmm7, 7
    794         vprord  zmm4, zmm4, 7
    795         vpaddd  zmm0, zmm0, zmm25
    796         vpaddd  zmm1, zmm1, zmm27
    797         vpaddd  zmm2, zmm2, zmm24
    798         vpaddd  zmm3, zmm3, zmm31
    799         vpaddd  zmm0, zmm0, zmm4
    800         vpaddd  zmm1, zmm1, zmm5
    801         vpaddd  zmm2, zmm2, zmm6
    802         vpaddd  zmm3, zmm3, zmm7
    803         vpxord  zmm12, zmm12, zmm0
    804         vpxord  zmm13, zmm13, zmm1
    805         vpxord  zmm14, zmm14, zmm2
    806         vpxord  zmm15, zmm15, zmm3
    807         vprord  zmm12, zmm12, 16
    808         vprord  zmm13, zmm13, 16
    809         vprord  zmm14, zmm14, 16
    810         vprord  zmm15, zmm15, 16
    811         vpaddd  zmm8, zmm8, zmm12
    812         vpaddd  zmm9, zmm9, zmm13
    813         vpaddd  zmm10, zmm10, zmm14
    814         vpaddd  zmm11, zmm11, zmm15
    815         vpxord  zmm4, zmm4, zmm8
    816         vpxord  zmm5, zmm5, zmm9
    817         vpxord  zmm6, zmm6, zmm10
    818         vpxord  zmm7, zmm7, zmm11
    819         vprord  zmm4, zmm4, 12
    820         vprord  zmm5, zmm5, 12
    821         vprord  zmm6, zmm6, 12
    822         vprord  zmm7, zmm7, 12
    823         vpaddd  zmm0, zmm0, zmm30
    824         vpaddd  zmm1, zmm1, zmm21
    825         vpaddd  zmm2, zmm2, zmm28
    826         vpaddd  zmm3, zmm3, zmm17
    827         vpaddd  zmm0, zmm0, zmm4
    828         vpaddd  zmm1, zmm1, zmm5
    829         vpaddd  zmm2, zmm2, zmm6
    830         vpaddd  zmm3, zmm3, zmm7
    831         vpxord  zmm12, zmm12, zmm0
    832         vpxord  zmm13, zmm13, zmm1
    833         vpxord  zmm14, zmm14, zmm2
    834         vpxord  zmm15, zmm15, zmm3
    835         vprord  zmm12, zmm12, 8
    836         vprord  zmm13, zmm13, 8
    837         vprord  zmm14, zmm14, 8
    838         vprord  zmm15, zmm15, 8
    839         vpaddd  zmm8, zmm8, zmm12
    840         vpaddd  zmm9, zmm9, zmm13
    841         vpaddd  zmm10, zmm10, zmm14
    842         vpaddd  zmm11, zmm11, zmm15
    843         vpxord  zmm4, zmm4, zmm8
    844         vpxord  zmm5, zmm5, zmm9
    845         vpxord  zmm6, zmm6, zmm10
    846         vpxord  zmm7, zmm7, zmm11
    847         vprord  zmm4, zmm4, 7
    848         vprord  zmm5, zmm5, 7
    849         vprord  zmm6, zmm6, 7
    850         vprord  zmm7, zmm7, 7
    851         vpaddd  zmm0, zmm0, zmm29
    852         vpaddd  zmm1, zmm1, zmm16
    853         vpaddd  zmm2, zmm2, zmm18
    854         vpaddd  zmm3, zmm3, zmm20
    855         vpaddd  zmm0, zmm0, zmm5
    856         vpaddd  zmm1, zmm1, zmm6
    857         vpaddd  zmm2, zmm2, zmm7
    858         vpaddd  zmm3, zmm3, zmm4
    859         vpxord  zmm15, zmm15, zmm0
    860         vpxord  zmm12, zmm12, zmm1
    861         vpxord  zmm13, zmm13, zmm2
    862         vpxord  zmm14, zmm14, zmm3
    863         vprord  zmm15, zmm15, 16
    864         vprord  zmm12, zmm12, 16
    865         vprord  zmm13, zmm13, 16
    866         vprord  zmm14, zmm14, 16
    867         vpaddd  zmm10, zmm10, zmm15
    868         vpaddd  zmm11, zmm11, zmm12
    869         vpaddd  zmm8, zmm8, zmm13
    870         vpaddd  zmm9, zmm9, zmm14
    871         vpxord  zmm5, zmm5, zmm10
    872         vpxord  zmm6, zmm6, zmm11
    873         vpxord  zmm7, zmm7, zmm8
    874         vpxord  zmm4, zmm4, zmm9
    875         vprord  zmm5, zmm5, 12
    876         vprord  zmm6, zmm6, 12
    877         vprord  zmm7, zmm7, 12
    878         vprord  zmm4, zmm4, 12
    879         vpaddd  zmm0, zmm0, zmm19
    880         vpaddd  zmm1, zmm1, zmm26
    881         vpaddd  zmm2, zmm2, zmm22
    882         vpaddd  zmm3, zmm3, zmm23
    883         vpaddd  zmm0, zmm0, zmm5
    884         vpaddd  zmm1, zmm1, zmm6
    885         vpaddd  zmm2, zmm2, zmm7
    886         vpaddd  zmm3, zmm3, zmm4
    887         vpxord  zmm15, zmm15, zmm0
    888         vpxord  zmm12, zmm12, zmm1
    889         vpxord  zmm13, zmm13, zmm2
    890         vpxord  zmm14, zmm14, zmm3
    891         vprord  zmm15, zmm15, 8
    892         vprord  zmm12, zmm12, 8
    893         vprord  zmm13, zmm13, 8
    894         vprord  zmm14, zmm14, 8
    895         vpaddd  zmm10, zmm10, zmm15
    896         vpaddd  zmm11, zmm11, zmm12
    897         vpaddd  zmm8, zmm8, zmm13
    898         vpaddd  zmm9, zmm9, zmm14
    899         vpxord  zmm5, zmm5, zmm10
    900         vpxord  zmm6, zmm6, zmm11
    901         vpxord  zmm7, zmm7, zmm8
    902         vpxord  zmm4, zmm4, zmm9
    903         vprord  zmm5, zmm5, 7
    904         vprord  zmm6, zmm6, 7
    905         vprord  zmm7, zmm7, 7
    906         vprord  zmm4, zmm4, 7
    907         vpaddd  zmm0, zmm0, zmm27
    908         vpaddd  zmm1, zmm1, zmm21
    909         vpaddd  zmm2, zmm2, zmm17
    910         vpaddd  zmm3, zmm3, zmm24
    911         vpaddd  zmm0, zmm0, zmm4
    912         vpaddd  zmm1, zmm1, zmm5
    913         vpaddd  zmm2, zmm2, zmm6
    914         vpaddd  zmm3, zmm3, zmm7
    915         vpxord  zmm12, zmm12, zmm0
    916         vpxord  zmm13, zmm13, zmm1
    917         vpxord  zmm14, zmm14, zmm2
    918         vpxord  zmm15, zmm15, zmm3
    919         vprord  zmm12, zmm12, 16
    920         vprord  zmm13, zmm13, 16
    921         vprord  zmm14, zmm14, 16
    922         vprord  zmm15, zmm15, 16
    923         vpaddd  zmm8, zmm8, zmm12
    924         vpaddd  zmm9, zmm9, zmm13
    925         vpaddd  zmm10, zmm10, zmm14
    926         vpaddd  zmm11, zmm11, zmm15
    927         vpxord  zmm4, zmm4, zmm8
    928         vpxord  zmm5, zmm5, zmm9
    929         vpxord  zmm6, zmm6, zmm10
    930         vpxord  zmm7, zmm7, zmm11
    931         vprord  zmm4, zmm4, 12
    932         vprord  zmm5, zmm5, 12
    933         vprord  zmm6, zmm6, 12
    934         vprord  zmm7, zmm7, 12
    935         vpaddd  zmm0, zmm0, zmm31
    936         vpaddd  zmm1, zmm1, zmm16
    937         vpaddd  zmm2, zmm2, zmm25
    938         vpaddd  zmm3, zmm3, zmm22
    939         vpaddd  zmm0, zmm0, zmm4
    940         vpaddd  zmm1, zmm1, zmm5
    941         vpaddd  zmm2, zmm2, zmm6
    942         vpaddd  zmm3, zmm3, zmm7
    943         vpxord  zmm12, zmm12, zmm0
    944         vpxord  zmm13, zmm13, zmm1
    945         vpxord  zmm14, zmm14, zmm2
    946         vpxord  zmm15, zmm15, zmm3
    947         vprord  zmm12, zmm12, 8
    948         vprord  zmm13, zmm13, 8
    949         vprord  zmm14, zmm14, 8
    950         vprord  zmm15, zmm15, 8
    951         vpaddd  zmm8, zmm8, zmm12
    952         vpaddd  zmm9, zmm9, zmm13
    953         vpaddd  zmm10, zmm10, zmm14
    954         vpaddd  zmm11, zmm11, zmm15
    955         vpxord  zmm4, zmm4, zmm8
    956         vpxord  zmm5, zmm5, zmm9
    957         vpxord  zmm6, zmm6, zmm10
    958         vpxord  zmm7, zmm7, zmm11
    959         vprord  zmm4, zmm4, 7
    960         vprord  zmm5, zmm5, 7
    961         vprord  zmm6, zmm6, 7
    962         vprord  zmm7, zmm7, 7
    963         vpaddd  zmm0, zmm0, zmm30
    964         vpaddd  zmm1, zmm1, zmm18
    965         vpaddd  zmm2, zmm2, zmm19
    966         vpaddd  zmm3, zmm3, zmm23
    967         vpaddd  zmm0, zmm0, zmm5
    968         vpaddd  zmm1, zmm1, zmm6
    969         vpaddd  zmm2, zmm2, zmm7
    970         vpaddd  zmm3, zmm3, zmm4
    971         vpxord  zmm15, zmm15, zmm0
    972         vpxord  zmm12, zmm12, zmm1
    973         vpxord  zmm13, zmm13, zmm2
    974         vpxord  zmm14, zmm14, zmm3
    975         vprord  zmm15, zmm15, 16
    976         vprord  zmm12, zmm12, 16
    977         vprord  zmm13, zmm13, 16
    978         vprord  zmm14, zmm14, 16
    979         vpaddd  zmm10, zmm10, zmm15
    980         vpaddd  zmm11, zmm11, zmm12
    981         vpaddd  zmm8, zmm8, zmm13
    982         vpaddd  zmm9, zmm9, zmm14
    983         vpxord  zmm5, zmm5, zmm10
    984         vpxord  zmm6, zmm6, zmm11
    985         vpxord  zmm7, zmm7, zmm8
    986         vpxord  zmm4, zmm4, zmm9
    987         vprord  zmm5, zmm5, 12
    988         vprord  zmm6, zmm6, 12
    989         vprord  zmm7, zmm7, 12
    990         vprord  zmm4, zmm4, 12
    991         vpaddd  zmm0, zmm0, zmm26
    992         vpaddd  zmm1, zmm1, zmm28
    993         vpaddd  zmm2, zmm2, zmm20
    994         vpaddd  zmm3, zmm3, zmm29
    995         vpaddd  zmm0, zmm0, zmm5
    996         vpaddd  zmm1, zmm1, zmm6
    997         vpaddd  zmm2, zmm2, zmm7
    998         vpaddd  zmm3, zmm3, zmm4
    999         vpxord  zmm15, zmm15, zmm0
   1000         vpxord  zmm12, zmm12, zmm1
   1001         vpxord  zmm13, zmm13, zmm2
   1002         vpxord  zmm14, zmm14, zmm3
   1003         vprord  zmm15, zmm15, 8
   1004         vprord  zmm12, zmm12, 8
   1005         vprord  zmm13, zmm13, 8
   1006         vprord  zmm14, zmm14, 8
   1007         vpaddd  zmm10, zmm10, zmm15
   1008         vpaddd  zmm11, zmm11, zmm12
   1009         vpaddd  zmm8, zmm8, zmm13
   1010         vpaddd  zmm9, zmm9, zmm14
   1011         vpxord  zmm5, zmm5, zmm10
   1012         vpxord  zmm6, zmm6, zmm11
   1013         vpxord  zmm7, zmm7, zmm8
   1014         vpxord  zmm4, zmm4, zmm9
   1015         vprord  zmm5, zmm5, 7
   1016         vprord  zmm6, zmm6, 7
   1017         vprord  zmm7, zmm7, 7
   1018         vprord  zmm4, zmm4, 7
   1019         vpxord  zmm0, zmm0, zmm8
   1020         vpxord  zmm1, zmm1, zmm9
   1021         vpxord  zmm2, zmm2, zmm10
   1022         vpxord  zmm3, zmm3, zmm11
   1023         vpxord  zmm4, zmm4, zmm12
   1024         vpxord  zmm5, zmm5, zmm13
   1025         vpxord  zmm6, zmm6, zmm14
   1026         vpxord  zmm7, zmm7, zmm15
   1027         movzx   eax, byte ptr [rbp+0x78]
   1028         jne     9b
   1029         mov     rbx, qword ptr [rbp+0x90]
   1030         vpunpckldq zmm16, zmm0, zmm1
   1031         vpunpckhdq zmm17, zmm0, zmm1
   1032         vpunpckldq zmm18, zmm2, zmm3
   1033         vpunpckhdq zmm19, zmm2, zmm3
   1034         vpunpckldq zmm20, zmm4, zmm5
   1035         vpunpckhdq zmm21, zmm4, zmm5
   1036         vpunpckldq zmm22, zmm6, zmm7
   1037         vpunpckhdq zmm23, zmm6, zmm7
   1038         vpunpcklqdq zmm0, zmm16, zmm18
   1039         vpunpckhqdq zmm1, zmm16, zmm18
   1040         vpunpcklqdq zmm2, zmm17, zmm19
   1041         vpunpckhqdq zmm3, zmm17, zmm19
   1042         vpunpcklqdq zmm4, zmm20, zmm22
   1043         vpunpckhqdq zmm5, zmm20, zmm22
   1044         vpunpcklqdq zmm6, zmm21, zmm23
   1045         vpunpckhqdq zmm7, zmm21, zmm23
   1046         vshufi32x4 zmm16, zmm0, zmm4, 0x88
   1047         vshufi32x4 zmm17, zmm1, zmm5, 0x88
   1048         vshufi32x4 zmm18, zmm2, zmm6, 0x88
   1049         vshufi32x4 zmm19, zmm3, zmm7, 0x88
   1050         vshufi32x4 zmm20, zmm0, zmm4, 0xDD
   1051         vshufi32x4 zmm21, zmm1, zmm5, 0xDD
   1052         vshufi32x4 zmm22, zmm2, zmm6, 0xDD
   1053         vshufi32x4 zmm23, zmm3, zmm7, 0xDD
   1054         vshufi32x4 zmm0, zmm16, zmm17, 0x88
   1055         vshufi32x4 zmm1, zmm18, zmm19, 0x88
   1056         vshufi32x4 zmm2, zmm20, zmm21, 0x88
   1057         vshufi32x4 zmm3, zmm22, zmm23, 0x88
   1058         vshufi32x4 zmm4, zmm16, zmm17, 0xDD
   1059         vshufi32x4 zmm5, zmm18, zmm19, 0xDD
   1060         vshufi32x4 zmm6, zmm20, zmm21, 0xDD
   1061         vshufi32x4 zmm7, zmm22, zmm23, 0xDD
   1062         vmovdqu32 zmmword ptr [rbx], zmm0
   1063         vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
   1064         vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
   1065         vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
   1066         vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
   1067         vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
   1068         vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
   1069         vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
   1070         vmovdqa32 zmm0, zmmword ptr [rsp]
   1071         vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
   1072         vmovdqa32 zmm2, zmm0
   1073         vpaddd  zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
   1074         vpcmpltud k2, zmm2, zmm0
   1075         vpaddd  zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
   1076         vmovdqa32 zmmword ptr [rsp], zmm2
   1077         vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
   1078         add     rdi, 128
   1079         add     rbx, 512
   1080         mov     qword ptr [rbp+0x90], rbx
   1081         sub     rsi, 16
   1082         cmp     rsi, 16
   1083         jnc     2b
   1084         test    rsi, rsi
   1085         jne     3f
   1086 4:
   1087         vzeroupper
   1088         vmovdqa xmm6, xmmword ptr [rsp+0x90]
   1089         vmovdqa xmm7, xmmword ptr [rsp+0xA0]
   1090         vmovdqa xmm8, xmmword ptr [rsp+0xB0]
   1091         vmovdqa xmm9, xmmword ptr [rsp+0xC0]
   1092         vmovdqa xmm10, xmmword ptr [rsp+0xD0]
   1093         vmovdqa xmm11, xmmword ptr [rsp+0xE0]
   1094         vmovdqa xmm12, xmmword ptr [rsp+0xF0]
   1095         vmovdqa xmm13, xmmword ptr [rsp+0x100]
   1096         vmovdqa xmm14, xmmword ptr [rsp+0x110]
   1097         vmovdqa xmm15, xmmword ptr [rsp+0x120]
   1098         mov     rsp, rbp
   1099         pop     rbp
   1100         pop     rbx
   1101         pop     rsi
   1102         pop     rdi
   1103         pop     r12
   1104         pop     r13
   1105         pop     r14
   1106         pop     r15
   1107         ret
   1108 .p2align 6
   1109 3:
   1110         test    esi, 0x8
   1111         je      3f
   1112         vpbroadcastd ymm0, dword ptr [rcx]
   1113         vpbroadcastd ymm1, dword ptr [rcx+0x4]
   1114         vpbroadcastd ymm2, dword ptr [rcx+0x8]
   1115         vpbroadcastd ymm3, dword ptr [rcx+0xC]
   1116         vpbroadcastd ymm4, dword ptr [rcx+0x10]
   1117         vpbroadcastd ymm5, dword ptr [rcx+0x14]
   1118         vpbroadcastd ymm6, dword ptr [rcx+0x18]
   1119         vpbroadcastd ymm7, dword ptr [rcx+0x1C]
   1120         mov     r8, qword ptr [rdi]
   1121         mov     r9, qword ptr [rdi+0x8]
   1122         mov     r10, qword ptr [rdi+0x10]
   1123         mov     r11, qword ptr [rdi+0x18]
   1124         mov     r12, qword ptr [rdi+0x20]
   1125         mov     r13, qword ptr [rdi+0x28]
   1126         mov     r14, qword ptr [rdi+0x30]
   1127         mov     r15, qword ptr [rdi+0x38]
   1128         movzx   eax, byte ptr [rbp+0x78]
   1129         movzx   ebx, byte ptr [rbp+0x80]
   1130         or      eax, ebx
   1131         xor     edx, edx
   1132 2:
   1133         movzx   ebx, byte ptr [rbp+0x88]
   1134         or      ebx, eax
   1135         add     rdx, 64
   1136         cmp     rdx, qword ptr [rsp+0x80]
   1137         cmove   eax, ebx
   1138         mov     dword ptr [rsp+0x88], eax
   1139         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
   1140         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
   1141         vmovups xmm9, xmmword ptr [r9+rdx-0x40]
   1142         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
   1143         vunpcklpd ymm12, ymm8, ymm9
   1144         vunpckhpd ymm13, ymm8, ymm9
   1145         vmovups xmm10, xmmword ptr [r10+rdx-0x40]
   1146         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
   1147         vmovups xmm11, xmmword ptr [r11+rdx-0x40]
   1148         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
   1149         vunpcklpd ymm14, ymm10, ymm11
   1150         vunpckhpd ymm15, ymm10, ymm11
   1151         vshufps ymm16, ymm12, ymm14, 136
   1152         vshufps ymm17, ymm12, ymm14, 221
   1153         vshufps ymm18, ymm13, ymm15, 136
   1154         vshufps ymm19, ymm13, ymm15, 221
   1155         vmovups xmm8, xmmword ptr [r8+rdx-0x30]
   1156         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
   1157         vmovups xmm9, xmmword ptr [r9+rdx-0x30]
   1158         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
   1159         vunpcklpd ymm12, ymm8, ymm9
   1160         vunpckhpd ymm13, ymm8, ymm9
   1161         vmovups xmm10, xmmword ptr [r10+rdx-0x30]
   1162         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
   1163         vmovups xmm11, xmmword ptr [r11+rdx-0x30]
   1164         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
   1165         vunpcklpd ymm14, ymm10, ymm11
   1166         vunpckhpd ymm15, ymm10, ymm11
   1167         vshufps ymm20, ymm12, ymm14, 136
   1168         vshufps ymm21, ymm12, ymm14, 221
   1169         vshufps ymm22, ymm13, ymm15, 136
   1170         vshufps ymm23, ymm13, ymm15, 221
   1171         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
   1172         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
   1173         vmovups xmm9, xmmword ptr [r9+rdx-0x20]
   1174         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
   1175         vunpcklpd ymm12, ymm8, ymm9
   1176         vunpckhpd ymm13, ymm8, ymm9
   1177         vmovups xmm10, xmmword ptr [r10+rdx-0x20]
   1178         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
   1179         vmovups xmm11, xmmword ptr [r11+rdx-0x20]
   1180         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
   1181         vunpcklpd ymm14, ymm10, ymm11
   1182         vunpckhpd ymm15, ymm10, ymm11
   1183         vshufps ymm24, ymm12, ymm14, 136
   1184         vshufps ymm25, ymm12, ymm14, 221
   1185         vshufps ymm26, ymm13, ymm15, 136
   1186         vshufps ymm27, ymm13, ymm15, 221
   1187         vmovups xmm8, xmmword ptr [r8+rdx-0x10]
   1188         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
   1189         vmovups xmm9, xmmword ptr [r9+rdx-0x10]
   1190         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
   1191         vunpcklpd ymm12, ymm8, ymm9
   1192         vunpckhpd ymm13, ymm8, ymm9
   1193         vmovups xmm10, xmmword ptr [r10+rdx-0x10]
   1194         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
   1195         vmovups xmm11, xmmword ptr [r11+rdx-0x10]
   1196         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
   1197         vunpcklpd ymm14, ymm10, ymm11
   1198         vunpckhpd ymm15, ymm10, ymm11
   1199         vshufps ymm28, ymm12, ymm14, 136
   1200         vshufps ymm29, ymm12, ymm14, 221
   1201         vshufps ymm30, ymm13, ymm15, 136
   1202         vshufps ymm31, ymm13, ymm15, 221
   1203         vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
   1204         vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
   1205         vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
   1206         vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
   1207         vmovdqa ymm12, ymmword ptr [rsp]
   1208         vmovdqa ymm13, ymmword ptr [rsp+0x40]
   1209         vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
   1210         vpbroadcastd ymm15, dword ptr [rsp+0x88]
   1211         vpaddd  ymm0, ymm0, ymm16
   1212         vpaddd  ymm1, ymm1, ymm18
   1213         vpaddd  ymm2, ymm2, ymm20
   1214         vpaddd  ymm3, ymm3, ymm22
   1215         vpaddd  ymm0, ymm0, ymm4
   1216         vpaddd  ymm1, ymm1, ymm5
   1217         vpaddd  ymm2, ymm2, ymm6
   1218         vpaddd  ymm3, ymm3, ymm7
   1219         vpxord  ymm12, ymm12, ymm0
   1220         vpxord  ymm13, ymm13, ymm1
   1221         vpxord  ymm14, ymm14, ymm2
   1222         vpxord  ymm15, ymm15, ymm3
   1223         vprord  ymm12, ymm12, 16
   1224         vprord  ymm13, ymm13, 16
   1225         vprord  ymm14, ymm14, 16
   1226         vprord  ymm15, ymm15, 16
   1227         vpaddd  ymm8, ymm8, ymm12
   1228         vpaddd  ymm9, ymm9, ymm13
   1229         vpaddd  ymm10, ymm10, ymm14
   1230         vpaddd  ymm11, ymm11, ymm15
   1231         vpxord  ymm4, ymm4, ymm8
   1232         vpxord  ymm5, ymm5, ymm9
   1233         vpxord  ymm6, ymm6, ymm10
   1234         vpxord  ymm7, ymm7, ymm11
   1235         vprord  ymm4, ymm4, 12
   1236         vprord  ymm5, ymm5, 12
   1237         vprord  ymm6, ymm6, 12
   1238         vprord  ymm7, ymm7, 12
   1239         vpaddd  ymm0, ymm0, ymm17
   1240         vpaddd  ymm1, ymm1, ymm19
   1241         vpaddd  ymm2, ymm2, ymm21
   1242         vpaddd  ymm3, ymm3, ymm23
   1243         vpaddd  ymm0, ymm0, ymm4
   1244         vpaddd  ymm1, ymm1, ymm5
   1245         vpaddd  ymm2, ymm2, ymm6
   1246         vpaddd  ymm3, ymm3, ymm7
   1247         vpxord  ymm12, ymm12, ymm0
   1248         vpxord  ymm13, ymm13, ymm1
   1249         vpxord  ymm14, ymm14, ymm2
   1250         vpxord  ymm15, ymm15, ymm3
   1251         vprord  ymm12, ymm12, 8
   1252         vprord  ymm13, ymm13, 8
   1253         vprord  ymm14, ymm14, 8
   1254         vprord  ymm15, ymm15, 8
   1255         vpaddd  ymm8, ymm8, ymm12
   1256         vpaddd  ymm9, ymm9, ymm13
   1257         vpaddd  ymm10, ymm10, ymm14
   1258         vpaddd  ymm11, ymm11, ymm15
   1259         vpxord  ymm4, ymm4, ymm8
   1260         vpxord  ymm5, ymm5, ymm9
   1261         vpxord  ymm6, ymm6, ymm10
   1262         vpxord  ymm7, ymm7, ymm11
   1263         vprord  ymm4, ymm4, 7
   1264         vprord  ymm5, ymm5, 7
   1265         vprord  ymm6, ymm6, 7
   1266         vprord  ymm7, ymm7, 7
   1267         vpaddd  ymm0, ymm0, ymm24
   1268         vpaddd  ymm1, ymm1, ymm26
   1269         vpaddd  ymm2, ymm2, ymm28
   1270         vpaddd  ymm3, ymm3, ymm30
   1271         vpaddd  ymm0, ymm0, ymm5
   1272         vpaddd  ymm1, ymm1, ymm6
   1273         vpaddd  ymm2, ymm2, ymm7
   1274         vpaddd  ymm3, ymm3, ymm4
   1275         vpxord  ymm15, ymm15, ymm0
   1276         vpxord  ymm12, ymm12, ymm1
   1277         vpxord  ymm13, ymm13, ymm2
   1278         vpxord  ymm14, ymm14, ymm3
   1279         vprord  ymm15, ymm15, 16
   1280         vprord  ymm12, ymm12, 16
   1281         vprord  ymm13, ymm13, 16
   1282         vprord  ymm14, ymm14, 16
   1283         vpaddd  ymm10, ymm10, ymm15
   1284         vpaddd  ymm11, ymm11, ymm12
   1285         vpaddd  ymm8, ymm8, ymm13
   1286         vpaddd  ymm9, ymm9, ymm14
   1287         vpxord  ymm5, ymm5, ymm10
   1288         vpxord  ymm6, ymm6, ymm11
   1289         vpxord  ymm7, ymm7, ymm8
   1290         vpxord  ymm4, ymm4, ymm9
   1291         vprord  ymm5, ymm5, 12
   1292         vprord  ymm6, ymm6, 12
   1293         vprord  ymm7, ymm7, 12
   1294         vprord  ymm4, ymm4, 12
   1295         vpaddd  ymm0, ymm0, ymm25
   1296         vpaddd  ymm1, ymm1, ymm27
   1297         vpaddd  ymm2, ymm2, ymm29
   1298         vpaddd  ymm3, ymm3, ymm31
   1299         vpaddd  ymm0, ymm0, ymm5
   1300         vpaddd  ymm1, ymm1, ymm6
   1301         vpaddd  ymm2, ymm2, ymm7
   1302         vpaddd  ymm3, ymm3, ymm4
   1303         vpxord  ymm15, ymm15, ymm0
   1304         vpxord  ymm12, ymm12, ymm1
   1305         vpxord  ymm13, ymm13, ymm2
   1306         vpxord  ymm14, ymm14, ymm3
   1307         vprord  ymm15, ymm15, 8
   1308         vprord  ymm12, ymm12, 8
   1309         vprord  ymm13, ymm13, 8
   1310         vprord  ymm14, ymm14, 8
   1311         vpaddd  ymm10, ymm10, ymm15
   1312         vpaddd  ymm11, ymm11, ymm12
   1313         vpaddd  ymm8, ymm8, ymm13
   1314         vpaddd  ymm9, ymm9, ymm14
   1315         vpxord  ymm5, ymm5, ymm10
   1316         vpxord  ymm6, ymm6, ymm11
   1317         vpxord  ymm7, ymm7, ymm8
   1318         vpxord  ymm4, ymm4, ymm9
   1319         vprord  ymm5, ymm5, 7
   1320         vprord  ymm6, ymm6, 7
   1321         vprord  ymm7, ymm7, 7
   1322         vprord  ymm4, ymm4, 7
   1323         vpaddd  ymm0, ymm0, ymm18
   1324         vpaddd  ymm1, ymm1, ymm19
   1325         vpaddd  ymm2, ymm2, ymm23
   1326         vpaddd  ymm3, ymm3, ymm20
   1327         vpaddd  ymm0, ymm0, ymm4
   1328         vpaddd  ymm1, ymm1, ymm5
   1329         vpaddd  ymm2, ymm2, ymm6
   1330         vpaddd  ymm3, ymm3, ymm7
   1331         vpxord  ymm12, ymm12, ymm0
   1332         vpxord  ymm13, ymm13, ymm1
   1333         vpxord  ymm14, ymm14, ymm2
   1334         vpxord  ymm15, ymm15, ymm3
   1335         vprord  ymm12, ymm12, 16
   1336         vprord  ymm13, ymm13, 16
   1337         vprord  ymm14, ymm14, 16
   1338         vprord  ymm15, ymm15, 16
   1339         vpaddd  ymm8, ymm8, ymm12
   1340         vpaddd  ymm9, ymm9, ymm13
   1341         vpaddd  ymm10, ymm10, ymm14
   1342         vpaddd  ymm11, ymm11, ymm15
   1343         vpxord  ymm4, ymm4, ymm8
   1344         vpxord  ymm5, ymm5, ymm9
   1345         vpxord  ymm6, ymm6, ymm10
   1346         vpxord  ymm7, ymm7, ymm11
   1347         vprord  ymm4, ymm4, 12
   1348         vprord  ymm5, ymm5, 12
   1349         vprord  ymm6, ymm6, 12
   1350         vprord  ymm7, ymm7, 12
   1351         vpaddd  ymm0, ymm0, ymm22
   1352         vpaddd  ymm1, ymm1, ymm26
   1353         vpaddd  ymm2, ymm2, ymm16
   1354         vpaddd  ymm3, ymm3, ymm29
   1355         vpaddd  ymm0, ymm0, ymm4
   1356         vpaddd  ymm1, ymm1, ymm5
   1357         vpaddd  ymm2, ymm2, ymm6
   1358         vpaddd  ymm3, ymm3, ymm7
   1359         vpxord  ymm12, ymm12, ymm0
   1360         vpxord  ymm13, ymm13, ymm1
   1361         vpxord  ymm14, ymm14, ymm2
   1362         vpxord  ymm15, ymm15, ymm3
   1363         vprord  ymm12, ymm12, 8
   1364         vprord  ymm13, ymm13, 8
   1365         vprord  ymm14, ymm14, 8
   1366         vprord  ymm15, ymm15, 8
   1367         vpaddd  ymm8, ymm8, ymm12
   1368         vpaddd  ymm9, ymm9, ymm13
   1369         vpaddd  ymm10, ymm10, ymm14
   1370         vpaddd  ymm11, ymm11, ymm15
   1371         vpxord  ymm4, ymm4, ymm8
   1372         vpxord  ymm5, ymm5, ymm9
   1373         vpxord  ymm6, ymm6, ymm10
   1374         vpxord  ymm7, ymm7, ymm11
   1375         vprord  ymm4, ymm4, 7
   1376         vprord  ymm5, ymm5, 7
   1377         vprord  ymm6, ymm6, 7
   1378         vprord  ymm7, ymm7, 7
   1379         vpaddd  ymm0, ymm0, ymm17
   1380         vpaddd  ymm1, ymm1, ymm28
   1381         vpaddd  ymm2, ymm2, ymm25
   1382         vpaddd  ymm3, ymm3, ymm31
   1383         vpaddd  ymm0, ymm0, ymm5
   1384         vpaddd  ymm1, ymm1, ymm6
   1385         vpaddd  ymm2, ymm2, ymm7
   1386         vpaddd  ymm3, ymm3, ymm4
   1387         vpxord  ymm15, ymm15, ymm0
   1388         vpxord  ymm12, ymm12, ymm1
   1389         vpxord  ymm13, ymm13, ymm2
   1390         vpxord  ymm14, ymm14, ymm3
   1391         vprord  ymm15, ymm15, 16
   1392         vprord  ymm12, ymm12, 16
   1393         vprord  ymm13, ymm13, 16
   1394         vprord  ymm14, ymm14, 16
   1395         vpaddd  ymm10, ymm10, ymm15
   1396         vpaddd  ymm11, ymm11, ymm12
   1397         vpaddd  ymm8, ymm8, ymm13
   1398         vpaddd  ymm9, ymm9, ymm14
   1399         vpxord  ymm5, ymm5, ymm10
   1400         vpxord  ymm6, ymm6, ymm11
   1401         vpxord  ymm7, ymm7, ymm8
   1402         vpxord  ymm4, ymm4, ymm9
   1403         vprord  ymm5, ymm5, 12
   1404         vprord  ymm6, ymm6, 12
   1405         vprord  ymm7, ymm7, 12
   1406         vprord  ymm4, ymm4, 12
   1407         vpaddd  ymm0, ymm0, ymm27
   1408         vpaddd  ymm1, ymm1, ymm21
   1409         vpaddd  ymm2, ymm2, ymm30
   1410         vpaddd  ymm3, ymm3, ymm24
   1411         vpaddd  ymm0, ymm0, ymm5
   1412         vpaddd  ymm1, ymm1, ymm6
   1413         vpaddd  ymm2, ymm2, ymm7
   1414         vpaddd  ymm3, ymm3, ymm4
   1415         vpxord  ymm15, ymm15, ymm0
   1416         vpxord  ymm12, ymm12, ymm1
   1417         vpxord  ymm13, ymm13, ymm2
   1418         vpxord  ymm14, ymm14, ymm3
   1419         vprord  ymm15, ymm15, 8
   1420         vprord  ymm12, ymm12, 8
   1421         vprord  ymm13, ymm13, 8
   1422         vprord  ymm14, ymm14, 8
   1423         vpaddd  ymm10, ymm10, ymm15
   1424         vpaddd  ymm11, ymm11, ymm12
   1425         vpaddd  ymm8, ymm8, ymm13
   1426         vpaddd  ymm9, ymm9, ymm14
   1427         vpxord  ymm5, ymm5, ymm10
   1428         vpxord  ymm6, ymm6, ymm11
   1429         vpxord  ymm7, ymm7, ymm8
   1430         vpxord  ymm4, ymm4, ymm9
   1431         vprord  ymm5, ymm5, 7
   1432         vprord  ymm6, ymm6, 7
   1433         vprord  ymm7, ymm7, 7
   1434         vprord  ymm4, ymm4, 7
   1435         vpaddd  ymm0, ymm0, ymm19
   1436         vpaddd  ymm1, ymm1, ymm26
   1437         vpaddd  ymm2, ymm2, ymm29
   1438         vpaddd  ymm3, ymm3, ymm23
   1439         vpaddd  ymm0, ymm0, ymm4
   1440         vpaddd  ymm1, ymm1, ymm5
   1441         vpaddd  ymm2, ymm2, ymm6
   1442         vpaddd  ymm3, ymm3, ymm7
   1443         vpxord  ymm12, ymm12, ymm0
   1444         vpxord  ymm13, ymm13, ymm1
   1445         vpxord  ymm14, ymm14, ymm2
   1446         vpxord  ymm15, ymm15, ymm3
   1447         vprord  ymm12, ymm12, 16
   1448         vprord  ymm13, ymm13, 16
   1449         vprord  ymm14, ymm14, 16
   1450         vprord  ymm15, ymm15, 16
   1451         vpaddd  ymm8, ymm8, ymm12
   1452         vpaddd  ymm9, ymm9, ymm13
   1453         vpaddd  ymm10, ymm10, ymm14
   1454         vpaddd  ymm11, ymm11, ymm15
   1455         vpxord  ymm4, ymm4, ymm8
   1456         vpxord  ymm5, ymm5, ymm9
   1457         vpxord  ymm6, ymm6, ymm10
   1458         vpxord  ymm7, ymm7, ymm11
   1459         vprord  ymm4, ymm4, 12
   1460         vprord  ymm5, ymm5, 12
   1461         vprord  ymm6, ymm6, 12
   1462         vprord  ymm7, ymm7, 12
   1463         vpaddd  ymm0, ymm0, ymm20
   1464         vpaddd  ymm1, ymm1, ymm28
   1465         vpaddd  ymm2, ymm2, ymm18
   1466         vpaddd  ymm3, ymm3, ymm30
   1467         vpaddd  ymm0, ymm0, ymm4
   1468         vpaddd  ymm1, ymm1, ymm5
   1469         vpaddd  ymm2, ymm2, ymm6
   1470         vpaddd  ymm3, ymm3, ymm7
   1471         vpxord  ymm12, ymm12, ymm0
   1472         vpxord  ymm13, ymm13, ymm1
   1473         vpxord  ymm14, ymm14, ymm2
   1474         vpxord  ymm15, ymm15, ymm3
   1475         vprord  ymm12, ymm12, 8
   1476         vprord  ymm13, ymm13, 8
   1477         vprord  ymm14, ymm14, 8
   1478         vprord  ymm15, ymm15, 8
   1479         vpaddd  ymm8, ymm8, ymm12
   1480         vpaddd  ymm9, ymm9, ymm13
   1481         vpaddd  ymm10, ymm10, ymm14
   1482         vpaddd  ymm11, ymm11, ymm15
   1483         vpxord  ymm4, ymm4, ymm8
   1484         vpxord  ymm5, ymm5, ymm9
   1485         vpxord  ymm6, ymm6, ymm10
   1486         vpxord  ymm7, ymm7, ymm11
   1487         vprord  ymm4, ymm4, 7
   1488         vprord  ymm5, ymm5, 7
   1489         vprord  ymm6, ymm6, 7
   1490         vprord  ymm7, ymm7, 7
   1491         vpaddd  ymm0, ymm0, ymm22
   1492         vpaddd  ymm1, ymm1, ymm25
   1493         vpaddd  ymm2, ymm2, ymm27
   1494         vpaddd  ymm3, ymm3, ymm24
   1495         vpaddd  ymm0, ymm0, ymm5
   1496         vpaddd  ymm1, ymm1, ymm6
   1497         vpaddd  ymm2, ymm2, ymm7
   1498         vpaddd  ymm3, ymm3, ymm4
   1499         vpxord  ymm15, ymm15, ymm0
   1500         vpxord  ymm12, ymm12, ymm1
   1501         vpxord  ymm13, ymm13, ymm2
   1502         vpxord  ymm14, ymm14, ymm3
   1503         vprord  ymm15, ymm15, 16
   1504         vprord  ymm12, ymm12, 16
   1505         vprord  ymm13, ymm13, 16
   1506         vprord  ymm14, ymm14, 16
   1507         vpaddd  ymm10, ymm10, ymm15
   1508         vpaddd  ymm11, ymm11, ymm12
   1509         vpaddd  ymm8, ymm8, ymm13
   1510         vpaddd  ymm9, ymm9, ymm14
   1511         vpxord  ymm5, ymm5, ymm10
   1512         vpxord  ymm6, ymm6, ymm11
   1513         vpxord  ymm7, ymm7, ymm8
   1514         vpxord  ymm4, ymm4, ymm9
   1515         vprord  ymm5, ymm5, 12
   1516         vprord  ymm6, ymm6, 12
   1517         vprord  ymm7, ymm7, 12
   1518         vprord  ymm4, ymm4, 12
   1519         vpaddd  ymm0, ymm0, ymm21
   1520         vpaddd  ymm1, ymm1, ymm16
   1521         vpaddd  ymm2, ymm2, ymm31
   1522         vpaddd  ymm3, ymm3, ymm17
   1523         vpaddd  ymm0, ymm0, ymm5
   1524         vpaddd  ymm1, ymm1, ymm6
   1525         vpaddd  ymm2, ymm2, ymm7
   1526         vpaddd  ymm3, ymm3, ymm4
   1527         vpxord  ymm15, ymm15, ymm0
   1528         vpxord  ymm12, ymm12, ymm1
   1529         vpxord  ymm13, ymm13, ymm2
   1530         vpxord  ymm14, ymm14, ymm3
   1531         vprord  ymm15, ymm15, 8
   1532         vprord  ymm12, ymm12, 8
   1533         vprord  ymm13, ymm13, 8
   1534         vprord  ymm14, ymm14, 8
   1535         vpaddd  ymm10, ymm10, ymm15
   1536         vpaddd  ymm11, ymm11, ymm12
   1537         vpaddd  ymm8, ymm8, ymm13
   1538         vpaddd  ymm9, ymm9, ymm14
   1539         vpxord  ymm5, ymm5, ymm10
   1540         vpxord  ymm6, ymm6, ymm11
   1541         vpxord  ymm7, ymm7, ymm8
   1542         vpxord  ymm4, ymm4, ymm9
   1543         vprord  ymm5, ymm5, 7
   1544         vprord  ymm6, ymm6, 7
   1545         vprord  ymm7, ymm7, 7
   1546         vprord  ymm4, ymm4, 7
   1547         vpaddd  ymm0, ymm0, ymm26
   1548         vpaddd  ymm1, ymm1, ymm28
   1549         vpaddd  ymm2, ymm2, ymm30
   1550         vpaddd  ymm3, ymm3, ymm29
   1551         vpaddd  ymm0, ymm0, ymm4
   1552         vpaddd  ymm1, ymm1, ymm5
   1553         vpaddd  ymm2, ymm2, ymm6
   1554         vpaddd  ymm3, ymm3, ymm7
   1555         vpxord  ymm12, ymm12, ymm0
   1556         vpxord  ymm13, ymm13, ymm1
   1557         vpxord  ymm14, ymm14, ymm2
   1558         vpxord  ymm15, ymm15, ymm3
   1559         vprord  ymm12, ymm12, 16
   1560         vprord  ymm13, ymm13, 16
   1561         vprord  ymm14, ymm14, 16
   1562         vprord  ymm15, ymm15, 16
   1563         vpaddd  ymm8, ymm8, ymm12
   1564         vpaddd  ymm9, ymm9, ymm13
   1565         vpaddd  ymm10, ymm10, ymm14
   1566         vpaddd  ymm11, ymm11, ymm15
   1567         vpxord  ymm4, ymm4, ymm8
   1568         vpxord  ymm5, ymm5, ymm9
   1569         vpxord  ymm6, ymm6, ymm10
   1570         vpxord  ymm7, ymm7, ymm11
   1571         vprord  ymm4, ymm4, 12
   1572         vprord  ymm5, ymm5, 12
   1573         vprord  ymm6, ymm6, 12
   1574         vprord  ymm7, ymm7, 12
   1575         vpaddd  ymm0, ymm0, ymm23
   1576         vpaddd  ymm1, ymm1, ymm25
   1577         vpaddd  ymm2, ymm2, ymm19
   1578         vpaddd  ymm3, ymm3, ymm31
   1579         vpaddd  ymm0, ymm0, ymm4
   1580         vpaddd  ymm1, ymm1, ymm5
   1581         vpaddd  ymm2, ymm2, ymm6
   1582         vpaddd  ymm3, ymm3, ymm7
   1583         vpxord  ymm12, ymm12, ymm0
   1584         vpxord  ymm13, ymm13, ymm1
   1585         vpxord  ymm14, ymm14, ymm2
   1586         vpxord  ymm15, ymm15, ymm3
   1587         vprord  ymm12, ymm12, 8
   1588         vprord  ymm13, ymm13, 8
   1589         vprord  ymm14, ymm14, 8
   1590         vprord  ymm15, ymm15, 8
   1591         vpaddd  ymm8, ymm8, ymm12
   1592         vpaddd  ymm9, ymm9, ymm13
   1593         vpaddd  ymm10, ymm10, ymm14
   1594         vpaddd  ymm11, ymm11, ymm15
   1595         vpxord  ymm4, ymm4, ymm8
   1596         vpxord  ymm5, ymm5, ymm9
   1597         vpxord  ymm6, ymm6, ymm10
   1598         vpxord  ymm7, ymm7, ymm11
   1599         vprord  ymm4, ymm4, 7
   1600         vprord  ymm5, ymm5, 7
   1601         vprord  ymm6, ymm6, 7
   1602         vprord  ymm7, ymm7, 7
   1603         vpaddd  ymm0, ymm0, ymm20
   1604         vpaddd  ymm1, ymm1, ymm27
   1605         vpaddd  ymm2, ymm2, ymm21
   1606         vpaddd  ymm3, ymm3, ymm17
   1607         vpaddd  ymm0, ymm0, ymm5
   1608         vpaddd  ymm1, ymm1, ymm6
   1609         vpaddd  ymm2, ymm2, ymm7
   1610         vpaddd  ymm3, ymm3, ymm4
   1611         vpxord  ymm15, ymm15, ymm0
   1612         vpxord  ymm12, ymm12, ymm1
   1613         vpxord  ymm13, ymm13, ymm2
   1614         vpxord  ymm14, ymm14, ymm3
   1615         vprord  ymm15, ymm15, 16
   1616         vprord  ymm12, ymm12, 16
   1617         vprord  ymm13, ymm13, 16
   1618         vprord  ymm14, ymm14, 16
   1619         vpaddd  ymm10, ymm10, ymm15
   1620         vpaddd  ymm11, ymm11, ymm12
   1621         vpaddd  ymm8, ymm8, ymm13
   1622         vpaddd  ymm9, ymm9, ymm14
   1623         vpxord  ymm5, ymm5, ymm10
   1624         vpxord  ymm6, ymm6, ymm11
   1625         vpxord  ymm7, ymm7, ymm8
   1626         vpxord  ymm4, ymm4, ymm9
   1627         vprord  ymm5, ymm5, 12
   1628         vprord  ymm6, ymm6, 12
   1629         vprord  ymm7, ymm7, 12
   1630         vprord  ymm4, ymm4, 12
   1631         vpaddd  ymm0, ymm0, ymm16
   1632         vpaddd  ymm1, ymm1, ymm18
   1633         vpaddd  ymm2, ymm2, ymm24
   1634         vpaddd  ymm3, ymm3, ymm22
   1635         vpaddd  ymm0, ymm0, ymm5
   1636         vpaddd  ymm1, ymm1, ymm6
   1637         vpaddd  ymm2, ymm2, ymm7
   1638         vpaddd  ymm3, ymm3, ymm4
   1639         vpxord  ymm15, ymm15, ymm0
   1640         vpxord  ymm12, ymm12, ymm1
   1641         vpxord  ymm13, ymm13, ymm2
   1642         vpxord  ymm14, ymm14, ymm3
   1643         vprord  ymm15, ymm15, 8
   1644         vprord  ymm12, ymm12, 8
   1645         vprord  ymm13, ymm13, 8
   1646         vprord  ymm14, ymm14, 8
   1647         vpaddd  ymm10, ymm10, ymm15
   1648         vpaddd  ymm11, ymm11, ymm12
   1649         vpaddd  ymm8, ymm8, ymm13
   1650         vpaddd  ymm9, ymm9, ymm14
   1651         vpxord  ymm5, ymm5, ymm10
   1652         vpxord  ymm6, ymm6, ymm11
   1653         vpxord  ymm7, ymm7, ymm8
   1654         vpxord  ymm4, ymm4, ymm9
   1655         vprord  ymm5, ymm5, 7
   1656         vprord  ymm6, ymm6, 7
   1657         vprord  ymm7, ymm7, 7
   1658         vprord  ymm4, ymm4, 7
   1659         vpaddd  ymm0, ymm0, ymm28
   1660         vpaddd  ymm1, ymm1, ymm25
   1661         vpaddd  ymm2, ymm2, ymm31
   1662         vpaddd  ymm3, ymm3, ymm30
   1663         vpaddd  ymm0, ymm0, ymm4
   1664         vpaddd  ymm1, ymm1, ymm5
   1665         vpaddd  ymm2, ymm2, ymm6
   1666         vpaddd  ymm3, ymm3, ymm7
   1667         vpxord  ymm12, ymm12, ymm0
   1668         vpxord  ymm13, ymm13, ymm1
   1669         vpxord  ymm14, ymm14, ymm2
   1670         vpxord  ymm15, ymm15, ymm3
   1671         vprord  ymm12, ymm12, 16
   1672         vprord  ymm13, ymm13, 16
   1673         vprord  ymm14, ymm14, 16
   1674         vprord  ymm15, ymm15, 16
   1675         vpaddd  ymm8, ymm8, ymm12
   1676         vpaddd  ymm9, ymm9, ymm13
   1677         vpaddd  ymm10, ymm10, ymm14
   1678         vpaddd  ymm11, ymm11, ymm15
   1679         vpxord  ymm4, ymm4, ymm8
   1680         vpxord  ymm5, ymm5, ymm9
   1681         vpxord  ymm6, ymm6, ymm10
   1682         vpxord  ymm7, ymm7, ymm11
   1683         vprord  ymm4, ymm4, 12
   1684         vprord  ymm5, ymm5, 12
   1685         vprord  ymm6, ymm6, 12
   1686         vprord  ymm7, ymm7, 12
   1687         vpaddd  ymm0, ymm0, ymm29
   1688         vpaddd  ymm1, ymm1, ymm27
   1689         vpaddd  ymm2, ymm2, ymm26
   1690         vpaddd  ymm3, ymm3, ymm24
   1691         vpaddd  ymm0, ymm0, ymm4
   1692         vpaddd  ymm1, ymm1, ymm5
   1693         vpaddd  ymm2, ymm2, ymm6
   1694         vpaddd  ymm3, ymm3, ymm7
   1695         vpxord  ymm12, ymm12, ymm0
   1696         vpxord  ymm13, ymm13, ymm1
   1697         vpxord  ymm14, ymm14, ymm2
   1698         vpxord  ymm15, ymm15, ymm3
   1699         vprord  ymm12, ymm12, 8
   1700         vprord  ymm13, ymm13, 8
   1701         vprord  ymm14, ymm14, 8
   1702         vprord  ymm15, ymm15, 8
   1703         vpaddd  ymm8, ymm8, ymm12
   1704         vpaddd  ymm9, ymm9, ymm13
   1705         vpaddd  ymm10, ymm10, ymm14
   1706         vpaddd  ymm11, ymm11, ymm15
   1707         vpxord  ymm4, ymm4, ymm8
   1708         vpxord  ymm5, ymm5, ymm9
   1709         vpxord  ymm6, ymm6, ymm10
   1710         vpxord  ymm7, ymm7, ymm11
   1711         vprord  ymm4, ymm4, 7
   1712         vprord  ymm5, ymm5, 7
   1713         vprord  ymm6, ymm6, 7
   1714         vprord  ymm7, ymm7, 7
   1715         vpaddd  ymm0, ymm0, ymm23
   1716         vpaddd  ymm1, ymm1, ymm21
   1717         vpaddd  ymm2, ymm2, ymm16
   1718         vpaddd  ymm3, ymm3, ymm22
   1719         vpaddd  ymm0, ymm0, ymm5
   1720         vpaddd  ymm1, ymm1, ymm6
   1721         vpaddd  ymm2, ymm2, ymm7
   1722         vpaddd  ymm3, ymm3, ymm4
   1723         vpxord  ymm15, ymm15, ymm0
   1724         vpxord  ymm12, ymm12, ymm1
   1725         vpxord  ymm13, ymm13, ymm2
   1726         vpxord  ymm14, ymm14, ymm3
   1727         vprord  ymm15, ymm15, 16
   1728         vprord  ymm12, ymm12, 16
   1729         vprord  ymm13, ymm13, 16
   1730         vprord  ymm14, ymm14, 16
   1731         vpaddd  ymm10, ymm10, ymm15
   1732         vpaddd  ymm11, ymm11, ymm12
   1733         vpaddd  ymm8, ymm8, ymm13
   1734         vpaddd  ymm9, ymm9, ymm14
   1735         vpxord  ymm5, ymm5, ymm10
   1736         vpxord  ymm6, ymm6, ymm11
   1737         vpxord  ymm7, ymm7, ymm8
   1738         vpxord  ymm4, ymm4, ymm9
   1739         vprord  ymm5, ymm5, 12
   1740         vprord  ymm6, ymm6, 12
   1741         vprord  ymm7, ymm7, 12
   1742         vprord  ymm4, ymm4, 12
   1743         vpaddd  ymm0, ymm0, ymm18
   1744         vpaddd  ymm1, ymm1, ymm19
   1745         vpaddd  ymm2, ymm2, ymm17
   1746         vpaddd  ymm3, ymm3, ymm20
   1747         vpaddd  ymm0, ymm0, ymm5
   1748         vpaddd  ymm1, ymm1, ymm6
   1749         vpaddd  ymm2, ymm2, ymm7
   1750         vpaddd  ymm3, ymm3, ymm4
   1751         vpxord  ymm15, ymm15, ymm0
   1752         vpxord  ymm12, ymm12, ymm1
   1753         vpxord  ymm13, ymm13, ymm2
   1754         vpxord  ymm14, ymm14, ymm3
   1755         vprord  ymm15, ymm15, 8
   1756         vprord  ymm12, ymm12, 8
   1757         vprord  ymm13, ymm13, 8
   1758         vprord  ymm14, ymm14, 8
   1759         vpaddd  ymm10, ymm10, ymm15
   1760         vpaddd  ymm11, ymm11, ymm12
   1761         vpaddd  ymm8, ymm8, ymm13
   1762         vpaddd  ymm9, ymm9, ymm14
   1763         vpxord  ymm5, ymm5, ymm10
   1764         vpxord  ymm6, ymm6, ymm11
   1765         vpxord  ymm7, ymm7, ymm8
   1766         vpxord  ymm4, ymm4, ymm9
   1767         vprord  ymm5, ymm5, 7
   1768         vprord  ymm6, ymm6, 7
   1769         vprord  ymm7, ymm7, 7
   1770         vprord  ymm4, ymm4, 7
   1771         vpaddd  ymm0, ymm0, ymm25
   1772         vpaddd  ymm1, ymm1, ymm27
   1773         vpaddd  ymm2, ymm2, ymm24
   1774         vpaddd  ymm3, ymm3, ymm31
   1775         vpaddd  ymm0, ymm0, ymm4
   1776         vpaddd  ymm1, ymm1, ymm5
   1777         vpaddd  ymm2, ymm2, ymm6
   1778         vpaddd  ymm3, ymm3, ymm7
   1779         vpxord  ymm12, ymm12, ymm0
   1780         vpxord  ymm13, ymm13, ymm1
   1781         vpxord  ymm14, ymm14, ymm2
   1782         vpxord  ymm15, ymm15, ymm3
   1783         vprord  ymm12, ymm12, 16
   1784         vprord  ymm13, ymm13, 16
   1785         vprord  ymm14, ymm14, 16
   1786         vprord  ymm15, ymm15, 16
   1787         vpaddd  ymm8, ymm8, ymm12
   1788         vpaddd  ymm9, ymm9, ymm13
   1789         vpaddd  ymm10, ymm10, ymm14
   1790         vpaddd  ymm11, ymm11, ymm15
   1791         vpxord  ymm4, ymm4, ymm8
   1792         vpxord  ymm5, ymm5, ymm9
   1793         vpxord  ymm6, ymm6, ymm10
   1794         vpxord  ymm7, ymm7, ymm11
   1795         vprord  ymm4, ymm4, 12
   1796         vprord  ymm5, ymm5, 12
   1797         vprord  ymm6, ymm6, 12
   1798         vprord  ymm7, ymm7, 12
   1799         vpaddd  ymm0, ymm0, ymm30
   1800         vpaddd  ymm1, ymm1, ymm21
   1801         vpaddd  ymm2, ymm2, ymm28
   1802         vpaddd  ymm3, ymm3, ymm17
   1803         vpaddd  ymm0, ymm0, ymm4
   1804         vpaddd  ymm1, ymm1, ymm5
   1805         vpaddd  ymm2, ymm2, ymm6
   1806         vpaddd  ymm3, ymm3, ymm7
   1807         vpxord  ymm12, ymm12, ymm0
   1808         vpxord  ymm13, ymm13, ymm1
   1809         vpxord  ymm14, ymm14, ymm2
   1810         vpxord  ymm15, ymm15, ymm3
   1811         vprord  ymm12, ymm12, 8
   1812         vprord  ymm13, ymm13, 8
   1813         vprord  ymm14, ymm14, 8
   1814         vprord  ymm15, ymm15, 8
   1815         vpaddd  ymm8, ymm8, ymm12
   1816         vpaddd  ymm9, ymm9, ymm13
   1817         vpaddd  ymm10, ymm10, ymm14
   1818         vpaddd  ymm11, ymm11, ymm15
   1819         vpxord  ymm4, ymm4, ymm8
   1820         vpxord  ymm5, ymm5, ymm9
   1821         vpxord  ymm6, ymm6, ymm10
   1822         vpxord  ymm7, ymm7, ymm11
   1823         vprord  ymm4, ymm4, 7
   1824         vprord  ymm5, ymm5, 7
   1825         vprord  ymm6, ymm6, 7
   1826         vprord  ymm7, ymm7, 7
   1827         vpaddd  ymm0, ymm0, ymm29
   1828         vpaddd  ymm1, ymm1, ymm16
   1829         vpaddd  ymm2, ymm2, ymm18
   1830         vpaddd  ymm3, ymm3, ymm20
   1831         vpaddd  ymm0, ymm0, ymm5
   1832         vpaddd  ymm1, ymm1, ymm6
   1833         vpaddd  ymm2, ymm2, ymm7
   1834         vpaddd  ymm3, ymm3, ymm4
   1835         vpxord  ymm15, ymm15, ymm0
   1836         vpxord  ymm12, ymm12, ymm1
   1837         vpxord  ymm13, ymm13, ymm2
   1838         vpxord  ymm14, ymm14, ymm3
   1839         vprord  ymm15, ymm15, 16
   1840         vprord  ymm12, ymm12, 16
   1841         vprord  ymm13, ymm13, 16
   1842         vprord  ymm14, ymm14, 16
   1843         vpaddd  ymm10, ymm10, ymm15
   1844         vpaddd  ymm11, ymm11, ymm12
   1845         vpaddd  ymm8, ymm8, ymm13
   1846         vpaddd  ymm9, ymm9, ymm14
   1847         vpxord  ymm5, ymm5, ymm10
   1848         vpxord  ymm6, ymm6, ymm11
   1849         vpxord  ymm7, ymm7, ymm8
   1850         vpxord  ymm4, ymm4, ymm9
   1851         vprord  ymm5, ymm5, 12
   1852         vprord  ymm6, ymm6, 12
   1853         vprord  ymm7, ymm7, 12
   1854         vprord  ymm4, ymm4, 12
   1855         vpaddd  ymm0, ymm0, ymm19
   1856         vpaddd  ymm1, ymm1, ymm26
   1857         vpaddd  ymm2, ymm2, ymm22
   1858         vpaddd  ymm3, ymm3, ymm23
   1859         vpaddd  ymm0, ymm0, ymm5
   1860         vpaddd  ymm1, ymm1, ymm6
   1861         vpaddd  ymm2, ymm2, ymm7
   1862         vpaddd  ymm3, ymm3, ymm4
   1863         vpxord  ymm15, ymm15, ymm0
   1864         vpxord  ymm12, ymm12, ymm1
   1865         vpxord  ymm13, ymm13, ymm2
   1866         vpxord  ymm14, ymm14, ymm3
   1867         vprord  ymm15, ymm15, 8
   1868         vprord  ymm12, ymm12, 8
   1869         vprord  ymm13, ymm13, 8
   1870         vprord  ymm14, ymm14, 8
   1871         vpaddd  ymm10, ymm10, ymm15
   1872         vpaddd  ymm11, ymm11, ymm12
   1873         vpaddd  ymm8, ymm8, ymm13
   1874         vpaddd  ymm9, ymm9, ymm14
   1875         vpxord  ymm5, ymm5, ymm10
   1876         vpxord  ymm6, ymm6, ymm11
   1877         vpxord  ymm7, ymm7, ymm8
   1878         vpxord  ymm4, ymm4, ymm9
   1879         vprord  ymm5, ymm5, 7
   1880         vprord  ymm6, ymm6, 7
   1881         vprord  ymm7, ymm7, 7
   1882         vprord  ymm4, ymm4, 7
   1883         vpaddd  ymm0, ymm0, ymm27
   1884         vpaddd  ymm1, ymm1, ymm21
   1885         vpaddd  ymm2, ymm2, ymm17
   1886         vpaddd  ymm3, ymm3, ymm24
   1887         vpaddd  ymm0, ymm0, ymm4
   1888         vpaddd  ymm1, ymm1, ymm5
   1889         vpaddd  ymm2, ymm2, ymm6
   1890         vpaddd  ymm3, ymm3, ymm7
   1891         vpxord  ymm12, ymm12, ymm0
   1892         vpxord  ymm13, ymm13, ymm1
   1893         vpxord  ymm14, ymm14, ymm2
   1894         vpxord  ymm15, ymm15, ymm3
   1895         vprord  ymm12, ymm12, 16
   1896         vprord  ymm13, ymm13, 16
   1897         vprord  ymm14, ymm14, 16
   1898         vprord  ymm15, ymm15, 16
   1899         vpaddd  ymm8, ymm8, ymm12
   1900         vpaddd  ymm9, ymm9, ymm13
   1901         vpaddd  ymm10, ymm10, ymm14
   1902         vpaddd  ymm11, ymm11, ymm15
   1903         vpxord  ymm4, ymm4, ymm8
   1904         vpxord  ymm5, ymm5, ymm9
   1905         vpxord  ymm6, ymm6, ymm10
   1906         vpxord  ymm7, ymm7, ymm11
   1907         vprord  ymm4, ymm4, 12
   1908         vprord  ymm5, ymm5, 12
   1909         vprord  ymm6, ymm6, 12
   1910         vprord  ymm7, ymm7, 12
   1911         vpaddd  ymm0, ymm0, ymm31
   1912         vpaddd  ymm1, ymm1, ymm16
   1913         vpaddd  ymm2, ymm2, ymm25
   1914         vpaddd  ymm3, ymm3, ymm22
   1915         vpaddd  ymm0, ymm0, ymm4
   1916         vpaddd  ymm1, ymm1, ymm5
   1917         vpaddd  ymm2, ymm2, ymm6
   1918         vpaddd  ymm3, ymm3, ymm7
   1919         vpxord  ymm12, ymm12, ymm0
   1920         vpxord  ymm13, ymm13, ymm1
   1921         vpxord  ymm14, ymm14, ymm2
   1922         vpxord  ymm15, ymm15, ymm3
   1923         vprord  ymm12, ymm12, 8
   1924         vprord  ymm13, ymm13, 8
   1925         vprord  ymm14, ymm14, 8
   1926         vprord  ymm15, ymm15, 8
   1927         vpaddd  ymm8, ymm8, ymm12
   1928         vpaddd  ymm9, ymm9, ymm13
   1929         vpaddd  ymm10, ymm10, ymm14
   1930         vpaddd  ymm11, ymm11, ymm15
   1931         vpxord  ymm4, ymm4, ymm8
   1932         vpxord  ymm5, ymm5, ymm9
   1933         vpxord  ymm6, ymm6, ymm10
   1934         vpxord  ymm7, ymm7, ymm11
   1935         vprord  ymm4, ymm4, 7
   1936         vprord  ymm5, ymm5, 7
   1937         vprord  ymm6, ymm6, 7
   1938         vprord  ymm7, ymm7, 7
   1939         vpaddd  ymm0, ymm0, ymm30
   1940         vpaddd  ymm1, ymm1, ymm18
   1941         vpaddd  ymm2, ymm2, ymm19
   1942         vpaddd  ymm3, ymm3, ymm23
   1943         vpaddd  ymm0, ymm0, ymm5
   1944         vpaddd  ymm1, ymm1, ymm6
   1945         vpaddd  ymm2, ymm2, ymm7
   1946         vpaddd  ymm3, ymm3, ymm4
   1947         vpxord  ymm15, ymm15, ymm0
   1948         vpxord  ymm12, ymm12, ymm1
   1949         vpxord  ymm13, ymm13, ymm2
   1950         vpxord  ymm14, ymm14, ymm3
   1951         vprord  ymm15, ymm15, 16
   1952         vprord  ymm12, ymm12, 16
   1953         vprord  ymm13, ymm13, 16
   1954         vprord  ymm14, ymm14, 16
   1955         vpaddd  ymm10, ymm10, ymm15
   1956         vpaddd  ymm11, ymm11, ymm12
   1957         vpaddd  ymm8, ymm8, ymm13
   1958         vpaddd  ymm9, ymm9, ymm14
   1959         vpxord  ymm5, ymm5, ymm10
   1960         vpxord  ymm6, ymm6, ymm11
   1961         vpxord  ymm7, ymm7, ymm8
   1962         vpxord  ymm4, ymm4, ymm9
   1963         vprord  ymm5, ymm5, 12
   1964         vprord  ymm6, ymm6, 12
   1965         vprord  ymm7, ymm7, 12
   1966         vprord  ymm4, ymm4, 12
   1967         vpaddd  ymm0, ymm0, ymm26
   1968         vpaddd  ymm1, ymm1, ymm28
   1969         vpaddd  ymm2, ymm2, ymm20
   1970         vpaddd  ymm3, ymm3, ymm29
   1971         vpaddd  ymm0, ymm0, ymm5
   1972         vpaddd  ymm1, ymm1, ymm6
   1973         vpaddd  ymm2, ymm2, ymm7
   1974         vpaddd  ymm3, ymm3, ymm4
   1975         vpxord  ymm15, ymm15, ymm0
   1976         vpxord  ymm12, ymm12, ymm1
   1977         vpxord  ymm13, ymm13, ymm2
   1978         vpxord  ymm14, ymm14, ymm3
   1979         vprord  ymm15, ymm15, 8
   1980         vprord  ymm12, ymm12, 8
   1981         vprord  ymm13, ymm13, 8
   1982         vprord  ymm14, ymm14, 8
   1983         vpaddd  ymm10, ymm10, ymm15
   1984         vpaddd  ymm11, ymm11, ymm12
   1985         vpaddd  ymm8, ymm8, ymm13
   1986         vpaddd  ymm9, ymm9, ymm14
   1987         vpxord  ymm5, ymm5, ymm10
   1988         vpxord  ymm6, ymm6, ymm11
   1989         vpxord  ymm7, ymm7, ymm8
   1990         vpxord  ymm4, ymm4, ymm9
   1991         vprord  ymm5, ymm5, 7
   1992         vprord  ymm6, ymm6, 7
   1993         vprord  ymm7, ymm7, 7
   1994         vprord  ymm4, ymm4, 7
   1995         vpxor   ymm0, ymm0, ymm8
   1996         vpxor   ymm1, ymm1, ymm9
   1997         vpxor   ymm2, ymm2, ymm10
   1998         vpxor   ymm3, ymm3, ymm11
   1999         vpxor   ymm4, ymm4, ymm12
   2000         vpxor   ymm5, ymm5, ymm13
   2001         vpxor   ymm6, ymm6, ymm14
   2002         vpxor   ymm7, ymm7, ymm15
   2003         movzx   eax, byte ptr [rbp+0x78]
   2004         jne     2b
   2005         mov     rbx, qword ptr [rbp+0x90]
   2006         vunpcklps ymm8, ymm0, ymm1
   2007         vunpcklps ymm9, ymm2, ymm3
   2008         vunpckhps ymm10, ymm0, ymm1
   2009         vunpcklps ymm11, ymm4, ymm5
   2010         vunpcklps ymm0, ymm6, ymm7
   2011         vshufps ymm12, ymm8, ymm9, 78
   2012         vblendps ymm1, ymm8, ymm12, 0xCC
   2013         vshufps ymm8, ymm11, ymm0, 78
   2014         vunpckhps ymm13, ymm2, ymm3
   2015         vblendps ymm2, ymm11, ymm8, 0xCC
   2016         vblendps ymm3, ymm12, ymm9, 0xCC
   2017         vperm2f128 ymm12, ymm1, ymm2, 0x20
   2018         vmovups ymmword ptr [rbx], ymm12
   2019         vunpckhps ymm14, ymm4, ymm5
   2020         vblendps ymm4, ymm8, ymm0, 0xCC
   2021         vunpckhps ymm15, ymm6, ymm7
   2022         vperm2f128 ymm7, ymm3, ymm4, 0x20
   2023         vmovups ymmword ptr [rbx+0x20], ymm7
   2024         vshufps ymm5, ymm10, ymm13, 78
   2025         vblendps ymm6, ymm5, ymm13, 0xCC
   2026         vshufps ymm13, ymm14, ymm15, 78
   2027         vblendps ymm10, ymm10, ymm5, 0xCC
   2028         vblendps ymm14, ymm14, ymm13, 0xCC
   2029         vperm2f128 ymm8, ymm10, ymm14, 0x20
   2030         vmovups ymmword ptr [rbx+0x40], ymm8
   2031         vblendps ymm15, ymm13, ymm15, 0xCC
   2032         vperm2f128 ymm13, ymm6, ymm15, 0x20
   2033         vmovups ymmword ptr [rbx+0x60], ymm13
   2034         vperm2f128 ymm9, ymm1, ymm2, 0x31
   2035         vperm2f128 ymm11, ymm3, ymm4, 0x31
   2036         vmovups ymmword ptr [rbx+0x80], ymm9
   2037         vperm2f128 ymm14, ymm10, ymm14, 0x31
   2038         vperm2f128 ymm15, ymm6, ymm15, 0x31
   2039         vmovups ymmword ptr [rbx+0xA0], ymm11
   2040         vmovups ymmword ptr [rbx+0xC0], ymm14
   2041         vmovups ymmword ptr [rbx+0xE0], ymm15
   2042         vmovdqa ymm0, ymmword ptr [rsp]
   2043         vmovdqa ymm2, ymmword ptr [rsp+0x40]
   2044         vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
   2045         vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
   2046         vmovdqa ymmword ptr [rsp], ymm0
   2047         vmovdqa ymmword ptr [rsp+0x40], ymm2
   2048         add     rbx, 256
   2049         mov     qword ptr [rbp+0x90], rbx
   2050         add     rdi, 64
   2051         sub     rsi, 8
   2052 3:
   2053         mov     rbx, qword ptr [rbp+0x90]
   2054         mov     r15, qword ptr [rsp+0x80]
   2055         movzx   r13, byte ptr [rbp+0x78]
   2056         movzx   r12, byte ptr [rbp+0x88]
   2057         test    esi, 0x4
   2058         je      3f
   2059         vbroadcasti32x4 zmm0, xmmword ptr [rcx]
   2060         vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
   2061         vmovdqa xmm12, xmmword ptr [rsp]
   2062         vmovdqa xmm13, xmmword ptr [rsp+0x40]
   2063         vpunpckldq xmm14, xmm12, xmm13
   2064         vpunpckhdq xmm15, xmm12, xmm13
   2065         vpermq  ymm14, ymm14, 0xDC
   2066         vpermq  ymm15, ymm15, 0xDC
   2067         vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
   2068         vinserti64x4 zmm13, zmm14, ymm15, 0x01
   2069         mov     eax, 17476
   2070         kmovw   k2, eax
   2071         vpblendmd zmm13 {k2}, zmm13, zmm12
   2072         vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
   2073         mov     r8, qword ptr [rdi]
   2074         mov     r9, qword ptr [rdi+0x8]
   2075         mov     r10, qword ptr [rdi+0x10]
   2076         mov     r11, qword ptr [rdi+0x18]
   2077         mov     eax, 43690
   2078         kmovw   k3, eax
   2079         mov     eax, 34952
   2080         kmovw   k4, eax
   2081         movzx   eax, byte ptr [rbp+0x80]
   2082         or      eax, r13d
   2083         xor     edx, edx
   2084 .p2align 5
   2085 2:
   2086         mov     r14d, eax
   2087         or      eax, r12d
   2088         add     rdx, 64
   2089         cmp     rdx, r15
   2090         cmovne  eax, r14d
   2091         mov     dword ptr [rsp+0x88], eax
   2092         vmovdqa32 zmm2, zmm15
   2093         vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
   2094         vpblendmd zmm3 {k4}, zmm13, zmm8
   2095         vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
   2096         vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
   2097         vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
   2098         vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
   2099         vmovups zmm9, zmmword ptr [r8+rdx-0x30]
   2100         vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
   2101         vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
   2102         vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
   2103         vshufps zmm4, zmm8, zmm9, 136
   2104         vshufps zmm5, zmm8, zmm9, 221
   2105         vmovups zmm8, zmmword ptr [r8+rdx-0x20]
   2106         vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
   2107         vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
   2108         vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
   2109         vmovups zmm9, zmmword ptr [r8+rdx-0x10]
   2110         vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
   2111         vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
   2112         vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
   2113         vshufps zmm6, zmm8, zmm9, 136
   2114         vshufps zmm7, zmm8, zmm9, 221
   2115         vpshufd zmm6, zmm6, 0x93
   2116         vpshufd zmm7, zmm7, 0x93
   2117         mov     al, 7
   2118 9:
   2119         vpaddd  zmm0, zmm0, zmm4
   2120         vpaddd  zmm0, zmm0, zmm1
   2121         vpxord  zmm3, zmm3, zmm0
   2122         vprord  zmm3, zmm3, 16
   2123         vpaddd  zmm2, zmm2, zmm3
   2124         vpxord  zmm1, zmm1, zmm2
   2125         vprord  zmm1, zmm1, 12
   2126         vpaddd  zmm0, zmm0, zmm5
   2127         vpaddd  zmm0, zmm0, zmm1
   2128         vpxord  zmm3, zmm3, zmm0
   2129         vprord  zmm3, zmm3, 8
   2130         vpaddd  zmm2, zmm2, zmm3
   2131         vpxord  zmm1, zmm1, zmm2
   2132         vprord  zmm1, zmm1, 7
   2133         vpshufd zmm0, zmm0, 0x93
   2134         vpshufd zmm3, zmm3, 0x4E
   2135         vpshufd zmm2, zmm2, 0x39
   2136         vpaddd  zmm0, zmm0, zmm6
   2137         vpaddd  zmm0, zmm0, zmm1
   2138         vpxord  zmm3, zmm3, zmm0
   2139         vprord  zmm3, zmm3, 16
   2140         vpaddd  zmm2, zmm2, zmm3
   2141         vpxord  zmm1, zmm1, zmm2
   2142         vprord  zmm1, zmm1, 12
   2143         vpaddd  zmm0, zmm0, zmm7
   2144         vpaddd  zmm0, zmm0, zmm1
   2145         vpxord  zmm3, zmm3, zmm0
   2146         vprord  zmm3, zmm3, 8
   2147         vpaddd  zmm2, zmm2, zmm3
   2148         vpxord  zmm1, zmm1, zmm2
   2149         vprord  zmm1, zmm1, 7
   2150         vpshufd zmm0, zmm0, 0x39
   2151         vpshufd zmm3, zmm3, 0x4E
   2152         vpshufd zmm2, zmm2, 0x93
   2153         dec     al
   2154         jz      9f
   2155         vshufps zmm8, zmm4, zmm5, 214
   2156         vpshufd zmm9, zmm4, 0x0F
   2157         vpshufd zmm4, zmm8, 0x39
   2158         vshufps zmm8, zmm6, zmm7, 250
   2159         vpblendmd zmm9 {k3}, zmm9, zmm8
   2160         vpunpcklqdq zmm8, zmm7, zmm5
   2161         vpblendmd zmm8 {k4}, zmm8, zmm6
   2162         vpshufd zmm8, zmm8, 0x78
   2163         vpunpckhdq zmm5, zmm5, zmm7
   2164         vpunpckldq zmm6, zmm6, zmm5
   2165         vpshufd zmm7, zmm6, 0x1E
   2166         vmovdqa32 zmm5, zmm9
   2167         vmovdqa32 zmm6, zmm8
   2168         jmp     9b
   2169 9:
   2170         vpxord  zmm0, zmm0, zmm2
   2171         vpxord  zmm1, zmm1, zmm3
   2172         mov     eax, r13d
   2173         cmp     rdx, r15
   2174         jne     2b
   2175         vmovdqu xmmword ptr [rbx], xmm0
   2176         vmovdqu xmmword ptr [rbx+0x10], xmm1
   2177         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
   2178         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
   2179         vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
   2180         vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
   2181         vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
   2182         vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
   2183         vmovdqa xmm0, xmmword ptr [rsp]
   2184         vmovdqa xmm2, xmmword ptr [rsp+0x40]
   2185         vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
   2186         vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
   2187         vmovdqa xmmword ptr [rsp], xmm0
   2188         vmovdqa xmmword ptr [rsp+0x40], xmm2
   2189         add     rbx, 128
   2190         add     rdi, 32
   2191         sub     rsi, 4
   2192 3:
   2193         test    esi, 0x2
   2194         je      3f
   2195         vbroadcasti128 ymm0, xmmword ptr [rcx]
   2196         vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
   2197         vmovd   xmm13, dword ptr [rsp]
   2198         vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
   2199         vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
   2200         vmovd   xmm14, dword ptr [rsp+0x4]
   2201         vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
   2202         vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
   2203         vinserti128 ymm13, ymm13, xmm14, 0x01
   2204         mov     r8, qword ptr [rdi]
   2205         mov     r9, qword ptr [rdi+0x8]
   2206         movzx   eax, byte ptr [rbp+0x80]
   2207         or      eax, r13d
   2208         xor     edx, edx
   2209 .p2align 5
   2210 2:
   2211         mov     r14d, eax
   2212         or      eax, r12d
   2213         add     rdx, 64
   2214         cmp     rdx, r15
   2215         cmovne  eax, r14d
   2216         mov     dword ptr [rsp+0x88], eax
   2217         vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
   2218         vpbroadcastd ymm8, dword ptr [rsp+0x88]
   2219         vpblendd ymm3, ymm13, ymm8, 0x88
   2220         vmovups ymm8, ymmword ptr [r8+rdx-0x40]
   2221         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
   2222         vmovups ymm9, ymmword ptr [r8+rdx-0x30]
   2223         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
   2224         vshufps ymm4, ymm8, ymm9, 136
   2225         vshufps ymm5, ymm8, ymm9, 221
   2226         vmovups ymm8, ymmword ptr [r8+rdx-0x20]
   2227         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
   2228         vmovups ymm9, ymmword ptr [r8+rdx-0x10]
   2229         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
   2230         vshufps ymm6, ymm8, ymm9, 136
   2231         vshufps ymm7, ymm8, ymm9, 221
   2232         vpshufd ymm6, ymm6, 0x93
   2233         vpshufd ymm7, ymm7, 0x93
   2234         mov     al, 7
   2235 9:
   2236         vpaddd  ymm0, ymm0, ymm4
   2237         vpaddd  ymm0, ymm0, ymm1
   2238         vpxord  ymm3, ymm3, ymm0
   2239         vprord  ymm3, ymm3, 16
   2240         vpaddd  ymm2, ymm2, ymm3
   2241         vpxord  ymm1, ymm1, ymm2
   2242         vprord  ymm1, ymm1, 12
   2243         vpaddd  ymm0, ymm0, ymm5
   2244         vpaddd  ymm0, ymm0, ymm1
   2245         vpxord  ymm3, ymm3, ymm0
   2246         vprord  ymm3, ymm3, 8
   2247         vpaddd  ymm2, ymm2, ymm3
   2248         vpxord  ymm1, ymm1, ymm2
   2249         vprord  ymm1, ymm1, 7
   2250         vpshufd ymm0, ymm0, 0x93
   2251         vpshufd ymm3, ymm3, 0x4E
   2252         vpshufd ymm2, ymm2, 0x39
   2253         vpaddd  ymm0, ymm0, ymm6
   2254         vpaddd  ymm0, ymm0, ymm1
   2255         vpxord  ymm3, ymm3, ymm0
   2256         vprord  ymm3, ymm3, 16
   2257         vpaddd  ymm2, ymm2, ymm3
   2258         vpxord  ymm1, ymm1, ymm2
   2259         vprord  ymm1, ymm1, 12
   2260         vpaddd  ymm0, ymm0, ymm7
   2261         vpaddd  ymm0, ymm0, ymm1
   2262         vpxord  ymm3, ymm3, ymm0
   2263         vprord  ymm3, ymm3, 8
   2264         vpaddd  ymm2, ymm2, ymm3
   2265         vpxord  ymm1, ymm1, ymm2
   2266         vprord  ymm1, ymm1, 7
   2267         vpshufd ymm0, ymm0, 0x39
   2268         vpshufd ymm3, ymm3, 0x4E
   2269         vpshufd ymm2, ymm2, 0x93
   2270         dec     al
   2271         jz      9f
   2272         vshufps ymm8, ymm4, ymm5, 214
   2273         vpshufd ymm9, ymm4, 0x0F
   2274         vpshufd ymm4, ymm8, 0x39
   2275         vshufps ymm8, ymm6, ymm7, 250
   2276         vpblendd ymm9, ymm9, ymm8, 0xAA
   2277         vpunpcklqdq ymm8, ymm7, ymm5
   2278         vpblendd ymm8, ymm8, ymm6, 0x88
   2279         vpshufd ymm8, ymm8, 0x78
   2280         vpunpckhdq ymm5, ymm5, ymm7
   2281         vpunpckldq ymm6, ymm6, ymm5
   2282         vpshufd ymm7, ymm6, 0x1E
   2283         vmovdqa ymm5, ymm9
   2284         vmovdqa ymm6, ymm8
   2285         jmp     9b
   2286 9:
   2287         vpxor   ymm0, ymm0, ymm2
   2288         vpxor   ymm1, ymm1, ymm3
   2289         mov     eax, r13d
   2290         cmp     rdx, r15
   2291         jne     2b
   2292         vmovdqu xmmword ptr [rbx], xmm0
   2293         vmovdqu xmmword ptr [rbx+0x10], xmm1
   2294         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
   2295         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
   2296         vmovdqa xmm0, xmmword ptr [rsp]
   2297         vmovdqa xmm2, xmmword ptr [rsp+0x40]
   2298         vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
   2299         vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
   2300         vmovdqa xmmword ptr [rsp], xmm0
   2301         vmovdqa xmmword ptr [rsp+0x40], xmm2
   2302         add     rbx, 64
   2303         add     rdi, 16
   2304         sub     rsi, 2
   2305 3:
   2306         test    esi, 0x1
   2307         je      4b
   2308         vmovdqu xmm0, xmmword ptr [rcx]
   2309         vmovdqu xmm1, xmmword ptr [rcx+0x10]
   2310         vmovd   xmm14, dword ptr [rsp]
   2311         vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
   2312         vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
   2313         vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
   2314         mov     r8, qword ptr [rdi]
   2315         movzx   eax, byte ptr [rbp+0x80]
   2316         or      eax, r13d
   2317         xor     edx, edx
   2318 .p2align 5
   2319 2:
   2320         mov     r14d, eax
   2321         or      eax, r12d
   2322         add     rdx, 64
   2323         cmp     rdx, r15
   2324         cmovne  eax, r14d
   2325         vpinsrd xmm3, xmm14, eax, 3
   2326         vmovdqa xmm2, xmm15
   2327         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
   2328         vmovups xmm9, xmmword ptr [r8+rdx-0x30]
   2329         vshufps xmm4, xmm8, xmm9, 136
   2330         vshufps xmm5, xmm8, xmm9, 221
   2331         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
   2332         vmovups xmm9, xmmword ptr [r8+rdx-0x10]
   2333         vshufps xmm6, xmm8, xmm9, 136
   2334         vshufps xmm7, xmm8, xmm9, 221
   2335         vpshufd xmm6, xmm6, 0x93
   2336         vpshufd xmm7, xmm7, 0x93
   2337         mov     al, 7
   2338 9:
   2339         vpaddd  xmm0, xmm0, xmm4
   2340         vpaddd  xmm0, xmm0, xmm1
   2341         vpxord  xmm3, xmm3, xmm0
   2342         vprord  xmm3, xmm3, 16
   2343         vpaddd  xmm2, xmm2, xmm3
   2344         vpxord  xmm1, xmm1, xmm2
   2345         vprord  xmm1, xmm1, 12
   2346         vpaddd  xmm0, xmm0, xmm5
   2347         vpaddd  xmm0, xmm0, xmm1
   2348         vpxord  xmm3, xmm3, xmm0
   2349         vprord  xmm3, xmm3, 8
   2350         vpaddd  xmm2, xmm2, xmm3
   2351         vpxord  xmm1, xmm1, xmm2
   2352         vprord  xmm1, xmm1, 7
   2353         vpshufd xmm0, xmm0, 0x93
   2354         vpshufd xmm3, xmm3, 0x4E
   2355         vpshufd xmm2, xmm2, 0x39
   2356         vpaddd  xmm0, xmm0, xmm6
   2357         vpaddd  xmm0, xmm0, xmm1
   2358         vpxord  xmm3, xmm3, xmm0
   2359         vprord  xmm3, xmm3, 16
   2360         vpaddd  xmm2, xmm2, xmm3
   2361         vpxord  xmm1, xmm1, xmm2
   2362         vprord  xmm1, xmm1, 12
   2363         vpaddd  xmm0, xmm0, xmm7
   2364         vpaddd  xmm0, xmm0, xmm1
   2365         vpxord  xmm3, xmm3, xmm0
   2366         vprord  xmm3, xmm3, 8
   2367         vpaddd  xmm2, xmm2, xmm3
   2368         vpxord  xmm1, xmm1, xmm2
   2369         vprord  xmm1, xmm1, 7
   2370         vpshufd xmm0, xmm0, 0x39
   2371         vpshufd xmm3, xmm3, 0x4E
   2372         vpshufd xmm2, xmm2, 0x93
   2373         dec     al
   2374         jz      9f
   2375         vshufps xmm8, xmm4, xmm5, 214
   2376         vpshufd xmm9, xmm4, 0x0F
   2377         vpshufd xmm4, xmm8, 0x39
   2378         vshufps xmm8, xmm6, xmm7, 250
   2379         vpblendd xmm9, xmm9, xmm8, 0xAA
   2380         vpunpcklqdq xmm8, xmm7, xmm5
   2381         vpblendd xmm8, xmm8, xmm6, 0x88
   2382         vpshufd xmm8, xmm8, 0x78
   2383         vpunpckhdq xmm5, xmm5, xmm7
   2384         vpunpckldq xmm6, xmm6, xmm5
   2385         vpshufd xmm7, xmm6, 0x1E
   2386         vmovdqa xmm5, xmm9
   2387         vmovdqa xmm6, xmm8
   2388         jmp     9b
   2389 9:
   2390         vpxor   xmm0, xmm0, xmm2
   2391         vpxor   xmm1, xmm1, xmm3
   2392         mov     eax, r13d
   2393         cmp     rdx, r15
   2394         jne     2b
   2395         vmovdqu xmmword ptr [rbx], xmm0
   2396         vmovdqu xmmword ptr [rbx+0x10], xmm1
   2397         jmp     4b
   2398 
   2399 
   2400 .p2align 6
   2401 _blake3_compress_in_place_avx512:
   2402 blake3_compress_in_place_avx512:
   2403         sub     rsp, 72
   2404         vmovdqa xmmword ptr [rsp], xmm6
   2405         vmovdqa xmmword ptr [rsp+0x10], xmm7
   2406         vmovdqa xmmword ptr [rsp+0x20], xmm8
   2407         vmovdqa xmmword ptr [rsp+0x30], xmm9
   2408         vmovdqu xmm0, xmmword ptr [rcx]
   2409         vmovdqu xmm1, xmmword ptr [rcx+0x10]
   2410         movzx   eax, byte ptr [rsp+0x70]
   2411         movzx   r8d, r8b
   2412         shl     rax, 32
   2413         add     r8, rax
   2414         vmovq   xmm3, r9
   2415         vmovq   xmm4, r8
   2416         vpunpcklqdq xmm3, xmm3, xmm4
   2417         vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
   2418         vmovups xmm8, xmmword ptr [rdx]
   2419         vmovups xmm9, xmmword ptr [rdx+0x10]
   2420         vshufps xmm4, xmm8, xmm9, 136
   2421         vshufps xmm5, xmm8, xmm9, 221
   2422         vmovups xmm8, xmmword ptr [rdx+0x20]
   2423         vmovups xmm9, xmmword ptr [rdx+0x30]
   2424         vshufps xmm6, xmm8, xmm9, 136
   2425         vshufps xmm7, xmm8, xmm9, 221
   2426         vpshufd xmm6, xmm6, 0x93
   2427         vpshufd xmm7, xmm7, 0x93
   2428         mov     al, 7
   2429 9:
   2430         vpaddd  xmm0, xmm0, xmm4
   2431         vpaddd  xmm0, xmm0, xmm1
   2432         vpxord  xmm3, xmm3, xmm0
   2433         vprord  xmm3, xmm3, 16
   2434         vpaddd  xmm2, xmm2, xmm3
   2435         vpxord  xmm1, xmm1, xmm2
   2436         vprord  xmm1, xmm1, 12
   2437         vpaddd  xmm0, xmm0, xmm5
   2438         vpaddd  xmm0, xmm0, xmm1
   2439         vpxord  xmm3, xmm3, xmm0
   2440         vprord  xmm3, xmm3, 8
   2441         vpaddd  xmm2, xmm2, xmm3
   2442         vpxord  xmm1, xmm1, xmm2
   2443         vprord  xmm1, xmm1, 7
   2444         vpshufd xmm0, xmm0, 0x93
   2445         vpshufd xmm3, xmm3, 0x4E
   2446         vpshufd xmm2, xmm2, 0x39
   2447         vpaddd  xmm0, xmm0, xmm6
   2448         vpaddd  xmm0, xmm0, xmm1
   2449         vpxord  xmm3, xmm3, xmm0
   2450         vprord  xmm3, xmm3, 16
   2451         vpaddd  xmm2, xmm2, xmm3
   2452         vpxord  xmm1, xmm1, xmm2
   2453         vprord  xmm1, xmm1, 12
   2454         vpaddd  xmm0, xmm0, xmm7
   2455         vpaddd  xmm0, xmm0, xmm1
   2456         vpxord  xmm3, xmm3, xmm0
   2457         vprord  xmm3, xmm3, 8
   2458         vpaddd  xmm2, xmm2, xmm3
   2459         vpxord  xmm1, xmm1, xmm2
   2460         vprord  xmm1, xmm1, 7
   2461         vpshufd xmm0, xmm0, 0x39
   2462         vpshufd xmm3, xmm3, 0x4E
   2463         vpshufd xmm2, xmm2, 0x93
   2464         dec     al
   2465         jz      9f
   2466         vshufps xmm8, xmm4, xmm5, 214
   2467         vpshufd xmm9, xmm4, 0x0F
   2468         vpshufd xmm4, xmm8, 0x39
   2469         vshufps xmm8, xmm6, xmm7, 250
   2470         vpblendd xmm9, xmm9, xmm8, 0xAA
   2471         vpunpcklqdq xmm8, xmm7, xmm5
   2472         vpblendd xmm8, xmm8, xmm6, 0x88
   2473         vpshufd xmm8, xmm8, 0x78
   2474         vpunpckhdq xmm5, xmm5, xmm7
   2475         vpunpckldq xmm6, xmm6, xmm5
   2476         vpshufd xmm7, xmm6, 0x1E
   2477         vmovdqa xmm5, xmm9
   2478         vmovdqa xmm6, xmm8
   2479         jmp     9b
   2480 9:
   2481         vpxor   xmm0, xmm0, xmm2
   2482         vpxor   xmm1, xmm1, xmm3
   2483         vmovdqu xmmword ptr [rcx], xmm0
   2484         vmovdqu xmmword ptr [rcx+0x10], xmm1
   2485         vmovdqa xmm6, xmmword ptr [rsp]
   2486         vmovdqa xmm7, xmmword ptr [rsp+0x10]
   2487         vmovdqa xmm8, xmmword ptr [rsp+0x20]
   2488         vmovdqa xmm9, xmmword ptr [rsp+0x30]
   2489         add     rsp, 72
   2490         ret
   2491 
   2492 
   2493 .p2align 6
   2494 _blake3_compress_xof_avx512:
   2495 blake3_compress_xof_avx512:
   2496         sub     rsp, 72
   2497         vmovdqa xmmword ptr [rsp], xmm6
   2498         vmovdqa xmmword ptr [rsp+0x10], xmm7
   2499         vmovdqa xmmword ptr [rsp+0x20], xmm8
   2500         vmovdqa xmmword ptr [rsp+0x30], xmm9
   2501         vmovdqu xmm0, xmmword ptr [rcx]
   2502         vmovdqu xmm1, xmmword ptr [rcx+0x10]
   2503         movzx   eax, byte ptr [rsp+0x70]
   2504         movzx   r8d, r8b
   2505         mov     r10, qword ptr [rsp+0x78]
   2506         shl     rax, 32
   2507         add     r8, rax
   2508         vmovq   xmm3, r9
   2509         vmovq   xmm4, r8
   2510         vpunpcklqdq xmm3, xmm3, xmm4
   2511         vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
   2512         vmovups xmm8, xmmword ptr [rdx]
   2513         vmovups xmm9, xmmword ptr [rdx+0x10]
   2514         vshufps xmm4, xmm8, xmm9, 136
   2515         vshufps xmm5, xmm8, xmm9, 221
   2516         vmovups xmm8, xmmword ptr [rdx+0x20]
   2517         vmovups xmm9, xmmword ptr [rdx+0x30]
   2518         vshufps xmm6, xmm8, xmm9, 136
   2519         vshufps xmm7, xmm8, xmm9, 221
   2520         vpshufd xmm6, xmm6, 0x93
   2521         vpshufd xmm7, xmm7, 0x93
   2522         mov     al, 7
   2523 9:
   2524         vpaddd  xmm0, xmm0, xmm4
   2525         vpaddd  xmm0, xmm0, xmm1
   2526         vpxord  xmm3, xmm3, xmm0
   2527         vprord  xmm3, xmm3, 16
   2528         vpaddd  xmm2, xmm2, xmm3
   2529         vpxord  xmm1, xmm1, xmm2
   2530         vprord  xmm1, xmm1, 12
   2531         vpaddd  xmm0, xmm0, xmm5
   2532         vpaddd  xmm0, xmm0, xmm1
   2533         vpxord  xmm3, xmm3, xmm0
   2534         vprord  xmm3, xmm3, 8
   2535         vpaddd  xmm2, xmm2, xmm3
   2536         vpxord  xmm1, xmm1, xmm2
   2537         vprord  xmm1, xmm1, 7
   2538         vpshufd xmm0, xmm0, 0x93
   2539         vpshufd xmm3, xmm3, 0x4E
   2540         vpshufd xmm2, xmm2, 0x39
   2541         vpaddd  xmm0, xmm0, xmm6
   2542         vpaddd  xmm0, xmm0, xmm1
   2543         vpxord  xmm3, xmm3, xmm0
   2544         vprord  xmm3, xmm3, 16
   2545         vpaddd  xmm2, xmm2, xmm3
   2546         vpxord  xmm1, xmm1, xmm2
   2547         vprord  xmm1, xmm1, 12
   2548         vpaddd  xmm0, xmm0, xmm7
   2549         vpaddd  xmm0, xmm0, xmm1
   2550         vpxord  xmm3, xmm3, xmm0
   2551         vprord  xmm3, xmm3, 8
   2552         vpaddd  xmm2, xmm2, xmm3
   2553         vpxord  xmm1, xmm1, xmm2
   2554         vprord  xmm1, xmm1, 7
   2555         vpshufd xmm0, xmm0, 0x39
   2556         vpshufd xmm3, xmm3, 0x4E
   2557         vpshufd xmm2, xmm2, 0x93
   2558         dec     al
   2559         jz      9f
   2560         vshufps xmm8, xmm4, xmm5, 214
   2561         vpshufd xmm9, xmm4, 0x0F
   2562         vpshufd xmm4, xmm8, 0x39
   2563         vshufps xmm8, xmm6, xmm7, 250
   2564         vpblendd xmm9, xmm9, xmm8, 0xAA
   2565         vpunpcklqdq xmm8, xmm7, xmm5
   2566         vpblendd xmm8, xmm8, xmm6, 0x88
   2567         vpshufd xmm8, xmm8, 0x78
   2568         vpunpckhdq xmm5, xmm5, xmm7
   2569         vpunpckldq xmm6, xmm6, xmm5
   2570         vpshufd xmm7, xmm6, 0x1E
   2571         vmovdqa xmm5, xmm9
   2572         vmovdqa xmm6, xmm8
   2573         jmp     9b
   2574 9:
   2575         vpxor   xmm0, xmm0, xmm2
   2576         vpxor   xmm1, xmm1, xmm3
   2577         vpxor   xmm2, xmm2, xmmword ptr [rcx]
   2578         vpxor   xmm3, xmm3, xmmword ptr [rcx+0x10]
   2579         vmovdqu xmmword ptr [r10], xmm0
   2580         vmovdqu xmmword ptr [r10+0x10], xmm1
   2581         vmovdqu xmmword ptr [r10+0x20], xmm2
   2582         vmovdqu xmmword ptr [r10+0x30], xmm3
   2583         vmovdqa xmm6, xmmword ptr [rsp]
   2584         vmovdqa xmm7, xmmword ptr [rsp+0x10]
   2585         vmovdqa xmm8, xmmword ptr [rsp+0x20]
   2586         vmovdqa xmm9, xmmword ptr [rsp+0x30]
   2587         add     rsp, 72
   2588         ret
   2589 
   2590 .section .rodata
   2591 .p2align  6
   2592 INDEX0:
   2593         .long    0,  1,  2,  3, 16, 17, 18, 19
   2594         .long    8,  9, 10, 11, 24, 25, 26, 27
   2595 INDEX1:
   2596         .long    4,  5,  6,  7, 20, 21, 22, 23
   2597         .long   12, 13, 14, 15, 28, 29, 30, 31
   2598 ADD0:
   2599         .long    0,  1,  2,  3,  4,  5,  6,  7
   2600         .long    8,  9, 10, 11, 12, 13, 14, 15
   2601 ADD1:   .long    1
   2602 
   2603 ADD16:  .long   16
   2604 BLAKE3_BLOCK_LEN:
   2605         .long   64
   2606 .p2align 6
   2607 BLAKE3_IV:
   2608 BLAKE3_IV_0:
   2609         .long   0x6A09E667
   2610 BLAKE3_IV_1:
   2611         .long   0xBB67AE85
   2612 BLAKE3_IV_2:
   2613         .long   0x3C6EF372
   2614 BLAKE3_IV_3:
   2615         .long   0xA54FF53A