// File: /workspace/github_c_makefile_star2_O1/mjosaarinen[P]brutus/crypto_aead/tiaoxinv2/nim/tiaoxin-optimized.c
// Function: tiaoxin_optimized_encrypt
int tiaoxin_optimized_encrypt( const unsigned char *ad,unsigned long long adlen,
			       const unsigned char *m,unsigned long long mlen,
			       const unsigned char *nsec,const unsigned char *npub,const unsigned char *k,
			       unsigned char *c,unsigned long long *clen)
{
	unsigned long long i;
	unsigned char incomplete_block[32];
	__m128i T3[3];	
	__m128i T4[4];	
	__m128i T6[6];	
	__m128i tmp;	
	__m128i Z0 	= constant8( 0x42,0x8a,0x2f,0x98,0xd7,0x28,0xae,0x22,0x71,0x37,0x44,0x91,0x23,0xef,0x65,0xcd );
	__m128i Z1 	= constant8( 0xb5,0xc0,0xfb,0xcf,0xec,0x4d,0x3b,0x2f,0xe9,0xb5,0xdb,0xa5,0x81,0x89,0xdb,0xbc );
	__m128i perm    = constant8( 7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8 );
	__m128i K;
	__m128i IV;
	__m128i Tag;
	__m128i M[4];	
	__m128i W0,W1;	
	
	/*
	 * Get the key and the nonce
	 */
	K  = load( (__m128i *) ( k ) );
	IV = load( (__m128i *) ( npub ) );	
	
		
	W0 = _mm_set_epi64x( 0, adlen );
	W1 = _mm_set_epi64x( 0 , mlen  );
	W0 = _mm_shuffle_epi8( W0 , perm  );
	W1 = _mm_shuffle_epi8( W1 , perm  );
		
	/* 
	 * Initialization
	 */
	T3[0] = T4[0] = T6[0] = K;
	T3[1] = T4[1] = T6[1] = K;
	T3[2] = T4[2] = T6[2] = IV;
	T4[3] = Z0; T6[3] = Z1;
	T6[4] = T6[5] = xor(Z0,Z0);
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );
	UPDATE( T3 , T4 , T6, Z0 , Z1 , Z0 );	
	
	
	/*
	 * Process associated data blocks
	 */
	for( i = 0; i + 128 <= adlen; i+=128 ){	  
	      M[0] = load( (__m128i *) (ad + i +  0) );  
	      M[1] = load( (__m128i *) (ad + i + 16) );  
	      UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	      M[2] = load( (__m128i *) (ad + i + 32) );  
	      M[3] = load( (__m128i *) (ad + i + 48) );  
	      UPDATE( T3 , T4 , T6, M[2] , M[3] , xor(M[2],M[3]) );
	      M[0] = load( (__m128i *) (ad + i + 64) );  
	      M[1] = load( (__m128i *) (ad + i + 80) );  
	      UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	      M[2] = load( (__m128i *) (ad + i + 96) );  
	      M[3] = load( (__m128i *) (ad + i +112) );  	    	            	      
	      UPDATE( T3 , T4 , T6, M[2] , M[3] , xor(M[2],M[3]) );	  
	} 
	for( ; i+32 <= adlen; i+=32 ){	  
	      M[0] = load( (__m128i *) (ad + i +  0) );  
	      M[1] = load( (__m128i *) (ad + i + 16) );  	            	      
	      UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	}
	// Incomplete block
	if( adlen > i ){
	  memset( incomplete_block , 0, 32 );
	  memcpy( incomplete_block , ad + i, adlen - i );
	  M[0] = load( (__m128i *) (incomplete_block +  0) );  
	  M[1] = load( (__m128i *) (incomplete_block + 16) );  	            	      
	  UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );	  
	}	
	
	
	/*
	 * Encryption of message blocks
	 */
	for( i = 0; i + 128 <= mlen; i+=128 ){	  
	      M[0] = load( (__m128i *) (m + i +  0) );  
	      M[1] = load( (__m128i *) (m + i + 16) );  
	      UPDATE ( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	      OUTPUT1( T3 , T4 , T6 , c , i +  0); 
	      OUTPUT2( T3 , T4 , T6 , c , i + 16);	 
	      M[2] = load( (__m128i *) (m + i + 32) );  
	      M[3] = load( (__m128i *) (m + i + 48) );  
	      UPDATE ( T3 , T4 , T6, M[2] , M[3] , xor(M[2],M[3]) );
	      OUTPUT1( T3 , T4 , T6 , c , i + 32); 
	      OUTPUT2( T3 , T4 , T6 , c , i + 48);	 
	      M[0] = load( (__m128i *) (m + i + 64) );  
	      M[1] = load( (__m128i *) (m + i + 80) );  
	      UPDATE ( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	      OUTPUT1( T3 , T4 , T6 , c , i + 64); 
	      OUTPUT2( T3 , T4 , T6 , c , i + 80);	 
	      M[2] = load( (__m128i *) (m + i + 96) );  
	      M[3] = load( (__m128i *) (m + i +112) );  
	      UPDATE ( T3 , T4 , T6, M[2] , M[3] , xor(M[2],M[3]) );
	      OUTPUT1( T3 , T4 , T6 , c , i + 96); 
	      OUTPUT2( T3 , T4 , T6 , c , i +112);  
	}    
	for( ; i + 32 <= mlen; i+=32 ){	  
	      M[0] = load( (__m128i *) (m + i +  0) );  
	      M[1] = load( (__m128i *) (m + i + 16) );  	            	      
	      UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );
	      OUTPUT1( T3 , T4 , T6 , c , i +  0); 
	      OUTPUT2( T3 , T4 , T6 , c , i + 16);	        
	}
	// Incomplete block
	if( mlen > i ){
	  memset( incomplete_block , 0, 32 );
	  memcpy( incomplete_block , m + i, mlen - i );
	  M[0] = load( (__m128i *) (incomplete_block +  0) );  
	  M[1] = load( (__m128i *) (incomplete_block + 16) );  	            	      
	  UPDATE( T3 , T4 , T6, M[0] , M[1] , xor(M[0],M[1]) );	  
	  OUTPUT1( T3 , T4 , T6 , incomplete_block ,   0); 
	  OUTPUT2( T3 , T4 , T6 , incomplete_block ,  16);	      
	  memcpy( c + i, incomplete_block, mlen - i);   
	}	
	
	/*
	 * Finalization
	 */
	// Lengths	
	UPDATE( T3 , T4 , T6 , W0 , W1 , xor(W0,W1) );
	// 20 additional rounds
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
	UPDATE( T3 , T4 , T6 , Z1 , Z0 , Z1);	
		
		
	/*
	 * Tag as XOR of all state words 
	 */
	Tag  = xor(T3[0], xor(T3[1], xor(T3[2], xor(T4[0], xor(T4[1], xor(T4[2], xor(T4[3], 
	       xor(T6[0], xor(T6[1], xor(T6[2], xor(T6[3], xor(T6[4], T6[5] ) ) ) ) ) ) ) ) ) ) ) ) ;
	store( (__m128 *)( incomplete_block ), Tag );
	memcpy( c + mlen, incomplete_block , 16 );
	
	// Set the length of the ciphertext
	*clen = mlen + 16;	
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq 0x140(%rsp), %rax
vmovdqa (%rax), %xmm1
vmovdqa (%r9), %xmm2
movq %rcx, %rbp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rsi
vmovdqa 0x2e16(%rip), %xmm15    # 0x4000
vaesenc %xmm15, %xmm2, %xmm4
vaesenc %xmm15, %xmm1, %xmm0
vpxor %xmm1, %xmm4, %xmm3
vmovdqa 0x2e10(%rip), %xmm14    # 0x4010
vaesenc %xmm14, %xmm15, %xmm5
vpxor %xmm1, %xmm5, %xmm5
vpxor %xmm6, %xmm6, %xmm6
vaesenc %xmm15, %xmm6, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vaesenc %xmm15, %xmm3, %xmm7
vpxor %xmm3, %xmm0, %xmm3
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm15, %xmm5, %xmm8
vpxor %xmm5, %xmm2, %xmm5
vaesenc %xmm15, %xmm6, %xmm2
vaesenc %xmm15, %xmm0, %xmm6
vaesenc %xmm15, %xmm3, %xmm9
vpxor %xmm3, %xmm6, %xmm3
vaesenc %xmm14, %xmm1, %xmm10
vaesenc %xmm15, %xmm5, %xmm11
vpxor %xmm5, %xmm10, %xmm5
vaesenc %xmm15, %xmm14, %xmm10
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm15, %xmm3, %xmm10
vpxor %xmm3, %xmm7, %xmm7
vaesenc %xmm14, %xmm0, %xmm3
vaesenc %xmm15, %xmm5, %xmm12
vpxor %xmm5, %xmm3, %xmm13
vaesenc %xmm15, %xmm1, %xmm3
vpxor %xmm4, %xmm1, %xmm4
vaesenc %xmm15, %xmm9, %xmm1
vaesenc %xmm15, %xmm7, %xmm9
vpxor %xmm7, %xmm1, %xmm7
vaesenc %xmm14, %xmm8, %xmm1
vaesenc %xmm15, %xmm13, %xmm5
vpxor %xmm1, %xmm13, %xmm8
vaesenc %xmm15, %xmm4, %xmm1
vpxor %xmm0, %xmm4, %xmm13
vaesenc %xmm15, %xmm10, %xmm0
vaesenc %xmm15, %xmm7, %xmm10
vpxor %xmm7, %xmm0, %xmm4
vaesenc %xmm14, %xmm11, %xmm0
vaesenc %xmm15, %xmm8, %xmm7
vpxor %xmm0, %xmm8, %xmm8
vaesenc %xmm15, %xmm13, %xmm0
vpxor %xmm6, %xmm13, %xmm6
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm4, %xmm9, %xmm9
vaesenc %xmm15, %xmm4, %xmm11
vaesenc %xmm14, %xmm12, %xmm4
vpxor %xmm4, %xmm8, %xmm12
vaesenc %xmm15, %xmm8, %xmm4
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm13, %xmm8
vpxor %xmm6, %xmm2, %xmm2
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm9, %xmm10, %xmm10
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm14, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm2, %xmm2
vmovdqa64 %xmm2, %xmm16
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm10, %xmm11, %xmm11
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm14, %xmm7, %xmm7
vmovdqa %xmm14, %xmm2
vpxor %xmm5, %xmm7, %xmm13
vaesenc %xmm15, %xmm5, %xmm7
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm3, %xmm8, %xmm3
vaesenc %xmm15, %xmm8, %xmm5
vaesenc %xmm15, %xmm9, %xmm8
vpxor %xmm11, %xmm8, %xmm9
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm4, %xmm4
vpxor %xmm4, %xmm13, %xmm14
vaesenc %xmm15, %xmm13, %xmm8
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm3, %xmm1, %xmm1
vaesenc %xmm15, %xmm3, %xmm4
vaesenc %xmm15, %xmm10, %xmm3
vpxor %xmm3, %xmm9, %xmm10
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm2, %xmm12, %xmm3
vpxor %xmm3, %xmm14, %xmm12
vaesenc %xmm15, %xmm14, %xmm3
vaesenc %xmm15, %xmm0, %xmm0
vpxor %xmm1, %xmm0, %xmm13
vaesenc %xmm15, %xmm1, %xmm0
vmovdqa64 %xmm0, %xmm20
vaesenc %xmm15, %xmm11, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm2, %xmm7, %xmm7
vpxor %xmm7, %xmm12, %xmm11
vaesenc %xmm15, %xmm12, %xmm7
vaesenc %xmm15, %xmm6, %xmm6
vpxor %xmm6, %xmm13, %xmm6
vaesenc %xmm15, %xmm13, %xmm12
vmovdqa64 %xmm12, %xmm21
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm1, %xmm9, %xmm9
vaesenc %xmm15, %xmm1, %xmm12
vaesenc %xmm2, %xmm8, %xmm1
vmovdqa %xmm2, %xmm14
vpxor %xmm1, %xmm11, %xmm8
vaesenc %xmm15, %xmm11, %xmm13
vmovdqa64 %xmm16, %xmm0
vaesenc %xmm15, %xmm0, %xmm2
vpxor %xmm6, %xmm2, %xmm11
vaesenc %xmm15, %xmm6, %xmm0
vaesenc %xmm15, %xmm10, %xmm2
vpxor %xmm2, %xmm9, %xmm6
vaesenc %xmm15, %xmm9, %xmm2
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm3, %xmm8, %xmm9
vaesenc %xmm15, %xmm8, %xmm1
vmovdqa64 %xmm1, %xmm18
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm5, %xmm11, %xmm5
vaesenc %xmm15, %xmm11, %xmm1
vaesenc %xmm15, %xmm12, %xmm8
vpxorq %xmm6, %xmm8, %xmm17
vaesenc %xmm15, %xmm6, %xmm3
vaesenc %xmm14, %xmm7, %xmm6
vpxor %xmm6, %xmm9, %xmm14
vaesenc %xmm15, %xmm9, %xmm12
vaesenc %xmm15, %xmm4, %xmm4
vpxor %xmm5, %xmm4, %xmm11
vmovdqa64 %xmm15, %xmm16
vaesenc %xmm15, %xmm5, %xmm15
cmpq $0x80, %r14
jae 0x149a
xorl %eax, %eax
vmovdqa64 %xmm21, %xmm8
vmovdqa %xmm0, %xmm10
vmovdqa %xmm1, %xmm9
vmovdqa %xmm12, %xmm1
vmovdqa64 %xmm20, %xmm0
vmovdqa64 %xmm18, %xmm4
jmp 0x1625
xorl %ecx, %ecx
vmovdqa64 %xmm1, %xmm19
vmovdqa %xmm0, %xmm5
vmovdqa64 %xmm21, %xmm6
vmovdqa64 %xmm20, %xmm7
vmovdqa %xmm12, %xmm1
vmovdqa64 %xmm18, %xmm4
vmovdqa (%rsi,%rcx), %xmm8
vmovdqa 0x10(%rsi,%rcx), %xmm9
vmovdqa 0x20(%rsi,%rcx), %xmm10
vmovdqa64 %xmm15, %xmm18
vaesenc %xmm8, %xmm2, %xmm2
vmovdqa64 %xmm1, %xmm21
vaesenc %xmm9, %xmm13, %xmm1
vpxor %xmm8, %xmm9, %xmm9
vmovdqa 0x30(%rsi,%rcx), %xmm15
vmovdqa64 %xmm17, %xmm8
vpxorq %xmm17, %xmm2, %xmm2
vmovdqa64 %xmm16, %xmm0
vaesenc %xmm0, %xmm8, %xmm12
vpxor %xmm1, %xmm14, %xmm13
vaesenc %xmm0, %xmm14, %xmm8
vaesenc %xmm9, %xmm7, %xmm1
vaesenc %xmm0, %xmm11, %xmm7
vmovdqa64 %xmm7, %xmm20
vpxor %xmm1, %xmm11, %xmm7
vaesenc %xmm10, %xmm3, %xmm1
vaesenc %xmm0, %xmm2, %xmm9
vpxor %xmm2, %xmm1, %xmm14
vaesenc %xmm15, %xmm4, %xmm2
vaesenc %xmm0, %xmm13, %xmm4
vpxor %xmm2, %xmm13, %xmm13
vpxor %xmm10, %xmm15, %xmm2
vaesenc %xmm2, %xmm6, %xmm2
vaesenc %xmm0, %xmm7, %xmm1
vmovdqa 0x40(%rsi,%rcx), %xmm6
vpxor %xmm7, %xmm2, %xmm7
vmovdqa 0x50(%rsi,%rcx), %xmm10
vaesenc %xmm6, %xmm12, %xmm3
vaesenc %xmm0, %xmm14, %xmm2
vpxor %xmm3, %xmm14, %xmm11
vmovdqa64 %xmm21, %xmm3
vaesenc %xmm10, %xmm3, %xmm12
vaesenc %xmm0, %xmm13, %xmm15
vpxor %xmm13, %xmm12, %xmm12
vmovdqa %xmm4, %xmm13
vpxor %xmm6, %xmm10, %xmm6
vmovdqa %xmm1, %xmm10
vaesenc %xmm6, %xmm5, %xmm5
vaesenc %xmm0, %xmm7, %xmm1
vpxor %xmm7, %xmm5, %xmm5
vmovdqa 0x60(%rsi,%rcx), %xmm6
vmovdqa 0x70(%rsi,%rcx), %xmm7
vaesenc %xmm6, %xmm9, %xmm9
vaesenc %xmm0, %xmm11, %xmm3
vpxorq %xmm11, %xmm9, %xmm17
vmovdqa %xmm1, %xmm9
vaesenc %xmm7, %xmm8, %xmm8
vaesenc %xmm0, %xmm12, %xmm1
vpxor %xmm12, %xmm8, %xmm14
vmovdqa64 %xmm20, %xmm8
vpxor %xmm6, %xmm7, %xmm6
vmovdqa64 %xmm19, %xmm4
vaesenc %xmm6, %xmm4, %xmm4
vaesenc %xmm0, %xmm5, %xmm6
vmovdqa64 %xmm18, %xmm0
vpxor %xmm5, %xmm4, %xmm11
vmovdqa %xmm15, %xmm4
vmovdqa %xmm6, %xmm15
leaq 0x80(%rcx), %rax
addq $0x100, %rcx            # imm = 0x100
vmovdqa64 %xmm9, %xmm19
vmovdqa %xmm10, %xmm5
vmovdqa64 %xmm20, %xmm6
vmovdqa64 %xmm18, %xmm7
cmpq %r14, %rcx
movq %rax, %rcx
jbe 0x14bc
vmovdqa %xmm4, %xmm6
vmovdqa %xmm1, %xmm12
movq %rax, %rcx
orq $0x20, %rcx
cmpq %r14, %rcx
vmovdqa %xmm13, %xmm1
jbe 0x165d
vmovdqa %xmm0, %xmm13
vmovdqa64 %xmm1, %xmm18
vmovdqa64 %xmm2, %xmm19
movq %rax, %rcx
vmovdqa %xmm14, %xmm7
vmovdqa %xmm3, %xmm14
jmp 0x1700
vmovdqa %xmm14, %xmm7
vmovdqa %xmm3, %xmm14
vmovdqa %xmm6, %xmm3
vmovdqa %xmm12, %xmm6
vmovdqa %xmm8, %xmm13
vmovdqa %xmm10, %xmm8
vmovdqa %xmm9, %xmm10
vmovdqa %xmm15, %xmm9
vmovdqa64 %xmm3, %xmm18
vmovdqa64 %xmm14, %xmm19
vmovdqa (%rsi,%rax), %xmm3
vmovdqa 0x10(%rsi,%rax), %xmm4
vaesenc %xmm3, %xmm2, %xmm2
vmovdqa64 %xmm16, %xmm5
vmovdqa %xmm0, %xmm15
vmovdqa64 %xmm17, %xmm0
vaesenc %xmm5, %xmm0, %xmm14
vpxorq %xmm17, %xmm2, %xmm17
vaesenc %xmm4, %xmm1, %xmm1
vaesenc %xmm5, %xmm7, %xmm12
vpxor %xmm7, %xmm1, %xmm7
vpxor %xmm3, %xmm4, %xmm1
vaesenc %xmm1, %xmm15, %xmm0
vaesenc %xmm5, %xmm11, %xmm15
vpxor %xmm0, %xmm11, %xmm11
leaq 0x20(%rax), %rcx
addq $0x40, %rax
vmovdqa64 %xmm19, %xmm2
vmovdqa64 %xmm18, %xmm1
vmovdqa %xmm6, %xmm3
vmovdqa %xmm13, %xmm0
cmpq %r14, %rax
movq %rcx, %rax
jbe 0x1669
vmovdqa %xmm13, 0x30(%rsp)
movq %r14, %rdx
subq %rcx, %rdx
jbe 0x1838
vpxor %xmm0, %xmm0, %xmm0
leaq 0xe0(%rsp), %r12
vmovdqu %ymm0, (%r12)
addq %rcx, %rsi
movq %r12, %rdi
vmovdqa64 %xmm17, 0x10(%rsp)
vmovdqa %xmm7, 0x70(%rsp)
vmovdqa %xmm8, 0x80(%rsp)
vmovdqa %xmm10, 0xc0(%rsp)
vmovdqa %xmm11, (%rsp)
vmovdqa %xmm9, 0x90(%rsp)
vmovdqa %xmm15, 0xd0(%rsp)
vmovdqa %xmm12, 0x60(%rsp)
vmovdqa %xmm14, 0x50(%rsp)
vmovdqa %xmm6, 0x20(%rsp)
vmovdqa64 %xmm18, 0xb0(%rsp)
vmovdqa64 %xmm19, 0x40(%rsp)
vzeroupper
callq 0x1090
vmovdqa 0x20(%rsp), %xmm13
vmovdqa 0x50(%rsp), %xmm4
vmovdqa 0x60(%rsp), %xmm5
vmovdqa (%rsp), %xmm11
vmovdqa 0x70(%rsp), %xmm7
vmovdqa 0x10(%rsp), %xmm3
vmovdqa 0x284a(%rip), %xmm15    # 0x4000
vmovdqa (%r12), %xmm0
vmovdqa 0x10(%r12), %xmm1
vmovdqa 0x40(%rsp), %xmm2
vaesenc %xmm0, %xmm2, %xmm2
vaesenc %xmm15, %xmm3, %xmm10
vpxorq %xmm3, %xmm2, %xmm17
vmovdqa 0xb0(%rsp), %xmm2
vaesenc %xmm1, %xmm2, %xmm2
vaesenc %xmm15, %xmm7, %xmm12
vpxor %xmm7, %xmm2, %xmm7
vmovdqa %xmm4, %xmm2
vpxor %xmm0, %xmm1, %xmm0
vmovdqa 0x30(%rsp), %xmm1
vaesenc %xmm0, %xmm1, %xmm0
vmovdqa 0x80(%rsp), %xmm6
vmovdqa 0xc0(%rsp), %xmm8
vmovdqa 0x90(%rsp), %xmm14
vmovdqa 0xd0(%rsp), %xmm9
vmovdqa64 %xmm15, %xmm16
vaesenc %xmm15, %xmm11, %xmm15
vpxor %xmm0, %xmm11, %xmm11
jmp 0x185b
vmovdqa %xmm14, %xmm0
vmovdqa %xmm10, %xmm14
vmovdqa %xmm6, %xmm5
vmovdqa64 %xmm18, %xmm13
vmovdqa %xmm0, %xmm10
vmovdqa64 %xmm19, %xmm2
vmovdqa 0x30(%rsp), %xmm6
movq 0x148(%rsp), %rbx
cmpq $0x80, %rbp
jae 0x1873
xorl %eax, %eax
jmp 0x1abb
xorl %ecx, %ecx
vmovdqa %xmm9, %xmm0
vmovdqa %xmm14, %xmm1
vmovdqa %xmm8, %xmm3
vmovdqa %xmm6, %xmm4
vmovdqa %xmm5, %xmm14
vmovdqa %xmm13, %xmm9
vmovdqa (%r15,%rcx), %xmm6
vmovdqa64 %xmm15, %xmm18
vmovdqa %xmm10, %xmm13
vmovdqa %xmm7, %xmm10
vmovdqa 0x10(%r15,%rcx), %xmm7
vaesenc %xmm6, %xmm2, %xmm2
vmovdqa64 %xmm16, %xmm15
vmovdqa64 %xmm17, %xmm8
vaesenc %xmm15, %xmm8, %xmm5
vpxorq %xmm17, %xmm2, %xmm8
vaesenc %xmm7, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm2
vpxor %xmm10, %xmm9, %xmm9
vpxor %xmm6, %xmm7, %xmm6
vaesenc %xmm6, %xmm4, %xmm4
vpxor %xmm4, %xmm11, %xmm6
vmovdqa %xmm13, %xmm4
vpternlogq $0x78, %xmm0, %xmm14, %xmm4
vpternlogq $0x96, %xmm8, %xmm2, %xmm4
vmovdqu %xmm4, (%rbx,%rcx)
vmovdqa %xmm12, %xmm4
vpternlogq $0x78, %xmm3, %xmm13, %xmm4
vpternlogq $0x96, %xmm5, %xmm6, %xmm4
vmovdqu %xmm4, 0x10(%rbx,%rcx)
vmovdqa 0x20(%r15,%rcx), %xmm7
vmovdqa 0x30(%r15,%rcx), %xmm10
vaesenc %xmm15, %xmm11, %xmm4
vmovdqa64 %xmm4, %xmm17
vaesenc %xmm7, %xmm13, %xmm11
vaesenc %xmm15, %xmm8, %xmm4
vpxor %xmm8, %xmm11, %xmm8
vaesenc %xmm10, %xmm14, %xmm11
vaesenc %xmm15, %xmm9, %xmm13
vpxor %xmm9, %xmm11, %xmm9
vpxor %xmm7, %xmm10, %xmm7
vaesenc %xmm7, %xmm3, %xmm3
vpxor %xmm6, %xmm3, %xmm3
vmovdqa %xmm5, %xmm7
vpternlogq $0x78, %xmm12, %xmm18, %xmm7
vpternlogq $0x96, %xmm8, %xmm13, %xmm7
vmovdqu %xmm7, 0x20(%rbx,%rcx)
vmovdqa %xmm2, %xmm7
vpternlogq $0x78, %xmm1, %xmm5, %xmm7
vpternlogq $0x96, %xmm4, %xmm3, %xmm7
vmovdqu %xmm7, 0x30(%rbx,%rcx)
vaesenc %xmm15, %xmm6, %xmm6
vmovdqa64 %xmm6, %xmm19
vmovdqa 0x40(%r15,%rcx), %xmm6
vmovdqa 0x50(%r15,%rcx), %xmm7
vaesenc %xmm6, %xmm5, %xmm5
vaesenc %xmm15, %xmm8, %xmm14
vpxor %xmm5, %xmm8, %xmm5
vaesenc %xmm7, %xmm12, %xmm8
vaesenc %xmm15, %xmm9, %xmm11
vpxor %xmm9, %xmm8, %xmm8
vpxor %xmm6, %xmm7, %xmm6
vaesenc %xmm6, %xmm1, %xmm1
vpxor %xmm3, %xmm1, %xmm1
vmovdqa64 %xmm17, %xmm6
vpternlogq $0x6c, %xmm2, %xmm4, %xmm6
vpternlogq $0x96, %xmm5, %xmm11, %xmm6
vmovdqu %xmm6, 0x40(%rbx,%rcx)
vmovdqa %xmm13, %xmm6
vpternlogq $0x78, %xmm0, %xmm4, %xmm6
vpternlogq $0x96, %xmm14, %xmm1, %xmm6
vmovdqu %xmm6, 0x50(%rbx,%rcx)
vmovdqa 0x60(%r15,%rcx), %xmm6
vaesenc %xmm15, %xmm3, %xmm9
vmovdqa 0x70(%r15,%rcx), %xmm3
vaesenc %xmm6, %xmm4, %xmm4
vaesenc %xmm15, %xmm5, %xmm10
vpxor %xmm5, %xmm4, %xmm4
vaesenc %xmm3, %xmm2, %xmm2
vaesenc %xmm15, %xmm8, %xmm12
vpxor %xmm2, %xmm8, %xmm7
vmovdqa64 %xmm17, %xmm8
vpxor %xmm6, %xmm3, %xmm2
vmovdqa64 %xmm18, %xmm6
vmovdqa %xmm11, %xmm5
vaesenc %xmm2, %xmm0, %xmm0
vmovdqa %xmm14, %xmm2
vmovdqa64 %xmm19, %xmm14
vaesenc %xmm15, %xmm1, %xmm15
vpxor %xmm1, %xmm0, %xmm11
vmovdqa64 %xmm19, %xmm0
vpternlogq $0x6c, %xmm13, %xmm2, %xmm0
vmovdqa64 %xmm4, %xmm17
vpternlogq $0x96, %xmm4, %xmm12, %xmm0
vmovdqu %xmm0, 0x60(%rbx,%rcx)
vmovdqa %xmm5, %xmm0
vpternlogq $0x78, %xmm18, %xmm2, %xmm0
vpternlogq $0x96, %xmm10, %xmm11, %xmm0
vmovdqu %xmm0, 0x70(%rbx,%rcx)
leaq 0x80(%rcx), %rax
addq $0x100, %rcx            # imm = 0x100
vmovdqa %xmm9, %xmm0
vmovdqa64 %xmm19, %xmm1
vmovdqa %xmm8, %xmm3
vmovdqa64 %xmm18, %xmm4
cmpq %rbp, %rcx
movq %rax, %rcx
jbe 0x1885
movq %rax, %rcx
orq $0x20, %rcx
cmpq %rbp, %rcx
jbe 0x1aee
vmovdqa64 %xmm5, %xmm18
vmovdqa64 %xmm13, %xmm19
vmovdqa64 %xmm2, %xmm20
movq %rax, %r12
vmovdqa %xmm10, %xmm1
vmovdqa %xmm14, %xmm10
vmovdqa %xmm6, %xmm14
jmp 0x1bcd
vmovdqa %xmm10, %xmm1
vmovdqa %xmm14, %xmm10
vmovdqa (%r15,%rax), %xmm0
vmovdqa64 %xmm12, %xmm18
vmovdqa %xmm8, %xmm14
vmovdqa %xmm10, %xmm8
vmovdqa %xmm9, %xmm10
vmovdqa %xmm15, %xmm9
vmovdqa64 %xmm5, %xmm19
vmovdqa64 %xmm1, %xmm20
vmovdqa 0x10(%r15,%rax), %xmm1
vaesenc %xmm0, %xmm2, %xmm2
vmovdqa64 %xmm16, %xmm3
vmovdqa64 %xmm17, %xmm4
vaesenc %xmm3, %xmm4, %xmm5
vpxorq %xmm17, %xmm2, %xmm4
vaesenc %xmm1, %xmm13, %xmm2
vaesenc %xmm3, %xmm7, %xmm12
vpxor %xmm7, %xmm2, %xmm7
vpxor %xmm0, %xmm1, %xmm0
vmovdqa %xmm5, %xmm1
vaesenc %xmm0, %xmm6, %xmm0
vaesenc %xmm3, %xmm11, %xmm15
vpxor %xmm0, %xmm11, %xmm11
vmovdqa64 %xmm20, %xmm0
vpternlogq $0x78, %xmm10, %xmm19, %xmm0
vmovdqa64 %xmm4, %xmm17
vpternlogq $0x96, %xmm4, %xmm12, %xmm0
vmovdqu %xmm0, (%rbx,%rax)
vmovdqa64 %xmm18, %xmm0
vpternlogq $0x78, %xmm14, %xmm20, %xmm0
vpternlogq $0x96, %xmm5, %xmm11, %xmm0
vmovdqu %xmm0, 0x10(%rbx,%rax)
leaq 0x20(%rax), %r12
addq $0x40, %rax
vmovdqa64 %xmm20, %xmm2
vmovdqa64 %xmm19, %xmm13
vmovdqa64 %xmm18, %xmm5
vmovdqa %xmm14, %xmm6
cmpq %rbp, %rax
movq %r12, %rax
jbe 0x1af7
vmovdqa64 %xmm18, 0x30(%rsp)
vmovdqa %xmm7, 0x70(%rsp)
movq 0x150(%rsp), %rax
movq %rbp, %r13
subq %r12, %r13
jbe 0x1dbe
vpxor %xmm0, %xmm0, %xmm0
movq %rbp, 0xb0(%rsp)
leaq 0xe0(%rsp), %rbp
vmovdqu %ymm0, (%rbp)
addq %r12, %r15
movq %rbp, %rdi
movq %r15, %rsi
movq %r13, %rdx
vmovdqa64 %xmm17, 0x10(%rsp)
vmovdqa %xmm8, 0x80(%rsp)
vmovdqa %xmm10, 0xc0(%rsp)
vmovdqa %xmm11, (%rsp)
vmovdqa %xmm9, 0x90(%rsp)
vmovdqa %xmm15, 0xd0(%rsp)
vmovdqa %xmm12, 0x60(%rsp)
vmovdqa %xmm1, 0x50(%rsp)
movq %rax, %r15
vmovdqa %xmm14, 0x20(%rsp)
vmovdqa64 %xmm19, 0x40(%rsp)
vmovdqa64 %xmm20, 0xa0(%rsp)
vzeroupper
callq 0x1090
vmovdqa (%rbp), %xmm0
vmovdqa 0x10(%rbp), %xmm1
vmovdqa 0xa0(%rsp), %xmm2
vaesenc %xmm0, %xmm2, %xmm2
vmovdqa 0x10(%rsp), %xmm3
vaesenc 0x2367(%rip), %xmm3, %xmm4 # 0x4000
vmovdqa 0x10(%rsp), %xmm3
vpxor %xmm3, %xmm2, %xmm3
vmovdqa %xmm3, 0x10(%rsp)
vmovdqa 0x40(%rsp), %xmm2
vaesenc %xmm1, %xmm2, %xmm2
vmovdqa 0x70(%rsp), %xmm3
vaesenc 0x233d(%rip), %xmm3, %xmm5 # 0x4000
vmovdqa %xmm5, 0xa0(%rsp)
vpxor %xmm3, %xmm2, %xmm3
vmovdqa %xmm3, 0x70(%rsp)
vpxor %xmm0, %xmm1, %xmm0
vmovdqa 0x20(%rsp), %xmm1
vaesenc %xmm0, %xmm1, %xmm0
vmovdqa (%rsp), %xmm1
vaesenc 0x230d(%rip), %xmm1, %xmm1 # 0x4000
vmovdqa %xmm1, 0x40(%rsp)
vmovdqa 0x50(%rsp), %xmm2
vmovdqa %xmm2, %xmm1
vmovdqa 0x30(%rsp), %xmm3
vpternlogq $0x78, 0x90(%rsp), %xmm3, %xmm1
vpternlogq $0x96, 0x10(%rsp), %xmm5, %xmm1
vmovdqa %xmm1, (%rbp)
vmovdqa (%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm1
vmovdqa %xmm1, (%rsp)
vmovdqa 0x60(%rsp), %xmm0
vpternlogq $0x78, 0x80(%rsp), %xmm2, %xmm0
vmovdqa %xmm4, 0x20(%rsp)
vpternlogq $0x96, (%rsp), %xmm4, %xmm0
vmovdqa %xmm0, 0x10(%rbp)
addq %rbx, %r12
movq %r12, %rdi
movq %rbp, %rsi
movq 0xb0(%rsp), %rbp
movq %r13, %rdx
callq 0x1090
vmovdqa 0xa0(%rsp), %xmm13
vmovdqa 0x30(%rsp), %xmm12
movq %r15, %rax
vmovdqa (%rsp), %xmm11
vmovdqa64 0x10(%rsp), %xmm17
vmovdqa64 0x226e(%rip), %xmm16 # 0x4000
vmovdqa 0x80(%rsp), %xmm14
vmovdqa 0xc0(%rsp), %xmm8
vmovdqa 0x90(%rsp), %xmm10
vmovdqa 0xd0(%rsp), %xmm9
vmovdqa 0x40(%rsp), %xmm7
jmp 0x1de7
vmovdqa %xmm12, %xmm13
vmovdqa 0x30(%rsp), %xmm0
vmovdqa %xmm0, 0x60(%rsp)
vmovdqa64 %xmm19, %xmm12
vmovdqa %xmm1, 0x20(%rsp)
vmovdqa64 %xmm20, 0x50(%rsp)
vmovdqa %xmm15, %xmm7
vmovq %rbp, %xmm0
vmovdqa 0x222c(%rip), %xmm2     # 0x4020
vpshufb %xmm2, %xmm0, %xmm1
vmovq %r14, %xmm0
vpshufb %xmm2, %xmm0, %xmm2
vpxor %xmm2, %xmm1, %xmm0
vaesenc %xmm0, %xmm14, %xmm0
vpxor %xmm0, %xmm11, %xmm3
vmovdqa64 %xmm16, %xmm15
vaesenc %xmm15, %xmm11, %xmm0
vmovdqa 0x21ed(%rip), %xmm14    # 0x4010
vaesenc %xmm14, %xmm8, %xmm4
vpxor %xmm3, %xmm4, %xmm4
vaesenc %xmm15, %xmm3, %xmm3
vaesenc %xmm14, %xmm10, %xmm5
vpxor %xmm4, %xmm5, %xmm5
vaesenc %xmm15, %xmm4, %xmm4
vaesenc %xmm14, %xmm9, %xmm6
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm15, %xmm5, %xmm5
vaesenc %xmm14, %xmm7, %xmm7
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm7, %xmm0, %xmm8
vaesenc %xmm15, %xmm7, %xmm0
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm3, %xmm8, %xmm7
vaesenc %xmm15, %xmm8, %xmm3
vaesenc %xmm14, %xmm4, %xmm4
vpxor %xmm7, %xmm4, %xmm8
vaesenc %xmm15, %xmm7, %xmm4
vaesenc %xmm14, %xmm5, %xmm5
vpxor %xmm5, %xmm8, %xmm5
vaesenc %xmm15, %xmm8, %xmm7
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm5, %xmm6, %xmm8
vaesenc %xmm15, %xmm5, %xmm6
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm0, %xmm8, %xmm0
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm0, %xmm3, %xmm5
vaesenc %xmm15, %xmm0, %xmm9
vaesenc %xmm14, %xmm4, %xmm0
vpxor %xmm5, %xmm0, %xmm3
vaesenc %xmm14, %xmm7, %xmm0
vpxor %xmm3, %xmm0, %xmm0
vaesenc %xmm14, %xmm6, %xmm4
vpxor %xmm0, %xmm4, %xmm4
vaesenc %xmm14, %xmm8, %xmm6
vpxor %xmm4, %xmm6, %xmm6
vaesenc %xmm14, %xmm9, %xmm7
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm15, %xmm7, %xmm8
vpxor %xmm6, %xmm8, %xmm6
vmovdqa 0x50(%rsp), %xmm8
vaesenc %xmm2, %xmm8, %xmm2
vaesenc %xmm1, %xmm12, %xmm1
vmovdqa64 %xmm17, %xmm8
vpxorq %xmm17, %xmm2, %xmm2
vaesenc %xmm15, %xmm8, %xmm8
vmovdqa 0x70(%rsp), %xmm9
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vmovdqa 0x20(%rsp), %xmm10
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm15, %xmm2, %xmm2
vmovdqa 0x60(%rsp), %xmm11
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm13, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm5, %xmm5
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm15, %xmm1, %xmm13
vaesenc %xmm14, %xmm8, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm15, %xmm10, %xmm8
vaesenc %xmm15, %xmm12, %xmm10
vpxor %xmm11, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm1, %xmm2, %xmm2
vaesenc %xmm15, %xmm1, %xmm12
vaesenc %xmm15, %xmm9, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm15, %xmm10, %xmm9
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm2, %xmm8, %xmm8
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm13, %xmm10
vpxor %xmm1, %xmm10, %xmm10
vaesenc %xmm14, %xmm12, %xmm12
vpxor %xmm8, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm10, %xmm11, %xmm11
vaesenc %xmm14, %xmm5, %xmm5
vpxor %xmm7, %xmm5, %xmm5
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm2, %xmm12, %xmm2
vaesenc %xmm15, %xmm9, %xmm7
vaesenc %xmm15, %xmm11, %xmm9
vpxor %xmm7, %xmm11, %xmm7
vaesenc %xmm15, %xmm5, %xmm11
vpternlogq $0x96, %xmm9, %xmm11, %xmm6
vaesenc %xmm15, %xmm2, %xmm9
vaesenc %xmm15, %xmm7, %xmm11
vpternlogq $0x96, %xmm9, %xmm11, %xmm6
vaesenc %xmm15, %xmm3, %xmm3
vaesenc %xmm15, %xmm12, %xmm9
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm5, %xmm3, %xmm3
vaesenc %xmm15, %xmm3, %xmm5
vaesenc %xmm14, %xmm9, %xmm9
vpternlogq $0x96, %xmm5, %xmm9, %xmm6
vaesenc %xmm15, %xmm8, %xmm5
vaesenc %xmm15, %xmm10, %xmm8
vaesenc %xmm14, %xmm5, %xmm5
vpxor %xmm2, %xmm5, %xmm2
vaesenc %xmm15, %xmm2, %xmm5
vaesenc %xmm15, %xmm8, %xmm8
vpternlogq $0x96, %xmm5, %xmm8, %xmm6
vaesenc %xmm15, %xmm4, %xmm4
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm7, %xmm1, %xmm1
vaesenc %xmm15, %xmm1, %xmm5
vaesenc %xmm14, %xmm4, %xmm4
vpternlogq $0x96, %xmm5, %xmm4, %xmm6
vaesenc %xmm15, %xmm0, %xmm0
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm3, %xmm0, %xmm0
vaesenc %xmm15, %xmm0, %xmm3
vpternlogq $0x96, %xmm3, %xmm2, %xmm6
vpternlogq $0x96, %xmm1, %xmm0, %xmm6
vmovdqa %xmm6, 0xe0(%rsp)
vmovaps 0xe0(%rsp), %xmm0
vmovups %xmm0, (%rbx,%rbp)
addq $0x10, %rbp
movq %rbp, (%rax)
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq