|  | @@ -0,0 +1,47 @@
 | 
	
		
			
				|  |  | +#include "textflag.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// func xorfwd(x []byte)
 | 
	
		
			
				|  |  | +TEXT ·xorfwd(SB),NOSPLIT,$0
 | 
	
		
			
				|  |  | +  MOVQ x+0(FP), SI  // x[i]
 | 
	
		
			
				|  |  | +  MOVQ x_len+8(FP), CX  // x.len
 | 
	
		
			
				|  |  | +  MOVQ x+0(FP), DI
 | 
	
		
			
				|  |  | +  ADDQ $4, DI       // x[i+4]
 | 
	
		
			
				|  |  | +  SUBQ $4, CX
 | 
	
		
			
				|  |  | +xorfwdloop:
 | 
	
		
			
				|  |  | +  MOVL (SI), AX
 | 
	
		
			
				|  |  | +  XORL AX, (DI)
 | 
	
		
			
				|  |  | +  ADDQ $4, SI
 | 
	
		
			
				|  |  | +  ADDQ $4, DI
 | 
	
		
			
				|  |  | +  SUBQ $4, CX
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  CMPL CX, $0
 | 
	
		
			
				|  |  | +  JE xorfwddone
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  JMP xorfwdloop
 | 
	
		
			
				|  |  | +xorfwddone:        
 | 
	
		
			
				|  |  | +  RET
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// func xorbkd(x []byte)
 | 
	
		
			
				|  |  | +TEXT ·xorbkd(SB),NOSPLIT,$0
 | 
	
		
			
				|  |  | +  MOVQ x+0(FP), SI
 | 
	
		
			
				|  |  | +  MOVQ x_len+8(FP), CX  // x.len
 | 
	
		
			
				|  |  | +  MOVQ x+0(FP), DI
 | 
	
		
			
				|  |  | +  ADDQ CX, SI       // x[-8]
 | 
	
		
			
				|  |  | +  SUBQ $8, SI
 | 
	
		
			
				|  |  | +  ADDQ CX, DI       // x[-4]
 | 
	
		
			
				|  |  | +  SUBQ $4, DI
 | 
	
		
			
				|  |  | +  SUBQ $4, CX
 | 
	
		
			
				|  |  | +xorbkdloop:
 | 
	
		
			
				|  |  | +  MOVL (SI), AX
 | 
	
		
			
				|  |  | +  XORL AX, (DI)
 | 
	
		
			
				|  |  | +  SUBQ $4, SI
 | 
	
		
			
				|  |  | +  SUBQ $4, DI
 | 
	
		
			
				|  |  | +  SUBQ $4, CX
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  CMPL CX, $0
 | 
	
		
			
				|  |  | +  JE xorbkddone
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  JMP xorbkdloop
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +xorbkddone:        
 | 
	
		
			
				|  |  | +  RET
 |