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

	if (laneCount == 21) {
	    KeccakP_DeclareVars;
	    #ifndef KeccakP1600_fullUnrolling
	    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));
	        rounds24;
	        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 0x8321
movb $0x1f, %dl
kmovd %edx, %k1
vmovdqu64 (%r14), %zmm20 {%k1} {z}
leaq 0x28(%r14), %rax
vmovdqu64 0x28(%r14), %zmm21 {%k1} {z}
leaq 0x50(%r14), %rcx
vmovdqu64 0x50(%r14), %zmm17 {%k1} {z}
leaq 0x78(%r14), %rsi
vmovdqu64 0x78(%r14), %zmm19 {%k1} {z}
leaq 0xa0(%r14), %rdi
vmovdqu64 0xa0(%r14), %zmm18 {%k1} {z}
pushq $-0xc
popq %r8
vpmovsxbq 0x27da7(%rip), %zmm0 # 0x2f240
vpmovsxbq 0x27da5(%rip), %zmm1 # 0x2f248
vpmovsxbq 0x27da3(%rip), %zmm2 # 0x2f250
vpmovsxbq 0x27da1(%rip), %zmm3 # 0x2f258
vpmovsxbq 0x27d9f(%rip), %zmm4 # 0x2f260
vpmovsxbq 0x27d9d(%rip), %zmm5 # 0x2f268
vpmovsxbq 0x27d9b(%rip), %zmm6 # 0x2f270
vpmovsxbq 0x27d99(%rip), %zmm7 # 0x2f278
vpmovsxbq 0x27d97(%rip), %zmm8 # 0x2f280
vpmovsxbq 0x27d95(%rip), %zmm9 # 0x2f288
vpmovsxbq 0x27d93(%rip), %zmm10 # 0x2f290
vpmovsxbq 0x27d91(%rip), %zmm11 # 0x2f298
movq 0x2daea(%rip), %r10     # 0x34ff8
vpmovsxbq 0x27d88(%rip), %zmm12 # 0x2f2a0
vpmovsxbq 0x27d86(%rip), %zmm13 # 0x2f2a8
movb $0x10, %r11b
vpmovsxbq 0x27d81(%rip), %zmm14 # 0x2f2b0
vpmovsxbq 0x27d7f(%rip), %zmm15 # 0x2f2b8
vpmovsxbq 0x27d7d(%rip), %zmm16 # 0x2f2c0
movq %rbx, %r9
cmpq $0xa8, %r9
jb 0x8350
kmovd %edx, %k1
vmovdqu64 (%r15), %zmm22 {%k1} {z}
vpxorq %zmm20, %zmm22, %zmm20
vmovdqu64 0x28(%r15), %zmm22 {%k1} {z}
vpxorq %zmm21, %zmm22, %zmm21
vmovdqu64 0x50(%r15), %zmm22 {%k1} {z}
vpxorq %zmm17, %zmm22, %zmm17
vmovdqu64 0x78(%r15), %zmm22 {%k1} {z}
vpxorq %zmm19, %zmm22, %zmm19
vmovq 0xa0(%r15), %xmm22
vpxorq %zmm18, %zmm22, %zmm18
movq %r8, %r12
vmovdqa64 %zmm20, %zmm22
vpternlogq $0x96, %zmm17, %zmm21, %zmm22
vpternlogq $0x96, %zmm18, %zmm19, %zmm22
vpermq %zmm22, %zmm0, %zmm23
vpermq %zmm22, %zmm1, %zmm22
vprolq $0x1, %zmm22, %zmm22
vpternlogq $0x96, %zmm23, %zmm22, %zmm20
vpternlogq $0x96, %zmm23, %zmm22, %zmm21
vpternlogq $0x96, %zmm23, %zmm22, %zmm17
vpternlogq $0x96, %zmm23, %zmm22, %zmm19
vpternlogq $0x96, %zmm23, %zmm22, %zmm18
vprolvq %zmm2, %zmm20, %zmm20
vprolvq %zmm3, %zmm21, %zmm21
vprolvq %zmm4, %zmm17, %zmm17
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm18, %zmm18
vpermq %zmm20, %zmm7, %zmm20
vpermq %zmm21, %zmm8, %zmm21
vpermq %zmm17, %zmm9, %zmm17
vpermq %zmm19, %zmm10, %zmm19
vpermq %zmm18, %zmm11, %zmm18
vmovdqa64 %zmm20, %zmm22
vpternlogq $0xd2, %zmm17, %zmm21, %zmm22
vmovdqa64 %zmm21, %zmm23
vpternlogq $0xd2, %zmm19, %zmm17, %zmm23
vpternlogq $0xd2, %zmm18, %zmm19, %zmm17
vpternlogq $0xd2, %zmm20, %zmm18, %zmm19
vpternlogq $0xd2, %zmm21, %zmm20, %zmm18
vmovq 0x60(%r10,%r12,8), %xmm20
vpxorq %zmm22, %zmm20, %zmm20
vpunpcklqdq %zmm23, %zmm20, %zmm21 # zmm21 = zmm20[0],zmm23[0],zmm20[2],zmm23[2],zmm20[4],zmm23[4],zmm20[6],zmm23[6]
vpunpcklqdq %zmm19, %zmm17, %zmm22 # zmm22 = zmm17[0],zmm19[0],zmm17[2],zmm19[2],zmm17[4],zmm19[4],zmm17[6],zmm19[6]
vpermt2q %zmm18, %zmm12, %zmm21
vmovdqa64 %zmm21, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
kmovd %r11d, %k1
vmovdqa64 %zmm18, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm20, %zmm20 # zmm20 = zmm20[1],zmm23[1],zmm20[3],zmm23[3],zmm20[5],zmm23[5],zmm20[7],zmm23[7]
vpunpckhqdq %zmm19, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm19[1],zmm17[3],zmm19[3],zmm17[5],zmm19[5],zmm17[7],zmm19[7]
vpermt2q %zmm18, %zmm14, %zmm20
vmovdqa64 %zmm21, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm20, %zmm19
vpermt2q %zmm17, %zmm15, %zmm19
vpermt2q %zmm22, %zmm16, %zmm21
vpermt2q %zmm17, %zmm16, %zmm20
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm21, %zmm19, %zmm17
vpternlogq $0x96, %zmm24, %zmm20, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm19, %zmm18
vprolvq %zmm4, %zmm21, %zmm19
vprolvq %zmm5, %zmm20, %zmm20
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm19, %zmm9, %zmm19
vpermq %zmm20, %zmm10, %zmm20
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm22
vpternlogq $0xd2, %zmm19, %zmm18, %zmm22
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm20, %zmm19, %zmm23
vpternlogq $0xd2, %zmm21, %zmm20, %zmm19
vpternlogq $0xd2, %zmm17, %zmm21, %zmm20
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0x68(%r10,%r12,8), %xmm17
vpxorq %zmm22, %zmm17, %zmm17
vpunpcklqdq %zmm23, %zmm17, %zmm18 # zmm18 = zmm17[0],zmm23[0],zmm17[2],zmm23[2],zmm17[4],zmm23[4],zmm17[6],zmm23[6]
vpunpcklqdq %zmm20, %zmm19, %zmm22 # zmm22 = zmm19[0],zmm20[0],zmm19[2],zmm20[2],zmm19[4],zmm20[4],zmm19[6],zmm20[6]
vpermt2q %zmm21, %zmm12, %zmm18
vmovdqa64 %zmm18, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm23[1],zmm17[3],zmm23[3],zmm17[5],zmm23[5],zmm17[7],zmm23[7]
vpunpckhqdq %zmm20, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm20[1],zmm19[3],zmm20[3],zmm19[5],zmm20[5],zmm19[7],zmm20[7]
vpermt2q %zmm21, %zmm14, %zmm17
vmovdqa64 %zmm18, %zmm20
vpermt2q %zmm22, %zmm15, %zmm20
vmovdqa64 %zmm17, %zmm21
vpermt2q %zmm19, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm18
vpermt2q %zmm19, %zmm16, %zmm17
vmovdqa64 %zmm20, %zmm19
vpternlogq $0x96, %zmm18, %zmm21, %zmm19
vpternlogq $0x96, %zmm24, %zmm17, %zmm19
vpermq %zmm19, %zmm0, %zmm22
vpermq %zmm19, %zmm1, %zmm19
vprolq $0x1, %zmm19, %zmm19
vpternlogq $0x96, %zmm22, %zmm19, %zmm20
vpternlogq $0x96, %zmm22, %zmm19, %zmm21
vpternlogq $0x96, %zmm22, %zmm19, %zmm18
vpternlogq $0x96, %zmm22, %zmm19, %zmm17
vpternlogq $0x96, %zmm22, %zmm19, %zmm24
vprolvq %zmm2, %zmm20, %zmm19
vprolvq %zmm3, %zmm21, %zmm20
vprolvq %zmm4, %zmm18, %zmm18
vprolvq %zmm5, %zmm17, %zmm17
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm19, %zmm7, %zmm19
vpermq %zmm20, %zmm8, %zmm20
vpermq %zmm18, %zmm9, %zmm18
vpermq %zmm17, %zmm10, %zmm17
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm19, %zmm22
vpternlogq $0xd2, %zmm18, %zmm20, %zmm22
vmovdqa64 %zmm20, %zmm23
vpternlogq $0xd2, %zmm17, %zmm18, %zmm23
vpternlogq $0xd2, %zmm21, %zmm17, %zmm18
vpternlogq $0xd2, %zmm19, %zmm21, %zmm17
vpternlogq $0xd2, %zmm20, %zmm19, %zmm21
vmovq 0x70(%r10,%r12,8), %xmm19
vpxorq %zmm22, %zmm19, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm20 # zmm20 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm17, %zmm18, %zmm22 # zmm22 = zmm18[0],zmm17[0],zmm18[2],zmm17[2],zmm18[4],zmm17[4],zmm18[6],zmm17[6]
vpermt2q %zmm21, %zmm12, %zmm20
vmovdqa64 %zmm20, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm17, %zmm18, %zmm17 # zmm17 = zmm18[1],zmm17[1],zmm18[3],zmm17[3],zmm18[5],zmm17[5],zmm18[7],zmm17[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm20, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm17, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm20
vpermt2q %zmm17, %zmm16, %zmm19
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm20, %zmm21, %zmm17
vpternlogq $0x96, %zmm24, %zmm19, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm21, %zmm18
vprolvq %zmm4, %zmm20, %zmm20
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm20, %zmm9, %zmm20
vpermq %zmm19, %zmm10, %zmm19
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm22
vpternlogq $0xd2, %zmm20, %zmm18, %zmm22
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm19, %zmm20, %zmm23
vpternlogq $0xd2, %zmm21, %zmm19, %zmm20
vpternlogq $0xd2, %zmm17, %zmm21, %zmm19
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0x78(%r10,%r12,8), %xmm17
vpxorq %zmm22, %zmm17, %zmm17
vpunpcklqdq %zmm23, %zmm17, %zmm18 # zmm18 = zmm17[0],zmm23[0],zmm17[2],zmm23[2],zmm17[4],zmm23[4],zmm17[6],zmm23[6]
vpunpcklqdq %zmm19, %zmm20, %zmm22 # zmm22 = zmm20[0],zmm19[0],zmm20[2],zmm19[2],zmm20[4],zmm19[4],zmm20[6],zmm19[6]
vpermt2q %zmm21, %zmm12, %zmm18
vmovdqa64 %zmm18, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm23[1],zmm17[3],zmm23[3],zmm17[5],zmm23[5],zmm17[7],zmm23[7]
vpunpckhqdq %zmm19, %zmm20, %zmm19 # zmm19 = zmm20[1],zmm19[1],zmm20[3],zmm19[3],zmm20[5],zmm19[5],zmm20[7],zmm19[7]
vpermt2q %zmm21, %zmm14, %zmm17
vmovdqa64 %zmm18, %zmm20
vpermt2q %zmm22, %zmm15, %zmm20
vmovdqa64 %zmm17, %zmm21
vpermt2q %zmm19, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm18
vpermt2q %zmm19, %zmm16, %zmm17
vmovdqa64 %zmm20, %zmm19
vpternlogq $0x96, %zmm18, %zmm21, %zmm19
vpternlogq $0x96, %zmm24, %zmm17, %zmm19
vpermq %zmm19, %zmm0, %zmm22
vpermq %zmm19, %zmm1, %zmm19
vprolq $0x1, %zmm19, %zmm19
vpternlogq $0x96, %zmm22, %zmm19, %zmm20
vpternlogq $0x96, %zmm22, %zmm19, %zmm21
vpternlogq $0x96, %zmm22, %zmm19, %zmm18
vpternlogq $0x96, %zmm22, %zmm19, %zmm17
vpternlogq $0x96, %zmm22, %zmm19, %zmm24
vprolvq %zmm2, %zmm20, %zmm19
vprolvq %zmm3, %zmm21, %zmm20
vprolvq %zmm4, %zmm18, %zmm18
vprolvq %zmm5, %zmm17, %zmm17
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm19, %zmm7, %zmm19
vpermq %zmm20, %zmm8, %zmm20
vpermq %zmm18, %zmm9, %zmm18
vpermq %zmm17, %zmm10, %zmm17
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm19, %zmm22
vpternlogq $0xd2, %zmm18, %zmm20, %zmm22
vmovdqa64 %zmm20, %zmm23
vpternlogq $0xd2, %zmm17, %zmm18, %zmm23
vpternlogq $0xd2, %zmm21, %zmm17, %zmm18
vpternlogq $0xd2, %zmm19, %zmm21, %zmm17
vpternlogq $0xd2, %zmm20, %zmm19, %zmm21
vmovq 0x80(%r10,%r12,8), %xmm19
vpxorq %zmm22, %zmm19, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm20 # zmm20 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm17, %zmm18, %zmm22 # zmm22 = zmm18[0],zmm17[0],zmm18[2],zmm17[2],zmm18[4],zmm17[4],zmm18[6],zmm17[6]
vpermt2q %zmm21, %zmm12, %zmm20
vmovdqa64 %zmm20, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm17, %zmm18, %zmm17 # zmm17 = zmm18[1],zmm17[1],zmm18[3],zmm17[3],zmm18[5],zmm17[5],zmm18[7],zmm17[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm20, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm17, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm20
vpermt2q %zmm17, %zmm16, %zmm19
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm20, %zmm21, %zmm17
vpternlogq $0x96, %zmm24, %zmm19, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm21, %zmm18
vprolvq %zmm4, %zmm20, %zmm20
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm20, %zmm9, %zmm20
vpermq %zmm19, %zmm10, %zmm19
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm22
vpternlogq $0xd2, %zmm20, %zmm18, %zmm22
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm19, %zmm20, %zmm23
vpternlogq $0xd2, %zmm21, %zmm19, %zmm20
vpternlogq $0xd2, %zmm17, %zmm21, %zmm19
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0x88(%r10,%r12,8), %xmm17
vpxorq %zmm22, %zmm17, %zmm17
vpunpcklqdq %zmm23, %zmm17, %zmm18 # zmm18 = zmm17[0],zmm23[0],zmm17[2],zmm23[2],zmm17[4],zmm23[4],zmm17[6],zmm23[6]
vpunpcklqdq %zmm19, %zmm20, %zmm22 # zmm22 = zmm20[0],zmm19[0],zmm20[2],zmm19[2],zmm20[4],zmm19[4],zmm20[6],zmm19[6]
vpermt2q %zmm21, %zmm12, %zmm18
vmovdqa64 %zmm18, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm23[1],zmm17[3],zmm23[3],zmm17[5],zmm23[5],zmm17[7],zmm23[7]
vpunpckhqdq %zmm19, %zmm20, %zmm19 # zmm19 = zmm20[1],zmm19[1],zmm20[3],zmm19[3],zmm20[5],zmm19[5],zmm20[7],zmm19[7]
vpermt2q %zmm21, %zmm14, %zmm17
vmovdqa64 %zmm18, %zmm20
vpermt2q %zmm22, %zmm15, %zmm20
vmovdqa64 %zmm17, %zmm21
vpermt2q %zmm19, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm18
vpermt2q %zmm19, %zmm16, %zmm17
vmovdqa64 %zmm20, %zmm19
vpternlogq $0x96, %zmm18, %zmm21, %zmm19
vpternlogq $0x96, %zmm24, %zmm17, %zmm19
vpermq %zmm19, %zmm0, %zmm22
vpermq %zmm19, %zmm1, %zmm19
vprolq $0x1, %zmm19, %zmm19
vpternlogq $0x96, %zmm22, %zmm19, %zmm20
vpternlogq $0x96, %zmm22, %zmm19, %zmm21
vpternlogq $0x96, %zmm22, %zmm19, %zmm18
vpternlogq $0x96, %zmm22, %zmm19, %zmm17
vpternlogq $0x96, %zmm22, %zmm19, %zmm24
vprolvq %zmm2, %zmm20, %zmm19
vprolvq %zmm3, %zmm21, %zmm20
vprolvq %zmm4, %zmm18, %zmm18
vprolvq %zmm5, %zmm17, %zmm17
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm19, %zmm7, %zmm19
vpermq %zmm20, %zmm8, %zmm20
vpermq %zmm18, %zmm9, %zmm18
vpermq %zmm17, %zmm10, %zmm17
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm19, %zmm22
vpternlogq $0xd2, %zmm18, %zmm20, %zmm22
vmovdqa64 %zmm20, %zmm23
vpternlogq $0xd2, %zmm17, %zmm18, %zmm23
vpternlogq $0xd2, %zmm21, %zmm17, %zmm18
vpternlogq $0xd2, %zmm19, %zmm21, %zmm17
vpternlogq $0xd2, %zmm20, %zmm19, %zmm21
vmovq 0x90(%r10,%r12,8), %xmm19
vpxorq %zmm22, %zmm19, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm20 # zmm20 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm17, %zmm18, %zmm22 # zmm22 = zmm18[0],zmm17[0],zmm18[2],zmm17[2],zmm18[4],zmm17[4],zmm18[6],zmm17[6]
vpermt2q %zmm21, %zmm12, %zmm20
vmovdqa64 %zmm20, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm17, %zmm18, %zmm17 # zmm17 = zmm18[1],zmm17[1],zmm18[3],zmm17[3],zmm18[5],zmm17[5],zmm18[7],zmm17[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm20, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm17, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm20
vpermt2q %zmm17, %zmm16, %zmm19
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm20, %zmm21, %zmm17
vpternlogq $0x96, %zmm24, %zmm19, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm21, %zmm18
vprolvq %zmm4, %zmm20, %zmm20
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm20, %zmm9, %zmm20
vpermq %zmm19, %zmm10, %zmm19
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm22
vpternlogq $0xd2, %zmm20, %zmm18, %zmm22
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm19, %zmm20, %zmm23
vpternlogq $0xd2, %zmm21, %zmm19, %zmm20
vpternlogq $0xd2, %zmm17, %zmm21, %zmm19
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0x98(%r10,%r12,8), %xmm17
vpxorq %zmm22, %zmm17, %zmm17
vpunpcklqdq %zmm23, %zmm17, %zmm18 # zmm18 = zmm17[0],zmm23[0],zmm17[2],zmm23[2],zmm17[4],zmm23[4],zmm17[6],zmm23[6]
vpunpcklqdq %zmm19, %zmm20, %zmm22 # zmm22 = zmm20[0],zmm19[0],zmm20[2],zmm19[2],zmm20[4],zmm19[4],zmm20[6],zmm19[6]
vpermt2q %zmm21, %zmm12, %zmm18
vmovdqa64 %zmm18, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm23[1],zmm17[3],zmm23[3],zmm17[5],zmm23[5],zmm17[7],zmm23[7]
vpunpckhqdq %zmm19, %zmm20, %zmm19 # zmm19 = zmm20[1],zmm19[1],zmm20[3],zmm19[3],zmm20[5],zmm19[5],zmm20[7],zmm19[7]
vpermt2q %zmm21, %zmm14, %zmm17
vmovdqa64 %zmm18, %zmm20
vpermt2q %zmm22, %zmm15, %zmm20
vmovdqa64 %zmm17, %zmm21
vpermt2q %zmm19, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm18
vpermt2q %zmm19, %zmm16, %zmm17
vmovdqa64 %zmm20, %zmm19
vpternlogq $0x96, %zmm18, %zmm21, %zmm19
vpternlogq $0x96, %zmm24, %zmm17, %zmm19
vpermq %zmm19, %zmm0, %zmm22
vpermq %zmm19, %zmm1, %zmm19
vprolq $0x1, %zmm19, %zmm19
vpternlogq $0x96, %zmm22, %zmm19, %zmm20
vpternlogq $0x96, %zmm22, %zmm19, %zmm21
vpternlogq $0x96, %zmm22, %zmm19, %zmm18
vpternlogq $0x96, %zmm22, %zmm19, %zmm17
vpternlogq $0x96, %zmm22, %zmm19, %zmm24
vprolvq %zmm2, %zmm20, %zmm19
vprolvq %zmm3, %zmm21, %zmm20
vprolvq %zmm4, %zmm18, %zmm18
vprolvq %zmm5, %zmm17, %zmm17
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm19, %zmm7, %zmm19
vpermq %zmm20, %zmm8, %zmm20
vpermq %zmm18, %zmm9, %zmm18
vpermq %zmm17, %zmm10, %zmm17
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm19, %zmm22
vpternlogq $0xd2, %zmm18, %zmm20, %zmm22
vmovdqa64 %zmm20, %zmm23
vpternlogq $0xd2, %zmm17, %zmm18, %zmm23
vpternlogq $0xd2, %zmm21, %zmm17, %zmm18
vpternlogq $0xd2, %zmm19, %zmm21, %zmm17
vpternlogq $0xd2, %zmm20, %zmm19, %zmm21
vmovq 0xa0(%r10,%r12,8), %xmm19
vpxorq %zmm22, %zmm19, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm20 # zmm20 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm17, %zmm18, %zmm22 # zmm22 = zmm18[0],zmm17[0],zmm18[2],zmm17[2],zmm18[4],zmm17[4],zmm18[6],zmm17[6]
vpermt2q %zmm21, %zmm12, %zmm20
vmovdqa64 %zmm20, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm17, %zmm18, %zmm17 # zmm17 = zmm18[1],zmm17[1],zmm18[3],zmm17[3],zmm18[5],zmm17[5],zmm18[7],zmm17[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm20, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm17, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm20
vpermt2q %zmm17, %zmm16, %zmm19
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm20, %zmm21, %zmm17
vpternlogq $0x96, %zmm24, %zmm19, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm21, %zmm18
vprolvq %zmm4, %zmm20, %zmm20
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm20, %zmm9, %zmm20
vpermq %zmm19, %zmm10, %zmm19
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm22
vpternlogq $0xd2, %zmm20, %zmm18, %zmm22
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm19, %zmm20, %zmm23
vpternlogq $0xd2, %zmm21, %zmm19, %zmm20
vpternlogq $0xd2, %zmm17, %zmm21, %zmm19
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0xa8(%r10,%r12,8), %xmm17
vpxorq %zmm22, %zmm17, %zmm17
vpunpcklqdq %zmm23, %zmm17, %zmm18 # zmm18 = zmm17[0],zmm23[0],zmm17[2],zmm23[2],zmm17[4],zmm23[4],zmm17[6],zmm23[6]
vpunpcklqdq %zmm19, %zmm20, %zmm22 # zmm22 = zmm20[0],zmm19[0],zmm20[2],zmm19[2],zmm20[4],zmm19[4],zmm20[6],zmm19[6]
vpermt2q %zmm21, %zmm12, %zmm18
vmovdqa64 %zmm18, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm17, %zmm17 # zmm17 = zmm17[1],zmm23[1],zmm17[3],zmm23[3],zmm17[5],zmm23[5],zmm17[7],zmm23[7]
vpunpckhqdq %zmm19, %zmm20, %zmm19 # zmm19 = zmm20[1],zmm19[1],zmm20[3],zmm19[3],zmm20[5],zmm19[5],zmm20[7],zmm19[7]
vpermt2q %zmm21, %zmm14, %zmm17
vmovdqa64 %zmm18, %zmm20
vpermt2q %zmm22, %zmm15, %zmm20
vmovdqa64 %zmm17, %zmm21
vpermt2q %zmm19, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm18
vpermt2q %zmm19, %zmm16, %zmm17
vmovdqa64 %zmm20, %zmm19
vpternlogq $0x96, %zmm18, %zmm21, %zmm19
vpternlogq $0x96, %zmm24, %zmm17, %zmm19
vpermq %zmm19, %zmm0, %zmm22
vpermq %zmm19, %zmm1, %zmm19
vprolq $0x1, %zmm19, %zmm19
vpternlogq $0x96, %zmm22, %zmm19, %zmm20
vpternlogq $0x96, %zmm22, %zmm19, %zmm21
vpternlogq $0x96, %zmm22, %zmm19, %zmm18
vpternlogq $0x96, %zmm22, %zmm19, %zmm17
vpternlogq $0x96, %zmm22, %zmm19, %zmm24
vprolvq %zmm2, %zmm20, %zmm19
vprolvq %zmm3, %zmm21, %zmm20
vprolvq %zmm4, %zmm18, %zmm18
vprolvq %zmm5, %zmm17, %zmm17
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm19, %zmm7, %zmm19
vpermq %zmm20, %zmm8, %zmm20
vpermq %zmm18, %zmm9, %zmm18
vpermq %zmm17, %zmm10, %zmm17
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm19, %zmm22
vpternlogq $0xd2, %zmm18, %zmm20, %zmm22
vmovdqa64 %zmm20, %zmm23
vpternlogq $0xd2, %zmm17, %zmm18, %zmm23
vpternlogq $0xd2, %zmm21, %zmm17, %zmm18
vpternlogq $0xd2, %zmm19, %zmm21, %zmm17
vpternlogq $0xd2, %zmm20, %zmm19, %zmm21
vmovq 0xb0(%r10,%r12,8), %xmm19
vpxorq %zmm22, %zmm19, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm20 # zmm20 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm17, %zmm18, %zmm22 # zmm22 = zmm18[0],zmm17[0],zmm18[2],zmm17[2],zmm18[4],zmm17[4],zmm18[6],zmm17[6]
vpermt2q %zmm21, %zmm12, %zmm20
vmovdqa64 %zmm20, %zmm24
vpermt2q %zmm22, %zmm13, %zmm24
vmovdqa64 %zmm21, %zmm24 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm17, %zmm18, %zmm17 # zmm17 = zmm18[1],zmm17[1],zmm18[3],zmm17[3],zmm18[5],zmm17[5],zmm18[7],zmm17[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm20, %zmm18
vpermt2q %zmm22, %zmm15, %zmm18
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm17, %zmm15, %zmm21
vpermt2q %zmm22, %zmm16, %zmm20
vpermt2q %zmm17, %zmm16, %zmm19
vmovdqa64 %zmm18, %zmm17
vpternlogq $0x96, %zmm20, %zmm21, %zmm17
vpternlogq $0x96, %zmm24, %zmm19, %zmm17
vpermq %zmm17, %zmm0, %zmm22
vpermq %zmm17, %zmm1, %zmm17
vprolq $0x1, %zmm17, %zmm17
vpternlogq $0x96, %zmm22, %zmm17, %zmm18
vpternlogq $0x96, %zmm22, %zmm17, %zmm21
vpternlogq $0x96, %zmm22, %zmm17, %zmm20
vpternlogq $0x96, %zmm22, %zmm17, %zmm19
vpternlogq $0x96, %zmm22, %zmm17, %zmm24
vprolvq %zmm2, %zmm18, %zmm17
vprolvq %zmm3, %zmm21, %zmm18
vprolvq %zmm4, %zmm20, %zmm20
vprolvq %zmm5, %zmm19, %zmm19
vprolvq %zmm6, %zmm24, %zmm21
vpermq %zmm17, %zmm7, %zmm17
vpermq %zmm18, %zmm8, %zmm18
vpermq %zmm20, %zmm9, %zmm20
vpermq %zmm19, %zmm10, %zmm22
vpermq %zmm21, %zmm11, %zmm21
vmovdqa64 %zmm17, %zmm19
vpternlogq $0xd2, %zmm20, %zmm18, %zmm19
vmovdqa64 %zmm18, %zmm23
vpternlogq $0xd2, %zmm22, %zmm20, %zmm23
vpternlogq $0xd2, %zmm21, %zmm22, %zmm20
vpternlogq $0xd2, %zmm17, %zmm21, %zmm22
vpternlogq $0xd2, %zmm18, %zmm17, %zmm21
vmovq 0xb8(%r10,%r12,8), %xmm17
vpxorq %zmm19, %zmm17, %zmm19
vpunpcklqdq %zmm23, %zmm19, %zmm17 # zmm17 = zmm19[0],zmm23[0],zmm19[2],zmm23[2],zmm19[4],zmm23[4],zmm19[6],zmm23[6]
vpunpcklqdq %zmm22, %zmm20, %zmm24 # zmm24 = zmm20[0],zmm22[0],zmm20[2],zmm22[2],zmm20[4],zmm22[4],zmm20[6],zmm22[6]
vpermt2q %zmm21, %zmm12, %zmm17
vmovdqa64 %zmm17, %zmm18
vpermt2q %zmm24, %zmm13, %zmm18
vmovdqa64 %zmm21, %zmm18 {%k1}
vpunpckhqdq %zmm23, %zmm19, %zmm19 # zmm19 = zmm19[1],zmm23[1],zmm19[3],zmm23[3],zmm19[5],zmm23[5],zmm19[7],zmm23[7]
vpunpckhqdq %zmm22, %zmm20, %zmm22 # zmm22 = zmm20[1],zmm22[1],zmm20[3],zmm22[3],zmm20[5],zmm22[5],zmm20[7],zmm22[7]
vpermt2q %zmm21, %zmm14, %zmm19
vmovdqa64 %zmm17, %zmm20
vpermt2q %zmm24, %zmm15, %zmm20
vmovdqa64 %zmm19, %zmm21
vpermt2q %zmm22, %zmm15, %zmm21
vpermt2q %zmm24, %zmm16, %zmm17
vpermt2q %zmm22, %zmm16, %zmm19
addq $0xc, %r12
jb 0x75a3
addq $0xa8, %r15
addq $-0xa8, %r9
jmp 0x7546
movl %esi, %r12d
shll $0x3, %r12d
movq %rbx, %r13
movq %r13, %r9
subq %r12, %r13
jb 0x8374
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
movl %r12d, %ecx
callq 0x5490
movq %r14, %rdi
callq 0x5560
addq %r12, %r15
jmp 0x832b
movb $0x1f, %dl
kmovd %edx, %k1
vmovdqu64 %zmm20, (%r14) {%k1}
vmovdqu64 %zmm21, (%rax) {%k1}
vmovdqu64 %zmm17, (%rcx) {%k1}
vmovdqu64 %zmm19, (%rsi) {%k1}
vmovdqu64 %zmm18, (%rdi) {%k1}
subq %r9, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
vzeroupper
retq