// File: /workspace/github_c_makefile_star2_O2/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 $0x118, %rsp            # imm = 0x118
movq %rcx, %rbx
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rsi
movq 0x150(%rsp), %rax
vmovdqa (%rax), %xmm0
vmovdqa (%r9), %xmm2
movq 0x158(%rsp), %rbp
vmovdqa 0x2e0e(%rip), %xmm12    # 0x4000
vaesenc %xmm12, %xmm2, %xmm4
vaesenc %xmm12, %xmm0, %xmm1
vpxor %xmm0, %xmm4, %xmm3
vmovdqa 0x2e08(%rip), %xmm15    # 0x4010
vaesenc %xmm15, %xmm12, %xmm5
vpxor %xmm0, %xmm5, %xmm5
vpxor %xmm6, %xmm6, %xmm6
vaesenc %xmm12, %xmm6, %xmm6
vpxor %xmm0, %xmm6, %xmm6
vaesenc %xmm12, %xmm3, %xmm7
vpxor %xmm3, %xmm1, %xmm8
vaesenc %xmm15, %xmm2, %xmm2
vaesenc %xmm12, %xmm5, %xmm9
vpxor %xmm5, %xmm2, %xmm2
vaesenc %xmm12, %xmm6, %xmm3
vaesenc %xmm12, %xmm1, %xmm5
vaesenc %xmm12, %xmm8, %xmm6
vpxor %xmm5, %xmm8, %xmm8
vaesenc %xmm15, %xmm0, %xmm10
vaesenc %xmm12, %xmm2, %xmm11
vpxor %xmm2, %xmm10, %xmm2
vaesenc %xmm12, %xmm15, %xmm10
vpxor %xmm0, %xmm10, %xmm10
vaesenc %xmm12, %xmm7, %xmm0
vaesenc %xmm12, %xmm8, %xmm7
vpxor %xmm0, %xmm8, %xmm8
vaesenc %xmm15, %xmm1, %xmm0
vaesenc %xmm12, %xmm2, %xmm14
vpxor %xmm2, %xmm0, %xmm2
vaesenc %xmm12, %xmm10, %xmm0
vpxor %xmm4, %xmm10, %xmm4
vaesenc %xmm12, %xmm6, %xmm6
vaesenc %xmm12, %xmm8, %xmm10
vpxor %xmm6, %xmm8, %xmm8
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm12, %xmm2, %xmm6
vpxor %xmm2, %xmm9, %xmm9
vaesenc %xmm12, %xmm4, %xmm2
vpxor %xmm1, %xmm4, %xmm4
vaesenc %xmm12, %xmm7, %xmm1
vaesenc %xmm12, %xmm8, %xmm13
vpxor %xmm1, %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm1
vaesenc %xmm12, %xmm9, %xmm7
vpxor %xmm1, %xmm9, %xmm9
vaesenc %xmm12, %xmm4, %xmm1
vpxor %xmm5, %xmm4, %xmm11
vaesenc %xmm12, %xmm10, %xmm5
vpxor %xmm5, %xmm8, %xmm10
vaesenc %xmm12, %xmm8, %xmm8
vaesenc %xmm15, %xmm14, %xmm5
vpxor %xmm5, %xmm9, %xmm14
vaesenc %xmm12, %xmm9, %xmm5
vaesenc %xmm12, %xmm3, %xmm3
vpxor %xmm4, %xmm3, %xmm9
vpxor %xmm3, %xmm11, %xmm3
vaesenc %xmm12, %xmm11, %xmm4
vaesenc %xmm12, %xmm13, %xmm11
vpxor %xmm10, %xmm11, %xmm11
vaesenc %xmm12, %xmm10, %xmm10
vaesenc %xmm15, %xmm6, %xmm6
vpxor %xmm6, %xmm14, %xmm6
vaesenc %xmm12, %xmm14, %xmm14
vaesenc %xmm12, %xmm3, %xmm3
vaesenc %xmm12, %xmm8, %xmm8
vpxor %xmm11, %xmm8, %xmm13
vaesenc %xmm12, %xmm11, %xmm11
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm12, %xmm6, %xmm8
vaesenc %xmm12, %xmm0, %xmm0
vpxor %xmm0, %xmm9, %xmm6
vaesenc %xmm12, %xmm9, %xmm0
vaesenc %xmm12, %xmm10, %xmm9
vpxor %xmm13, %xmm9, %xmm9
vaesenc %xmm12, %xmm13, %xmm10
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm7, %xmm5, %xmm5
vaesenc %xmm12, %xmm7, %xmm7
vaesenc %xmm12, %xmm2, %xmm2
vpxor %xmm6, %xmm2, %xmm13
vaesenc %xmm12, %xmm6, %xmm2
vmovdqa64 %xmm2, %xmm18
vaesenc %xmm12, %xmm11, %xmm6
vpxor %xmm6, %xmm9, %xmm11
vaesenc %xmm12, %xmm9, %xmm9
vaesenc %xmm15, %xmm14, %xmm6
vmovdqa %xmm15, %xmm2
vpxor %xmm5, %xmm6, %xmm14
vaesenc %xmm12, %xmm5, %xmm6
vaesenc %xmm12, %xmm1, %xmm1
vpxor %xmm1, %xmm13, %xmm1
vaesenc %xmm12, %xmm13, %xmm13
vaesenc %xmm12, %xmm10, %xmm5
vpxor %xmm5, %xmm11, %xmm10
vaesenc %xmm12, %xmm11, %xmm11
vaesenc %xmm15, %xmm8, %xmm5
vpxor %xmm5, %xmm14, %xmm8
vaesenc %xmm12, %xmm14, %xmm5
vaesenc %xmm12, %xmm4, %xmm4
vpxor %xmm1, %xmm4, %xmm4
vaesenc %xmm12, %xmm1, %xmm14
vaesenc %xmm12, %xmm9, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm12, %xmm10, %xmm9
vmovdqa %xmm14, %xmm10
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm7, %xmm8, %xmm7
vaesenc %xmm12, %xmm8, %xmm8
vmovdqa64 %xmm8, %xmm21
vaesenc %xmm12, %xmm3, %xmm3
vpxor %xmm4, %xmm3, %xmm3
vaesenc %xmm12, %xmm4, %xmm4
vmovdqa64 %xmm4, %xmm17
vaesenc %xmm12, %xmm11, %xmm4
vpxor %xmm1, %xmm4, %xmm4
vaesenc %xmm12, %xmm1, %xmm1
vmovdqa64 %xmm1, %xmm22
vaesenc %xmm15, %xmm6, %xmm1
vpxor %xmm7, %xmm1, %xmm6
vaesenc %xmm12, %xmm7, %xmm14
vaesenc %xmm12, %xmm0, %xmm0
vpxor %xmm3, %xmm0, %xmm7
vaesenc %xmm12, %xmm3, %xmm8
vaesenc %xmm12, %xmm9, %xmm0
vpxor %xmm4, %xmm0, %xmm15
vaesenc %xmm12, %xmm4, %xmm1
vaesenc %xmm2, %xmm5, %xmm0
vmovdqa64 %xmm13, %xmm20
vpxorq %xmm6, %xmm0, %xmm16
vaesenc %xmm12, %xmm6, %xmm0
vmovdqa64 %xmm18, %xmm2
vaesenc %xmm12, %xmm2, %xmm2
vpxor %xmm7, %xmm2, %xmm13
vmovdqa64 %xmm12, %xmm19
vaesenc %xmm12, %xmm7, %xmm7
xorl %eax, %eax
leaq 0x80(%rax), %rcx
cmpq %r14, %rcx
ja 0x15d8
vmovdqa (%rsi,%rax), %xmm2
vmovdqa 0x10(%rsi,%rax), %xmm3
vmovdqa 0x20(%rsi,%rax), %xmm6
vmovdqa64 %xmm22, %xmm4
vaesenc %xmm2, %xmm4, %xmm4
vmovdqa64 %xmm21, %xmm5
vaesenc %xmm3, %xmm5, %xmm5
vpxor %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm20, %xmm3
vaesenc %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm2, %xmm20
vmovdqa64 %xmm7, %xmm18
vmovdqa 0x30(%rsi,%rax), %xmm7
vmovdqa64 %xmm17, %xmm11
vmovdqa %xmm8, %xmm2
vpxor %xmm4, %xmm15, %xmm8
vmovdqa64 %xmm19, %xmm12
vaesenc %xmm12, %xmm15, %xmm9
vmovdqa64 %xmm16, %xmm4
vpxorq %xmm16, %xmm5, %xmm3
vaesenc %xmm12, %xmm4, %xmm4
vaesenc %xmm6, %xmm1, %xmm1
vpxor %xmm1, %xmm8, %xmm1
vaesenc %xmm12, %xmm8, %xmm8
vaesenc %xmm7, %xmm14, %xmm5
vpxor %xmm6, %xmm7, %xmm6
vaesenc %xmm6, %xmm10, %xmm6
vmovdqa 0x40(%rsi,%rax), %xmm7
vmovdqa 0x50(%rsi,%rax), %xmm10
vaesenc %xmm7, %xmm9, %xmm9
vaesenc %xmm10, %xmm0, %xmm0
vpxor %xmm7, %xmm10, %xmm7
vaesenc %xmm7, %xmm11, %xmm7
vmovdqa 0x60(%rsi,%rax), %xmm10
vmovdqa 0x70(%rsi,%rax), %xmm11
vaesenc %xmm10, %xmm8, %xmm8
vaesenc %xmm11, %xmm4, %xmm4
vpxor %xmm10, %xmm11, %xmm10
vaesenc %xmm10, %xmm2, %xmm10
vpxorq %xmm13, %xmm20, %xmm2
vaesenc %xmm12, %xmm13, %xmm11
vpxor %xmm3, %xmm5, %xmm5
vaesenc %xmm12, %xmm3, %xmm3
vmovdqa64 %xmm3, %xmm21
vpxor %xmm2, %xmm6, %xmm3
vaesenc %xmm12, %xmm2, %xmm2
vpxor %xmm1, %xmm9, %xmm6
vaesenc %xmm12, %xmm1, %xmm1
vmovdqa64 %xmm1, %xmm22
vpxor %xmm5, %xmm0, %xmm0
vaesenc %xmm12, %xmm5, %xmm14
vpxor %xmm3, %xmm7, %xmm5
vaesenc %xmm12, %xmm3, %xmm3
vpxor %xmm6, %xmm8, %xmm15
vaesenc %xmm12, %xmm6, %xmm1
vpxorq %xmm0, %xmm4, %xmm16
vaesenc %xmm12, %xmm0, %xmm0
vpxor %xmm5, %xmm10, %xmm13
vmovdqa64 %xmm18, %xmm20
vaesenc %xmm12, %xmm5, %xmm7
vmovdqa %xmm11, %xmm10
vmovdqa64 %xmm2, %xmm17
vmovdqa %xmm3, %xmm8
movq %rcx, %rax
jmp 0x147d
vmovdqa64 %xmm21, %xmm4
vmovdqa64 %xmm22, %xmm12
vmovdqa %xmm1, %xmm9
vmovdqa %xmm14, %xmm11
vmovdqa %xmm0, %xmm14
leaq 0x20(%rax), %rcx
cmpq %r14, %rcx
ja 0x166e
vmovdqa (%rsi,%rax), %xmm2
vmovdqa 0x10(%rsi,%rax), %xmm3
vaesenc %xmm2, %xmm12, %xmm0
vmovdqa64 %xmm19, %xmm6
vaesenc %xmm6, %xmm15, %xmm1
vpxor %xmm0, %xmm15, %xmm15
vaesenc %xmm3, %xmm4, %xmm4
vmovdqa64 %xmm16, %xmm5
vaesenc %xmm6, %xmm5, %xmm0
vpxorq %xmm16, %xmm4, %xmm16
vpxor %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm20, %xmm3
vaesenc %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm10, %xmm20
vmovdqa64 %xmm17, %xmm10
vmovdqa64 %xmm8, %xmm17
vmovdqa %xmm7, %xmm8
vaesenc %xmm6, %xmm13, %xmm7
vpxor %xmm2, %xmm13, %xmm13
vmovdqa %xmm11, %xmm4
vmovdqa %xmm9, %xmm12
movq %rcx, %rax
jmp 0x15e4
movq %r14, %rdx
subq %rax, %rdx
jbe 0x17a0
vpxor %xmm0, %xmm0, %xmm0
leaq 0xd0(%rsp), %r12
vmovdqu %ymm0, (%r12)
addq %rax, %rsi
movq %r12, %rdi
vmovdqa %xmm14, 0xc0(%rsp)
vmovdqa64 %xmm16, 0x30(%rsp)
vmovdqa %xmm15, 0x50(%rsp)
vmovdqa %xmm7, 0xb0(%rsp)
vmovdqa %xmm8, 0xa0(%rsp)
vmovdqa64 %xmm17, 0x90(%rsp)
vmovdqa %xmm10, 0x80(%rsp)
vmovdqa %xmm13, 0x10(%rsp)
vmovdqa64 %xmm20, 0x40(%rsp)
vmovdqa %xmm11, (%rsp)
vmovdqa %xmm9, 0x20(%rsp)
vmovdqa %xmm4, 0x60(%rsp)
vmovdqa %xmm12, 0x70(%rsp)
vzeroupper
callq 0x1090
vmovdqa 0x20(%rsp), %xmm12
vmovdqa (%rsp), %xmm6
vmovdqa 0x10(%rsp), %xmm13
vmovdqa 0x50(%rsp), %xmm15
vmovdqa 0x30(%rsp), %xmm5
vmovdqa 0xc0(%rsp), %xmm11
vmovdqa 0x28d9(%rip), %xmm14    # 0x4000
vmovdqa (%r12), %xmm2
vmovdqa 0x10(%r12), %xmm3
vmovdqa 0x70(%rsp), %xmm0
vaesenc %xmm2, %xmm0, %xmm0
vaesenc %xmm14, %xmm15, %xmm1
vpxor %xmm0, %xmm15, %xmm15
vmovdqa 0x60(%rsp), %xmm0
vaesenc %xmm3, %xmm0, %xmm4
vaesenc %xmm14, %xmm5, %xmm0
vpxorq %xmm5, %xmm4, %xmm16
vpxor %xmm2, %xmm3, %xmm2
vmovdqa 0x40(%rsp), %xmm3
vaesenc %xmm2, %xmm3, %xmm2
vmovdqa64 0x80(%rsp), %xmm20
vmovdqa 0x90(%rsp), %xmm10
vmovdqa64 0xa0(%rsp), %xmm17
vmovdqa 0xb0(%rsp), %xmm8
vmovdqa64 %xmm14, %xmm19
vaesenc %xmm14, %xmm13, %xmm7
vpxor %xmm2, %xmm13, %xmm13
jmp 0x17ac
vmovdqa %xmm14, %xmm0
vmovdqa %xmm4, %xmm6
vmovdqa %xmm9, %xmm1
vmovdqa64 %xmm7, %xmm18
xorl %r12d, %r12d
leaq 0x80(%r12), %rax
cmpq %rbx, %rax
ja 0x19eb
vmovdqa (%r15,%r12), %xmm2
vmovdqa 0x10(%r15,%r12), %xmm3
vaesenc %xmm2, %xmm12, %xmm4
vpxor %xmm4, %xmm15, %xmm5
vmovdqa64 %xmm19, %xmm9
vaesenc %xmm9, %xmm15, %xmm4
vaesenc %xmm3, %xmm6, %xmm6
vpxor %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm16, %xmm14
vaesenc %xmm9, %xmm14, %xmm3
vmovdqa64 %xmm20, %xmm7
vaesenc %xmm2, %xmm7, %xmm2
vpxor %xmm2, %xmm13, %xmm2
vmovdqa %xmm1, %xmm7
vpternlogq $0x78, %xmm8, %xmm11, %xmm7
vpternlogq $0x96, %xmm5, %xmm3, %xmm7
vmovdqu %xmm7, (%rbp,%r12)
vmovdqa %xmm0, %xmm7
vpternlogq $0x78, %xmm10, %xmm1, %xmm7
vpternlogq $0x96, %xmm4, %xmm2, %xmm7
vmovdqa %xmm2, %xmm12
vmovdqu %xmm7, 0x10(%rbp,%r12)
vmovdqa64 %xmm8, %xmm20
vmovdqa 0x20(%r15,%r12), %xmm8
vpxorq %xmm16, %xmm6, %xmm6
vmovdqa %xmm0, %xmm2
vmovdqa 0x30(%r15,%r12), %xmm0
vaesenc %xmm8, %xmm1, %xmm1
vmovdqa %xmm13, %xmm15
vmovdqa %xmm10, %xmm13
vpxor %xmm5, %xmm1, %xmm10
vaesenc %xmm9, %xmm5, %xmm7
vaesenc %xmm0, %xmm11, %xmm1
vpxor %xmm6, %xmm1, %xmm11
vaesenc %xmm9, %xmm6, %xmm14
vpxor %xmm0, %xmm8, %xmm1
vaesenc %xmm1, %xmm13, %xmm1
vpxor %xmm1, %xmm12, %xmm1
vmovdqa64 %xmm12, %xmm16
vmovdqa %xmm4, %xmm5
vpternlogq $0x78, %xmm2, %xmm18, %xmm5
vpternlogq $0x96, %xmm10, %xmm14, %xmm5
vmovdqu %xmm5, 0x20(%rbp,%r12)
vmovdqa %xmm3, %xmm5
vmovdqa64 %xmm17, %xmm13
vpternlogq $0x78, %xmm17, %xmm4, %xmm5
vpternlogq $0x96, %xmm7, %xmm1, %xmm5
vmovdqu %xmm5, 0x30(%rbp,%r12)
vmovdqa 0x40(%r15,%r12), %xmm6
vmovdqa 0x50(%r15,%r12), %xmm8
vaesenc %xmm9, %xmm15, %xmm5
vaesenc %xmm6, %xmm4, %xmm4
vpxor %xmm4, %xmm10, %xmm4
vaesenc %xmm9, %xmm10, %xmm12
vaesenc %xmm8, %xmm2, %xmm0
vpxor %xmm0, %xmm11, %xmm0
vaesenc %xmm9, %xmm11, %xmm11
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm6, %xmm13, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vmovdqa %xmm5, %xmm8
vpternlogq $0x6c, %xmm3, %xmm7, %xmm8
vpternlogq $0x96, %xmm4, %xmm11, %xmm8
vmovdqu %xmm8, 0x40(%rbp,%r12)
vmovdqa %xmm14, %xmm8
vmovdqa64 %xmm20, %xmm2
vpternlogq $0x78, %xmm20, %xmm7, %xmm8
vpternlogq $0x96, %xmm12, %xmm6, %xmm8
vmovdqu %xmm8, 0x50(%rbp,%r12)
vmovdqa 0x60(%r15,%r12), %xmm8
vmovdqa 0x70(%r15,%r12), %xmm10
vaesenc %xmm8, %xmm7, %xmm7
vaesenc %xmm10, %xmm3, %xmm3
vpxor %xmm8, %xmm10, %xmm8
vaesenc %xmm8, %xmm2, %xmm8
vmovdqa %xmm5, %xmm10
vmovdqa64 %xmm16, %xmm2
vaesenc %xmm9, %xmm2, %xmm2
vmovdqa %xmm2, %xmm5
vmovdqa64 %xmm2, %xmm17
vaesenc %xmm9, %xmm1, %xmm2
vpxor %xmm4, %xmm7, %xmm15
vaesenc %xmm9, %xmm4, %xmm1
vpxorq %xmm0, %xmm3, %xmm16
vaesenc %xmm9, %xmm0, %xmm0
vpxor %xmm6, %xmm8, %xmm13
vmovdqa %xmm11, %xmm3
vpternlogq $0x78, %xmm18, %xmm12, %xmm3
vmovdqa64 %xmm18, %xmm20
vaesenc %xmm9, %xmm6, %xmm4
vmovdqa %xmm14, %xmm6
vpternlogq $0x6c, %xmm14, %xmm12, %xmm5
vpternlogq $0x96, %xmm15, %xmm0, %xmm5
vmovdqu %xmm5, 0x60(%rbp,%r12)
vpternlogq $0x96, %xmm1, %xmm13, %xmm3
vmovdqu %xmm3, 0x70(%rbp,%r12)
vmovdqa %xmm2, %xmm8
vmovdqa64 %xmm4, %xmm18
movq %rax, %r12
jmp 0x17b5
vmovdqa %xmm6, (%rsp)
vmovdqa %xmm1, %xmm6
vmovdqa %xmm11, %xmm7
vmovdqa %xmm0, %xmm11
leaq 0x20(%r12), %rax
vmovdqa64 %xmm1, %xmm21
vpternlogq $0x78, %xmm8, %xmm7, %xmm21
vmovdqa %xmm0, %xmm14
vpternlogq $0x78, %xmm10, %xmm1, %xmm14
cmpq %rbx, %rax
ja 0x1ac6
vmovdqa (%r15,%r12), %xmm2
vmovdqa 0x10(%r15,%r12), %xmm3
vaesenc %xmm2, %xmm12, %xmm0
vmovdqa64 %xmm19, %xmm9
vaesenc %xmm9, %xmm15, %xmm1
vpxor %xmm0, %xmm15, %xmm15
vmovdqa (%rsp), %xmm0
vaesenc %xmm3, %xmm0, %xmm4
vmovdqa64 %xmm16, %xmm5
vaesenc %xmm9, %xmm5, %xmm12
vpxorq %xmm16, %xmm4, %xmm16
vpxor %xmm2, %xmm3, %xmm2
vmovdqa64 %xmm20, %xmm0
vaesenc %xmm2, %xmm0, %xmm2
vmovdqa %xmm12, %xmm0
vmovdqa64 %xmm10, %xmm20
vmovdqa64 %xmm17, %xmm10
vmovdqa64 %xmm8, %xmm17
vmovdqa64 %xmm18, %xmm8
vaesenc %xmm9, %xmm13, %xmm3
vpxor %xmm2, %xmm13, %xmm13
vpternlogq $0x96, %xmm15, %xmm12, %xmm21
vmovdqu64 %xmm21, (%rbp,%r12)
vpternlogq $0x96, %xmm1, %xmm13, %xmm14
vmovdqu %xmm14, 0x10(%rbp,%r12)
vmovdqa64 %xmm3, %xmm18
vmovdqa %xmm7, (%rsp)
vmovdqa %xmm6, %xmm12
movq %rax, %r12
jmp 0x19f0
vmovdqa %xmm15, 0x50(%rsp)
movq %rbx, %r13
subq %r12, %r13
jbe 0x1c84
vpxor %xmm0, %xmm0, %xmm0
leaq 0xd0(%rsp), %rdi
vmovdqu %ymm0, (%rdi)
addq %r12, %r15
movq %r15, %rsi
movq %r13, %rdx
vmovdqa %xmm11, 0xc0(%rsp)
vmovdqa64 %xmm16, 0x30(%rsp)
vmovdqa64 %xmm18, 0xb0(%rsp)
vmovdqa %xmm8, 0xa0(%rsp)
vmovdqa64 %xmm17, 0x90(%rsp)
vmovdqa %xmm10, 0x80(%rsp)
vmovdqa %xmm13, 0x10(%rsp)
vmovdqa64 %xmm20, 0x40(%rsp)
vmovdqa %xmm6, 0x70(%rsp)
vmovdqa %xmm7, 0x60(%rsp)
vmovdqa %xmm12, 0x20(%rsp)
vmovdqa %xmm14, 0x100(%rsp)
vmovdqa64 %xmm21, 0xf0(%rsp)
vzeroupper
callq 0x1090
leaq 0xd0(%rsp), %rsi
vmovdqa (%rsi), %xmm0
vmovdqa 0x10(%rsi), %xmm1
vmovdqa 0x20(%rsp), %xmm2
vaesenc %xmm0, %xmm2, %xmm2
vmovdqa 0x50(%rsp), %xmm6
vaesenc 0x2478(%rip), %xmm6, %xmm5 # 0x4000
vpxor %xmm6, %xmm2, %xmm6
vmovdqa (%rsp), %xmm2
vaesenc %xmm1, %xmm2, %xmm2
vmovdqa 0x30(%rsp), %xmm3
vaesenc 0x245b(%rip), %xmm3, %xmm4 # 0x4000
vmovdqa 0x30(%rsp), %xmm3
vpxor %xmm3, %xmm2, %xmm3
vmovdqa %xmm3, 0x30(%rsp)
vpxor %xmm0, %xmm1, %xmm0
vmovdqa 0x40(%rsp), %xmm1
vaesenc %xmm0, %xmm1, %xmm0
vmovdqa 0x10(%rsp), %xmm1
vaesenc 0x242d(%rip), %xmm1, %xmm1 # 0x4000
vmovdqa %xmm1, 0x40(%rsp)
vmovdqa 0x10(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm1
vmovdqa %xmm1, 0x10(%rsp)
vmovdqa %xmm4, 0x20(%rsp)
vmovdqa %xmm6, 0x50(%rsp)
vmovdqa 0xf0(%rsp), %xmm0
vpternlogq $0x96, %xmm6, %xmm4, %xmm0
vmovdqa %xmm0, (%rsi)
vmovdqa %xmm5, (%rsp)
vmovdqa 0x100(%rsp), %xmm0
vpternlogq $0x96, 0x10(%rsp), %xmm5, %xmm0
vmovdqa %xmm0, 0x10(%rsi)
addq %rbp, %r12
movq %r12, %rdi
movq %r13, %rdx
callq 0x1090
vmovdqa 0x70(%rsp), %xmm12
vmovdqa 0x10(%rsp), %xmm13
vmovdqa64 0x30(%rsp), %xmm16
vmovdqa 0xc0(%rsp), %xmm11
vmovdqa64 0x23a6(%rip), %xmm19 # 0x4000
vmovdqa64 0x80(%rsp), %xmm20
vmovdqa 0x90(%rsp), %xmm10
vmovdqa64 0xa0(%rsp), %xmm17
vmovdqa 0xb0(%rsp), %xmm8
vmovdqa 0x40(%rsp), %xmm7
jmp 0x1ca4
vmovdqa %xmm11, 0x20(%rsp)
vmovdqa %xmm7, %xmm11
vmovdqa (%rsp), %xmm0
vmovdqa %xmm0, 0x60(%rsp)
vmovdqa %xmm6, (%rsp)
vmovdqa64 %xmm18, %xmm7
vmovq %rbx, %xmm0
vmovdqa 0x236f(%rip), %xmm2     # 0x4020
vpshufb %xmm2, %xmm0, %xmm1
vmovq %r14, %xmm0
vpshufb %xmm2, %xmm0, %xmm2
vpxor %xmm2, %xmm1, %xmm0
vmovdqa64 %xmm20, %xmm3
vaesenc %xmm0, %xmm3, %xmm0
vpxor %xmm0, %xmm13, %xmm3
vmovdqa64 %xmm19, %xmm14
vaesenc %xmm14, %xmm13, %xmm0
vmovdqa 0x232a(%rip), %xmm15    # 0x4010
vaesenc %xmm15, %xmm10, %xmm4
vpxor %xmm3, %xmm4, %xmm4
vaesenc %xmm14, %xmm3, %xmm3
vmovdqa64 %xmm17, %xmm5
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm4, %xmm5, %xmm5
vaesenc %xmm14, %xmm4, %xmm4
vaesenc %xmm15, %xmm8, %xmm6
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm14, %xmm5, %xmm5
vaesenc %xmm15, %xmm7, %xmm7
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm14, %xmm6, %xmm6
vaesenc %xmm15, %xmm0, %xmm0
vpxor %xmm7, %xmm0, %xmm8
vaesenc %xmm14, %xmm7, %xmm0
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm3, %xmm8, %xmm7
vaesenc %xmm14, %xmm8, %xmm3
vaesenc %xmm15, %xmm4, %xmm4
vpxor %xmm7, %xmm4, %xmm8
vaesenc %xmm14, %xmm7, %xmm4
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm5, %xmm8, %xmm5
vaesenc %xmm14, %xmm8, %xmm7
vaesenc %xmm15, %xmm6, %xmm6
vpxor %xmm5, %xmm6, %xmm8
vaesenc %xmm14, %xmm5, %xmm6
vaesenc %xmm15, %xmm0, %xmm0
vpxor %xmm0, %xmm8, %xmm0
vaesenc %xmm14, %xmm8, %xmm8
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm0, %xmm3, %xmm5
vaesenc %xmm14, %xmm0, %xmm9
vaesenc %xmm15, %xmm4, %xmm0
vpxor %xmm5, %xmm0, %xmm3
vaesenc %xmm15, %xmm7, %xmm0
vpxor %xmm3, %xmm0, %xmm0
vaesenc %xmm15, %xmm6, %xmm4
vpxor %xmm0, %xmm4, %xmm4
vaesenc %xmm15, %xmm8, %xmm6
vpxor %xmm4, %xmm6, %xmm6
vaesenc %xmm15, %xmm9, %xmm7
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm14, %xmm6, %xmm6
vaesenc %xmm14, %xmm7, %xmm8
vpxor %xmm6, %xmm8, %xmm6
vaesenc %xmm2, %xmm12, %xmm2
vmovdqa 0x60(%rsp), %xmm8
vaesenc %xmm1, %xmm8, %xmm1
vmovdqa 0x50(%rsp), %xmm8
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm14, %xmm8, %xmm8
vmovdqa64 %xmm16, %xmm9
vpxorq %xmm16, %xmm1, %xmm1
vaesenc %xmm14, %xmm9, %xmm9
vmovdqa (%rsp), %xmm10
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm14, %xmm1, %xmm1
vaesenc %xmm15, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm14, %xmm10, %xmm10
vmovdqa 0x20(%rsp), %xmm12
vaesenc %xmm14, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm14, %xmm11, %xmm11
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm14, %xmm8, %xmm8
vaesenc %xmm14, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm14, %xmm12, %xmm12
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm14, %xmm9, %xmm9
vaesenc %xmm15, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm14, %xmm10, %xmm10
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm14, %xmm1, %xmm1
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm14, %xmm8, %xmm8
vaesenc %xmm14, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm14, %xmm11, %xmm11
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm14, %xmm12, %xmm12
vaesenc %xmm15, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm14, %xmm10, %xmm10
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm14, %xmm9, %xmm9
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm14, %xmm8, %xmm8
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm14, %xmm1, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm12, %xmm12
vpxor %xmm11, %xmm12, %xmm12
vaesenc %xmm14, %xmm11, %xmm11
vaesenc %xmm15, %xmm8, %xmm8
vpxor %xmm10, %xmm8, %xmm8
vaesenc %xmm14, %xmm10, %xmm10
vaesenc %xmm14, %xmm9, %xmm9
vpxor %xmm12, %xmm9, %xmm9
vaesenc %xmm14, %xmm12, %xmm12
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm8, %xmm2
vaesenc %xmm14, %xmm8, %xmm8
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm1, %xmm9, %xmm1
vaesenc %xmm14, %xmm9, %xmm9
vaesenc %xmm14, %xmm5, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm2, %xmm10, %xmm10
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm1, %xmm11, %xmm11
vaesenc %xmm14, %xmm1, %xmm13
vaesenc %xmm15, %xmm8, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm14, %xmm10, %xmm8
vaesenc %xmm14, %xmm12, %xmm10
vpxor %xmm11, %xmm10, %xmm10
vaesenc %xmm14, %xmm11, %xmm11
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm1, %xmm2, %xmm2
vaesenc %xmm14, %xmm1, %xmm12
vaesenc %xmm14, %xmm9, %xmm1
vpxor %xmm1, %xmm10, %xmm1
vaesenc %xmm14, %xmm10, %xmm9
vaesenc %xmm15, %xmm8, %xmm8
vpxor %xmm2, %xmm8, %xmm8
vaesenc %xmm14, %xmm2, %xmm2
vaesenc %xmm14, %xmm13, %xmm10
vpxor %xmm1, %xmm10, %xmm10
vaesenc %xmm15, %xmm12, %xmm12
vpxor %xmm8, %xmm12, %xmm12
vaesenc %xmm14, %xmm11, %xmm11
vpxor %xmm10, %xmm11, %xmm11
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm7, %xmm5, %xmm5
vaesenc %xmm15, %xmm2, %xmm2
vpxor %xmm2, %xmm12, %xmm2
vaesenc %xmm14, %xmm9, %xmm7
vaesenc %xmm14, %xmm11, %xmm9
vpxor %xmm7, %xmm11, %xmm7
vaesenc %xmm14, %xmm5, %xmm11
vpternlogq $0x96, %xmm9, %xmm11, %xmm6
vaesenc %xmm14, %xmm2, %xmm9
vaesenc %xmm14, %xmm7, %xmm11
vpternlogq $0x96, %xmm9, %xmm11, %xmm6
vaesenc %xmm14, %xmm3, %xmm3
vaesenc %xmm14, %xmm12, %xmm9
vaesenc %xmm15, %xmm3, %xmm3
vpxor %xmm5, %xmm3, %xmm3
vaesenc %xmm14, %xmm3, %xmm5
vaesenc %xmm15, %xmm9, %xmm9
vpternlogq $0x96, %xmm5, %xmm9, %xmm6
vaesenc %xmm14, %xmm8, %xmm5
vaesenc %xmm14, %xmm10, %xmm8
vaesenc %xmm15, %xmm5, %xmm5
vpxor %xmm2, %xmm5, %xmm2
vaesenc %xmm14, %xmm2, %xmm5
vaesenc %xmm14, %xmm8, %xmm8
vpternlogq $0x96, %xmm5, %xmm8, %xmm6
vaesenc %xmm14, %xmm4, %xmm4
vaesenc %xmm14, %xmm1, %xmm1
vaesenc %xmm14, %xmm1, %xmm1
vpxor %xmm7, %xmm1, %xmm1
vaesenc %xmm14, %xmm1, %xmm5
vaesenc %xmm15, %xmm4, %xmm4
vpternlogq $0x96, %xmm5, %xmm4, %xmm6
vaesenc %xmm14, %xmm0, %xmm0
vaesenc %xmm15, %xmm0, %xmm0
vpxor %xmm3, %xmm0, %xmm0
vaesenc %xmm14, %xmm0, %xmm3
vpternlogq $0x96, %xmm3, %xmm2, %xmm6
vpternlogq $0x96, %xmm1, %xmm0, %xmm6
vmovdqa %xmm6, 0xd0(%rsp)
vmovaps 0xd0(%rsp), %xmm0
vmovups %xmm0, (%rbp,%rbx)
addq $0x10, %rbx
movq 0x160(%rsp), %rax
movq %rbx, (%rax)
xorl %eax, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq