// File: /workspace/github_c_makefile_star2_O3/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 0x8316
movb $0x1f, %al
kmovd %eax, %k1
vmovdqu64 (%r14), %zmm20 {%k1} {z}
leaq 0x28(%r14), %rcx
vmovdqu64 0x28(%r14), %zmm21 {%k1} {z}
leaq 0x50(%r14), %rdx
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}
cmpq $0xa8, %rbx
jb 0x8354
kmovd %eax, %k1
vpmovsxbq 0x28daf(%rip), %zmm0 # 0x30240
vpmovsxbq 0x28dad(%rip), %zmm1 # 0x30248
vpmovsxbq 0x28dab(%rip), %zmm2 # 0x30250
vpmovsxbq 0x28da9(%rip), %zmm3 # 0x30258
vpmovsxbq 0x28da7(%rip), %zmm4 # 0x30260
vpmovsxbq 0x28da5(%rip), %zmm5 # 0x30268
vpmovsxbq 0x28da3(%rip), %zmm6 # 0x30270
vpmovsxbq 0x28da1(%rip), %zmm7 # 0x30278
vpmovsxbq 0x28d9f(%rip), %zmm8 # 0x30280
vpmovsxbq 0x28d9d(%rip), %zmm9 # 0x30288
vpmovsxbq 0x28d9b(%rip), %zmm10 # 0x30290
vpmovsxbq 0x28d99(%rip), %zmm11 # 0x30298
movq 0x2daf2(%rip), %r8      # 0x34ff8
vpmovsxbq 0x28d90(%rip), %zmm12 # 0x302a0
vpmovsxbq 0x28d8e(%rip), %zmm13 # 0x302a8
movb $0x10, %r9b
kmovd %r9d, %k2
vpmovsxbq 0x28d84(%rip), %zmm14 # 0x302b0
vpmovsxbq 0x28d82(%rip), %zmm15 # 0x302b8
vpmovsxbq 0x28d80(%rip), %zmm16 # 0x302c0
movq %rbx, %r13
vmovdqu64 (%r15), %zmm22 {%k1} {z}
vmovdqu64 0x28(%r15), %zmm23 {%k1} {z}
vpxorq %zmm20, %zmm22, %zmm20
vpxorq %zmm21, %zmm23, %zmm21
vmovdqu64 0x50(%r15), %zmm22 {%k1} {z}
vmovdqu64 0x78(%r15), %zmm23 {%k1} {z}
vpxorq %zmm17, %zmm22, %zmm17
vpxorq %zmm19, %zmm23, %zmm19
vmovq 0xa0(%r15), %xmm22
vpxorq %zmm18, %zmm22, %zmm18
movq $-0xc, %r9
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(%r8,%r9,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
vmovdqa64 %zmm18, %zmm24 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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(%r8,%r9,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 {%k2}
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, %r9
jb 0x7593
addq $0xa8, %r15
addq $-0xa8, %r13
cmpq $0xa7, %r13
ja 0x7543
jmp 0x8357
movl %esi, %r12d
shll $0x3, %r12d
movq %rbx, %r13
cmpq %rbx, %r12
ja 0x8379
movq %rbx, %r13
testl %r12d, %r12d
je 0x833f
xorl %eax, %eax
movb (%r15,%rax), %cl
xorb %cl, (%r14,%rax)
incq %rax
cmpq %rax, %r12
jne 0x832f
movq %r14, %rdi
callq 0x5540
addq %r12, %r15
subq %r12, %r13
cmpq %r12, %r13
jae 0x8328
jmp 0x8379
movq %rbx, %r13
kmovd %eax, %k1
vmovdqu64 %zmm20, (%r14) {%k1}
vmovdqu64 %zmm21, (%rcx) {%k1}
vmovdqu64 %zmm17, (%rdx) {%k1}
vmovdqu64 %zmm19, (%rsi) {%k1}
vmovdqu64 %zmm18, (%rdi) {%k1}
subq %r13, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
vzeroupper
retq