// File: /workspace/github_c_makefile_star2_O2/mjosaarinen[P]brutus/crypto_aead/oceankeyakv2/KnightsLanding/KeccakP-1600-AVX512.c
// Function: KeccakP1600_12rounds_FastLoop_Absorb
size_t KeccakP1600_12rounds_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen)
{
    size_t originalDataByteLen = dataByteLen;

	if (laneCount == 21) {
	    KeccakP_DeclareVars;
	    #if !defined(KeccakP1600_fullUnrolling) && (KeccakP1600_unrolling < 12)
	    unsigned int i;
	    #endif
	    UINT64 *stateAsLanes = (UINT64*)state;
	    UINT64 *inDataAsLanes = (UINT64*)data;

	    copyFromState(stateAsLanes);
	    while(dataByteLen >= 21*8) {
		    Baeiou = XOR(Baeiou, LOAD_Plane(inDataAsLanes+ 0));
		    Gaeiou = XOR(Gaeiou, LOAD_Plane(inDataAsLanes+ 5));
		    Kaeiou = XOR(Kaeiou, LOAD_Plane(inDataAsLanes+10));
		    Maeiou = XOR(Maeiou, LOAD_Plane(inDataAsLanes+15));
		    Saeiou = XOR(Saeiou, LOAD_Lane(inDataAsLanes+20));
	        rounds12;
	        inDataAsLanes += 21;
	        dataByteLen -= 21*8;
	    }
	    copyToState(stateAsLanes);
	}
	else {
	    while(dataByteLen >= laneCount*8) {
			KeccakP1600_AddBytes(state, data, 0, laneCount*8);
	        KeccakP1600_Permute_24rounds(state);
	        data += laneCount*8;
	        dataByteLen -= laneCount*8;
	    }
	}
    return originalDataByteLen - dataByteLen;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rcx, %rbx
movq %rdx, %r15
movq %rdi, %r14
cmpl $0x15, %esi
jne 0x9292
movb $0x1f, %dl
kmovd %edx, %k1
vmovdqu64 (%r14), %zmm26 {%k1} {z}
leaq 0x28(%r14), %rax
vmovdqu64 0x28(%r14), %zmm25 {%k1} {z}
leaq 0x50(%r14), %rcx
vmovdqu64 0x50(%r14), %zmm23 {%k1} {z}
vmovdqu64 0x78(%r14), %zmm24 {%k1} {z}
vmovdqu64 0xa0(%r14), %zmm22 {%k1} {z}
leaq 0x78(%r14), %rsi
movq 0x2cc0f(%rip), %rdi     # 0x34ff8
vmovq 0x60(%rdi), %xmm0
vmovq 0x68(%rdi), %xmm1
vmovq 0x70(%rdi), %xmm2
vmovq 0x78(%rdi), %xmm3
vmovq 0x80(%rdi), %xmm4
vpmovsxbq 0x26e31(%rip), %zmm5 # 0x2f240
vpmovsxbq 0x26e2f(%rip), %zmm6 # 0x2f248
vpmovsxbq 0x26e2d(%rip), %zmm7 # 0x2f250
vpmovsxbq 0x26e2b(%rip), %zmm8 # 0x2f258
vpmovsxbq 0x26e29(%rip), %zmm9 # 0x2f260
vpmovsxbq 0x26e27(%rip), %zmm10 # 0x2f268
vpmovsxbq 0x26e25(%rip), %zmm11 # 0x2f270
vpmovsxbq 0x26e23(%rip), %zmm12 # 0x2f278
vpmovsxbq 0x26e21(%rip), %zmm13 # 0x2f280
vpmovsxbq 0x26e1f(%rip), %zmm14 # 0x2f288
vpmovsxbq 0x26e1d(%rip), %zmm15 # 0x2f290
vpmovsxbq 0x26e1b(%rip), %zmm16 # 0x2f298
leaq 0xa0(%r14), %r8
vpmovsxbq 0x26e12(%rip), %zmm17 # 0x2f2a0
vpmovsxbq 0x26e10(%rip), %zmm18 # 0x2f2a8
movb $0x10, %r10b
vpmovsxbq 0x26e0b(%rip), %zmm19 # 0x2f2b0
vpmovsxbq 0x26e09(%rip), %zmm20 # 0x2f2b8
vpmovsxbq 0x26e07(%rip), %zmm21 # 0x2f2c0
movq %rbx, %r9
cmpq $0xa8, %r9
jb 0x925b
kmovd %edx, %k1
vmovdqu64 (%r15), %zmm27 {%k1} {z}
vpxorq %zmm26, %zmm27, %zmm26
vmovdqu64 0x28(%r15), %zmm27 {%k1} {z}
vmovdqu64 0x50(%r15), %zmm28 {%k1} {z}
vpxorq %zmm25, %zmm27, %zmm25
vpxorq %zmm23, %zmm28, %zmm23
vmovdqu64 0x78(%r15), %zmm27 {%k1} {z}
vmovq 0xa0(%r15), %xmm28
vpxorq %zmm24, %zmm27, %zmm24
vpxorq %zmm22, %zmm28, %zmm22
vmovdqa64 %zmm26, %zmm27
vpternlogq $0x96, %zmm23, %zmm25, %zmm27
vpternlogq $0x96, %zmm22, %zmm24, %zmm27
vpermq %zmm27, %zmm5, %zmm28
vpermq %zmm27, %zmm6, %zmm27
vprolq $0x1, %zmm27, %zmm27
vpternlogq $0x96, %zmm28, %zmm27, %zmm26
vpternlogq $0x96, %zmm28, %zmm27, %zmm25
vpternlogq $0x96, %zmm28, %zmm27, %zmm23
vpternlogq $0x96, %zmm28, %zmm27, %zmm24
vpternlogq $0x96, %zmm28, %zmm27, %zmm22
vprolvq %zmm7, %zmm26, %zmm26
vprolvq %zmm8, %zmm25, %zmm25
vprolvq %zmm9, %zmm23, %zmm23
vprolvq %zmm10, %zmm24, %zmm24
vprolvq %zmm11, %zmm22, %zmm22
vpermq %zmm26, %zmm12, %zmm26
vpermq %zmm25, %zmm13, %zmm25
vpermq %zmm23, %zmm14, %zmm23
vpermq %zmm24, %zmm15, %zmm24
vpermq %zmm22, %zmm16, %zmm22
vmovdqa64 %zmm26, %zmm27
vpternlogq $0xd2, %zmm23, %zmm25, %zmm27
vpxorq %zmm27, %zmm0, %zmm27
vmovdqa64 %zmm25, %zmm28
vpternlogq $0xd2, %zmm24, %zmm23, %zmm28
vpternlogq $0xd2, %zmm22, %zmm24, %zmm23
vpternlogq $0xd2, %zmm26, %zmm22, %zmm24
vpternlogq $0xd2, %zmm25, %zmm26, %zmm22
vpunpcklqdq %zmm28, %zmm27, %zmm25 # zmm25 = zmm27[0],zmm28[0],zmm27[2],zmm28[2],zmm27[4],zmm28[4],zmm27[6],zmm28[6]
vpunpcklqdq %zmm24, %zmm23, %zmm26 # zmm26 = zmm23[0],zmm24[0],zmm23[2],zmm24[2],zmm23[4],zmm24[4],zmm23[6],zmm24[6]
vpermt2q %zmm22, %zmm17, %zmm25
vmovdqa64 %zmm25, %zmm29
vpermt2q %zmm26, %zmm18, %zmm29
kmovd %r10d, %k1
vmovdqa64 %zmm22, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm27, %zmm27 # zmm27 = zmm27[1],zmm28[1],zmm27[3],zmm28[3],zmm27[5],zmm28[5],zmm27[7],zmm28[7]
vpunpckhqdq %zmm24, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm24[1],zmm23[3],zmm24[3],zmm23[5],zmm24[5],zmm23[7],zmm24[7]
vpermt2q %zmm22, %zmm19, %zmm27
vmovdqa64 %zmm25, %zmm22
vpermt2q %zmm26, %zmm20, %zmm22
vmovdqa64 %zmm27, %zmm24
vpermt2q %zmm23, %zmm20, %zmm24
vpermt2q %zmm26, %zmm21, %zmm25
vpermt2q %zmm23, %zmm21, %zmm27
vmovdqa64 %zmm22, %zmm23
vpternlogq $0x96, %zmm25, %zmm24, %zmm23
vpternlogq $0x96, %zmm29, %zmm27, %zmm23
vpermq %zmm23, %zmm5, %zmm26
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm26, %zmm23, %zmm22
vpternlogq $0x96, %zmm26, %zmm23, %zmm24
vpternlogq $0x96, %zmm26, %zmm23, %zmm25
vpternlogq $0x96, %zmm26, %zmm23, %zmm27
vpternlogq $0x96, %zmm26, %zmm23, %zmm29
vprolvq %zmm7, %zmm22, %zmm22
vprolvq %zmm8, %zmm24, %zmm23
vprolvq %zmm9, %zmm25, %zmm24
vprolvq %zmm10, %zmm27, %zmm25
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm23, %zmm13, %zmm23
vpermq %zmm24, %zmm14, %zmm24
vpermq %zmm25, %zmm15, %zmm25
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm27
vpternlogq $0xd2, %zmm24, %zmm23, %zmm27
vpxorq %zmm27, %zmm1, %zmm27
vmovdqa64 %zmm23, %zmm28
vpternlogq $0xd2, %zmm25, %zmm24, %zmm28
vpternlogq $0xd2, %zmm26, %zmm25, %zmm24
vpternlogq $0xd2, %zmm22, %zmm26, %zmm25
vpternlogq $0xd2, %zmm23, %zmm22, %zmm26
vpunpcklqdq %zmm28, %zmm27, %zmm22 # zmm22 = zmm27[0],zmm28[0],zmm27[2],zmm28[2],zmm27[4],zmm28[4],zmm27[6],zmm28[6]
vpunpcklqdq %zmm25, %zmm24, %zmm23 # zmm23 = zmm24[0],zmm25[0],zmm24[2],zmm25[2],zmm24[4],zmm25[4],zmm24[6],zmm25[6]
vpermt2q %zmm26, %zmm17, %zmm22
vmovdqa64 %zmm22, %zmm29
vpermt2q %zmm23, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm27, %zmm27 # zmm27 = zmm27[1],zmm28[1],zmm27[3],zmm28[3],zmm27[5],zmm28[5],zmm27[7],zmm28[7]
vpunpckhqdq %zmm25, %zmm24, %zmm24 # zmm24 = zmm24[1],zmm25[1],zmm24[3],zmm25[3],zmm24[5],zmm25[5],zmm24[7],zmm25[7]
vpermt2q %zmm26, %zmm19, %zmm27
vmovdqa64 %zmm22, %zmm25
vpermt2q %zmm23, %zmm20, %zmm25
vmovdqa64 %zmm27, %zmm26
vpermt2q %zmm24, %zmm20, %zmm26
vpermt2q %zmm23, %zmm21, %zmm22
vpermt2q %zmm24, %zmm21, %zmm27
vmovdqa64 %zmm25, %zmm23
vpternlogq $0x96, %zmm22, %zmm26, %zmm23
vpternlogq $0x96, %zmm29, %zmm27, %zmm23
vpermq %zmm23, %zmm5, %zmm24
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm24, %zmm23, %zmm25
vpternlogq $0x96, %zmm24, %zmm23, %zmm26
vpternlogq $0x96, %zmm24, %zmm23, %zmm22
vpternlogq $0x96, %zmm24, %zmm23, %zmm27
vpternlogq $0x96, %zmm24, %zmm23, %zmm29
vprolvq %zmm7, %zmm25, %zmm23
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm22, %zmm22
vprolvq %zmm10, %zmm27, %zmm25
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm23, %zmm12, %zmm23
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm22, %zmm14, %zmm22
vpermq %zmm25, %zmm15, %zmm25
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm23, %zmm27
vpternlogq $0xd2, %zmm22, %zmm24, %zmm27
vpxorq %zmm27, %zmm2, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm25, %zmm22, %zmm28
vpternlogq $0xd2, %zmm26, %zmm25, %zmm22
vpternlogq $0xd2, %zmm23, %zmm26, %zmm25
vpternlogq $0xd2, %zmm24, %zmm23, %zmm26
vpunpcklqdq %zmm28, %zmm27, %zmm23 # zmm23 = zmm27[0],zmm28[0],zmm27[2],zmm28[2],zmm27[4],zmm28[4],zmm27[6],zmm28[6]
vpunpcklqdq %zmm25, %zmm22, %zmm24 # zmm24 = zmm22[0],zmm25[0],zmm22[2],zmm25[2],zmm22[4],zmm25[4],zmm22[6],zmm25[6]
vpermt2q %zmm26, %zmm17, %zmm23
vmovdqa64 %zmm23, %zmm29
vpermt2q %zmm24, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm27, %zmm27 # zmm27 = zmm27[1],zmm28[1],zmm27[3],zmm28[3],zmm27[5],zmm28[5],zmm27[7],zmm28[7]
vpunpckhqdq %zmm25, %zmm22, %zmm22 # zmm22 = zmm22[1],zmm25[1],zmm22[3],zmm25[3],zmm22[5],zmm25[5],zmm22[7],zmm25[7]
vpermt2q %zmm26, %zmm19, %zmm27
vmovdqa64 %zmm23, %zmm25
vpermt2q %zmm24, %zmm20, %zmm25
vmovdqa64 %zmm27, %zmm26
vpermt2q %zmm22, %zmm20, %zmm26
vpermt2q %zmm24, %zmm21, %zmm23
vpermt2q %zmm22, %zmm21, %zmm27
vmovdqa64 %zmm25, %zmm22
vpternlogq $0x96, %zmm23, %zmm26, %zmm22
vpternlogq $0x96, %zmm29, %zmm27, %zmm22
vpermq %zmm22, %zmm5, %zmm24
vpermq %zmm22, %zmm6, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm24, %zmm22, %zmm25
vpternlogq $0x96, %zmm24, %zmm22, %zmm26
vpternlogq $0x96, %zmm24, %zmm22, %zmm23
vpternlogq $0x96, %zmm24, %zmm22, %zmm27
vpternlogq $0x96, %zmm24, %zmm22, %zmm29
vprolvq %zmm7, %zmm25, %zmm22
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm23, %zmm23
vprolvq %zmm10, %zmm27, %zmm25
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm23, %zmm14, %zmm23
vpermq %zmm25, %zmm15, %zmm25
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm27
vpternlogq $0xd2, %zmm23, %zmm24, %zmm27
vpxorq %zmm27, %zmm3, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm25, %zmm23, %zmm28
vpternlogq $0xd2, %zmm26, %zmm25, %zmm23
vpternlogq $0xd2, %zmm22, %zmm26, %zmm25
vpternlogq $0xd2, %zmm24, %zmm22, %zmm26
vpunpcklqdq %zmm28, %zmm27, %zmm22 # zmm22 = zmm27[0],zmm28[0],zmm27[2],zmm28[2],zmm27[4],zmm28[4],zmm27[6],zmm28[6]
vpunpcklqdq %zmm25, %zmm23, %zmm24 # zmm24 = zmm23[0],zmm25[0],zmm23[2],zmm25[2],zmm23[4],zmm25[4],zmm23[6],zmm25[6]
vpermt2q %zmm26, %zmm17, %zmm22
vmovdqa64 %zmm22, %zmm29
vpermt2q %zmm24, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm27, %zmm27 # zmm27 = zmm27[1],zmm28[1],zmm27[3],zmm28[3],zmm27[5],zmm28[5],zmm27[7],zmm28[7]
vpunpckhqdq %zmm25, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm25[1],zmm23[3],zmm25[3],zmm23[5],zmm25[5],zmm23[7],zmm25[7]
vpermt2q %zmm26, %zmm19, %zmm27
vmovdqa64 %zmm22, %zmm25
vpermt2q %zmm24, %zmm20, %zmm25
vmovdqa64 %zmm27, %zmm26
vpermt2q %zmm23, %zmm20, %zmm26
vpermt2q %zmm24, %zmm21, %zmm22
vpermt2q %zmm23, %zmm21, %zmm27
vmovdqa64 %zmm25, %zmm23
vpternlogq $0x96, %zmm22, %zmm26, %zmm23
vpternlogq $0x96, %zmm29, %zmm27, %zmm23
vpermq %zmm23, %zmm5, %zmm24
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm24, %zmm23, %zmm25
vpternlogq $0x96, %zmm24, %zmm23, %zmm26
vpternlogq $0x96, %zmm24, %zmm23, %zmm22
vpternlogq $0x96, %zmm24, %zmm23, %zmm27
vpternlogq $0x96, %zmm24, %zmm23, %zmm29
vprolvq %zmm7, %zmm25, %zmm23
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm22, %zmm22
vprolvq %zmm10, %zmm27, %zmm25
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm23, %zmm12, %zmm23
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm22, %zmm14, %zmm22
vpermq %zmm25, %zmm15, %zmm25
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm23, %zmm27
vpternlogq $0xd2, %zmm22, %zmm24, %zmm27
vpxorq %zmm27, %zmm4, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm25, %zmm22, %zmm28
vpternlogq $0xd2, %zmm26, %zmm25, %zmm22
vpternlogq $0xd2, %zmm23, %zmm26, %zmm25
vpternlogq $0xd2, %zmm24, %zmm23, %zmm26
vpunpcklqdq %zmm28, %zmm27, %zmm23 # zmm23 = zmm27[0],zmm28[0],zmm27[2],zmm28[2],zmm27[4],zmm28[4],zmm27[6],zmm28[6]
vpunpcklqdq %zmm25, %zmm22, %zmm24 # zmm24 = zmm22[0],zmm25[0],zmm22[2],zmm25[2],zmm22[4],zmm25[4],zmm22[6],zmm25[6]
vpermt2q %zmm26, %zmm17, %zmm23
vmovdqa64 %zmm23, %zmm29
vpermt2q %zmm24, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm27, %zmm27 # zmm27 = zmm27[1],zmm28[1],zmm27[3],zmm28[3],zmm27[5],zmm28[5],zmm27[7],zmm28[7]
vpunpckhqdq %zmm25, %zmm22, %zmm22 # zmm22 = zmm22[1],zmm25[1],zmm22[3],zmm25[3],zmm22[5],zmm25[5],zmm22[7],zmm25[7]
vpermt2q %zmm26, %zmm19, %zmm27
vmovdqa64 %zmm23, %zmm25
vpermt2q %zmm24, %zmm20, %zmm25
vmovdqa64 %zmm27, %zmm26
vpermt2q %zmm22, %zmm20, %zmm26
vpermt2q %zmm24, %zmm21, %zmm23
vpermt2q %zmm22, %zmm21, %zmm27
vmovdqa64 %zmm25, %zmm22
vpternlogq $0x96, %zmm23, %zmm26, %zmm22
vpternlogq $0x96, %zmm29, %zmm27, %zmm22
vpermq %zmm22, %zmm5, %zmm24
vpermq %zmm22, %zmm6, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm24, %zmm22, %zmm25
vpternlogq $0x96, %zmm24, %zmm22, %zmm26
vpternlogq $0x96, %zmm24, %zmm22, %zmm23
vpternlogq $0x96, %zmm24, %zmm22, %zmm27
vpternlogq $0x96, %zmm24, %zmm22, %zmm29
vprolvq %zmm7, %zmm25, %zmm22
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm23, %zmm23
vprolvq %zmm10, %zmm27, %zmm25
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm23, %zmm14, %zmm23
vpermq %zmm25, %zmm15, %zmm25
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm27
vpternlogq $0xd2, %zmm23, %zmm24, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm25, %zmm23, %zmm28
vpternlogq $0xd2, %zmm26, %zmm25, %zmm23
vpternlogq $0xd2, %zmm22, %zmm26, %zmm25
vpternlogq $0xd2, %zmm24, %zmm22, %zmm26
vmovq 0x88(%rdi), %xmm22
vpxorq %zmm27, %zmm22, %zmm22
vpunpcklqdq %zmm28, %zmm22, %zmm24 # zmm24 = zmm22[0],zmm28[0],zmm22[2],zmm28[2],zmm22[4],zmm28[4],zmm22[6],zmm28[6]
vpunpcklqdq %zmm25, %zmm23, %zmm27 # zmm27 = zmm23[0],zmm25[0],zmm23[2],zmm25[2],zmm23[4],zmm25[4],zmm23[6],zmm25[6]
vpermt2q %zmm26, %zmm17, %zmm24
vmovdqa64 %zmm24, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm22, %zmm22 # zmm22 = zmm22[1],zmm28[1],zmm22[3],zmm28[3],zmm22[5],zmm28[5],zmm22[7],zmm28[7]
vpunpckhqdq %zmm25, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm25[1],zmm23[3],zmm25[3],zmm23[5],zmm25[5],zmm23[7],zmm25[7]
vpermt2q %zmm26, %zmm19, %zmm22
vmovdqa64 %zmm24, %zmm25
vpermt2q %zmm27, %zmm20, %zmm25
vmovdqa64 %zmm22, %zmm26
vpermt2q %zmm23, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm24
vpermt2q %zmm23, %zmm21, %zmm22
vmovdqa64 %zmm25, %zmm23
vpternlogq $0x96, %zmm24, %zmm26, %zmm23
vpternlogq $0x96, %zmm29, %zmm22, %zmm23
vpermq %zmm23, %zmm5, %zmm27
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm27, %zmm23, %zmm25
vpternlogq $0x96, %zmm27, %zmm23, %zmm26
vpternlogq $0x96, %zmm27, %zmm23, %zmm24
vpternlogq $0x96, %zmm27, %zmm23, %zmm22
vpternlogq $0x96, %zmm27, %zmm23, %zmm29
vprolvq %zmm7, %zmm25, %zmm23
vprolvq %zmm8, %zmm26, %zmm25
vprolvq %zmm9, %zmm24, %zmm24
vprolvq %zmm10, %zmm22, %zmm22
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm23, %zmm12, %zmm23
vpermq %zmm25, %zmm13, %zmm25
vpermq %zmm24, %zmm14, %zmm24
vpermq %zmm22, %zmm15, %zmm22
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm23, %zmm27
vpternlogq $0xd2, %zmm24, %zmm25, %zmm27
vmovdqa64 %zmm25, %zmm28
vpternlogq $0xd2, %zmm22, %zmm24, %zmm28
vpternlogq $0xd2, %zmm26, %zmm22, %zmm24
vpternlogq $0xd2, %zmm23, %zmm26, %zmm22
vmovq 0x90(%rdi), %xmm29
vpternlogq $0xd2, %zmm25, %zmm23, %zmm26
vpxorq %zmm27, %zmm29, %zmm23
vpunpcklqdq %zmm28, %zmm23, %zmm25 # zmm25 = zmm23[0],zmm28[0],zmm23[2],zmm28[2],zmm23[4],zmm28[4],zmm23[6],zmm28[6]
vpunpcklqdq %zmm22, %zmm24, %zmm27 # zmm27 = zmm24[0],zmm22[0],zmm24[2],zmm22[2],zmm24[4],zmm22[4],zmm24[6],zmm22[6]
vpermt2q %zmm26, %zmm17, %zmm25
vmovdqa64 %zmm25, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm28[1],zmm23[3],zmm28[3],zmm23[5],zmm28[5],zmm23[7],zmm28[7]
vpunpckhqdq %zmm22, %zmm24, %zmm22 # zmm22 = zmm24[1],zmm22[1],zmm24[3],zmm22[3],zmm24[5],zmm22[5],zmm24[7],zmm22[7]
vpermt2q %zmm26, %zmm19, %zmm23
vmovdqa64 %zmm25, %zmm24
vpermt2q %zmm27, %zmm20, %zmm24
vmovdqa64 %zmm23, %zmm26
vpermt2q %zmm22, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm25
vpermt2q %zmm22, %zmm21, %zmm23
vmovdqa64 %zmm24, %zmm22
vpternlogq $0x96, %zmm25, %zmm26, %zmm22
vpternlogq $0x96, %zmm29, %zmm23, %zmm22
vpermq %zmm22, %zmm5, %zmm27
vpermq %zmm22, %zmm6, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm27, %zmm22, %zmm24
vpternlogq $0x96, %zmm27, %zmm22, %zmm26
vpternlogq $0x96, %zmm27, %zmm22, %zmm25
vpternlogq $0x96, %zmm27, %zmm22, %zmm23
vpternlogq $0x96, %zmm27, %zmm22, %zmm29
vprolvq %zmm7, %zmm24, %zmm22
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm25, %zmm25
vprolvq %zmm10, %zmm23, %zmm23
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm25, %zmm14, %zmm25
vpermq %zmm23, %zmm15, %zmm23
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm27
vpternlogq $0xd2, %zmm25, %zmm24, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm23, %zmm25, %zmm28
vpternlogq $0xd2, %zmm26, %zmm23, %zmm25
vpternlogq $0xd2, %zmm22, %zmm26, %zmm23
vpternlogq $0xd2, %zmm24, %zmm22, %zmm26
vmovq 0x98(%rdi), %xmm22
vpxorq %zmm27, %zmm22, %zmm22
vpunpcklqdq %zmm28, %zmm22, %zmm24 # zmm24 = zmm22[0],zmm28[0],zmm22[2],zmm28[2],zmm22[4],zmm28[4],zmm22[6],zmm28[6]
vpunpcklqdq %zmm23, %zmm25, %zmm27 # zmm27 = zmm25[0],zmm23[0],zmm25[2],zmm23[2],zmm25[4],zmm23[4],zmm25[6],zmm23[6]
vpermt2q %zmm26, %zmm17, %zmm24
vmovdqa64 %zmm24, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm22, %zmm22 # zmm22 = zmm22[1],zmm28[1],zmm22[3],zmm28[3],zmm22[5],zmm28[5],zmm22[7],zmm28[7]
vpunpckhqdq %zmm23, %zmm25, %zmm23 # zmm23 = zmm25[1],zmm23[1],zmm25[3],zmm23[3],zmm25[5],zmm23[5],zmm25[7],zmm23[7]
vpermt2q %zmm26, %zmm19, %zmm22
vmovdqa64 %zmm24, %zmm25
vpermt2q %zmm27, %zmm20, %zmm25
vmovdqa64 %zmm22, %zmm26
vpermt2q %zmm23, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm24
vpermt2q %zmm23, %zmm21, %zmm22
vmovdqa64 %zmm25, %zmm23
vpternlogq $0x96, %zmm24, %zmm26, %zmm23
vpternlogq $0x96, %zmm29, %zmm22, %zmm23
vpermq %zmm23, %zmm5, %zmm27
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm27, %zmm23, %zmm25
vpternlogq $0x96, %zmm27, %zmm23, %zmm26
vpternlogq $0x96, %zmm27, %zmm23, %zmm24
vpternlogq $0x96, %zmm27, %zmm23, %zmm22
vpternlogq $0x96, %zmm27, %zmm23, %zmm29
vprolvq %zmm7, %zmm25, %zmm23
vprolvq %zmm8, %zmm26, %zmm25
vprolvq %zmm9, %zmm24, %zmm24
vprolvq %zmm10, %zmm22, %zmm22
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm23, %zmm12, %zmm23
vpermq %zmm25, %zmm13, %zmm25
vpermq %zmm24, %zmm14, %zmm24
vpermq %zmm22, %zmm15, %zmm22
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm23, %zmm27
vpternlogq $0xd2, %zmm24, %zmm25, %zmm27
vmovdqa64 %zmm25, %zmm28
vpternlogq $0xd2, %zmm22, %zmm24, %zmm28
vpternlogq $0xd2, %zmm26, %zmm22, %zmm24
vpternlogq $0xd2, %zmm23, %zmm26, %zmm22
vpternlogq $0xd2, %zmm25, %zmm23, %zmm26
vmovq 0xa0(%rdi), %xmm23
vpxorq %zmm27, %zmm23, %zmm23
vpunpcklqdq %zmm28, %zmm23, %zmm25 # zmm25 = zmm23[0],zmm28[0],zmm23[2],zmm28[2],zmm23[4],zmm28[4],zmm23[6],zmm28[6]
vpunpcklqdq %zmm22, %zmm24, %zmm27 # zmm27 = zmm24[0],zmm22[0],zmm24[2],zmm22[2],zmm24[4],zmm22[4],zmm24[6],zmm22[6]
vpermt2q %zmm26, %zmm17, %zmm25
vmovdqa64 %zmm25, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm28[1],zmm23[3],zmm28[3],zmm23[5],zmm28[5],zmm23[7],zmm28[7]
vpunpckhqdq %zmm22, %zmm24, %zmm22 # zmm22 = zmm24[1],zmm22[1],zmm24[3],zmm22[3],zmm24[5],zmm22[5],zmm24[7],zmm22[7]
vpermt2q %zmm26, %zmm19, %zmm23
vmovdqa64 %zmm25, %zmm24
vpermt2q %zmm27, %zmm20, %zmm24
vmovdqa64 %zmm23, %zmm26
vpermt2q %zmm22, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm25
vpermt2q %zmm22, %zmm21, %zmm23
vmovdqa64 %zmm24, %zmm22
vpternlogq $0x96, %zmm25, %zmm26, %zmm22
vpternlogq $0x96, %zmm29, %zmm23, %zmm22
vpermq %zmm22, %zmm5, %zmm27
vpermq %zmm22, %zmm6, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm27, %zmm22, %zmm24
vpternlogq $0x96, %zmm27, %zmm22, %zmm26
vpternlogq $0x96, %zmm27, %zmm22, %zmm25
vpternlogq $0x96, %zmm27, %zmm22, %zmm23
vpternlogq $0x96, %zmm27, %zmm22, %zmm29
vprolvq %zmm7, %zmm24, %zmm22
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm25, %zmm25
vprolvq %zmm10, %zmm23, %zmm23
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm25, %zmm14, %zmm25
vpermq %zmm23, %zmm15, %zmm23
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm27
vpternlogq $0xd2, %zmm25, %zmm24, %zmm27
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm23, %zmm25, %zmm28
vpternlogq $0xd2, %zmm26, %zmm23, %zmm25
vpternlogq $0xd2, %zmm22, %zmm26, %zmm23
vmovq 0xa8(%rdi), %xmm29
vpternlogq $0xd2, %zmm24, %zmm22, %zmm26
vpxorq %zmm27, %zmm29, %zmm22
vpunpcklqdq %zmm28, %zmm22, %zmm24 # zmm24 = zmm22[0],zmm28[0],zmm22[2],zmm28[2],zmm22[4],zmm28[4],zmm22[6],zmm28[6]
vpunpcklqdq %zmm23, %zmm25, %zmm27 # zmm27 = zmm25[0],zmm23[0],zmm25[2],zmm23[2],zmm25[4],zmm23[4],zmm25[6],zmm23[6]
vpermt2q %zmm26, %zmm17, %zmm24
vmovdqa64 %zmm24, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm22, %zmm22 # zmm22 = zmm22[1],zmm28[1],zmm22[3],zmm28[3],zmm22[5],zmm28[5],zmm22[7],zmm28[7]
vpunpckhqdq %zmm23, %zmm25, %zmm23 # zmm23 = zmm25[1],zmm23[1],zmm25[3],zmm23[3],zmm25[5],zmm23[5],zmm25[7],zmm23[7]
vpermt2q %zmm26, %zmm19, %zmm22
vmovdqa64 %zmm24, %zmm25
vpermt2q %zmm27, %zmm20, %zmm25
vmovdqa64 %zmm22, %zmm26
vpermt2q %zmm23, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm24
vpermt2q %zmm23, %zmm21, %zmm22
vmovdqa64 %zmm25, %zmm23
vpternlogq $0x96, %zmm24, %zmm26, %zmm23
vpternlogq $0x96, %zmm29, %zmm22, %zmm23
vpermq %zmm23, %zmm5, %zmm27
vpermq %zmm23, %zmm6, %zmm23
vprolq $0x1, %zmm23, %zmm23
vpternlogq $0x96, %zmm27, %zmm23, %zmm25
vpternlogq $0x96, %zmm27, %zmm23, %zmm26
vpternlogq $0x96, %zmm27, %zmm23, %zmm24
vpternlogq $0x96, %zmm27, %zmm23, %zmm22
vpternlogq $0x96, %zmm27, %zmm23, %zmm29
vprolvq %zmm7, %zmm25, %zmm23
vprolvq %zmm8, %zmm26, %zmm25
vprolvq %zmm9, %zmm24, %zmm24
vprolvq %zmm10, %zmm22, %zmm22
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm23, %zmm12, %zmm23
vpermq %zmm25, %zmm13, %zmm25
vpermq %zmm24, %zmm14, %zmm24
vpermq %zmm22, %zmm15, %zmm22
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm23, %zmm27
vpternlogq $0xd2, %zmm24, %zmm25, %zmm27
vmovdqa64 %zmm25, %zmm28
vpternlogq $0xd2, %zmm22, %zmm24, %zmm28
vpternlogq $0xd2, %zmm26, %zmm22, %zmm24
vpternlogq $0xd2, %zmm23, %zmm26, %zmm22
vpternlogq $0xd2, %zmm25, %zmm23, %zmm26
vmovq 0xb0(%rdi), %xmm23
vpxorq %zmm27, %zmm23, %zmm23
vpunpcklqdq %zmm28, %zmm23, %zmm25 # zmm25 = zmm23[0],zmm28[0],zmm23[2],zmm28[2],zmm23[4],zmm28[4],zmm23[6],zmm28[6]
vpunpcklqdq %zmm22, %zmm24, %zmm27 # zmm27 = zmm24[0],zmm22[0],zmm24[2],zmm22[2],zmm24[4],zmm22[4],zmm24[6],zmm22[6]
vpermt2q %zmm26, %zmm17, %zmm25
vmovdqa64 %zmm25, %zmm29
vpermt2q %zmm27, %zmm18, %zmm29
vmovdqa64 %zmm26, %zmm29 {%k1}
vpunpckhqdq %zmm28, %zmm23, %zmm23 # zmm23 = zmm23[1],zmm28[1],zmm23[3],zmm28[3],zmm23[5],zmm28[5],zmm23[7],zmm28[7]
vpunpckhqdq %zmm22, %zmm24, %zmm22 # zmm22 = zmm24[1],zmm22[1],zmm24[3],zmm22[3],zmm24[5],zmm22[5],zmm24[7],zmm22[7]
vpermt2q %zmm26, %zmm19, %zmm23
vmovdqa64 %zmm25, %zmm24
vpermt2q %zmm27, %zmm20, %zmm24
vmovdqa64 %zmm23, %zmm26
vpermt2q %zmm22, %zmm20, %zmm26
vpermt2q %zmm27, %zmm21, %zmm25
vpermt2q %zmm22, %zmm21, %zmm23
vmovdqa64 %zmm24, %zmm22
vpternlogq $0x96, %zmm25, %zmm26, %zmm22
vpternlogq $0x96, %zmm29, %zmm23, %zmm22
vpermq %zmm22, %zmm5, %zmm27
vpermq %zmm22, %zmm6, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm27, %zmm22, %zmm24
vpternlogq $0x96, %zmm27, %zmm22, %zmm26
vpternlogq $0x96, %zmm27, %zmm22, %zmm25
vpternlogq $0x96, %zmm27, %zmm22, %zmm23
vpternlogq $0x96, %zmm27, %zmm22, %zmm29
vprolvq %zmm7, %zmm24, %zmm22
vprolvq %zmm8, %zmm26, %zmm24
vprolvq %zmm9, %zmm25, %zmm25
vprolvq %zmm10, %zmm23, %zmm23
vprolvq %zmm11, %zmm29, %zmm26
vpermq %zmm22, %zmm12, %zmm22
vpermq %zmm24, %zmm13, %zmm24
vpermq %zmm25, %zmm14, %zmm25
vpermq %zmm23, %zmm15, %zmm27
vpermq %zmm26, %zmm16, %zmm26
vmovdqa64 %zmm22, %zmm23
vpternlogq $0xd2, %zmm25, %zmm24, %zmm23
vmovdqa64 %zmm24, %zmm28
vpternlogq $0xd2, %zmm27, %zmm25, %zmm28
vpternlogq $0xd2, %zmm26, %zmm27, %zmm25
vpternlogq $0xd2, %zmm22, %zmm26, %zmm27
vpternlogq $0xd2, %zmm24, %zmm22, %zmm26
vmovq 0xb8(%rdi), %xmm22
vpxorq %zmm23, %zmm22, %zmm24
vpunpcklqdq %zmm28, %zmm24, %zmm23 # zmm23 = zmm24[0],zmm28[0],zmm24[2],zmm28[2],zmm24[4],zmm28[4],zmm24[6],zmm28[6]
vpunpcklqdq %zmm27, %zmm25, %zmm29 # zmm29 = zmm25[0],zmm27[0],zmm25[2],zmm27[2],zmm25[4],zmm27[4],zmm25[6],zmm27[6]
vpermt2q %zmm26, %zmm17, %zmm23
vmovdqa64 %zmm23, %zmm22
vpermt2q %zmm29, %zmm18, %zmm22
vmovdqa64 %zmm26, %zmm22 {%k1}
vpunpckhqdq %zmm28, %zmm24, %zmm24 # zmm24 = zmm24[1],zmm28[1],zmm24[3],zmm28[3],zmm24[5],zmm28[5],zmm24[7],zmm28[7]
vpunpckhqdq %zmm27, %zmm25, %zmm27 # zmm27 = zmm25[1],zmm27[1],zmm25[3],zmm27[3],zmm25[5],zmm27[5],zmm25[7],zmm27[7]
vpermt2q %zmm26, %zmm19, %zmm24
vmovdqa64 %zmm23, %zmm26
vpermt2q %zmm29, %zmm20, %zmm26
vmovdqa64 %zmm24, %zmm25
vpermt2q %zmm27, %zmm20, %zmm25
vpermt2q %zmm29, %zmm21, %zmm23
vpermt2q %zmm27, %zmm21, %zmm24
addq $0xa8, %r15
addq $-0xa8, %r9
jmp 0x84bc
movb $0x1f, %dl
kmovd %edx, %k1
vmovdqu64 %zmm26, (%r14) {%k1}
vmovdqu64 %zmm25, (%rax) {%k1}
vmovdqu64 %zmm23, (%rcx) {%k1}
vmovdqu64 %zmm24, (%rsi) {%k1}
vmovdqu64 %zmm22, (%r8) {%k1}
subq %r9, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
vzeroupper
retq
movl %esi, %r12d
shll $0x3, %r12d
movq %rbx, %r13
movq %r13, %r9
subq %r12, %r13
jb 0x927f
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
movl %r12d, %ecx
callq 0x5490
movq %r14, %rdi
callq 0x5560
addq %r12, %r15
jmp 0x929c
nopl (%rax)