// File: /workspace/github_c_makefile_star2_O1/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
subq $0x140, %rsp            # imm = 0x140
movq %rcx, %rbx
movq %rdx, %r15
movq %rdi, %r14
cmpl $0x15, %esi
jne 0x92b4
movb $0x1f, %al
kmovd %eax, %k1
vmovdqu64 (%r14), %zmm0 {%k1} {z}
leaq 0x28(%r14), %rcx
vmovdqu64 0x28(%r14), %zmm1 {%k1} {z}
leaq 0x50(%r14), %rdx
vmovdqu64 0x50(%r14), %zmm29 {%k1} {z}
leaq 0x78(%r14), %rsi
vmovdqu64 0x78(%r14), %zmm30 {%k1} {z}
leaq 0xa0(%r14), %rdi
vmovdqu64 0xa0(%r14), %zmm31 {%k1} {z}
cmpq $0xa8, %rbx
jb 0x92f2
movq 0x2dbef(%rip), %r8      # 0x35ff8
vmovsd 0x60(%r8), %xmm2
vmovups %zmm2, 0x100(%rsp)
vmovsd 0x68(%r8), %xmm2
vmovups %zmm2, 0xc0(%rsp)
vmovsd 0x70(%r8), %xmm2
vmovups %zmm2, 0x80(%rsp)
vmovsd 0x78(%r8), %xmm2
vmovups %zmm2, 0x40(%rsp)
vmovq 0x80(%r8), %xmm2
vmovdqu64 %zmm2, (%rsp)
vmovq 0x88(%r8), %xmm5
vmovq 0x90(%r8), %xmm6
vmovq 0x98(%r8), %xmm7
vmovq 0xa0(%r8), %xmm8
vmovq 0xa8(%r8), %xmm9
vmovq 0xb0(%r8), %xmm10
vmovq 0xb8(%r8), %xmm11
vpmovsxbq 0x28da6(%rip), %zmm12 # 0x31240
vpmovsxbq 0x28da4(%rip), %zmm13 # 0x31248
vpmovsxbq 0x28da2(%rip), %zmm14 # 0x31250
vpmovsxbq 0x28da0(%rip), %zmm15 # 0x31258
vpmovsxbq 0x28d9e(%rip), %zmm16 # 0x31260
vpmovsxbq 0x28d9c(%rip), %zmm17 # 0x31268
vpmovsxbq 0x28d9a(%rip), %zmm18 # 0x31270
vpmovsxbq 0x28d98(%rip), %zmm19 # 0x31278
vpmovsxbq 0x28d96(%rip), %zmm20 # 0x31280
vpmovsxbq 0x28d94(%rip), %zmm21 # 0x31288
vpmovsxbq 0x28d92(%rip), %zmm22 # 0x31290
vpmovsxbq 0x28d90(%rip), %zmm23 # 0x31298
kmovd %eax, %k1
vpmovsxbq 0x28d8a(%rip), %zmm24 # 0x312a0
vpmovsxbq 0x28d88(%rip), %zmm25 # 0x312a8
movb $0x10, %r8b
kmovd %r8d, %k2
vpmovsxbq 0x28d7e(%rip), %zmm26 # 0x312b0
vpmovsxbq 0x28d7c(%rip), %zmm27 # 0x312b8
vpmovsxbq 0x28d7a(%rip), %zmm28 # 0x312c0
movq %rbx, %r13
vmovdqu64 (%r15), %zmm2 {%k1} {z}
vpxorq %zmm0, %zmm2, %zmm0
vmovdqu64 0x28(%r15), %zmm2 {%k1} {z}
vpxorq %zmm1, %zmm2, %zmm1
vmovdqu64 0x50(%r15), %zmm2 {%k1} {z}
vpxorq %zmm29, %zmm2, %zmm2
vmovdqu64 0x78(%r15), %zmm29 {%k1} {z}
vpxorq %zmm30, %zmm29, %zmm29
vmovq 0xa0(%r15), %xmm30
vpxorq %zmm31, %zmm30, %zmm30
vmovdqa64 %zmm0, %zmm31
vpternlogq $0x96, %zmm2, %zmm1, %zmm31
vpternlogq $0x96, %zmm30, %zmm29, %zmm31
vpermq %zmm31, %zmm12, %zmm3
vpermq %zmm31, %zmm13, %zmm31
vprolq $0x1, %zmm31, %zmm31
vpternlogq $0x96, %zmm3, %zmm31, %zmm0
vpternlogq $0x96, %zmm3, %zmm31, %zmm1
vpternlogq $0x96, %zmm3, %zmm31, %zmm2
vpternlogq $0x96, %zmm3, %zmm31, %zmm29
vpternlogq $0x96, %zmm3, %zmm31, %zmm30
vprolvq %zmm14, %zmm0, %zmm0
vprolvq %zmm15, %zmm1, %zmm1
vprolvq %zmm16, %zmm2, %zmm2
vprolvq %zmm17, %zmm29, %zmm3
vprolvq %zmm18, %zmm30, %zmm29
vpermq %zmm0, %zmm19, %zmm0
vpermq %zmm1, %zmm20, %zmm1
vpermq %zmm2, %zmm21, %zmm2
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm0, %zmm30
vpternlogq $0xd2, %zmm2, %zmm1, %zmm30
vpxorq 0x100(%rsp), %zmm30, %zmm30
vmovdqa64 %zmm1, %zmm31
vpternlogq $0xd2, %zmm3, %zmm2, %zmm31
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpternlogq $0xd2, %zmm0, %zmm29, %zmm3
vpternlogq $0xd2, %zmm1, %zmm0, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm0 # zmm0 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm2, %zmm1 # zmm1 = zmm2[0],zmm3[0],zmm2[2],zmm3[2],zmm2[4],zmm3[4],zmm2[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm0
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm0, %zmm31
vpermt2q %zmm1, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm2, %zmm2 # zmm2 = zmm2[1],zmm3[1],zmm2[3],zmm3[3],zmm2[5],zmm3[5],zmm2[7],zmm3[7]
vmovdqa64 %zmm29, %zmm31 {%k2}
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm0, %zmm3
vpermt2q %zmm1, %zmm27, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm2, %zmm27, %zmm29
vpermt2q %zmm1, %zmm28, %zmm0
vpermt2q %zmm2, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm1
vpternlogq $0x96, %zmm0, %zmm29, %zmm1
vpternlogq $0x96, %zmm31, %zmm30, %zmm1
vpermq %zmm1, %zmm12, %zmm2
vpermq %zmm1, %zmm13, %zmm1
vprolq $0x1, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm1, %zmm3
vpternlogq $0x96, %zmm2, %zmm1, %zmm29
vpternlogq $0x96, %zmm2, %zmm1, %zmm0
vpternlogq $0x96, %zmm2, %zmm1, %zmm30
vprolvq %zmm14, %zmm3, %zmm3
vprolvq %zmm15, %zmm29, %zmm29
vprolvq %zmm16, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm1, %zmm31
vprolvq %zmm17, %zmm30, %zmm1
vprolvq %zmm18, %zmm31, %zmm2
vpermq %zmm3, %zmm19, %zmm3
vpermq %zmm29, %zmm20, %zmm29
vpermq %zmm0, %zmm21, %zmm0
vpermq %zmm1, %zmm22, %zmm1
vpermq %zmm2, %zmm23, %zmm2
vmovdqa64 %zmm3, %zmm30
vpternlogq $0xd2, %zmm0, %zmm29, %zmm30
vpxorq 0xc0(%rsp), %zmm30, %zmm30
vmovdqa64 %zmm29, %zmm31
vpternlogq $0xd2, %zmm1, %zmm0, %zmm31
vpternlogq $0xd2, %zmm2, %zmm1, %zmm0
vpternlogq $0xd2, %zmm3, %zmm2, %zmm1
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpunpcklqdq %zmm31, %zmm30, %zmm3 # zmm3 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm1, %zmm0, %zmm29 # zmm29 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
vpermt2q %zmm2, %zmm24, %zmm3
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm3, %zmm31
vpermt2q %zmm29, %zmm25, %zmm31
vpunpckhqdq %zmm1, %zmm0, %zmm0 # zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
vpermt2q %zmm2, %zmm26, %zmm30
vmovdqa64 %zmm3, %zmm1
vpermt2q %zmm29, %zmm27, %zmm1
vpermt2q %zmm29, %zmm28, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vmovdqa64 %zmm2, %zmm31 {%k2}
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm1, %zmm0
vpternlogq $0x96, %zmm3, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm14, %zmm1, %zmm0
vprolvq %zmm15, %zmm29, %zmm1
vprolvq %zmm16, %zmm3, %zmm2
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm0, %zmm19, %zmm0
vpermq %zmm1, %zmm20, %zmm1
vpermq %zmm2, %zmm21, %zmm2
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm0, %zmm30
vpternlogq $0xd2, %zmm2, %zmm1, %zmm30
vmovdqa64 %zmm1, %zmm31
vpternlogq $0xd2, %zmm3, %zmm2, %zmm31
vpxorq 0x80(%rsp), %zmm30, %zmm30
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpternlogq $0xd2, %zmm0, %zmm29, %zmm3
vpternlogq $0xd2, %zmm1, %zmm0, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm0 # zmm0 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm2, %zmm1 # zmm1 = zmm2[0],zmm3[0],zmm2[2],zmm3[2],zmm2[4],zmm3[4],zmm2[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm0
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm0, %zmm31
vpermt2q %zmm1, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm2, %zmm2 # zmm2 = zmm2[1],zmm3[1],zmm2[3],zmm3[3],zmm2[5],zmm3[5],zmm2[7],zmm3[7]
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm0, %zmm3
vpermt2q %zmm1, %zmm27, %zmm3
vmovdqa64 %zmm29, %zmm31 {%k2}
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm2, %zmm27, %zmm29
vpermt2q %zmm1, %zmm28, %zmm0
vpermt2q %zmm2, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm1
vpternlogq $0x96, %zmm0, %zmm29, %zmm1
vpternlogq $0x96, %zmm31, %zmm30, %zmm1
vpermq %zmm1, %zmm12, %zmm2
vpermq %zmm1, %zmm13, %zmm1
vprolq $0x1, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm1, %zmm3
vpternlogq $0x96, %zmm2, %zmm1, %zmm29
vpternlogq $0x96, %zmm2, %zmm1, %zmm0
vpternlogq $0x96, %zmm2, %zmm1, %zmm30
vpternlogq $0x96, %zmm2, %zmm1, %zmm31
vprolvq %zmm14, %zmm3, %zmm1
vprolvq %zmm15, %zmm29, %zmm2
vprolvq %zmm16, %zmm0, %zmm0
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm1, %zmm19, %zmm1
vpermq %zmm2, %zmm20, %zmm2
vpermq %zmm0, %zmm21, %zmm0
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm1, %zmm30
vpternlogq $0xd2, %zmm0, %zmm2, %zmm30
vpxorq 0x40(%rsp), %zmm30, %zmm30
vmovdqa64 %zmm2, %zmm31
vpternlogq $0xd2, %zmm3, %zmm0, %zmm31
vpternlogq $0xd2, %zmm29, %zmm3, %zmm0
vpternlogq $0xd2, %zmm1, %zmm29, %zmm3
vpternlogq $0xd2, %zmm2, %zmm1, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm1 # zmm1 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm0, %zmm2 # zmm2 = zmm0[0],zmm3[0],zmm0[2],zmm3[2],zmm0[4],zmm3[4],zmm0[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm1
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm1, %zmm31
vpermt2q %zmm2, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm0, %zmm0 # zmm0 = zmm0[1],zmm3[1],zmm0[3],zmm3[3],zmm0[5],zmm3[5],zmm0[7],zmm3[7]
vmovdqa64 %zmm29, %zmm31 {%k2}
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm1, %zmm3
vpermt2q %zmm2, %zmm27, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vpermt2q %zmm2, %zmm28, %zmm1
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm0
vpternlogq $0x96, %zmm1, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vprolvq %zmm14, %zmm3, %zmm3
vprolvq %zmm15, %zmm29, %zmm29
vprolvq %zmm16, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm17, %zmm30, %zmm0
vprolvq %zmm18, %zmm31, %zmm2
vpermq %zmm3, %zmm19, %zmm3
vpermq %zmm29, %zmm20, %zmm29
vpermq %zmm1, %zmm21, %zmm1
vpermq %zmm0, %zmm22, %zmm0
vpermq %zmm2, %zmm23, %zmm2
vmovdqa64 %zmm3, %zmm30
vpternlogq $0xd2, %zmm1, %zmm29, %zmm30
vpxorq (%rsp), %zmm30, %zmm30
vmovdqa64 %zmm29, %zmm31
vpternlogq $0xd2, %zmm0, %zmm1, %zmm31
vpternlogq $0xd2, %zmm2, %zmm0, %zmm1
vpternlogq $0xd2, %zmm3, %zmm2, %zmm0
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpunpcklqdq %zmm31, %zmm30, %zmm3 # zmm3 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm0, %zmm1, %zmm29 # zmm29 = zmm1[0],zmm0[0],zmm1[2],zmm0[2],zmm1[4],zmm0[4],zmm1[6],zmm0[6]
vpermt2q %zmm2, %zmm24, %zmm3
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm3, %zmm31
vpermt2q %zmm29, %zmm25, %zmm31
vpunpckhqdq %zmm0, %zmm1, %zmm0 # zmm0 = zmm1[1],zmm0[1],zmm1[3],zmm0[3],zmm1[5],zmm0[5],zmm1[7],zmm0[7]
vpermt2q %zmm2, %zmm26, %zmm30
vmovdqa64 %zmm3, %zmm1
vpermt2q %zmm29, %zmm27, %zmm1
vpermt2q %zmm29, %zmm28, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vmovdqa64 %zmm2, %zmm31 {%k2}
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm1, %zmm0
vpternlogq $0x96, %zmm3, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm14, %zmm1, %zmm0
vprolvq %zmm15, %zmm29, %zmm1
vprolvq %zmm16, %zmm3, %zmm2
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm0, %zmm19, %zmm0
vpermq %zmm1, %zmm20, %zmm1
vpermq %zmm2, %zmm21, %zmm2
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm0, %zmm30
vpternlogq $0xd2, %zmm2, %zmm1, %zmm30
vmovdqa64 %zmm1, %zmm31
vpternlogq $0xd2, %zmm3, %zmm2, %zmm31
vpxorq %zmm30, %zmm5, %zmm30
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpternlogq $0xd2, %zmm0, %zmm29, %zmm3
vpternlogq $0xd2, %zmm1, %zmm0, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm0 # zmm0 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm2, %zmm1 # zmm1 = zmm2[0],zmm3[0],zmm2[2],zmm3[2],zmm2[4],zmm3[4],zmm2[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm0
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm0, %zmm31
vpermt2q %zmm1, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm2, %zmm2 # zmm2 = zmm2[1],zmm3[1],zmm2[3],zmm3[3],zmm2[5],zmm3[5],zmm2[7],zmm3[7]
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm0, %zmm3
vpermt2q %zmm1, %zmm27, %zmm3
vmovdqa64 %zmm29, %zmm31 {%k2}
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm2, %zmm27, %zmm29
vpermt2q %zmm1, %zmm28, %zmm0
vpermt2q %zmm2, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm1
vpternlogq $0x96, %zmm0, %zmm29, %zmm1
vpternlogq $0x96, %zmm31, %zmm30, %zmm1
vpermq %zmm1, %zmm12, %zmm2
vpermq %zmm1, %zmm13, %zmm1
vprolq $0x1, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm1, %zmm3
vpternlogq $0x96, %zmm2, %zmm1, %zmm29
vpternlogq $0x96, %zmm2, %zmm1, %zmm0
vpternlogq $0x96, %zmm2, %zmm1, %zmm30
vpternlogq $0x96, %zmm2, %zmm1, %zmm31
vprolvq %zmm14, %zmm3, %zmm1
vprolvq %zmm15, %zmm29, %zmm2
vprolvq %zmm16, %zmm0, %zmm0
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm1, %zmm19, %zmm1
vpermq %zmm2, %zmm20, %zmm2
vpermq %zmm0, %zmm21, %zmm0
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm1, %zmm30
vpternlogq $0xd2, %zmm0, %zmm2, %zmm30
vpxorq %zmm30, %zmm6, %zmm30
vmovdqa64 %zmm2, %zmm31
vpternlogq $0xd2, %zmm3, %zmm0, %zmm31
vpternlogq $0xd2, %zmm29, %zmm3, %zmm0
vpternlogq $0xd2, %zmm1, %zmm29, %zmm3
vpternlogq $0xd2, %zmm2, %zmm1, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm1 # zmm1 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm0, %zmm2 # zmm2 = zmm0[0],zmm3[0],zmm0[2],zmm3[2],zmm0[4],zmm3[4],zmm0[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm1
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm1, %zmm31
vpermt2q %zmm2, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm0, %zmm0 # zmm0 = zmm0[1],zmm3[1],zmm0[3],zmm3[3],zmm0[5],zmm3[5],zmm0[7],zmm3[7]
vmovdqa64 %zmm29, %zmm31 {%k2}
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm1, %zmm3
vpermt2q %zmm2, %zmm27, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vpermt2q %zmm2, %zmm28, %zmm1
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm0
vpternlogq $0x96, %zmm1, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vprolvq %zmm14, %zmm3, %zmm3
vprolvq %zmm15, %zmm29, %zmm29
vprolvq %zmm16, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm17, %zmm30, %zmm0
vprolvq %zmm18, %zmm31, %zmm2
vpermq %zmm3, %zmm19, %zmm3
vpermq %zmm29, %zmm20, %zmm29
vpermq %zmm1, %zmm21, %zmm1
vpermq %zmm0, %zmm22, %zmm0
vpermq %zmm2, %zmm23, %zmm2
vmovdqa64 %zmm3, %zmm30
vpternlogq $0xd2, %zmm1, %zmm29, %zmm30
vpxorq %zmm30, %zmm7, %zmm30
vmovdqa64 %zmm29, %zmm31
vpternlogq $0xd2, %zmm0, %zmm1, %zmm31
vpternlogq $0xd2, %zmm2, %zmm0, %zmm1
vpternlogq $0xd2, %zmm3, %zmm2, %zmm0
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpunpcklqdq %zmm31, %zmm30, %zmm3 # zmm3 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm0, %zmm1, %zmm29 # zmm29 = zmm1[0],zmm0[0],zmm1[2],zmm0[2],zmm1[4],zmm0[4],zmm1[6],zmm0[6]
vpermt2q %zmm2, %zmm24, %zmm3
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm3, %zmm31
vpermt2q %zmm29, %zmm25, %zmm31
vpunpckhqdq %zmm0, %zmm1, %zmm0 # zmm0 = zmm1[1],zmm0[1],zmm1[3],zmm0[3],zmm1[5],zmm0[5],zmm1[7],zmm0[7]
vpermt2q %zmm2, %zmm26, %zmm30
vmovdqa64 %zmm3, %zmm1
vpermt2q %zmm29, %zmm27, %zmm1
vpermt2q %zmm29, %zmm28, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vmovdqa64 %zmm2, %zmm31 {%k2}
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm1, %zmm0
vpternlogq $0x96, %zmm3, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm14, %zmm1, %zmm0
vprolvq %zmm15, %zmm29, %zmm1
vprolvq %zmm16, %zmm3, %zmm2
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm0, %zmm19, %zmm0
vpermq %zmm1, %zmm20, %zmm1
vpermq %zmm2, %zmm21, %zmm2
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm0, %zmm30
vpternlogq $0xd2, %zmm2, %zmm1, %zmm30
vmovdqa64 %zmm1, %zmm31
vpternlogq $0xd2, %zmm3, %zmm2, %zmm31
vpxorq %zmm30, %zmm8, %zmm30
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpternlogq $0xd2, %zmm0, %zmm29, %zmm3
vpternlogq $0xd2, %zmm1, %zmm0, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm0 # zmm0 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm2, %zmm1 # zmm1 = zmm2[0],zmm3[0],zmm2[2],zmm3[2],zmm2[4],zmm3[4],zmm2[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm0
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm0, %zmm31
vpermt2q %zmm1, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm2, %zmm2 # zmm2 = zmm2[1],zmm3[1],zmm2[3],zmm3[3],zmm2[5],zmm3[5],zmm2[7],zmm3[7]
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm0, %zmm3
vpermt2q %zmm1, %zmm27, %zmm3
vmovdqa64 %zmm29, %zmm31 {%k2}
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm2, %zmm27, %zmm29
vpermt2q %zmm1, %zmm28, %zmm0
vpermt2q %zmm2, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm1
vpternlogq $0x96, %zmm0, %zmm29, %zmm1
vpternlogq $0x96, %zmm31, %zmm30, %zmm1
vpermq %zmm1, %zmm12, %zmm2
vpermq %zmm1, %zmm13, %zmm1
vprolq $0x1, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm1, %zmm3
vpternlogq $0x96, %zmm2, %zmm1, %zmm29
vpternlogq $0x96, %zmm2, %zmm1, %zmm0
vpternlogq $0x96, %zmm2, %zmm1, %zmm30
vpternlogq $0x96, %zmm2, %zmm1, %zmm31
vprolvq %zmm14, %zmm3, %zmm1
vprolvq %zmm15, %zmm29, %zmm2
vprolvq %zmm16, %zmm0, %zmm0
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm1, %zmm19, %zmm1
vpermq %zmm2, %zmm20, %zmm2
vpermq %zmm0, %zmm21, %zmm0
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm29
vmovdqa64 %zmm1, %zmm30
vpternlogq $0xd2, %zmm0, %zmm2, %zmm30
vpxorq %zmm30, %zmm9, %zmm30
vmovdqa64 %zmm2, %zmm31
vpternlogq $0xd2, %zmm3, %zmm0, %zmm31
vpternlogq $0xd2, %zmm29, %zmm3, %zmm0
vpternlogq $0xd2, %zmm1, %zmm29, %zmm3
vpternlogq $0xd2, %zmm2, %zmm1, %zmm29
vpunpcklqdq %zmm31, %zmm30, %zmm1 # zmm1 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm3, %zmm0, %zmm2 # zmm2 = zmm0[0],zmm3[0],zmm0[2],zmm3[2],zmm0[4],zmm3[4],zmm0[6],zmm3[6]
vpermt2q %zmm29, %zmm24, %zmm1
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm1, %zmm31
vpermt2q %zmm2, %zmm25, %zmm31
vpunpckhqdq %zmm3, %zmm0, %zmm0 # zmm0 = zmm0[1],zmm3[1],zmm0[3],zmm3[3],zmm0[5],zmm3[5],zmm0[7],zmm3[7]
vmovdqa64 %zmm29, %zmm31 {%k2}
vpermt2q %zmm29, %zmm26, %zmm30
vmovdqa64 %zmm1, %zmm3
vpermt2q %zmm2, %zmm27, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vpermt2q %zmm2, %zmm28, %zmm1
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm3, %zmm0
vpternlogq $0x96, %zmm1, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vprolvq %zmm14, %zmm3, %zmm3
vprolvq %zmm15, %zmm29, %zmm29
vprolvq %zmm16, %zmm1, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm17, %zmm30, %zmm0
vprolvq %zmm18, %zmm31, %zmm2
vpermq %zmm3, %zmm19, %zmm3
vpermq %zmm29, %zmm20, %zmm29
vpermq %zmm1, %zmm21, %zmm1
vpermq %zmm0, %zmm22, %zmm0
vpermq %zmm2, %zmm23, %zmm2
vmovdqa64 %zmm3, %zmm30
vpternlogq $0xd2, %zmm1, %zmm29, %zmm30
vpxorq %zmm30, %zmm10, %zmm30
vmovdqa64 %zmm29, %zmm31
vpternlogq $0xd2, %zmm0, %zmm1, %zmm31
vpternlogq $0xd2, %zmm2, %zmm0, %zmm1
vpternlogq $0xd2, %zmm3, %zmm2, %zmm0
vpternlogq $0xd2, %zmm29, %zmm3, %zmm2
vpunpcklqdq %zmm31, %zmm30, %zmm3 # zmm3 = zmm30[0],zmm31[0],zmm30[2],zmm31[2],zmm30[4],zmm31[4],zmm30[6],zmm31[6]
vpunpcklqdq %zmm0, %zmm1, %zmm29 # zmm29 = zmm1[0],zmm0[0],zmm1[2],zmm0[2],zmm1[4],zmm0[4],zmm1[6],zmm0[6]
vpermt2q %zmm2, %zmm24, %zmm3
vpunpckhqdq %zmm31, %zmm30, %zmm30 # zmm30 = zmm30[1],zmm31[1],zmm30[3],zmm31[3],zmm30[5],zmm31[5],zmm30[7],zmm31[7]
vmovdqa64 %zmm3, %zmm31
vpermt2q %zmm29, %zmm25, %zmm31
vpunpckhqdq %zmm0, %zmm1, %zmm0 # zmm0 = zmm1[1],zmm0[1],zmm1[3],zmm0[3],zmm1[5],zmm0[5],zmm1[7],zmm0[7]
vpermt2q %zmm2, %zmm26, %zmm30
vmovdqa64 %zmm3, %zmm1
vpermt2q %zmm29, %zmm27, %zmm1
vpermt2q %zmm29, %zmm28, %zmm3
vmovdqa64 %zmm30, %zmm29
vpermt2q %zmm0, %zmm27, %zmm29
vmovdqa64 %zmm2, %zmm31 {%k2}
vpermt2q %zmm0, %zmm28, %zmm30
vmovdqa64 %zmm1, %zmm0
vpternlogq $0x96, %zmm3, %zmm29, %zmm0
vpternlogq $0x96, %zmm31, %zmm30, %zmm0
vpermq %zmm0, %zmm12, %zmm2
vpermq %zmm0, %zmm13, %zmm0
vprolq $0x1, %zmm0, %zmm0
vpternlogq $0x96, %zmm2, %zmm0, %zmm1
vpternlogq $0x96, %zmm2, %zmm0, %zmm29
vpternlogq $0x96, %zmm2, %zmm0, %zmm3
vpternlogq $0x96, %zmm2, %zmm0, %zmm30
vpternlogq $0x96, %zmm2, %zmm0, %zmm31
vprolvq %zmm14, %zmm1, %zmm0
vprolvq %zmm15, %zmm29, %zmm1
vprolvq %zmm16, %zmm3, %zmm2
vprolvq %zmm17, %zmm30, %zmm3
vprolvq %zmm18, %zmm31, %zmm29
vpermq %zmm0, %zmm19, %zmm0
vpermq %zmm1, %zmm20, %zmm1
vpermq %zmm2, %zmm21, %zmm2
vpermq %zmm3, %zmm22, %zmm3
vpermq %zmm29, %zmm23, %zmm4
vmovdqa64 %zmm0, %zmm29
vpternlogq $0xd2, %zmm2, %zmm1, %zmm29
vmovdqa64 %zmm1, %zmm30
vpternlogq $0xd2, %zmm3, %zmm2, %zmm30
vpternlogq $0xd2, %zmm4, %zmm3, %zmm2
vpternlogq $0xd2, %zmm0, %zmm4, %zmm3
vpternlogq $0xd2, %zmm1, %zmm0, %zmm4
vpxorq %zmm29, %zmm11, %zmm0
vpunpcklqdq %zmm30, %zmm0, %zmm29 # zmm29 = zmm0[0],zmm30[0],zmm0[2],zmm30[2],zmm0[4],zmm30[4],zmm0[6],zmm30[6]
vpunpckhqdq %zmm30, %zmm0, %zmm30 # zmm30 = zmm0[1],zmm30[1],zmm0[3],zmm30[3],zmm0[5],zmm30[5],zmm0[7],zmm30[7]
vpunpcklqdq %zmm3, %zmm2, %zmm1 # zmm1 = zmm2[0],zmm3[0],zmm2[2],zmm3[2],zmm2[4],zmm3[4],zmm2[6],zmm3[6]
vpermt2q %zmm4, %zmm24, %zmm29
vpunpckhqdq %zmm3, %zmm2, %zmm2 # zmm2 = zmm2[1],zmm3[1],zmm2[3],zmm3[3],zmm2[5],zmm3[5],zmm2[7],zmm3[7]
vmovdqa64 %zmm29, %zmm31
vpermt2q %zmm1, %zmm25, %zmm31
vmovdqa64 %zmm4, %zmm31 {%k2}
vpermt2q %zmm4, %zmm26, %zmm30
vmovdqa64 %zmm29, %zmm0
vpermt2q %zmm1, %zmm27, %zmm0
vpermt2q %zmm1, %zmm28, %zmm29
vmovdqa64 %zmm30, %zmm1
vpermt2q %zmm2, %zmm27, %zmm1
vpermt2q %zmm2, %zmm28, %zmm30
addq $0xa8, %r15
addq $-0xa8, %r13
cmpq $0xa7, %r13
ja 0x8549
jmp 0x92f5
movl %esi, %r12d
shll $0x3, %r12d
movq %rbx, %r13
cmpq %rbx, %r12
ja 0x9317
movq %rbx, %r13
testl %r12d, %r12d
je 0x92dd
xorl %eax, %eax
movb (%r15,%rax), %cl
xorb %cl, (%r14,%rax)
incq %rax
cmpq %rax, %r12
jne 0x92cd
movq %r14, %rdi
callq 0x5540
addq %r12, %r15
subq %r12, %r13
cmpq %r12, %r13
jae 0x92c6
jmp 0x9317
movq %rbx, %r13
kmovd %eax, %k1
vmovdqu64 %zmm0, (%r14) {%k1}
vmovdqu64 %zmm1, (%rcx) {%k1}
vmovdqu64 %zmm29, (%rdx) {%k1}
vmovdqu64 %zmm30, (%rsi) {%k1}
vmovdqu64 %zmm31, (%rdi) {%k1}
subq %r13, %rbx
movq %rbx, %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
vzeroupper
retq
nopl (%rax)