// File: /workspace/github_c_makefile_star2_O3/mjosaarinen[P]brutus/crypto_aead/tiaoxinv2/nim/tiaoxin-optimized.c
// Function: tiaoxin_optimized_decrypt
int tiaoxin_optimized_decrypt(unsigned char *m,unsigned long long *mlen,
			      unsigned char *nsec,
			      const unsigned char *c,unsigned long long clen,
			      const unsigned char *ad,unsigned long long adlen,
			      const unsigned char *npub,const unsigned char *k)
{	
  	
	unsigned char incomplete_block[32];
	unsigned long long i;
	__m128i T3[3];	
	__m128i T4[4];	
	__m128i T6[6];	
	__m128i W0, W1;		
	__m128i tmp;
	__m128i tmpM0,tmpM1;	
	__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 C[4];
	
	/*
	 * 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, clen-16  );
	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 ){	  
	      C[0] = load( (__m128i *) (ad + i +  0) );  
	      C[1] = load( (__m128i *) (ad + i + 16) );  
	      UPDATE( T3 , T4 , T6, C[0] , C[1] , xor(C[0],C[1]) );
	      C[2] = load( (__m128i *) (ad + i + 32) );  
	      C[3] = load( (__m128i *) (ad + i + 48) );  
	      UPDATE( T3 , T4 , T6, C[2] , C[3] , xor(C[2],C[3]) );
	      C[0] = load( (__m128i *) (ad + i + 64) );  
	      C[1] = load( (__m128i *) (ad + i + 80) );  
	      UPDATE( T3 , T4 , T6, C[0] , C[1] , xor(C[0],C[1]) );
	      C[2] = load( (__m128i *) (ad + i + 96) );  
	      C[3] = load( (__m128i *) (ad + i +112) );  	    	            	      
	      UPDATE( T3 , T4 , T6, C[2] , C[3] , xor(C[2],C[3]) );	  
	}  
	for( ; i+32 <= adlen; i+=32 ){	  
	      C[0] = load( (__m128i *) (ad + i +  0) );  
	      C[1] = load( (__m128i *) (ad + i + 16) );  	            	      
	      UPDATE( T3 , T4 , T6, C[0] , C[1] , xor(C[0],C[1]) );
	}
	// Incomplete block
	if( adlen > i ){
	  memset( incomplete_block , 0, 32 );
	  memcpy( incomplete_block , ad + i, adlen - i );
	  C[2] = load( (__m128i *) (incomplete_block +  0) );  
	  C[3] = load( (__m128i *) (incomplete_block + 16) );  	            	      
	  UPDATE( T3 , T4 , T6, C[2] , C[3] , xor(C[2],C[3]) );	  
	}	
	
	
	/*
	 * Decryption
	 */
	clen -= 16;
	if( clen < 0 )
	  return -1;
	
	for( i = 0; i + 128 <= clen; i+=128 ){	  
	      C[0] = load( (__m128i *) (c + i +  0) );  
	      C[1] = load( (__m128i *) (c + i + 16) );  
	      DECRYPTION_ROUND( T3 , T4 , T6, C[0] , C[1] , m + i +  0 , m + i +  16 );
	      C[2] = load( (__m128i *) (c + i + 32) );  
	      C[3] = load( (__m128i *) (c + i + 48) );  
	      DECRYPTION_ROUND( T3 , T4 , T6, C[2] , C[3] , m + i + 32 , m + i +  48 );
	      C[0] = load( (__m128i *) (c + i + 64) );  
	      C[1] = load( (__m128i *) (c + i + 80) );  
	      DECRYPTION_ROUND( T3 , T4 , T6, C[0] , C[1] , m + i + 64 , m + i +  80 );
	      C[2] = load( (__m128i *) (c + i + 96) );  
	      C[3] = load( (__m128i *) (c + i +112) ); 
	      DECRYPTION_ROUND( T3 , T4 , T6, C[2] , C[3] , m + i + 96 , m + i + 112 );	      
	}	
	for( ; i + 32 <= clen; i+=32 ){	  
	      C[0] = load( (__m128i *) (c + i +  0) );  
	      C[1] = load( (__m128i *) (c + i + 16) );  	            	      
	      DECRYPTION_ROUND( T3 , T4 , T6, C[0] , C[1] , m + i +  0 , m + i +  16 );	      		      
	}     	
	// Incomplete block
	if( clen > i ){
	  memset( incomplete_block , 0, 32 );
	  memcpy( incomplete_block , c + i, clen - i );
	  C[0] = load( (__m128i *) (incomplete_block +  0) );  
	  C[1] = load( (__m128i *) (incomplete_block + 16) );  	
	  UPDATE( T3 , T4 , T6 , xor(Z0,Z0), xor(Z0,Z0), xor(Z0,Z0) );
	  tmpM0  = xor( C[0] , xor( T3[0] , xor( T3[2] , xor( T4[1] , and( T6[3], T4[3] ) ) ) ) ) ; 
	  if( clen  - i <= 16 ){ 
	    store((__m128 *)incomplete_block, tmpM0); 
	    memset( incomplete_block + ((unsigned int)(clen  - i) ), 0, 16 - ((unsigned int)(clen  - i) ) );       
	    tmpM0 = load( incomplete_block);
	  }
	  tmpM1  = xor(xor( C[1] , xor( T6[0] , xor( T4[2] , xor( T3[1] , and( T6[5], T3[2] ) ) ) ) ),tmpM0); 	
	  if( clen - i > 16 ){ 
	    store((__m128 *)incomplete_block, tmpM1); 
	    memset( incomplete_block + (clen - i - 16 ), 0, 32 - (clen - i ) );
	    tmpM1 =  load( incomplete_block);
	  }
	  else{
	    tmpM1 = xor(Z0,Z0);
	  }
	  T3[0] = xor(T3[0],tmpM0);
	  T4[0] = xor(T4[0],tmpM1);
	  T6[0] = xor(T6[0],xor(tmpM0,tmpM1));	  
	  store((__m128 *)(incomplete_block+  0), tmpM0);
	  store((__m128 *)(incomplete_block+ 16), tmpM1);
	  memcpy( m + i +  0 , incomplete_block, clen - 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);	

	
	
	/*
	 * Produce the 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 );
	      
	/*
	 * Check if the tag is correct
	 */
	if(0!=memcmp(incomplete_block, c + clen , 16)) return -1;      
    
	
	
	// Set the length of the plaintext
	*mlen = clen;	
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %r8, %rbx
movq %rcx, %r15
movq %rsi, 0x108(%rsp)
movq %rdi, %r12
movq 0x178(%rsp), %rax
movq 0x180(%rsp), %rcx
vmovdqa (%rcx), %xmm1
vmovdqa (%rax), %xmm2
movq 0x170(%rsp), %rbp
vmovdqa 0x1da7(%rip), %xmm15    # 0x4000
vaesenc %xmm15, %xmm2, %xmm4
vaesenc %xmm15, %xmm1, %xmm0
vpxor %xmm1, %xmm4, %xmm3
vmovdqa 0x1da1(%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, %xmm5
vaesenc %xmm15, %xmm1, %xmm3
vpxor %xmm4, %xmm1, %xmm13
vaesenc %xmm15, %xmm9, %xmm1
vaesenc %xmm15, %xmm7, %xmm9
vpxor %xmm7, %xmm1, %xmm7
vaesenc %xmm14, %xmm8, %xmm1
vaesenc %xmm15, %xmm5, %xmm4
vpxor %xmm5, %xmm1, %xmm5
vaesenc %xmm15, %xmm13, %xmm1
vpxor %xmm0, %xmm13, %xmm8
vaesenc %xmm15, %xmm10, %xmm0
vaesenc %xmm15, %xmm7, %xmm10
vpxor %xmm7, %xmm0, %xmm13
vaesenc %xmm14, %xmm11, %xmm0
vaesenc %xmm15, %xmm5, %xmm7
vpxor %xmm5, %xmm0, %xmm5
vaesenc %xmm15, %xmm8, %xmm0
vpxor %xmm6, %xmm8, %xmm11
vaesenc %xmm15, %xmm9, %xmm6
vpxor %xmm6, %xmm13, %xmm9
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm14, %xmm12, %xmm6
vpxor %xmm5, %xmm6, %xmm12
vaesenc %xmm15, %xmm5, %xmm6
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm8
vpxor %xmm2, %xmm11, %xmm2
vaesenc %xmm15, %xmm11, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm9, %xmm10, %xmm10
vaesenc %xmm15, %xmm9, %xmm11
vaesenc %xmm14, %xmm4, %xmm4
vpxor %xmm4, %xmm12, %xmm4
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm13, %xmm9
vpxor %xmm10, %xmm9, %xmm13
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm14, %xmm7, %xmm7
vpxor %xmm4, %xmm7, %xmm7
vaesenc %xmm15, %xmm4, %xmm9
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm3, %xmm8, %xmm3
vaesenc %xmm15, %xmm8, %xmm4
vaesenc %xmm15, %xmm11, %xmm8
vpxor %xmm13, %xmm8, %xmm11
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm7, %xmm6, %xmm6
vaesenc %xmm15, %xmm7, %xmm8
vaesenc %xmm15, %xmm1, %xmm1
vpxor %xmm3, %xmm1, %xmm1
vaesenc %xmm15, %xmm3, %xmm3
vmovdqa64 %xmm3, %xmm18
vaesenc %xmm15, %xmm10, %xmm7
vpxor %xmm7, %xmm11, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm12, %xmm7
vmovdqa %xmm14, %xmm3
vpxor %xmm6, %xmm7, %xmm12
vaesenc %xmm15, %xmm6, %xmm7
vaesenc %xmm15, %xmm0, %xmm0
vpxor %xmm1, %xmm0, %xmm14
vaesenc %xmm15, %xmm1, %xmm0
vmovdqa64 %xmm0, %xmm21
vaesenc %xmm15, %xmm13, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm3, %xmm9, %xmm6
vpxor %xmm6, %xmm12, %xmm9
vaesenc %xmm15, %xmm12, %xmm6
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm5, %xmm14, %xmm5
vaesenc %xmm15, %xmm14, %xmm0
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm15, %xmm1, %xmm12
vaesenc %xmm3, %xmm8, %xmm1
vpxor %xmm1, %xmm9, %xmm8
vaesenc %xmm15, %xmm9, %xmm1
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm5, %xmm2, %xmm9
vaesenc %xmm15, %xmm5, %xmm14
vaesenc %xmm15, %xmm10, %xmm2
vpxor %xmm2, %xmm11, %xmm5
vaesenc %xmm15, %xmm11, %xmm2
vaesenc %xmm3, %xmm7, %xmm7
vpxor %xmm7, %xmm8, %xmm7
vaesenc %xmm15, %xmm8, %xmm8
vmovdqa64 %xmm8, %xmm16
vaesenc %xmm15, %xmm4, %xmm4
vpxor %xmm4, %xmm9, %xmm4
vaesenc %xmm15, %xmm9, %xmm11
vaesenc %xmm15, %xmm12, %xmm8
vpxor %xmm5, %xmm8, %xmm13
vaesenc %xmm15, %xmm5, %xmm5
vmovdqa64 %xmm5, %xmm17
vaesenc %xmm3, %xmm6, %xmm5
vpxor %xmm7, %xmm5, %xmm9
vaesenc %xmm15, %xmm7, %xmm12
vmovdqa64 %xmm18, %xmm3
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm4, %xmm3, %xmm7
vmovdqa64 %xmm15, %xmm18
vaesenc %xmm15, %xmm4, %xmm3
cmpq $0x80, %rbp
jae 0x2502
xorl %eax, %eax
vmovdqa %xmm0, %xmm10
vmovdqa %xmm11, %xmm8
vmovdqa %xmm7, %xmm11
vmovdqa %xmm3, %xmm0
vmovdqa64 %xmm16, %xmm19
vmovdqa64 %xmm21, %xmm15
jmp 0x2695
xorl %ecx, %ecx
vmovdqa64 %xmm11, %xmm20
vmovdqa %xmm14, %xmm4
vmovdqa %xmm0, %xmm5
vmovdqa64 %xmm21, %xmm6
vmovdqa %xmm7, %xmm11
vmovdqa %xmm3, %xmm0
vmovdqa64 %xmm16, %xmm19
vmovdqa (%r9,%rcx), %xmm7
vmovdqa 0x10(%r9,%rcx), %xmm8
vmovdqa 0x20(%r9,%rcx), %xmm14
vmovdqa64 %xmm0, %xmm16
vaesenc %xmm7, %xmm2, %xmm2
vaesenc %xmm8, %xmm1, %xmm1
vpxor %xmm7, %xmm8, %xmm8
vmovdqa 0x30(%r9,%rcx), %xmm10
vpxor %xmm2, %xmm13, %xmm2
vmovdqa64 %xmm18, %xmm15
vaesenc %xmm15, %xmm13, %xmm3
vmovdqa %xmm12, %xmm0
vpxor %xmm1, %xmm9, %xmm12
vaesenc %xmm15, %xmm9, %xmm1
vmovdqa64 %xmm1, %xmm18
vaesenc %xmm8, %xmm6, %xmm1
vaesenc %xmm15, %xmm11, %xmm7
vpxor %xmm1, %xmm11, %xmm6
vmovdqa64 %xmm17, %xmm1
vaesenc %xmm14, %xmm1, %xmm1
vaesenc %xmm15, %xmm2, %xmm8
vpxor %xmm2, %xmm1, %xmm13
vmovdqa64 %xmm19, %xmm1
vaesenc %xmm10, %xmm1, %xmm2
vaesenc %xmm15, %xmm12, %xmm1
vpxor %xmm2, %xmm12, %xmm12
vpxor %xmm14, %xmm10, %xmm2
vaesenc %xmm2, %xmm5, %xmm2
vaesenc %xmm15, %xmm6, %xmm14
vmovdqa 0x40(%r9,%rcx), %xmm5
vpxor %xmm6, %xmm2, %xmm6
vmovdqa 0x50(%r9,%rcx), %xmm9
vaesenc %xmm5, %xmm3, %xmm10
vaesenc %xmm15, %xmm13, %xmm2
vpxor %xmm13, %xmm10, %xmm10
vaesenc %xmm9, %xmm0, %xmm11
vaesenc %xmm15, %xmm12, %xmm0
vmovdqa64 %xmm0, %xmm19
vpxor %xmm12, %xmm11, %xmm11
vpxor %xmm5, %xmm9, %xmm5
vaesenc %xmm5, %xmm4, %xmm4
vaesenc %xmm15, %xmm6, %xmm0
vpxor %xmm6, %xmm4, %xmm4
vmovdqa 0x60(%r9,%rcx), %xmm5
vmovdqa 0x70(%r9,%rcx), %xmm6
vaesenc %xmm5, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm3
vmovdqa64 %xmm3, %xmm17
vpxor %xmm10, %xmm8, %xmm13
vmovdqa %xmm0, %xmm8
vmovdqa %xmm7, %xmm10
vmovdqa64 %xmm18, %xmm0
vaesenc %xmm6, %xmm0, %xmm7
vaesenc %xmm15, %xmm11, %xmm12
vpxor %xmm7, %xmm11, %xmm9
vpxor %xmm5, %xmm6, %xmm5
vmovdqa64 %xmm20, %xmm0
vaesenc %xmm5, %xmm0, %xmm3
vmovdqa64 %xmm15, %xmm18
vaesenc %xmm15, %xmm4, %xmm0
vmovdqa64 %xmm16, %xmm15
vpxor %xmm4, %xmm3, %xmm11
leaq 0x80(%rcx), %rax
addq $0x100, %rcx            # imm = 0x100
vmovdqa64 %xmm8, %xmm20
vmovdqa %xmm14, %xmm4
vmovdqa %xmm10, %xmm5
vmovdqa64 %xmm16, %xmm6
cmpq %rbp, %rcx
movq %rax, %rcx
jbe 0x2526
vmovdqa %xmm12, %xmm4
vmovdqa64 %xmm17, %xmm5
vmovdqa64 %xmm19, %xmm7
vmovdqa %xmm0, %xmm6
movq %rax, %rcx
orq $0x20, %rcx
cmpq %rbp, %rcx
jbe 0x26d5
vmovdqa %xmm1, %xmm12
vmovdqa %xmm15, %xmm3
vmovdqa64 %xmm2, %xmm16
movq %rax, %rcx
vmovdqa64 %xmm7, %xmm17
vmovdqa %xmm4, %xmm7
jmp 0x276a
vmovdqa64 %xmm7, %xmm17
vmovdqa %xmm4, %xmm7
vmovdqa64 %xmm17, %xmm12
vmovdqa64 %xmm7, %xmm17
vmovdqa %xmm10, %xmm0
vmovdqa %xmm14, %xmm10
vmovdqa %xmm8, %xmm14
vmovdqa %xmm6, %xmm8
vmovdqa64 %xmm5, %xmm16
vmovdqa (%r9,%rax), %xmm3
vmovdqa 0x10(%r9,%rax), %xmm4
vaesenc %xmm3, %xmm2, %xmm2
vmovdqa64 %xmm18, %xmm6
vaesenc %xmm6, %xmm13, %xmm5
vpxor %xmm2, %xmm13, %xmm13
vaesenc %xmm4, %xmm1, %xmm1
vaesenc %xmm6, %xmm9, %xmm7
vpxor %xmm1, %xmm9, %xmm9
vpxor %xmm3, %xmm4, %xmm1
vmovdqa %xmm0, %xmm3
vaesenc %xmm1, %xmm15, %xmm0
vaesenc %xmm6, %xmm11, %xmm6
vpxor %xmm0, %xmm11, %xmm11
leaq 0x20(%rax), %rcx
addq $0x40, %rax
vmovdqa64 %xmm16, %xmm2
vmovdqa %xmm3, %xmm15
vmovdqa %xmm12, %xmm1
cmpq %rbp, %rax
movq %rcx, %rax
jbe 0x26df
addq $-0x10, %rbx
movq %rbp, %rdx
subq %rcx, %rdx
jbe 0x28ae
vmovdqa %xmm12, 0xd0(%rsp)
vmovdqa64 %xmm16, 0x30(%rsp)
vpxor %xmm0, %xmm0, %xmm0
leaq 0x50(%rsp), %r13
vmovdqu %ymm0, (%r13)
addq %rcx, %r9
movq %r13, %rdi
movq %r9, %rsi
vmovdqa64 %xmm17, 0xb0(%rsp)
vmovdqa %xmm7, 0x90(%rsp)
vmovdqa %xmm13, 0x20(%rsp)
vmovdqa %xmm9, 0x10(%rsp)
vmovdqa %xmm10, 0x80(%rsp)
vmovdqa %xmm14, 0xf0(%rsp)
vmovdqa %xmm8, 0xa0(%rsp)
vmovdqa %xmm11, (%rsp)
vmovdqa %xmm6, 0xe0(%rsp)
vmovdqa %xmm5, 0x40(%rsp)
vmovdqa %xmm3, 0xc0(%rsp)
vzeroupper
callq 0x1090
vmovdqa 0x40(%rsp), %xmm5
vmovdqa (%rsp), %xmm11
vmovdqa 0x10(%rsp), %xmm9
vmovdqa 0x20(%rsp), %xmm13
vmovdqa 0x17e1(%rip), %xmm15    # 0x4000
vmovdqa (%r13), %xmm0
vmovdqa 0x10(%r13), %xmm1
vmovdqa 0x30(%rsp), %xmm2
vaesenc %xmm0, %xmm2, %xmm2
vaesenc %xmm15, %xmm13, %xmm4
vpxor %xmm2, %xmm13, %xmm13
vmovdqa 0xd0(%rsp), %xmm2
vaesenc %xmm1, %xmm2, %xmm2
vmovdqa 0xb0(%rsp), %xmm12
vmovdqa64 0x90(%rsp), %xmm17
vaesenc %xmm15, %xmm9, %xmm7
vpxor %xmm2, %xmm9, %xmm9
vpxor %xmm0, %xmm1, %xmm0
vmovdqa 0xc0(%rsp), %xmm1
vaesenc %xmm0, %xmm1, %xmm0
vmovdqa 0x80(%rsp), %xmm2
vmovdqa 0xf0(%rsp), %xmm10
vmovdqa 0xa0(%rsp), %xmm14
vmovdqa 0xe0(%rsp), %xmm8
vmovdqa64 %xmm15, %xmm18
vaesenc %xmm15, %xmm11, %xmm6
vpxor %xmm0, %xmm11, %xmm11
jmp 0x28bc
vmovdqa %xmm3, %xmm2
vmovdqa %xmm5, %xmm4
vmovdqa64 %xmm16, %xmm5
cmpq $0x80, %rbx
jae 0x28db
xorl %eax, %eax
vmovdqa64 %xmm2, %xmm16
vmovdqa %xmm10, %xmm15
vmovdqa %xmm7, %xmm10
jmp 0x2ad7
xorl %ecx, %ecx
vmovdqa %xmm8, %xmm0
vmovdqa %xmm14, %xmm1
vmovdqa %xmm10, %xmm3
vmovdqa %xmm7, %xmm10
vmovdqa64 %xmm6, %xmm16
vmovdqa %xmm5, %xmm6
vaesenc %xmm11, %xmm2, %xmm5
vaesenc %xmm13, %xmm6, %xmm6
vmovdqa64 %xmm18, %xmm15
vaesenc %xmm15, %xmm9, %xmm2
vmovdqa64 %xmm17, %xmm14
vaesenc %xmm9, %xmm12, %xmm7
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm11, %xmm8
vmovdqa64 %xmm8, %xmm17
vmovdqa (%r15,%rcx), %xmm8
vpternlogq $0x78, %xmm14, %xmm0, %xmm8
vpternlogq $0x96, %xmm4, %xmm2, %xmm8
vmovdqa 0x10(%r15,%rcx), %xmm9
vpternlogq $0x78, %xmm3, %xmm4, %xmm9
vpternlogq $0x96, %xmm10, %xmm13, %xmm9
vpxor %xmm6, %xmm8, %xmm6
vpternlogq $0x96, %xmm9, %xmm6, %xmm5
vmovdqu %xmm6, (%r12,%rcx)
vpxor %xmm7, %xmm5, %xmm6
vmovdqu %xmm5, 0x10(%r12,%rcx)
vaesenc %xmm9, %xmm3, %xmm5
vaesenc %xmm8, %xmm4, %xmm7
vaesenc %xmm15, %xmm6, %xmm12
vaesenc %xmm6, %xmm14, %xmm6
vaesenc %xmm15, %xmm8, %xmm3
vaesenc %xmm15, %xmm9, %xmm14
vmovdqa 0x20(%r15,%rcx), %xmm8
vpternlogq $0x78, %xmm10, %xmm16, %xmm8
vpternlogq $0x96, %xmm13, %xmm12, %xmm8
vmovdqa 0x30(%r15,%rcx), %xmm9
vpternlogq $0x78, %xmm1, %xmm13, %xmm9
vpternlogq $0x96, %xmm2, %xmm3, %xmm9
vpxor %xmm7, %xmm8, %xmm7
vpternlogq $0x96, %xmm9, %xmm7, %xmm5
vpxor %xmm6, %xmm5, %xmm6
vmovdqu %xmm7, 0x20(%r12,%rcx)
vmovdqu %xmm5, 0x30(%r12,%rcx)
vaesenc %xmm9, %xmm1, %xmm1
vaesenc %xmm8, %xmm13, %xmm4
vaesenc %xmm15, %xmm6, %xmm11
vaesenc %xmm6, %xmm10, %xmm5
vaesenc %xmm15, %xmm8, %xmm13
vaesenc %xmm15, %xmm9, %xmm8
vmovdqa64 %xmm17, %xmm6
vpternlogq $0x6a, 0x40(%r15,%rcx), %xmm2, %xmm6
vpternlogq $0x96, %xmm3, %xmm11, %xmm6
vmovdqa 0x50(%r15,%rcx), %xmm7
vpternlogq $0x78, %xmm0, %xmm3, %xmm7
vpternlogq $0x96, %xmm12, %xmm13, %xmm7
vpxor %xmm4, %xmm6, %xmm4
vpternlogq $0x96, %xmm7, %xmm4, %xmm1
vpxor %xmm5, %xmm1, %xmm5
vmovdqu %xmm4, 0x40(%r12,%rcx)
vmovdqu %xmm1, 0x50(%r12,%rcx)
vaesenc %xmm7, %xmm0, %xmm0
vaesenc %xmm6, %xmm3, %xmm1
vaesenc %xmm15, %xmm5, %xmm10
vaesenc %xmm5, %xmm2, %xmm2
vmovdqa %xmm13, %xmm5
vaesenc %xmm15, %xmm6, %xmm4
vaesenc %xmm15, %xmm7, %xmm6
vmovdqa64 %xmm17, %xmm15
vmovdqa64 %xmm11, %xmm17
vmovdqa %xmm12, %xmm13
vpternlogq $0x6a, 0x60(%r15,%rcx), %xmm14, %xmm13
vmovdqa %xmm5, %xmm11
vpternlogq $0x6a, 0x70(%r15,%rcx), %xmm16, %xmm11
vpternlogq $0x96, %xmm5, %xmm10, %xmm13
vpternlogq $0x96, %xmm17, %xmm4, %xmm11
vpxor %xmm1, %xmm13, %xmm1
vpternlogq $0x96, %xmm11, %xmm1, %xmm0
vmovdqu %xmm1, 0x60(%r12,%rcx)
vpxor %xmm2, %xmm0, %xmm9
vmovdqu %xmm0, 0x70(%r12,%rcx)
leaq 0x80(%rcx), %rax
addq $0x100, %rcx            # imm = 0x100
vmovdqa %xmm8, %xmm0
vmovdqa %xmm14, %xmm1
vmovdqa %xmm15, %xmm3
vmovdqa64 %xmm16, %xmm2
cmpq %rbx, %rcx
movq %rax, %rcx
jbe 0x28ed
vmovq %rbp, %xmm0
vmovq %rbx, %xmm1
vmovdqa 0x1537(%rip), %xmm2     # 0x4020
movq %rax, %rcx
orq $0x20, %rcx
cmpq %rbx, %rcx
jbe 0x2b11
vmovdqa64 %xmm5, %xmm19
movq %rax, %r14
vmovdqa %xmm10, %xmm7
vmovdqa %xmm15, %xmm10
vmovdqa %xmm12, %xmm15
jmp 0x2bd8
vmovdqa64 %xmm16, %xmm3
vmovdqa %xmm10, %xmm7
vmovdqa %xmm15, %xmm10
vmovdqa64 %xmm17, %xmm15
vmovdqa64 %xmm7, %xmm17
vmovdqa64 %xmm10, %xmm16
vmovdqa %xmm14, %xmm10
vmovdqa %xmm8, %xmm14
vmovdqa %xmm6, %xmm8
vmovdqa64 %xmm4, %xmm19
vaesenc %xmm11, %xmm3, %xmm3
vaesenc %xmm13, %xmm5, %xmm4
vmovdqa64 %xmm18, %xmm6
vaesenc %xmm6, %xmm9, %xmm7
vaesenc %xmm9, %xmm12, %xmm5
vaesenc %xmm6, %xmm13, %xmm9
vaesenc %xmm6, %xmm11, %xmm6
vmovdqa (%r15,%rax), %xmm13
vpternlogq $0x78, %xmm15, %xmm14, %xmm13
vpternlogq $0x96, %xmm19, %xmm7, %xmm13
vmovdqa 0x10(%r15,%rax), %xmm11
vpternlogq $0x78, %xmm16, %xmm19, %xmm11
vpternlogq $0x96, %xmm17, %xmm9, %xmm11
vpxor %xmm4, %xmm13, %xmm4
vpternlogq $0x96, %xmm11, %xmm4, %xmm3
vmovdqu %xmm4, (%r12,%rax)
vmovdqa %xmm9, %xmm4
vpxor %xmm5, %xmm3, %xmm9
vmovdqu %xmm3, 0x10(%r12,%rax)
leaq 0x20(%rax), %r14
addq $0x40, %rax
vmovdqa64 %xmm19, %xmm5
vmovdqa64 %xmm16, %xmm3
vmovdqa %xmm15, %xmm12
cmpq %rbx, %rax
movq %r14, %rax
jbe 0x2b20
vmovdqa64 %xmm19, 0x70(%rsp)
vmovdqa64 %xmm16, 0x30(%rsp)
vmovdqa %xmm15, 0x40(%rsp)
vmovdqa %xmm11, (%rsp)
vpshufb %xmm2, %xmm0, %xmm0
vmovdqa %xmm0, 0xd0(%rsp)
vpshufb %xmm2, %xmm1, %xmm0
vmovdqa %xmm0, 0xc0(%rsp)
movq %rbx, %r13
subq %r14, %r13
jbe 0x2d5d
vmovdqa %xmm6, 0xe0(%rsp)
vmovdqa %xmm14, 0xf0(%rsp)
vmovdqa %xmm10, 0x80(%rsp)
vmovdqa %xmm7, 0x90(%rsp)
vpxor %xmm0, %xmm0, %xmm0
leaq 0x50(%rsp), %rbp
vmovdqu %ymm0, (%rbp)
leaq (%r15,%r14), %rsi
movq %rbp, %rdi
movq %r13, %rdx
vmovdqa64 %xmm17, 0xb0(%rsp)
vmovdqa %xmm13, 0x20(%rsp)
vmovdqa %xmm9, 0x10(%rsp)
vmovdqa %xmm8, 0xa0(%rsp)
vmovdqa %xmm4, 0x110(%rsp)
vzeroupper
callq 0x1090
vmovdqa 0x110(%rsp), %xmm2
vpxor %xmm1, %xmm1, %xmm1
vmovdqa 0x70(%rsp), %xmm0
vaesenc %xmm1, %xmm0, %xmm0
vmovdqa 0x135b(%rip), %xmm4     # 0x4000
vmovdqa 0x20(%rsp), %xmm5
vaesenc %xmm4, %xmm5, %xmm3
vpxor %xmm5, %xmm0, %xmm6
vmovdqa 0x40(%rsp), %xmm0
vaesenc %xmm1, %xmm0, %xmm0
vmovdqa 0x10(%rsp), %xmm7
vaesenc %xmm4, %xmm7, %xmm5
vpxor %xmm7, %xmm0, %xmm0
vmovdqa %xmm0, 0x10(%rsp)
vmovdqa 0x30(%rsp), %xmm0
vaesenc %xmm1, %xmm0, %xmm0
vmovdqa (%rsp), %xmm1
vaesenc %xmm4, %xmm1, %xmm4
vmovdqa %xmm4, 0x40(%rsp)
vpxor %xmm1, %xmm0, %xmm1
vmovdqa 0xa0(%rsp), %xmm0
vpand 0xb0(%rsp), %xmm0, %xmm4
vpternlogq $0x96, (%rbp), %xmm2, %xmm4
vmovdqa %xmm5, 0x30(%rsp)
vmovdqa %xmm6, 0x20(%rsp)
vpternlogq $0x96, %xmm6, %xmm5, %xmm4
cmpq $0x10, %r13
vmovdqa %xmm3, 0x70(%rsp)
vmovdqa %xmm1, (%rsp)
ja 0x2d8d
vmovdqa %xmm4, 0x50(%rsp)
leaq (%rsp,%r13), %rdi
addq $0x50, %rdi
movl $0x10, %edx
subq %r13, %rdx
xorl %esi, %esi
callq 0x1030
vpxor %xmm0, %xmm0, %xmm0
vmovdqa 0x50(%rsp), %xmm1
jmp 0x2de1
vmovdqa64 %xmm4, %xmm20
vmovdqa64 0x70(%rsp), %xmm21
vmovdqa %xmm14, %xmm3
vmovdqa (%rsp), %xmm2
vmovdqa64 %xmm7, %xmm16
vmovdqa64 0x40(%rsp), %xmm19
vmovdqa 0x30(%rsp), %xmm1
jmp 0x2e93
vmovdqa 0x60(%rsp), %xmm0
vpternlogq $0x78, 0x80(%rsp), %xmm2, %xmm0
vpternlogq $0x96, 0x90(%rsp), %xmm3, %xmm0
vpternlogq $0x96, %xmm1, %xmm4, %xmm0
vmovdqa %xmm0, 0x50(%rsp)
leaq (%rsp,%r13), %rdi
addq $0x40, %rdi
movl $0x20, %edx
subq %r13, %rdx
xorl %esi, %esi
vmovdqa %xmm4, 0x120(%rsp)
callq 0x1030
vmovdqa 0x120(%rsp), %xmm1
vmovdqa 0x50(%rsp), %xmm0
vpxor 0x20(%rsp), %xmm1, %xmm2
vmovdqa %xmm2, 0x20(%rsp)
vpxor 0x10(%rsp), %xmm0, %xmm2
vmovdqa %xmm2, 0x10(%rsp)
vmovdqa (%rsp), %xmm2
vpternlogq $0x96, %xmm0, %xmm1, %xmm2
vmovdqa %xmm2, (%rsp)
leaq 0x50(%rsp), %rsi
vmovdqa %xmm1, (%rsi)
vmovdqa %xmm0, 0x10(%rsi)
addq %r14, %r12
movq %r12, %rdi
movq %r13, %rdx
callq 0x1090
vmovdqa (%rsp), %xmm2
vmovdqa 0x10(%rsp), %xmm9
vmovdqa 0x20(%rsp), %xmm13
vmovdqa64 0xb0(%rsp), %xmm19
vmovdqa64 0x90(%rsp), %xmm17
vmovdqa64 0x30(%rsp), %xmm16
vmovdqa 0x80(%rsp), %xmm1
vmovdqa 0xf0(%rsp), %xmm10
vmovdqa 0xa0(%rsp), %xmm3
vmovdqa 0xe0(%rsp), %xmm8
vmovdqa 0x40(%rsp), %xmm6
vmovdqa64 0x117d(%rip), %xmm18 # 0x4000
vmovdqa64 0x110(%rsp), %xmm21
vmovdqa64 0x70(%rsp), %xmm20
vmovdqa 0xd0(%rsp), %xmm12
vmovdqa 0xc0(%rsp), %xmm11
vpxor %xmm11, %xmm12, %xmm0
vaesenc %xmm0, %xmm1, %xmm0
vpxor %xmm2, %xmm0, %xmm1
vmovdqa64 %xmm18, %xmm15
vaesenc %xmm15, %xmm2, %xmm0
vmovdqa 0x114a(%rip), %xmm14    # 0x4010
vaesenc %xmm14, %xmm10, %xmm2
vpxor %xmm1, %xmm2, %xmm2
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm2, %xmm3, %xmm3
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm14, %xmm8, %xmm4
vpxor %xmm3, %xmm4, %xmm4
vaesenc %xmm15, %xmm3, %xmm3
vaesenc %xmm14, %xmm6, %xmm5
vpxor %xmm4, %xmm5, %xmm5
vaesenc %xmm15, %xmm4, %xmm4
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm5, %xmm0, %xmm6
vaesenc %xmm15, %xmm5, %xmm0
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm6, %xmm1, %xmm5
vaesenc %xmm15, %xmm6, %xmm1
vaesenc %xmm14, %xmm2, %xmm2
vpxor %xmm5, %xmm2, %xmm6
vaesenc %xmm15, %xmm5, %xmm2
vaesenc %xmm14, %xmm3, %xmm3
vpxor %xmm6, %xmm3, %xmm3
vaesenc %xmm15, %xmm6, %xmm5
vaesenc %xmm14, %xmm4, %xmm4
vpxor %xmm3, %xmm4, %xmm6
vaesenc %xmm15, %xmm3, %xmm4
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm6, %xmm0, %xmm0
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm0, %xmm1, %xmm3
vaesenc %xmm15, %xmm0, %xmm7
vaesenc %xmm14, %xmm2, %xmm0
vpxor %xmm3, %xmm0, %xmm1
vaesenc %xmm14, %xmm5, %xmm0
vpxor %xmm1, %xmm0, %xmm0
vaesenc %xmm14, %xmm4, %xmm2
vpxor %xmm0, %xmm2, %xmm2
vaesenc %xmm14, %xmm6, %xmm4
vpxor %xmm2, %xmm4, %xmm4
vaesenc %xmm14, %xmm7, %xmm5
vpxor %xmm4, %xmm5, %xmm5
vaesenc %xmm15, %xmm4, %xmm4
vaesenc %xmm15, %xmm5, %xmm6
vpxor %xmm4, %xmm6, %xmm4
vmovdqa64 %xmm21, %xmm6
vaesenc %xmm12, %xmm6, %xmm6
vmovdqa64 %xmm19, %xmm7
vaesenc %xmm11, %xmm7, %xmm7
vpxor %xmm6, %xmm13, %xmm6
vaesenc %xmm15, %xmm13, %xmm8
vpxor %xmm7, %xmm9, %xmm7
vaesenc %xmm15, %xmm9, %xmm9
vmovdqa64 %xmm20, %xmm10
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm6, %xmm10, %xmm10
vaesenc %xmm15, %xmm6, %xmm6
vmovdqa64 %xmm17, %xmm11
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm7, %xmm11, %xmm11
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vmovdqa64 %xmm16, %xmm12
vaesenc %xmm15, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm6, %xmm10, %xmm10
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm7, %xmm9, %xmm7
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm7, %xmm11, %xmm11
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm6, %xmm10, %xmm10
vaesenc %xmm15, %xmm6, %xmm6
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, %xmm7, %xmm7
vpxor %xmm7, %xmm9, %xmm7
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
vpxor %xmm7, %xmm11, %xmm11
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm14, %xmm10, %xmm10
vpxor %xmm6, %xmm10, %xmm10
vaesenc %xmm15, %xmm6, %xmm6
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, %xmm6, %xmm6
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm7, %xmm9, %xmm7
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm3, %xmm13
vaesenc %xmm14, %xmm10, %xmm3
vpxor %xmm6, %xmm3, %xmm3
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm15, %xmm11, %xmm10
vpxor %xmm7, %xmm10, %xmm10
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm3, %xmm8, %xmm8
vaesenc %xmm15, %xmm3, %xmm11
vaesenc %xmm15, %xmm12, %xmm3
vpxor %xmm3, %xmm10, %xmm12
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm14, %xmm6, %xmm3
vpxor %xmm3, %xmm8, %xmm6
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm15, %xmm9, %xmm3
vpxor %xmm3, %xmm12, %xmm3
vaesenc %xmm15, %xmm12, %xmm9
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm6, %xmm11, %xmm11
vaesenc %xmm15, %xmm6, %xmm6
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm3, %xmm7, %xmm7
vaesenc %xmm14, %xmm8, %xmm8
vpxor %xmm11, %xmm8, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm7, %xmm10, %xmm10
vaesenc %xmm14, %xmm13, %xmm12
vpxor %xmm5, %xmm12, %xmm5
vaesenc %xmm14, %xmm6, %xmm6
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm12
vpxor %xmm10, %xmm9, %xmm9
vaesenc %xmm15, %xmm5, %xmm10
vpternlogq $0x96, %xmm12, %xmm10, %xmm4
vaesenc %xmm15, %xmm6, %xmm10
vaesenc %xmm15, %xmm9, %xmm12
vpternlogq $0x96, %xmm10, %xmm12, %xmm4
vaesenc %xmm15, %xmm1, %xmm1
vaesenc %xmm15, %xmm8, %xmm8
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm5, %xmm1, %xmm1
vaesenc %xmm15, %xmm1, %xmm5
vaesenc %xmm14, %xmm8, %xmm8
vpternlogq $0x96, %xmm5, %xmm8, %xmm4
vaesenc %xmm15, %xmm11, %xmm5
vaesenc %xmm15, %xmm7, %xmm7
vaesenc %xmm14, %xmm5, %xmm5
vpxor %xmm6, %xmm5, %xmm5
vaesenc %xmm15, %xmm5, %xmm6
vaesenc %xmm15, %xmm7, %xmm7
vpternlogq $0x96, %xmm6, %xmm7, %xmm4
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm15, %xmm3, %xmm3
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm3, %xmm9, %xmm3
vaesenc %xmm15, %xmm3, %xmm6
vaesenc %xmm14, %xmm2, %xmm2
vpternlogq $0x96, %xmm6, %xmm2, %xmm4
vaesenc %xmm15, %xmm0, %xmm0
vaesenc %xmm14, %xmm0, %xmm0
vpxor %xmm1, %xmm0, %xmm0
vaesenc %xmm15, %xmm0, %xmm1
vpternlogq $0x96, %xmm1, %xmm5, %xmm4
vpternlogq $0x96, %xmm3, %xmm0, %xmm4
vmovdqa %xmm4, 0x50(%rsp)
vmovdqa 0x50(%rsp), %xmm0
vpxor (%r15,%rbx), %xmm0, %xmm0
vptest %xmm0, %xmm0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jne 0x32a8
movq 0x108(%rsp), %rax
movq %rbx, (%rax)
xorl %eax, %eax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop