// File: /workspace/github_c_makefile_star2_O2/mjosaarinen[P]brutus/crypto_aead/stribob192r2/bitslice/wbob_pi64sl.c
// Function: wbob_pi
void wbob_pi(w512_t *s512)
{
    int r;
    uint64_t *p;
    uint64_t z0, z1, z2, z3, z4, z5, z6, z7,
             u0, u1, u2, u3, u4, u5, u6, u7,
             v0, v1, v2, v3, w0, w1, w2, w3,
             t0, t1, t2, t3, t4;

    p = (uint64_t *) s512;

    SPLICE_8X64(u0, u1, u2, u3, u4, u5, u6, u7,
                p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);

    for (r = 0; r < 12; r++) {

        // SubBytes
        SLICE_SEI(z0, z1, z2, z3, u0, u1, u2, u3);
        SLICE_SEF(z4, z5, z6, z7, u4, u5, u6, u7);
        v0 = z0 ^ z4;
        v1 = z1 ^ z5;
        v2 = z2 ^ z6;
        v3 = z3 ^ z7;
        SLICE_SRF(w0, w1, w2, w3, v0, v1, v2, v3);
        z0 = z0 ^ w0;
        z1 = z1 ^ w1;
        z2 = z2 ^ w2;
        z3 = z3 ^ w3;
        z4 = z4 ^ w0;
        z5 = z5 ^ w1;
        z6 = z6 ^ w2;
        z7 = z7 ^ w3;
        SLICE_SEI(v0, v1, v2, v3, z0, z1, z2, z3);
        SLICE_SEF(w0, w1, w2, w3, z4, z5, z6, z7);

        // ShiftColumns
        SLICE_SHC(v0);
        SLICE_SHC(v1);
        SLICE_SHC(v2);
        SLICE_SHC(v3);
        SLICE_SHC(w0);
        SLICE_SHC(w1);
        SLICE_SHC(w2);
        SLICE_SHC(w3);

        // MixRows
        SLICE_MDS(u0, u1, u2, u3, u4, u5, u6, u7,
            v0, v1, v2, v3, w0, w1, w2, w3);

        // AddRoundKey
        u0 ^= wbob_slice_rc[r][0];
        u1 ^= wbob_slice_rc[r][1];
        u2 ^= wbob_slice_rc[r][2];
        u3 ^= wbob_slice_rc[r][3];
        u4 ^= wbob_slice_rc[r][4];
        u5 ^= wbob_slice_rc[r][5];
        u6 ^= wbob_slice_rc[r][6];
        u7 ^= wbob_slice_rc[r][7];
    }

    SPLICE_8X64(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
                u0, u1, u2, u3, u4, u5, u6, u7 );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
vmovdqu (%rdi), %xmm0
movq (%rdi), %rdx
movq 0x8(%rdi), %rax
movq %rdx, %rcx
vpbroadcastq 0x8(%rdi), %xmm1
shrq $0x2, %rcx
vpinsrq $0x1, %rcx, %xmm1, %xmm2
vmovdqa 0x1b40(%rip), %ymm1     # 0x3140
movq %rax, %rcx
shrq $0x2, %rcx
vmovq %rcx, %xmm3
shrq $0x6, %rdx
movabsq $0x101010101010101, %rcx # imm = 0x101010101010101
andq %rdx, %rcx
shrq $0x5, %rax
movabsq $0x202020202020202, %rdx # imm = 0x202020202020202
andq %rax, %rdx
vmovdqu 0x10(%rdi), %ymm8
movq 0x18(%rdi), %rax
movq 0x10(%rdi), %rsi
leaq (,%rsi,4), %r9
shlq $0x3, %rax
leaq (%rsi,%rsi), %r8
vpbroadcastq 0x10(%rdi), %xmm4
vpinsrq $0x0, %r8, %xmm4, %xmm4
vpbroadcastq 0x18(%rdi), %xmm6
vpbroadcastq 0x28(%rdi), %xmm5
vpmovsxbq 0x1e73(%rip), %ymm22 # 0x34e0
shrq %rsi
vmovq %r9, %xmm9
vmovq %rsi, %xmm10
vpinsrq $0x1, %rax, %xmm6, %xmm11
vinserti128 $0x1, %xmm8, %ymm0, %ymm12
vpmovsxbq 0x1e55(%rip), %ymm15 # 0x34e4
vpermi2q %ymm12, %ymm0, %ymm15
vpsrlvq 0x1b02(%rip), %ymm15, %ymm12 # 0x31a0
vpand %ymm1, %ymm12, %ymm12
movq 0x28(%rdi), %rbx
movq 0x20(%rdi), %rsi
movabsq $0x1010101010101010, %r8 # imm = 0x1010101010101010
movq %rsi, %rax
andq %r8, %rax
vextracti128 $0x1, %ymm12, %xmm13
vpor %xmm13, %xmm12, %xmm12
vpshufd $0xee, %xmm12, %xmm13   # xmm13 = xmm12[2,3,2,3]
vpor %xmm13, %xmm12, %xmm12
vmovq %xmm12, %r10
orq %rax, %r10
vpsrlvq 0x1adf(%rip), %ymm15, %ymm12 # 0x31c0
vpand %ymm1, %ymm12, %ymm12
movq %rsi, %rax
shrq %rax
andq %r8, %rax
vextracti128 $0x1, %ymm12, %xmm13
vpor %xmm13, %xmm12, %xmm12
vpshufd $0xee, %xmm12, %xmm13   # xmm13 = xmm12[2,3,2,3]
vpor %xmm13, %xmm12, %xmm12
vmovq %xmm12, %r11
orq %rax, %r11
leaq (%rbx,%rbx), %rax
vpinsrq $0x1, %rax, %xmm5, %xmm12
movq 0x30(%rdi), %r9
vmovq %r10, %xmm13
vmovq %r11, %xmm14
movabsq $0x4040404040404040, %r10 # imm = 0x4040404040404040
movq %r9, %r11
andq %r10, %r11
orq %rcx, %r11
vpsrlvq %ymm22, %ymm8, %ymm8
vpand 0x1a9b(%rip), %ymm8, %ymm8 # 0x31e0
orq %rdx, %r11
vextracti32x4 $0x1, %ymm8, %xmm16
vporq %xmm16, %xmm8, %xmm8
vpshufd $0xee, %xmm8, %xmm16    # xmm16 = xmm8[2,3,2,3]
vporq %xmm16, %xmm8, %xmm8
vmovq %xmm8, %rax
orq %r11, %rax
shrq $0x3, %rsi
andq %r8, %rsi
shrq $0x2, %rbx
movabsq $0x2020202020202020, %rcx # imm = 0x2020202020202020
andq %rbx, %rcx
vpbroadcastq %r9, %xmm8
shrq %r9
andq %r10, %r9
orq %rcx, %r9
vpsllvq 0x1865(%rip), %xmm8, %xmm16 # 0x3000
vpsrlvq 0x1a5c(%rip), %ymm15, %ymm15 # 0x3200
vpand %ymm1, %ymm15, %ymm15
orq %rsi, %r9
vextracti32x4 $0x1, %ymm15, %xmm17
vporq %xmm17, %xmm15, %xmm15
vpshufd $0xee, %xmm15, %xmm17   # xmm17 = xmm15[2,3,2,3]
vporq %xmm17, %xmm15, %xmm15
vmovq %xmm15, %rcx
orq %r9, %rcx
movq 0x38(%rdi), %rdx
vpbroadcastq 0x18f6(%rip), %xmm15 # 0x30d0
vpbroadcastq %rdx, %xmm17
vpsllvq 0x1826(%rip), %xmm17, %xmm18 # 0x3010
vpbroadcastq 0x18e4(%rip), %xmm19 # 0x30d8
vpsrlq $0x1, %xmm0, %xmm20
vmovdqa64 0x181b(%rip), %xmm21 # 0x3020
vpandq %xmm21, %xmm20, %xmm20
vpternlogq $0xf8, %xmm1, %xmm2, %xmm20
vpmovsxbq 0x1ce5(%rip), %xmm2 # 0x3500
vpsrlvq %xmm2, %xmm0, %xmm7
vpsllvq %xmm2, %xmm0, %xmm2
vpblendd $0xc, %xmm2, %xmm7, %xmm2 # xmm2 = xmm7[0,1],xmm2[2,3]
vpandq %xmm21, %xmm2, %xmm2
vpunpcklqdq %xmm0, %xmm3, %xmm0 # xmm0 = xmm3[0],xmm0[0]
vpsllvq 0x1802(%rip), %xmm8, %xmm3 # 0x3040
vpsllvq 0x1808(%rip), %xmm17, %xmm7 # 0x3050
vpsllvq 0x180e(%rip), %xmm8, %xmm21 # 0x3060
vpbroadcastq 0x1884(%rip), %xmm23 # 0x30e0
vpsllvq 0x181b(%rip), %xmm6, %xmm6 # 0x3080
vpternlogq $0xec, %xmm1, %xmm2, %xmm0
vpternlogq $0xec, %xmm23, %xmm20, %xmm4
vpbroadcastq 0x186c(%rip), %xmm1 # 0x30e8
movq %rdi, -0x20(%rsp)
vpbroadcastq 0x20(%rdi), %xmm2
vpternlogq $0xf8, %xmm1, %xmm6, %xmm4
vpsllvq 0x17f9(%rip), %xmm2, %xmm6 # 0x3090
vpbroadcastq 0x184f(%rip), %xmm20 # 0x30f0
vpternlogq $0xec, %xmm20, %xmm4, %xmm6
vpsllvq %xmm22, %xmm5, %xmm8
vpbroadcastq 0x1841(%rip), %xmm4 # 0x30f8
vpternlogq $0xec, %xmm4, %xmm6, %xmm8
addq %rdx, %rdx
vmovq %rdx, %xmm22
vpternlogq $0xf8, %xmm15, %xmm16, %xmm8
vpsllvq 0x1798(%rip), %xmm17, %xmm16 # 0x3070
vpternlogq $0xf8, %xmm19, %xmm18, %xmm8
vpunpcklqdq %xmm9, %xmm10, %xmm6 # xmm6 = xmm10[0],xmm9[0]
vpternlogq $0xec, %xmm23, %xmm0, %xmm6
vpternlogq $0xec, %xmm1, %xmm6, %xmm11
vpsllvq 0x17a5(%rip), %xmm2, %xmm0 # 0x30a0
vpsllvq 0x17ac(%rip), %xmm5, %xmm10 # 0x30b0
vpternlogq $0xec, %xmm20, %xmm11, %xmm0
vpternlogq $0xec, %xmm4, %xmm0, %xmm10
vpternlogq $0xf8, %xmm15, %xmm3, %xmm10
vpternlogq $0xf8, %xmm19, %xmm7, %xmm10
vpunpcklqdq %xmm13, %xmm14, %xmm6 # xmm6 = xmm14[0],xmm13[0]
vpternlogq $0xf8, %xmm4, %xmm12, %xmm6
vpternlogq $0xf8, %xmm15, %xmm21, %xmm6
vpternlogq $0xf8, %xmm19, %xmm16, %xmm6
vpunpcklqdq %xmm22, %xmm17, %xmm0 # xmm0 = xmm17[0],xmm22[0]
vmovq %rcx, %xmm1
vmovq %rax, %xmm2
vpunpcklqdq %xmm2, %xmm1, %xmm5 # xmm5 = xmm1[0],xmm2[0]
vpternlogq $0xf8, %xmm19, %xmm0, %xmm5
movabsq $0x38, %rdx
vpbroadcastq 0x1798(%rip), %xmm0 # 0x3100
vpbroadcastq 0x1797(%rip), %xmm1 # 0x3108
vpxor %xmm2, %xmm2, %xmm2
vpbroadcastq 0x1792(%rip), %xmm3 # 0x3110
vpbroadcastq 0x1791(%rip), %xmm4 # 0x3118
vpextrq $0x1, %xmm8, %rax
vpextrq $0x1, %xmm6, %r11
vmovq %xmm10, %r12
vpextrq $0x1, %xmm10, %rbx
vmovq %xmm5, %rcx
vmovq %xmm6, %rdi
cmpq $0x338, %rdx            # imm = 0x338
je 0x2286
movq %rbx, %rsi
notq %rsi
vmovq %xmm8, %r8
movq %rbx, %r9
orq %r8, %r9
xorq %r12, %r9
movq %r9, %r10
andq %rax, %r10
xorq %rsi, %r10
movq %r10, %r14
movq %rbx, %r10
andq %rax, %r10
orq %r12, %rbx
xorq %r10, %rbx
andq %r8, %rbx
xorq %rsi, %rbx
xorq %r8, %r10
xorq %rsi, %rax
movq %r14, %r8
movq %r14, -0x28(%rsp)
xorq %r10, %r8
andq %r9, %r8
orq %r8, %r10
xorq %rax, %r8
orq %r12, %rsi
xorq %r10, %rsi
vpextrq $0x1, %xmm5, %r9
movq %r11, %rax
andq %r9, %rax
xorq %rdi, %rax
movq %rcx, %r10
xorq %r11, %r10
notq %r10
movq %rax, %rdi
orq %r10, %rdi
xorq %r11, %rdi
movq %rax, %r12
andq %r9, %r12
xorq %r10, %r12
movq %rdi, %r11
orq %rcx, %r11
xorq %r12, %r11
xorq %r12, %r9
xorq %rcx, %r12
xorq %r9, %rax
orq %rax, %r12
xorq %r9, %r12
movq %rdx, -0x30(%rsp)
movq %r12, %rdx
andq %r11, %rdx
orq %rdi, %rdx
xorq %rax, %rdx
movq %rbx, %r15
xorq %rdi, %r15
movq %rsi, %rbp
xorq %r11, %rbp
movq %r8, %r9
xorq %r12, %r9
movq %rdx, %r10
xorq %r14, %r10
movq %r15, %rcx
notq %rcx
movq %r9, %rax
andq %r10, %rax
movq %rax, %r13
xorq %r15, %r13
orq %rbp, %r13
movq %r10, %r14
orq %rcx, %r14
xorq %r14, %r13
xorq %r9, %r14
notq %r14
xorq %rbp, %r10
orq %r14, %rbp
xorq %rbp, %rax
xorq %rcx, %rbp
orq %rax, %r15
xorq %r10, %r15
movq %r15, %r9
notq %r9
orq %r9, %rbp
xorq %r14, %rbp
movq %r15, %r14
xorq %rbx, %r14
xorq %r9, %rbx
xorq %rbp, %rsi
xorq %r13, %r8
movq -0x28(%rsp), %r10
xorq %rax, %r10
xorq %r12, %r13
xorq %rdx, %rax
movq %rsi, %rcx
orq %rbx, %rcx
xorq %r10, %rcx
movq %rcx, %r12
andq %r8, %r12
xorq %r14, %r12
movq %rbx, %rdx
andq %r8, %rdx
orq %r10, %rbx
xorq %rdx, %rbx
andq %rsi, %rbx
xorq %rsi, %rdx
movq %r12, %rsi
xorq %rdx, %rsi
andq %rcx, %rsi
xorq %r14, %r8
orq %rsi, %rdx
xorq %r8, %rsi
movq %rsi, -0x8(%rsp)
xorq %r14, %rbx
movq %r10, %rsi
orq %r14, %rsi
xorq %rdi, %r9
xorq %rdx, %rsi
movq %r9, %r8
andq %r13, %r8
xorq %r11, %r8
xorq %rbp, %r8
xorq %rdi, %r15
movq %r15, %rcx
xorq %rax, %rcx
movq %r8, %rbp
orq %rcx, %rbp
xorq %r9, %rbp
movq %r8, %rdi
andq %r13, %rdi
xorq %rdi, %rcx
orq %rbp, %rax
xorq %rcx, %rax
xorq %r13, %rcx
xorq %r15, %rdi
xorq %rcx, %r8
orq %r8, %rdi
xorq %rcx, %rdi
movq %rdi, %rcx
andq %rax, %rcx
orq %rbp, %rcx
xorq %r8, %rcx
movq %rbx, %rdx
movabsq $0xff00ff00ff00ff, %r11 # imm = 0xFF00FF00FF00FF
andq %r11, %rdx
leaq (%rbx,%rbx), %r8
movabsq $-0x1ff01ff01ff0200, %r10 # imm = 0xFE00FE00FE00FE00
andq %r10, %r8
orq %rdx, %r8
shrq $0x7, %rbx
movabsq $0x100010001000100, %r10 # imm = 0x100010001000100
andq %r10, %rbx
orq %r8, %rbx
movq %rbx, %rdx
movabsq $0xffff0000ffff, %r9    # imm = 0xFFFF0000FFFF
andq %r9, %rdx
shlq $0x2, %rbx
movabsq $-0x303ffff03040000, %r14 # imm = 0xFCFC0000FCFC0000
andq %r14, %rbx
movq %r14, %r11
orq %rdx, %rbx
shrq $0x6, %r8
movabsq $0x303000003030000, %rdx # imm = 0x303000003030000
andq %rdx, %r8
orq %rbx, %r8
movl %r8d, %edx
shlq $0x4, %r8
movabsq $-0xf0f0f1000000000, %r15 # imm = 0xF0F0F0F000000000
andq %r15, %r8
shrq $0x4, %rbx
movabsq $0xf0f0f0f00000000, %r13 # imm = 0xF0F0F0F00000000
andq %r13, %rbx
orq %rdx, %rbx
orq %r8, %rbx
movq %rsi, %rdx
movabsq $0xff00ff00ff00ff, %r13 # imm = 0xFF00FF00FF00FF
andq %r13, %rsi
movq %rsi, -0x10(%rsp)
leaq (%rdx,%rdx), %r9
movabsq $-0x1ff01ff01ff0200, %r14 # imm = 0xFE00FE00FE00FE00
andq %r14, %r9
movq %r9, -0x18(%rsp)
shrq $0x7, %rdx
andq %r10, %rdx
movq %rdx, -0x28(%rsp)
movq %r12, %rdx
andq %r13, %rdx
leaq (%r12,%r12), %r9
andq %r14, %r9
orq %rdx, %r9
shrq $0x7, %r12
andq %r10, %r12
orq %r9, %r12
movq %r12, %rdx
movabsq $0xffff0000ffff, %r10   # imm = 0xFFFF0000FFFF
andq %r10, %rdx
shlq $0x2, %r12
movq %r11, %rsi
andq %r11, %r12
orq %rdx, %r12
shrq $0x6, %r9
movabsq $0x303000003030000, %r15 # imm = 0x303000003030000
andq %r15, %r9
orq %r12, %r9
movl %r9d, %edx
shlq $0x4, %r9
movabsq $-0xf0f0f1000000000, %r8 # imm = 0xF0F0F0F000000000
andq %r8, %r9
shrq $0x4, %r12
movabsq $0xf0f0f0f00000000, %r11 # imm = 0xF0F0F0F00000000
andq %r11, %r12
orq %rdx, %r12
orq %r9, %r12
movq %rbp, %rdx
andq %r13, %rdx
leaq (,%rbp,2), %r9
andq %r14, %r9
orq %rdx, %r9
shrq $0x7, %rbp
movabsq $0x100010001000100, %rdx # imm = 0x100010001000100
andq %rdx, %rbp
orq %r9, %rbp
movq %rbp, %rdx
andq %r10, %rdx
shlq $0x2, %rbp
andq %rsi, %rbp
orq %rdx, %rbp
shrq $0x6, %r9
andq %r15, %r9
orq %rbp, %r9
movl %r9d, %edx
shlq $0x4, %r9
andq %r8, %r9
shrq $0x4, %rbp
andq %r11, %rbp
orq %rdx, %rbp
orq %r9, %rbp
movq %rax, %rdx
andq %r13, %rdx
leaq (%rax,%rax), %r9
andq %r14, %r9
orq %rdx, %r9
shrq $0x7, %rax
movabsq $0x100010001000100, %rdx # imm = 0x100010001000100
andq %rdx, %rax
orq %r9, %rax
movq %rax, %rdx
andq %r10, %rdx
shlq $0x2, %rax
movabsq $-0x303ffff03040000, %rsi # imm = 0xFCFC0000FCFC0000
andq %rsi, %rax
orq %rdx, %rax
shrq $0x6, %r9
andq %r15, %r9
orq %rax, %r9
movl %r9d, %edx
shlq $0x4, %r9
andq %r8, %r9
shrq $0x4, %rax
andq %r11, %rax
orq %rdx, %rax
orq %r9, %rax
movq %rdi, %rdx
andq %r13, %rdx
leaq (%rdi,%rdi), %r9
andq %r14, %r9
orq %rdx, %r9
shrq $0x7, %rdi
movabsq $0x100010001000100, %rdx # imm = 0x100010001000100
andq %rdx, %rdi
orq %r9, %rdi
movq %rdi, %rdx
andq %r10, %rdx
shlq $0x2, %rdi
andq %rsi, %rdi
orq %rdx, %rdi
shrq $0x6, %r9
andq %r15, %r9
orq %rdi, %r9
movl %r9d, %edx
shlq $0x4, %r9
andq %r8, %r9
shrq $0x4, %rdi
andq %r11, %rdi
orq %rdx, %rdi
orq %r9, %rdi
movq %rcx, %rdx
andq %r13, %rdx
leaq (%rcx,%rcx), %r9
andq %r14, %r9
orq %rdx, %r9
shrq $0x7, %rcx
movabsq $0x100010001000100, %rdx # imm = 0x100010001000100
andq %rdx, %rcx
orq %r9, %rcx
movq %rcx, %rdx
andq %r10, %rdx
shlq $0x2, %rcx
andq %rsi, %rcx
orq %rdx, %rcx
shrq $0x6, %r9
andq %r15, %r9
orq %rcx, %r9
movl %r9d, %edx
shrq $0x4, %rcx
andq %r11, %rcx
orq %rdx, %rcx
movq -0x8(%rsp), %rsi
movq %rsi, %rdx
andq %r13, %rdx
shlq $0x4, %r9
andq %r8, %r9
orq %r9, %rcx
leaq (%rsi,%rsi), %r9
andq %r14, %r9
shrq $0x7, %rsi
movabsq $0x100010001000100, %r8 # imm = 0x100010001000100
andq %r8, %rsi
vmovq %r9, %xmm5
rorxq $0x30, %rbx, %r9
vmovq -0x18(%rsp), %xmm6
rorxq $0x18, %rbx, %r11
vmovq %rdx, %xmm7
rorxq $0x10, %rbx, %r10
vpunpcklqdq %xmm5, %xmm6, %xmm5 # xmm5 = xmm6[0],xmm5[0]
vmovq -0x10(%rsp), %xmm6
vpunpcklqdq %xmm7, %xmm6, %xmm6 # xmm6 = xmm6[0],xmm7[0]
vpor %xmm6, %xmm5, %xmm5
vmovq %rsi, %xmm6
vmovq -0x28(%rsp), %xmm7
vpunpcklqdq %xmm6, %xmm7, %xmm6 # xmm6 = xmm7[0],xmm6[0]
vpor %xmm6, %xmm5, %xmm6
vpblendw $0xaa, %xmm2, %xmm6, %xmm7 # xmm7 = xmm6[0],xmm2[1],xmm6[2],xmm2[3],xmm6[4],xmm2[5],xmm6[6],xmm2[7]
vpsllq $0x2, %xmm6, %xmm6
vpternlogq $0xec, %xmm0, %xmm7, %xmm6
vpsrlq $0x6, %xmm5, %xmm5
vpternlogq $0xec, %xmm1, %xmm6, %xmm5
vpblendd $0xa, %xmm2, %xmm5, %xmm7 # xmm7 = xmm5[0],xmm2[1],xmm5[2],xmm2[3]
vpsllq $0x4, %xmm5, %xmm5
vpsrlq $0x4, %xmm6, %xmm14
vpternlogq $0xec, %xmm3, %xmm7, %xmm14
vpternlogq $0xf8, %xmm4, %xmm5, %xmm14
vprolq $0x8, %xmm14, %xmm5
vprolq $0x18, %xmm14, %xmm6
rorxq $0x38, %rcx, %rsi
vmovq %xmm14, %r8
movq -0x30(%rsp), %rdx
leaq 0x1635(%rip), %r14      # 0x3510
xorq -0x30(%rdx,%r14), %r8
xorq %r10, %r8
vpextrq $0x1, %xmm5, %rdx
vpextrq $0x1, %xmm6, %r13
xorq %rdx, %r13
vpextrq $0x1, %xmm14, %rdx
movq -0x30(%rsp), %r10
xorq -0x28(%r10,%r14), %rdx
movq %r14, %r15
xorq %r9, %r13
xorq %rdx, %r13
vprolq $0x28, %xmm14, %xmm7
rorxq $0x30, %rcx, %r9
rorxq $0x28, %rcx, %rdx
xorq %rsi, %rdx
rorxq $0x20, %rcx, %rsi
vmovq %rsi, %xmm8
vmovq %r9, %xmm10
vpextrq $0x1, %xmm7, %rsi
vmovq %rax, %xmm9
vmovq %rdi, %xmm11
vpunpcklqdq %xmm9, %xmm11, %xmm24 # xmm24 = xmm11[0],xmm9[0]
vprolq $0x20, %xmm24, %xmm9
vprolq $0x38, %xmm24, %xmm22
vpxorq %xmm9, %xmm22, %xmm9
vpshufd $0xee, %xmm9, %xmm11    # xmm11 = xmm9[2,3,2,3]
vpinsrq $0x1, %r11, %xmm11, %xmm11
rorxq $0x20, %rbx, %r9
xorq %rsi, %r11
xorq %r13, %r11
rorxq $0x8, %rbx, %r10
vprolq $0x10, %xmm14, %xmm27
vmovq %r11, %xmm12
rorxq $0x38, %r12, %r11
vmovq %r8, %xmm13
rorxq $0x28, %r12, %r14
xorq %r12, %r11
xorq %r9, %r11
rorxq $0x18, %r12, %r8
xorq %r14, %r11
vmovq %xmm27, %r9
movq -0x30(%rsp), %r14
movq %r15, %r13
xorq -0x20(%r14,%r15), %r9
xorq %r10, %r11
xorq %r8, %r11
xorq %r9, %r11
rorxq $0x38, %rbx, %r14
vmovq %r11, %xmm16
rorxq $0x28, %rbx, %r11
vprolq $0x20, %xmm14, %xmm26
vmovq %rbx, %xmm19
rorxq $0x10, %r12, %r9
vpinsrq $0x1, %r14, %xmm7, %xmm15
rorxq $0x38, %rbp, %r15
vprolq $0x30, %xmm14, %xmm18
vprolq $0x38, %xmm14, %xmm14
vprolq $0x10, %xmm24, %xmm23
vprolq $0x28, %xmm24, %xmm25
vpxorq %xmm23, %xmm25, %xmm17
vpshufd $0xee, %xmm18, %xmm20   # xmm20 = xmm18[2,3,2,3]
vpinsrq $0x1, %r11, %xmm20, %xmm20
vpinsrq $0x1, %r10, %xmm17, %xmm21
vmovq %xmm26, %r10
vpextrq $0x1, %xmm9, %r11
xorq %r10, %r11
vmovq %xmm17, %r10
xorq %r10, %r11
vmovq %xmm14, %r10
xorq %r11, %r10
vmovq %xmm9, %rbx
xorq %r10, %rbx
vpextrq $0x1, %xmm27, %r10
movq -0x30(%rsp), %r11
movq %r13, %r14
xorq -0x18(%r11,%r13), %r10
xorq %r10, %rbx
rorxq $0x28, %rbp, %r10
xorq %rbp, %r15
xorq %r10, %r15
rorxq $0x18, %rbp, %r13
xorq %r13, %r15
xorq %r9, %r15
rorxq $0x8, %rbp, %r11
vprolq $0x8, %xmm24, %xmm29
vprolq $0x18, %xmm24, %xmm30
xorq %r11, %r15
xorq %rsi, %r15
vpextrq $0x1, %xmm29, %rsi
xorq %rbx, %r15
movq -0x30(%rsp), %r9
xorq -0x10(%r9,%r14), %rsi
vpextrq $0x1, %xmm30, %r9
xorq %rsi, %r9
vpextrq $0x1, %xmm22, %rsi
xorq %r9, %rsi
vpextrq $0x1, %xmm26, %r9
xorq %r9, %rsi
vpextrq $0x1, %xmm14, %r9
xorq %rax, %r9
rorxq $0x30, %r12, %r10
xorq %rsi, %r9
rorxq $0x10, %rbp, %rsi
xorq %r8, %r10
rorxq $0x18, %rcx, %rax
xorq %rsi, %r10
vpextrq $0x1, %xmm25, %r8
xorq %r8, %r10
xorq %r9, %r10
rorxq $0x10, %rcx, %r9
vmovq %r15, %xmm26
rorxq $0x8, %rcx, %rsi
vmovq %rsi, %xmm27
vmovq %rax, %xmm28
vpunpcklqdq %xmm27, %xmm28, %xmm27 # xmm27 = xmm28[0],xmm27[0]
vpunpcklqdq %xmm8, %xmm10, %xmm8 # xmm8 = xmm10[0],xmm8[0]
vpxorq %xmm8, %xmm27, %xmm27
vprolq $0x30, %xmm24, %xmm31
vpinsrq $0x1, %r9, %xmm9, %xmm8
vpbroadcastq %r9, %xmm10
vmovq %r10, %xmm24
vpinsrq $0x1, %r9, %xmm27, %xmm28
vpextrq $0x1, %xmm31, %r9
vmovq %xmm30, %r10
xorq %r10, %r9
vmovq %xmm25, %r10
xorq %r10, %r9
vmovq %xmm22, %r10
xorq %r9, %r10
vmovq %xmm29, %r9
movq -0x30(%rsp), %rbx
xorq -0x8(%rbx,%r14), %r9
xorq %r9, %r10
rorxq $0x30, %rbp, %r9
xorq %rdi, %r9
rorxq $0x20, %r12, %rdi
xorq %rdi, %r9
xorq %r13, %r9
rorxq $0x8, %r12, %rdi
vmovq %rdi, %xmm22
xorq %rdi, %r9
rorxq $0x20, %rbp, %rdi
xorq %r10, %r9
vmovq %xmm31, %r10
xorq %rdi, %r10
xorq %r11, %r10
xorq %r8, %r10
xorq %rcx, %r10
vpextrq $0x1, %xmm23, %rcx
movq -0x30(%rsp), %rdi
xorq (%rdi,%r14), %rcx
xorq %rcx, %r10
xorq %rax, %rdx
xorq %r10, %rdx
vmovq %rdx, %xmm23
movq -0x30(%rsp), %rdx
vmovq %r9, %xmm25
vpinsrq $0x0, %rsi, %xmm27, %xmm29
vpunpcklqdq %xmm19, %xmm16, %xmm16 # xmm16 = xmm16[0],xmm19[0]
vmovq -0x38(%rdx,%r14), %xmm19
vpunpcklqdq %xmm19, %xmm22, %xmm19 # xmm19 = xmm22[0],xmm19[0]
vpternlogq $0x96, %xmm19, %xmm16, %xmm15
vpunpcklqdq %xmm12, %xmm13, %xmm12 # xmm12 = xmm13[0],xmm12[0]
vpunpcklqdq %xmm18, %xmm7, %xmm7 # xmm7 = xmm7[0],xmm18[0]
vpternlogq $0x96, %xmm20, %xmm15, %xmm11
vpunpcklqdq %xmm17, %xmm27, %xmm13 # xmm13 = xmm27[0],xmm17[0]
vpternlogq $0x96, %xmm21, %xmm11, %xmm13
vpblendd $0xc, %xmm9, %xmm5, %xmm5 # xmm5 = xmm5[0,1],xmm9[2,3]
vpunpcklqdq %xmm17, %xmm6, %xmm6 # xmm6 = xmm6[0],xmm17[0]
vpternlogq $0x96, %xmm5, %xmm12, %xmm6
vpternlogq $0x96, %xmm7, %xmm6, %xmm8
vpternlogq $0x96, %xmm14, %xmm27, %xmm8
vpternlogq $0x96, %xmm13, %xmm9, %xmm10
vpunpcklqdq %xmm26, %xmm24, %xmm5 # xmm5 = xmm24[0],xmm26[0]
vpunpcklqdq %xmm27, %xmm9, %xmm6 # xmm6 = xmm9[0],xmm27[0]
vpxor %xmm6, %xmm5, %xmm5
vpshufd $0xee, %xmm27, %xmm6    # xmm6 = xmm27[2,3,2,3]
vpternlogq $0x96, %xmm28, %xmm5, %xmm6
vpunpcklqdq %xmm25, %xmm23, %xmm5 # xmm5 = xmm23[0],xmm25[0]
vpxorq %xmm29, %xmm5, %xmm5
addq $0x40, %rdx
jmp 0x1987
vinserti128 $0x1, %xmm5, %ymm5, %ymm3
vpmovsxbq 0x1253(%rip), %ymm0 # 0x34e8
vpsllvq %ymm0, %ymm8, %ymm2
vpbroadcastq %xmm8, %ymm1
vpsrlvq %ymm0, %ymm1, %ymm0
vpblendd $0xf0, %ymm0, %ymm2, %ymm4 # ymm4 = ymm2[0,1,2,3],ymm0[4,5,6,7]
vpbroadcastq %xmm10, %ymm2
vpsllvq 0xdd8(%rip), %xmm2, %xmm9 # 0x3090
vpbroadcastq %xmm6, %ymm0
vpsllvq 0xf7a(%rip), %ymm0, %ymm11 # 0x3240
vpermq $0x11, %ymm5, %ymm0     # ymm0 = ymm5[1,0,1,0]
vpsllvq 0xf8b(%rip), %ymm0, %ymm12 # 0x3260
leaq (,%rax,4), %rdx
vpsllvq 0xf9a(%rip), %ymm3, %ymm13 # 0x3280
vpshufd $0xee, %xmm10, %xmm3    # xmm3 = xmm10[2,3,2,3]
vpmovsxbq 0x11f6(%rip), %ymm16 # 0x34ec
vpsrlvq %xmm16, %xmm3, %xmm3
vpshufd $0xee, %xmm6, %xmm7     # xmm7 = xmm6[2,3,2,3]
vpsllvq 0xdb6(%rip), %xmm7, %xmm15 # 0x30c0
addq %r12, %r12
leaq (,%r11,4), %rsi
shrq $0x3, %rbx
shrq %rax
addq %r11, %r11
vpalignr $0x8, %xmm10, %xmm3, %xmm7 # xmm7 = xmm10[8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7]
vpshufd $0xee, %xmm3, %xmm3     # xmm3 = xmm3[2,3,2,3]
vinserti128 $0x1, %xmm3, %ymm7, %ymm7
vmovq %rdx, %xmm3
vpunpcklqdq %xmm8, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm8[0]
vpbroadcastq %r12, %ymm14
vpblendd $0x30, %ymm14, %ymm3, %ymm3 # ymm3 = ymm3[0,1,2,3],ymm14[4,5],ymm3[6,7]
vpbroadcastq %rax, %ymm14
vpblendd $0xc0, %ymm14, %ymm3, %ymm14 # ymm14 = ymm3[0,1,2,3,4,5],ymm14[6,7]
vpbroadcastq %rsi, %ymm3
vpblendd $0x30, %ymm3, %ymm15, %ymm3 # ymm3 = ymm15[0,1,2,3],ymm3[4,5],ymm15[6,7]
vpmovsxbq 0x1189(%rip), %ymm15 # 0x34f0
vpermi2q %ymm10, %ymm3, %ymm15
vpshufd $0xee, %xmm8, %xmm3     # xmm3 = xmm8[2,3,2,3]
vinserti128 $0x1, %xmm3, %ymm9, %ymm3
vpbroadcastq %r11, %ymm9
vpblendd $0xc0, %ymm9, %ymm3, %ymm9 # ymm9 = ymm3[0,1,2,3,4,5],ymm9[6,7]
vpbroadcastq %rbx, %ymm3
vpbroadcastq 0xd8b(%rip), %ymm17 # 0x3120
vpand 0xf43(%rip), %ymm13, %ymm13 # 0x32e0
vpternlogq $0xf8, 0xf58(%rip), %ymm12, %ymm13 # 0x3300
vpternlogq $0xf8, 0xd45(%rip){1to4}, %ymm11, %ymm13 # 0x30f8
vpternlogq $0xf8, 0xf62(%rip), %ymm15, %ymm13 # 0x3320
vpternlogq $0xf8, 0xf77(%rip), %ymm9, %ymm13 # 0x3340
vpternlogq $0xf8, 0xf8c(%rip), %ymm14, %ymm13 # 0x3360
vpblendd $0xc0, %ymm3, %ymm7, %ymm3 # ymm3 = ymm7[0,1,2,3,4,5],ymm3[6,7]
vpternlogq $0xf8, 0xf9b(%rip), %ymm4, %ymm13 # 0x3380
vpternlogq $0xf8, %ymm17, %ymm3, %ymm13
movq -0x20(%rsp), %rax
vmovdqu %ymm13, (%rax)
vpermq $0x55, %ymm6, %ymm3     # ymm3 = ymm6[1,1,1,1]
vpermq $0x55, %ymm10, %ymm4    # ymm4 = ymm10[1,1,1,1]
vpsrlvq 0xf96(%rip), %ymm4, %ymm4 # 0x33a0
vpmovsxbq 0x10e1(%rip), %ymm7 # 0x34f4
vpsrlvq %ymm16, %ymm2, %ymm9
vpsllvq %ymm7, %ymm6, %ymm2
vpsrlvq %ymm7, %ymm3, %ymm3
vpblendd $0x3, %ymm2, %ymm3, %ymm2 # ymm2 = ymm2[0,1],ymm3[2,3,4,5,6,7]
shlq $0x3, %rcx
vpalignr $0x8, %xmm5, %xmm6, %xmm3 # xmm3 = xmm5[8,9,10,11,12,13,14,15],xmm6[0,1,2,3,4,5,6,7]
vpaddq %xmm3, %xmm3, %xmm7
vpsrlq $0x1, %xmm3, %xmm3
shrq $0x2, %rdi
vpsrlvq 0xf97(%rip), %ymm1, %ymm1 # 0x33e0
vpermq $0x55, %ymm8, %ymm8     # ymm8 = ymm8[1,1,1,1]
vpsrlvq 0xfa8(%rip), %ymm8, %ymm8 # 0x3400
vpalignr $0x8, %xmm6, %xmm7, %xmm7 # xmm7 = xmm6[8,9,10,11,12,13,14,15],xmm7[0,1,2,3,4,5,6,7]
vpshufd $0xee, %xmm3, %xmm3     # xmm3 = xmm3[2,3,2,3]
vinserti128 $0x1, %xmm3, %ymm7, %ymm3
vpbroadcastq %rdi, %ymm7
vpblendd $0xc0, %ymm7, %ymm3, %ymm3 # ymm3 = ymm3[0,1,2,3,4,5],ymm7[6,7]
vpermq $0x41, %ymm5, %ymm5     # ymm5 = ymm5[1,0,0,1]
vpmovsxbq 0x1074(%rip), %ymm7 # 0x34f8
vpsllvq %ymm7, %ymm5, %ymm10
vpsrlvq %ymm7, %ymm5, %ymm5
vpblendd $0xc0, %ymm5, %ymm10, %ymm5 # ymm5 = ymm10[0,1,2,3,4,5],ymm5[6,7]
vpand 0xfa4(%rip), %ymm5, %ymm5 # 0x3440
vmovq %rcx, %xmm7
vpmovsxbq 0x1052(%rip), %ymm10 # 0x34fc
vpblendd $0x3, %ymm7, %ymm0, %ymm0 # ymm0 = ymm7[0,1],ymm0[2,3,4,5,6,7]
vpermi2q %ymm6, %ymm0, %ymm10
vpternlogq $0xec, 0xfbf(%rip), %ymm5, %ymm10 # 0x3480
vpternlogq $0xf8, 0xfd4(%rip), %ymm3, %ymm10 # 0x34a0
vpternlogq $0xf8, 0xfe9(%rip), %ymm2, %ymm10 # 0x34c0
vpternlogq $0xf8, 0xc06(%rip){1to4}, %ymm9, %ymm10 # 0x30e8
vpternlogq $0xf8, 0xbf3(%rip){1to4}, %ymm8, %ymm10 # 0x30e0
vpternlogq $0xf8, 0xc30(%rip){1to4}, %ymm1, %ymm10 # 0x3128
vpternlogq $0xf8, %ymm17, %ymm4, %ymm10
vmovdqu %ymm10, 0x20(%rax)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
vzeroupper
retq
nop