1115 lines
		
	
	
	
		
			20 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			1115 lines
		
	
	
	
		
			20 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | # salsa20_pm.s version 20051229 | ||
|  | # D. J. Bernstein | ||
|  | # Public domain. | ||
|  | 
 | ||
|  | # enter ECRYPT_encrypt_bytes | ||
|  | .text | ||
|  | .p2align 5
 | ||
|  | .globl ECRYPT_encrypt_bytes
 | ||
|  | ECRYPT_encrypt_bytes: | ||
|  | 	mov	%esp,%eax | ||
|  | 	and	$31,%eax | ||
|  | 	add	$256,%eax | ||
|  | 	sub	%eax,%esp | ||
|  | 	# eax_stack = eax | ||
|  | 	movl	%eax,80(%esp) | ||
|  | 	# ebx_stack = ebx | ||
|  | 	movl	%ebx,84(%esp) | ||
|  | 	# esi_stack = esi | ||
|  | 	movl	%esi,88(%esp) | ||
|  | 	# edi_stack = edi | ||
|  | 	movl	%edi,92(%esp) | ||
|  | 	# ebp_stack = ebp | ||
|  | 	movl	%ebp,96(%esp) | ||
|  | 	# x = arg1 | ||
|  | 	movl	4(%esp,%eax),%edx | ||
|  | 	# m = arg2 | ||
|  | 	movl	8(%esp,%eax),%esi | ||
|  | 	# out = arg3 | ||
|  | 	movl	12(%esp,%eax),%edi | ||
|  | 	# bytes = arg4 | ||
|  | 	movl	16(%esp,%eax),%ebx | ||
|  | 	# bytes -= 0 | ||
|  | 	sub	$0,%ebx | ||
|  | 	# goto done if unsigned<= | ||
|  | 	jbe	._done | ||
|  | ._start: | ||
|  | 	# in0 = *(uint32 *) (x + 0) | ||
|  | 	movl	0(%edx),%eax | ||
|  | 	# in1 = *(uint32 *) (x + 4) | ||
|  | 	movl	4(%edx),%ecx | ||
|  | 	# in2 = *(uint32 *) (x + 8) | ||
|  | 	movl	8(%edx),%ebp | ||
|  | 	# j0 = in0 | ||
|  | 	movl	%eax,164(%esp) | ||
|  | 	# in3 = *(uint32 *) (x + 12) | ||
|  | 	movl	12(%edx),%eax | ||
|  | 	# j1 = in1 | ||
|  | 	movl	%ecx,168(%esp) | ||
|  | 	# in4 = *(uint32 *) (x + 16) | ||
|  | 	movl	16(%edx),%ecx | ||
|  | 	# j2 = in2 | ||
|  | 	movl	%ebp,172(%esp) | ||
|  | 	# in5 = *(uint32 *) (x + 20) | ||
|  | 	movl	20(%edx),%ebp | ||
|  | 	# j3 = in3 | ||
|  | 	movl	%eax,176(%esp) | ||
|  | 	# in6 = *(uint32 *) (x + 24) | ||
|  | 	movl	24(%edx),%eax | ||
|  | 	# j4 = in4 | ||
|  | 	movl	%ecx,180(%esp) | ||
|  | 	# in7 = *(uint32 *) (x + 28) | ||
|  | 	movl	28(%edx),%ecx | ||
|  | 	# j5 = in5 | ||
|  | 	movl	%ebp,184(%esp) | ||
|  | 	# in8 = *(uint32 *) (x + 32) | ||
|  | 	movl	32(%edx),%ebp | ||
|  | 	# j6 = in6 | ||
|  | 	movl	%eax,188(%esp) | ||
|  | 	# in9 = *(uint32 *) (x + 36) | ||
|  | 	movl	36(%edx),%eax | ||
|  | 	# j7 = in7 | ||
|  | 	movl	%ecx,192(%esp) | ||
|  | 	# in10 = *(uint32 *) (x + 40) | ||
|  | 	movl	40(%edx),%ecx | ||
|  | 	# j8 = in8 | ||
|  | 	movl	%ebp,196(%esp) | ||
|  | 	# in11 = *(uint32 *) (x + 44) | ||
|  | 	movl	44(%edx),%ebp | ||
|  | 	# j9 = in9 | ||
|  | 	movl	%eax,200(%esp) | ||
|  | 	# in12 = *(uint32 *) (x + 48) | ||
|  | 	movl	48(%edx),%eax | ||
|  | 	# j10 = in10 | ||
|  | 	movl	%ecx,204(%esp) | ||
|  | 	# in13 = *(uint32 *) (x + 52) | ||
|  | 	movl	52(%edx),%ecx | ||
|  | 	# j11 = in11 | ||
|  | 	movl	%ebp,208(%esp) | ||
|  | 	# in14 = *(uint32 *) (x + 56) | ||
|  | 	movl	56(%edx),%ebp | ||
|  | 	# j12 = in12 | ||
|  | 	movl	%eax,212(%esp) | ||
|  | 	# in15 = *(uint32 *) (x + 60) | ||
|  | 	movl	60(%edx),%eax | ||
|  | 	# j13 = in13 | ||
|  | 	movl	%ecx,216(%esp) | ||
|  | 	# j14 = in14 | ||
|  | 	movl	%ebp,220(%esp) | ||
|  | 	# j15 = in15 | ||
|  | 	movl	%eax,224(%esp) | ||
|  | 	# x_backup = x | ||
|  | 	movl	%edx,64(%esp) | ||
|  | ._bytesatleast1: | ||
|  | 	#   bytes - 64 | ||
|  | 	cmp	$64,%ebx | ||
|  | 	#   goto nocopy if unsigned>= | ||
|  | 	jae	._nocopy | ||
|  | 	#     ctarget = out | ||
|  | 	movl	%edi,228(%esp) | ||
|  | 	#     out = &tmp | ||
|  | 	leal	0(%esp),%edi | ||
|  | 	#     i = bytes | ||
|  | 	mov	%ebx,%ecx | ||
|  | 	#     while (i) { *out++ = *m++; --i }
 | ||
|  | 	rep	movsb | ||
|  | 	#     out = &tmp | ||
|  | 	leal	0(%esp),%edi | ||
|  | 	#     m = &tmp | ||
|  | 	leal	0(%esp),%esi | ||
|  | ._nocopy: | ||
|  | 	#   out_backup = out | ||
|  | 	movl	%edi,72(%esp) | ||
|  | 	#   m_backup = m | ||
|  | 	movl	%esi,68(%esp) | ||
|  | 	#   bytes_backup = bytes | ||
|  | 	movl	%ebx,76(%esp) | ||
|  | 	#   in0 = j0 | ||
|  | 	movl	164(%esp),%eax | ||
|  | 	#   in1 = j1 | ||
|  | 	movl	168(%esp),%ecx | ||
|  | 	#   in2 = j2 | ||
|  | 	movl	172(%esp),%edx | ||
|  | 	#   in3 = j3 | ||
|  | 	movl	176(%esp),%ebx | ||
|  | 	#   x0 = in0 | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	#   x1 = in1 | ||
|  | 	movl	%ecx,104(%esp) | ||
|  | 	#   x2 = in2 | ||
|  | 	movl	%edx,108(%esp) | ||
|  | 	#   x3 = in3 | ||
|  | 	movl	%ebx,112(%esp) | ||
|  | 	#   in4 = j4 | ||
|  | 	movl	180(%esp),%eax | ||
|  | 	#   in5 = j5 | ||
|  | 	movl	184(%esp),%ecx | ||
|  | 	#   in6 = j6 | ||
|  | 	movl	188(%esp),%edx | ||
|  | 	#   in7 = j7 | ||
|  | 	movl	192(%esp),%ebx | ||
|  | 	#   x4 = in4 | ||
|  | 	movl	%eax,116(%esp) | ||
|  | 	#   x5 = in5 | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	#   x6 = in6 | ||
|  | 	movl	%edx,124(%esp) | ||
|  | 	#   x7 = in7 | ||
|  | 	movl	%ebx,128(%esp) | ||
|  | 	#   in8 = j8 | ||
|  | 	movl	196(%esp),%eax | ||
|  | 	#   in9 = j9 | ||
|  | 	movl	200(%esp),%ecx | ||
|  | 	#   in10 = j10 | ||
|  | 	movl	204(%esp),%edx | ||
|  | 	#   in11 = j11 | ||
|  | 	movl	208(%esp),%ebx | ||
|  | 	#   x8 = in8 | ||
|  | 	movl	%eax,132(%esp) | ||
|  | 	#   x9 = in9 | ||
|  | 	movl	%ecx,136(%esp) | ||
|  | 	#   x10 = in10 | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	#   x11 = in11 | ||
|  | 	movl	%ebx,144(%esp) | ||
|  | 	#   in12 = j12 | ||
|  | 	movl	212(%esp),%eax | ||
|  | 	#   in13 = j13 | ||
|  | 	movl	216(%esp),%ecx | ||
|  | 	#   in14 = j14 | ||
|  | 	movl	220(%esp),%edx | ||
|  | 	#   in15 = j15 | ||
|  | 	movl	224(%esp),%ebx | ||
|  | 	#   x12 = in12 | ||
|  | 	movl	%eax,148(%esp) | ||
|  | 	#   x13 = in13 | ||
|  | 	movl	%ecx,152(%esp) | ||
|  | 	#   x14 = in14 | ||
|  | 	movl	%edx,156(%esp) | ||
|  | 	#   x15 = in15 | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	#   i = 20 | ||
|  | 	mov	$20,%ebp | ||
|  | 	# p = x0 | ||
|  | 	movl	100(%esp),%eax | ||
|  | 	# s = x5 | ||
|  | 	movl	120(%esp),%ecx | ||
|  | 	# t = x10 | ||
|  | 	movl	140(%esp),%edx | ||
|  | 	# w = x15 | ||
|  | 	movl	160(%esp),%ebx | ||
|  | ._mainloop: | ||
|  | 	# x0 = p | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	# 				x10 = t | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	# p += x12 | ||
|  | 	addl	148(%esp),%eax | ||
|  | 	# 		x5 = s | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	# 				t += x6 | ||
|  | 	addl	124(%esp),%edx | ||
|  | 	# 						x15 = w | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	# 		r = x1 | ||
|  | 	movl	104(%esp),%esi | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 						v = x11 | ||
|  | 	movl	144(%esp),%edi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# p <<<= 7 | ||
|  | 	rol	$7,%eax | ||
|  | 	# p ^= x4 | ||
|  | 	xorl	116(%esp),%eax | ||
|  | 	# 				t <<<= 7 | ||
|  | 	rol	$7,%edx | ||
|  | 	# 				t ^= x14 | ||
|  | 	xorl	156(%esp),%edx | ||
|  | 	# 		r <<<= 7 | ||
|  | 	rol	$7,%esi | ||
|  | 	# 		r ^= x9 | ||
|  | 	xorl	136(%esp),%esi | ||
|  | 	# 						v <<<= 7 | ||
|  | 	rol	$7,%edi | ||
|  | 	# 						v ^= x3 | ||
|  | 	xorl	112(%esp),%edi | ||
|  | 	# x4 = p | ||
|  | 	movl	%eax,116(%esp) | ||
|  | 	# 				x14 = t | ||
|  | 	movl	%edx,156(%esp) | ||
|  | 	# p += x0 | ||
|  | 	addl	100(%esp),%eax | ||
|  | 	# 		x9 = r | ||
|  | 	movl	%esi,136(%esp) | ||
|  | 	# 				t += x10 | ||
|  | 	addl	140(%esp),%edx | ||
|  | 	# 						x3 = v | ||
|  | 	movl	%edi,112(%esp) | ||
|  | 	# p <<<= 9 | ||
|  | 	rol	$9,%eax | ||
|  | 	# p ^= x8 | ||
|  | 	xorl	132(%esp),%eax | ||
|  | 	# 				t <<<= 9 | ||
|  | 	rol	$9,%edx | ||
|  | 	# 				t ^= x2 | ||
|  | 	xorl	108(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 9 | ||
|  | 	rol	$9,%ecx | ||
|  | 	# 		s ^= x13 | ||
|  | 	xorl	152(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 9 | ||
|  | 	rol	$9,%ebx | ||
|  | 	# 						w ^= x7 | ||
|  | 	xorl	128(%esp),%ebx | ||
|  | 	# x8 = p | ||
|  | 	movl	%eax,132(%esp) | ||
|  | 	# 				x2 = t | ||
|  | 	movl	%edx,108(%esp) | ||
|  | 	# p += x4 | ||
|  | 	addl	116(%esp),%eax | ||
|  | 	# 		x13 = s | ||
|  | 	movl	%ecx,152(%esp) | ||
|  | 	# 				t += x14 | ||
|  | 	addl	156(%esp),%edx | ||
|  | 	# 						x7 = w | ||
|  | 	movl	%ebx,128(%esp) | ||
|  | 	# p <<<= 13 | ||
|  | 	rol	$13,%eax | ||
|  | 	# p ^= x12 | ||
|  | 	xorl	148(%esp),%eax | ||
|  | 	# 				t <<<= 13 | ||
|  | 	rol	$13,%edx | ||
|  | 	# 				t ^= x6 | ||
|  | 	xorl	124(%esp),%edx | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 		r <<<= 13 | ||
|  | 	rol	$13,%esi | ||
|  | 	# 		r ^= x1 | ||
|  | 	xorl	104(%esp),%esi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# 						v <<<= 13 | ||
|  | 	rol	$13,%edi | ||
|  | 	# 						v ^= x11 | ||
|  | 	xorl	144(%esp),%edi | ||
|  | 	# x12 = p | ||
|  | 	movl	%eax,148(%esp) | ||
|  | 	# 				x6 = t | ||
|  | 	movl	%edx,124(%esp) | ||
|  | 	# p += x8 | ||
|  | 	addl	132(%esp),%eax | ||
|  | 	# 		x1 = r | ||
|  | 	movl	%esi,104(%esp) | ||
|  | 	# 				t += x2 | ||
|  | 	addl	108(%esp),%edx | ||
|  | 	# 						x11 = v | ||
|  | 	movl	%edi,144(%esp) | ||
|  | 	# p <<<= 18 | ||
|  | 	rol	$18,%eax | ||
|  | 	# p ^= x0 | ||
|  | 	xorl	100(%esp),%eax | ||
|  | 	# 				t <<<= 18 | ||
|  | 	rol	$18,%edx | ||
|  | 	# 				t ^= x10 | ||
|  | 	xorl	140(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 18 | ||
|  | 	rol	$18,%ecx | ||
|  | 	# 		s ^= x5 | ||
|  | 	xorl	120(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 18 | ||
|  | 	rol	$18,%ebx | ||
|  | 	# 						w ^= x15 | ||
|  | 	xorl	160(%esp),%ebx | ||
|  | 	# x0 = p | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	# 				x10 = t | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	# p += x3 | ||
|  | 	addl	112(%esp),%eax | ||
|  | 	# p <<<= 7 | ||
|  | 	rol	$7,%eax | ||
|  | 	# 		x5 = s | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	# 				t += x9 | ||
|  | 	addl	136(%esp),%edx | ||
|  | 	# 						x15 = w | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	# 		r = x4 | ||
|  | 	movl	116(%esp),%esi | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 						v = x14 | ||
|  | 	movl	156(%esp),%edi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# p ^= x1 | ||
|  | 	xorl	104(%esp),%eax | ||
|  | 	# 				t <<<= 7 | ||
|  | 	rol	$7,%edx | ||
|  | 	# 				t ^= x11 | ||
|  | 	xorl	144(%esp),%edx | ||
|  | 	# 		r <<<= 7 | ||
|  | 	rol	$7,%esi | ||
|  | 	# 		r ^= x6 | ||
|  | 	xorl	124(%esp),%esi | ||
|  | 	# 						v <<<= 7 | ||
|  | 	rol	$7,%edi | ||
|  | 	# 						v ^= x12 | ||
|  | 	xorl	148(%esp),%edi | ||
|  | 	# x1 = p | ||
|  | 	movl	%eax,104(%esp) | ||
|  | 	# 				x11 = t | ||
|  | 	movl	%edx,144(%esp) | ||
|  | 	# p += x0 | ||
|  | 	addl	100(%esp),%eax | ||
|  | 	# 		x6 = r | ||
|  | 	movl	%esi,124(%esp) | ||
|  | 	# 				t += x10 | ||
|  | 	addl	140(%esp),%edx | ||
|  | 	# 						x12 = v | ||
|  | 	movl	%edi,148(%esp) | ||
|  | 	# p <<<= 9 | ||
|  | 	rol	$9,%eax | ||
|  | 	# p ^= x2 | ||
|  | 	xorl	108(%esp),%eax | ||
|  | 	# 				t <<<= 9 | ||
|  | 	rol	$9,%edx | ||
|  | 	# 				t ^= x8 | ||
|  | 	xorl	132(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 9 | ||
|  | 	rol	$9,%ecx | ||
|  | 	# 		s ^= x7 | ||
|  | 	xorl	128(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 9 | ||
|  | 	rol	$9,%ebx | ||
|  | 	# 						w ^= x13 | ||
|  | 	xorl	152(%esp),%ebx | ||
|  | 	# x2 = p | ||
|  | 	movl	%eax,108(%esp) | ||
|  | 	# 				x8 = t | ||
|  | 	movl	%edx,132(%esp) | ||
|  | 	# p += x1 | ||
|  | 	addl	104(%esp),%eax | ||
|  | 	# 		x7 = s | ||
|  | 	movl	%ecx,128(%esp) | ||
|  | 	# 				t += x11 | ||
|  | 	addl	144(%esp),%edx | ||
|  | 	# 						x13 = w | ||
|  | 	movl	%ebx,152(%esp) | ||
|  | 	# p <<<= 13 | ||
|  | 	rol	$13,%eax | ||
|  | 	# p ^= x3 | ||
|  | 	xorl	112(%esp),%eax | ||
|  | 	# 				t <<<= 13 | ||
|  | 	rol	$13,%edx | ||
|  | 	# 				t ^= x9 | ||
|  | 	xorl	136(%esp),%edx | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 		r <<<= 13 | ||
|  | 	rol	$13,%esi | ||
|  | 	# 		r ^= x4 | ||
|  | 	xorl	116(%esp),%esi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# 						v <<<= 13 | ||
|  | 	rol	$13,%edi | ||
|  | 	# 						v ^= x14 | ||
|  | 	xorl	156(%esp),%edi | ||
|  | 	# x3 = p | ||
|  | 	movl	%eax,112(%esp) | ||
|  | 	# 				x9 = t | ||
|  | 	movl	%edx,136(%esp) | ||
|  | 	# p += x2 | ||
|  | 	addl	108(%esp),%eax | ||
|  | 	# 		x4 = r | ||
|  | 	movl	%esi,116(%esp) | ||
|  | 	# 				t += x8 | ||
|  | 	addl	132(%esp),%edx | ||
|  | 	# 						x14 = v | ||
|  | 	movl	%edi,156(%esp) | ||
|  | 	# p <<<= 18 | ||
|  | 	rol	$18,%eax | ||
|  | 	# p ^= x0 | ||
|  | 	xorl	100(%esp),%eax | ||
|  | 	# 				t <<<= 18 | ||
|  | 	rol	$18,%edx | ||
|  | 	# 				t ^= x10 | ||
|  | 	xorl	140(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 18 | ||
|  | 	rol	$18,%ecx | ||
|  | 	# 		s ^= x5 | ||
|  | 	xorl	120(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 18 | ||
|  | 	rol	$18,%ebx | ||
|  | 	# 						w ^= x15 | ||
|  | 	xorl	160(%esp),%ebx | ||
|  | 	# x0 = p | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	# 				x10 = t | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	# p += x12 | ||
|  | 	addl	148(%esp),%eax | ||
|  | 	# 		x5 = s | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	# 				t += x6 | ||
|  | 	addl	124(%esp),%edx | ||
|  | 	# 						x15 = w | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	# 		r = x1 | ||
|  | 	movl	104(%esp),%esi | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 						v = x11 | ||
|  | 	movl	144(%esp),%edi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# p <<<= 7 | ||
|  | 	rol	$7,%eax | ||
|  | 	# p ^= x4 | ||
|  | 	xorl	116(%esp),%eax | ||
|  | 	# 				t <<<= 7 | ||
|  | 	rol	$7,%edx | ||
|  | 	# 				t ^= x14 | ||
|  | 	xorl	156(%esp),%edx | ||
|  | 	# 		r <<<= 7 | ||
|  | 	rol	$7,%esi | ||
|  | 	# 		r ^= x9 | ||
|  | 	xorl	136(%esp),%esi | ||
|  | 	# 						v <<<= 7 | ||
|  | 	rol	$7,%edi | ||
|  | 	# 						v ^= x3 | ||
|  | 	xorl	112(%esp),%edi | ||
|  | 	# x4 = p | ||
|  | 	movl	%eax,116(%esp) | ||
|  | 	# 				x14 = t | ||
|  | 	movl	%edx,156(%esp) | ||
|  | 	# p += x0 | ||
|  | 	addl	100(%esp),%eax | ||
|  | 	# 		x9 = r | ||
|  | 	movl	%esi,136(%esp) | ||
|  | 	# 				t += x10 | ||
|  | 	addl	140(%esp),%edx | ||
|  | 	# 						x3 = v | ||
|  | 	movl	%edi,112(%esp) | ||
|  | 	# p <<<= 9 | ||
|  | 	rol	$9,%eax | ||
|  | 	# p ^= x8 | ||
|  | 	xorl	132(%esp),%eax | ||
|  | 	# 				t <<<= 9 | ||
|  | 	rol	$9,%edx | ||
|  | 	# 				t ^= x2 | ||
|  | 	xorl	108(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 9 | ||
|  | 	rol	$9,%ecx | ||
|  | 	# 		s ^= x13 | ||
|  | 	xorl	152(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 9 | ||
|  | 	rol	$9,%ebx | ||
|  | 	# 						w ^= x7 | ||
|  | 	xorl	128(%esp),%ebx | ||
|  | 	# x8 = p | ||
|  | 	movl	%eax,132(%esp) | ||
|  | 	# 				x2 = t | ||
|  | 	movl	%edx,108(%esp) | ||
|  | 	# p += x4 | ||
|  | 	addl	116(%esp),%eax | ||
|  | 	# 		x13 = s | ||
|  | 	movl	%ecx,152(%esp) | ||
|  | 	# 				t += x14 | ||
|  | 	addl	156(%esp),%edx | ||
|  | 	# 						x7 = w | ||
|  | 	movl	%ebx,128(%esp) | ||
|  | 	# p <<<= 13 | ||
|  | 	rol	$13,%eax | ||
|  | 	# p ^= x12 | ||
|  | 	xorl	148(%esp),%eax | ||
|  | 	# 				t <<<= 13 | ||
|  | 	rol	$13,%edx | ||
|  | 	# 				t ^= x6 | ||
|  | 	xorl	124(%esp),%edx | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 		r <<<= 13 | ||
|  | 	rol	$13,%esi | ||
|  | 	# 		r ^= x1 | ||
|  | 	xorl	104(%esp),%esi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# 						v <<<= 13 | ||
|  | 	rol	$13,%edi | ||
|  | 	# 						v ^= x11 | ||
|  | 	xorl	144(%esp),%edi | ||
|  | 	# x12 = p | ||
|  | 	movl	%eax,148(%esp) | ||
|  | 	# 				x6 = t | ||
|  | 	movl	%edx,124(%esp) | ||
|  | 	# p += x8 | ||
|  | 	addl	132(%esp),%eax | ||
|  | 	# 		x1 = r | ||
|  | 	movl	%esi,104(%esp) | ||
|  | 	# 				t += x2 | ||
|  | 	addl	108(%esp),%edx | ||
|  | 	# 						x11 = v | ||
|  | 	movl	%edi,144(%esp) | ||
|  | 	# p <<<= 18 | ||
|  | 	rol	$18,%eax | ||
|  | 	# p ^= x0 | ||
|  | 	xorl	100(%esp),%eax | ||
|  | 	# 				t <<<= 18 | ||
|  | 	rol	$18,%edx | ||
|  | 	# 				t ^= x10 | ||
|  | 	xorl	140(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 18 | ||
|  | 	rol	$18,%ecx | ||
|  | 	# 		s ^= x5 | ||
|  | 	xorl	120(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 18 | ||
|  | 	rol	$18,%ebx | ||
|  | 	# 						w ^= x15 | ||
|  | 	xorl	160(%esp),%ebx | ||
|  | 	# x0 = p | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	# 				x10 = t | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	# p += x3 | ||
|  | 	addl	112(%esp),%eax | ||
|  | 	# p <<<= 7 | ||
|  | 	rol	$7,%eax | ||
|  | 	# 		x5 = s | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	# 				t += x9 | ||
|  | 	addl	136(%esp),%edx | ||
|  | 	# 						x15 = w | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	# 		r = x4 | ||
|  | 	movl	116(%esp),%esi | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 						v = x14 | ||
|  | 	movl	156(%esp),%edi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# p ^= x1 | ||
|  | 	xorl	104(%esp),%eax | ||
|  | 	# 				t <<<= 7 | ||
|  | 	rol	$7,%edx | ||
|  | 	# 				t ^= x11 | ||
|  | 	xorl	144(%esp),%edx | ||
|  | 	# 		r <<<= 7 | ||
|  | 	rol	$7,%esi | ||
|  | 	# 		r ^= x6 | ||
|  | 	xorl	124(%esp),%esi | ||
|  | 	# 						v <<<= 7 | ||
|  | 	rol	$7,%edi | ||
|  | 	# 						v ^= x12 | ||
|  | 	xorl	148(%esp),%edi | ||
|  | 	# x1 = p | ||
|  | 	movl	%eax,104(%esp) | ||
|  | 	# 				x11 = t | ||
|  | 	movl	%edx,144(%esp) | ||
|  | 	# p += x0 | ||
|  | 	addl	100(%esp),%eax | ||
|  | 	# 		x6 = r | ||
|  | 	movl	%esi,124(%esp) | ||
|  | 	# 				t += x10 | ||
|  | 	addl	140(%esp),%edx | ||
|  | 	# 						x12 = v | ||
|  | 	movl	%edi,148(%esp) | ||
|  | 	# p <<<= 9 | ||
|  | 	rol	$9,%eax | ||
|  | 	# p ^= x2 | ||
|  | 	xorl	108(%esp),%eax | ||
|  | 	# 				t <<<= 9 | ||
|  | 	rol	$9,%edx | ||
|  | 	# 				t ^= x8 | ||
|  | 	xorl	132(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 9 | ||
|  | 	rol	$9,%ecx | ||
|  | 	# 		s ^= x7 | ||
|  | 	xorl	128(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 9 | ||
|  | 	rol	$9,%ebx | ||
|  | 	# 						w ^= x13 | ||
|  | 	xorl	152(%esp),%ebx | ||
|  | 	# x2 = p | ||
|  | 	movl	%eax,108(%esp) | ||
|  | 	# 				x8 = t | ||
|  | 	movl	%edx,132(%esp) | ||
|  | 	# p += x1 | ||
|  | 	addl	104(%esp),%eax | ||
|  | 	# 		x7 = s | ||
|  | 	movl	%ecx,128(%esp) | ||
|  | 	# 				t += x11 | ||
|  | 	addl	144(%esp),%edx | ||
|  | 	# 						x13 = w | ||
|  | 	movl	%ebx,152(%esp) | ||
|  | 	# p <<<= 13 | ||
|  | 	rol	$13,%eax | ||
|  | 	# p ^= x3 | ||
|  | 	xorl	112(%esp),%eax | ||
|  | 	# 				t <<<= 13 | ||
|  | 	rol	$13,%edx | ||
|  | 	# 				t ^= x9 | ||
|  | 	xorl	136(%esp),%edx | ||
|  | 	# 		r += s | ||
|  | 	add	%ecx,%esi | ||
|  | 	# 		r <<<= 13 | ||
|  | 	rol	$13,%esi | ||
|  | 	# 		r ^= x4 | ||
|  | 	xorl	116(%esp),%esi | ||
|  | 	# 						v += w | ||
|  | 	add	%ebx,%edi | ||
|  | 	# 						v <<<= 13 | ||
|  | 	rol	$13,%edi | ||
|  | 	# 						v ^= x14 | ||
|  | 	xorl	156(%esp),%edi | ||
|  | 	# x3 = p | ||
|  | 	movl	%eax,112(%esp) | ||
|  | 	# 				x9 = t | ||
|  | 	movl	%edx,136(%esp) | ||
|  | 	# p += x2 | ||
|  | 	addl	108(%esp),%eax | ||
|  | 	# 		x4 = r | ||
|  | 	movl	%esi,116(%esp) | ||
|  | 	# 				t += x8 | ||
|  | 	addl	132(%esp),%edx | ||
|  | 	# 						x14 = v | ||
|  | 	movl	%edi,156(%esp) | ||
|  | 	# p <<<= 18 | ||
|  | 	rol	$18,%eax | ||
|  | 	# p ^= x0 | ||
|  | 	xorl	100(%esp),%eax | ||
|  | 	# 				t <<<= 18 | ||
|  | 	rol	$18,%edx | ||
|  | 	# 				t ^= x10 | ||
|  | 	xorl	140(%esp),%edx | ||
|  | 	# 		s += r | ||
|  | 	add	%esi,%ecx | ||
|  | 	# 		s <<<= 18 | ||
|  | 	rol	$18,%ecx | ||
|  | 	# 		s ^= x5 | ||
|  | 	xorl	120(%esp),%ecx | ||
|  | 	# 						w += v | ||
|  | 	add	%edi,%ebx | ||
|  | 	# 						w <<<= 18 | ||
|  | 	rol	$18,%ebx | ||
|  | 	# 						w ^= x15 | ||
|  | 	xorl	160(%esp),%ebx | ||
|  | 	# i -= 4 | ||
|  | 	sub	$4,%ebp | ||
|  | 	# goto mainloop if unsigned > | ||
|  | 	ja	._mainloop | ||
|  | 	# x0 = p | ||
|  | 	movl	%eax,100(%esp) | ||
|  | 	# x5 = s | ||
|  | 	movl	%ecx,120(%esp) | ||
|  | 	# x10 = t | ||
|  | 	movl	%edx,140(%esp) | ||
|  | 	# x15 = w | ||
|  | 	movl	%ebx,160(%esp) | ||
|  | 	#   out = out_backup | ||
|  | 	movl	72(%esp),%edi | ||
|  | 	#   m = m_backup | ||
|  | 	movl	68(%esp),%esi | ||
|  | 	#   in0 = x0 | ||
|  | 	movl	100(%esp),%eax | ||
|  | 	#   in1 = x1 | ||
|  | 	movl	104(%esp),%ecx | ||
|  | 	#   in0 += j0 | ||
|  | 	addl	164(%esp),%eax | ||
|  | 	#   in1 += j1 | ||
|  | 	addl	168(%esp),%ecx | ||
|  | 	#   in0 ^= *(uint32 *) (m + 0) | ||
|  | 	xorl	0(%esi),%eax | ||
|  | 	#   in1 ^= *(uint32 *) (m + 4) | ||
|  | 	xorl	4(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 0) = in0 | ||
|  | 	movl	%eax,0(%edi) | ||
|  | 	#   *(uint32 *) (out + 4) = in1 | ||
|  | 	movl	%ecx,4(%edi) | ||
|  | 	#   in2 = x2 | ||
|  | 	movl	108(%esp),%eax | ||
|  | 	#   in3 = x3 | ||
|  | 	movl	112(%esp),%ecx | ||
|  | 	#   in2 += j2 | ||
|  | 	addl	172(%esp),%eax | ||
|  | 	#   in3 += j3 | ||
|  | 	addl	176(%esp),%ecx | ||
|  | 	#   in2 ^= *(uint32 *) (m + 8) | ||
|  | 	xorl	8(%esi),%eax | ||
|  | 	#   in3 ^= *(uint32 *) (m + 12) | ||
|  | 	xorl	12(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 8) = in2 | ||
|  | 	movl	%eax,8(%edi) | ||
|  | 	#   *(uint32 *) (out + 12) = in3 | ||
|  | 	movl	%ecx,12(%edi) | ||
|  | 	#   in4 = x4 | ||
|  | 	movl	116(%esp),%eax | ||
|  | 	#   in5 = x5 | ||
|  | 	movl	120(%esp),%ecx | ||
|  | 	#   in4 += j4 | ||
|  | 	addl	180(%esp),%eax | ||
|  | 	#   in5 += j5 | ||
|  | 	addl	184(%esp),%ecx | ||
|  | 	#   in4 ^= *(uint32 *) (m + 16) | ||
|  | 	xorl	16(%esi),%eax | ||
|  | 	#   in5 ^= *(uint32 *) (m + 20) | ||
|  | 	xorl	20(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 16) = in4 | ||
|  | 	movl	%eax,16(%edi) | ||
|  | 	#   *(uint32 *) (out + 20) = in5 | ||
|  | 	movl	%ecx,20(%edi) | ||
|  | 	#   in6 = x6 | ||
|  | 	movl	124(%esp),%eax | ||
|  | 	#   in7 = x7 | ||
|  | 	movl	128(%esp),%ecx | ||
|  | 	#   in6 += j6 | ||
|  | 	addl	188(%esp),%eax | ||
|  | 	#   in7 += j7 | ||
|  | 	addl	192(%esp),%ecx | ||
|  | 	#   in6 ^= *(uint32 *) (m + 24) | ||
|  | 	xorl	24(%esi),%eax | ||
|  | 	#   in7 ^= *(uint32 *) (m + 28) | ||
|  | 	xorl	28(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 24) = in6 | ||
|  | 	movl	%eax,24(%edi) | ||
|  | 	#   *(uint32 *) (out + 28) = in7 | ||
|  | 	movl	%ecx,28(%edi) | ||
|  | 	#   in8 = x8 | ||
|  | 	movl	132(%esp),%eax | ||
|  | 	#   in9 = x9 | ||
|  | 	movl	136(%esp),%ecx | ||
|  | 	#   in8 += j8 | ||
|  | 	addl	196(%esp),%eax | ||
|  | 	#   in9 += j9 | ||
|  | 	addl	200(%esp),%ecx | ||
|  | 	#   in8 ^= *(uint32 *) (m + 32) | ||
|  | 	xorl	32(%esi),%eax | ||
|  | 	#   in9 ^= *(uint32 *) (m + 36) | ||
|  | 	xorl	36(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 32) = in8 | ||
|  | 	movl	%eax,32(%edi) | ||
|  | 	#   *(uint32 *) (out + 36) = in9 | ||
|  | 	movl	%ecx,36(%edi) | ||
|  | 	#   in10 = x10 | ||
|  | 	movl	140(%esp),%eax | ||
|  | 	#   in11 = x11 | ||
|  | 	movl	144(%esp),%ecx | ||
|  | 	#   in10 += j10 | ||
|  | 	addl	204(%esp),%eax | ||
|  | 	#   in11 += j11 | ||
|  | 	addl	208(%esp),%ecx | ||
|  | 	#   in10 ^= *(uint32 *) (m + 40) | ||
|  | 	xorl	40(%esi),%eax | ||
|  | 	#   in11 ^= *(uint32 *) (m + 44) | ||
|  | 	xorl	44(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 40) = in10 | ||
|  | 	movl	%eax,40(%edi) | ||
|  | 	#   *(uint32 *) (out + 44) = in11 | ||
|  | 	movl	%ecx,44(%edi) | ||
|  | 	#   in12 = x12 | ||
|  | 	movl	148(%esp),%eax | ||
|  | 	#   in13 = x13 | ||
|  | 	movl	152(%esp),%ecx | ||
|  | 	#   in12 += j12 | ||
|  | 	addl	212(%esp),%eax | ||
|  | 	#   in13 += j13 | ||
|  | 	addl	216(%esp),%ecx | ||
|  | 	#   in12 ^= *(uint32 *) (m + 48) | ||
|  | 	xorl	48(%esi),%eax | ||
|  | 	#   in13 ^= *(uint32 *) (m + 52) | ||
|  | 	xorl	52(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 48) = in12 | ||
|  | 	movl	%eax,48(%edi) | ||
|  | 	#   *(uint32 *) (out + 52) = in13 | ||
|  | 	movl	%ecx,52(%edi) | ||
|  | 	#   in14 = x14 | ||
|  | 	movl	156(%esp),%eax | ||
|  | 	#   in15 = x15 | ||
|  | 	movl	160(%esp),%ecx | ||
|  | 	#   in14 += j14 | ||
|  | 	addl	220(%esp),%eax | ||
|  | 	#   in15 += j15 | ||
|  | 	addl	224(%esp),%ecx | ||
|  | 	#   in14 ^= *(uint32 *) (m + 56) | ||
|  | 	xorl	56(%esi),%eax | ||
|  | 	#   in15 ^= *(uint32 *) (m + 60) | ||
|  | 	xorl	60(%esi),%ecx | ||
|  | 	#   *(uint32 *) (out + 56) = in14 | ||
|  | 	movl	%eax,56(%edi) | ||
|  | 	#   *(uint32 *) (out + 60) = in15 | ||
|  | 	movl	%ecx,60(%edi) | ||
|  | 	#   bytes = bytes_backup | ||
|  | 	movl	76(%esp),%ebx | ||
|  | 	#   in8 = j8 | ||
|  | 	movl	196(%esp),%eax | ||
|  | 	#   in9 = j9 | ||
|  | 	movl	200(%esp),%ecx | ||
|  | 	#   in8 += 1 | ||
|  | 	add	$1,%eax | ||
|  | 	#   in9 += 0 + carry | ||
|  | 	adc	$0,%ecx | ||
|  | 	#   j8 = in8 | ||
|  | 	movl	%eax,196(%esp) | ||
|  | 	#   j9 = in9 | ||
|  | 	movl	%ecx,200(%esp) | ||
|  | 	#   bytes - 64 | ||
|  | 	cmp	$64,%ebx | ||
|  | 	#   goto bytesatleast65 if unsigned> | ||
|  | 	ja	._bytesatleast65 | ||
|  | 	#     goto bytesatleast64 if unsigned>= | ||
|  | 	jae	._bytesatleast64 | ||
|  | 	#       m = out | ||
|  | 	mov	%edi,%esi | ||
|  | 	#       out = ctarget | ||
|  | 	movl	228(%esp),%edi | ||
|  | 	#       i = bytes | ||
|  | 	mov	%ebx,%ecx | ||
|  | 	#       while (i) { *out++ = *m++; --i }
 | ||
|  | 	rep	movsb | ||
|  | ._bytesatleast64: | ||
|  | 	#     x = x_backup | ||
|  | 	movl	64(%esp),%eax | ||
|  | 	#     in8 = j8 | ||
|  | 	movl	196(%esp),%ecx | ||
|  | 	#     in9 = j9 | ||
|  | 	movl	200(%esp),%edx | ||
|  | 	#     *(uint32 *) (x + 32) = in8 | ||
|  | 	movl	%ecx,32(%eax) | ||
|  | 	#     *(uint32 *) (x + 36) = in9 | ||
|  | 	movl	%edx,36(%eax) | ||
|  | ._done: | ||
|  | 	#     eax = eax_stack | ||
|  | 	movl	80(%esp),%eax | ||
|  | 	#     ebx = ebx_stack | ||
|  | 	movl	84(%esp),%ebx | ||
|  | 	#     esi = esi_stack | ||
|  | 	movl	88(%esp),%esi | ||
|  | 	#     edi = edi_stack | ||
|  | 	movl	92(%esp),%edi | ||
|  | 	#     ebp = ebp_stack | ||
|  | 	movl	96(%esp),%ebp | ||
|  | 	#     leave | ||
|  | 	add	%eax,%esp | ||
|  | 	ret | ||
|  | ._bytesatleast65: | ||
|  | 	#   bytes -= 64 | ||
|  | 	sub	$64,%ebx | ||
|  | 	#   out += 64 | ||
|  | 	add	$64,%edi | ||
|  | 	#   m += 64 | ||
|  | 	add	$64,%esi | ||
|  | 	# goto bytesatleast1 | ||
|  | 	jmp	._bytesatleast1 | ||
|  | # enter ECRYPT_keysetup | ||
|  | .text | ||
|  | .p2align 5
 | ||
|  | .globl ECRYPT_keysetup
 | ||
|  | ECRYPT_keysetup: | ||
|  | 	mov	%esp,%eax | ||
|  | 	and	$31,%eax | ||
|  | 	add	$256,%eax | ||
|  | 	sub	%eax,%esp | ||
|  | 	#   eax_stack = eax | ||
|  | 	movl	%eax,64(%esp) | ||
|  | 	#   ebx_stack = ebx | ||
|  | 	movl	%ebx,68(%esp) | ||
|  | 	#   esi_stack = esi | ||
|  | 	movl	%esi,72(%esp) | ||
|  | 	#   edi_stack = edi | ||
|  | 	movl	%edi,76(%esp) | ||
|  | 	#   ebp_stack = ebp | ||
|  | 	movl	%ebp,80(%esp) | ||
|  | 	#   k = arg2 | ||
|  | 	movl	8(%esp,%eax),%ecx | ||
|  | 	#   kbits = arg3 | ||
|  | 	movl	12(%esp,%eax),%edx | ||
|  | 	#   x = arg1 | ||
|  | 	movl	4(%esp,%eax),%eax | ||
|  | 	#   in1 = *(uint32 *) (k + 0) | ||
|  | 	movl	0(%ecx),%ebx | ||
|  | 	#   in2 = *(uint32 *) (k + 4) | ||
|  | 	movl	4(%ecx),%esi | ||
|  | 	#   in3 = *(uint32 *) (k + 8) | ||
|  | 	movl	8(%ecx),%edi | ||
|  | 	#   in4 = *(uint32 *) (k + 12) | ||
|  | 	movl	12(%ecx),%ebp | ||
|  | 	#   *(uint32 *) (x + 4) = in1 | ||
|  | 	movl	%ebx,4(%eax) | ||
|  | 	#   *(uint32 *) (x + 8) = in2 | ||
|  | 	movl	%esi,8(%eax) | ||
|  | 	#   *(uint32 *) (x + 12) = in3 | ||
|  | 	movl	%edi,12(%eax) | ||
|  | 	#   *(uint32 *) (x + 16) = in4 | ||
|  | 	movl	%ebp,16(%eax) | ||
|  | 	#   kbits - 256 | ||
|  | 	cmp	$256,%edx | ||
|  | 	#   goto kbits128 if unsigned< | ||
|  | 	jb	._kbits128 | ||
|  | ._kbits256: | ||
|  | 	#     in11 = *(uint32 *) (k + 16) | ||
|  | 	movl	16(%ecx),%edx | ||
|  | 	#     in12 = *(uint32 *) (k + 20) | ||
|  | 	movl	20(%ecx),%ebx | ||
|  | 	#     in13 = *(uint32 *) (k + 24) | ||
|  | 	movl	24(%ecx),%esi | ||
|  | 	#     in14 = *(uint32 *) (k + 28) | ||
|  | 	movl	28(%ecx),%ecx | ||
|  | 	#     *(uint32 *) (x + 44) = in11 | ||
|  | 	movl	%edx,44(%eax) | ||
|  | 	#     *(uint32 *) (x + 48) = in12 | ||
|  | 	movl	%ebx,48(%eax) | ||
|  | 	#     *(uint32 *) (x + 52) = in13 | ||
|  | 	movl	%esi,52(%eax) | ||
|  | 	#     *(uint32 *) (x + 56) = in14 | ||
|  | 	movl	%ecx,56(%eax) | ||
|  | 	#     in0 = 1634760805 | ||
|  | 	mov	$1634760805,%ecx | ||
|  | 	#     in5 = 857760878 | ||
|  | 	mov	$857760878,%edx | ||
|  | 	#     in10 = 2036477234 | ||
|  | 	mov	$2036477234,%ebx | ||
|  | 	#     in15 = 1797285236 | ||
|  | 	mov	$1797285236,%esi | ||
|  | 	#     *(uint32 *) (x + 0) = in0 | ||
|  | 	movl	%ecx,0(%eax) | ||
|  | 	#     *(uint32 *) (x + 20) = in5 | ||
|  | 	movl	%edx,20(%eax) | ||
|  | 	#     *(uint32 *) (x + 40) = in10 | ||
|  | 	movl	%ebx,40(%eax) | ||
|  | 	#     *(uint32 *) (x + 60) = in15 | ||
|  | 	movl	%esi,60(%eax) | ||
|  | 	#   goto keysetupdone | ||
|  | 	jmp	._keysetupdone | ||
|  | ._kbits128: | ||
|  | 	#     in11 = *(uint32 *) (k + 0) | ||
|  | 	movl	0(%ecx),%edx | ||
|  | 	#     in12 = *(uint32 *) (k + 4) | ||
|  | 	movl	4(%ecx),%ebx | ||
|  | 	#     in13 = *(uint32 *) (k + 8) | ||
|  | 	movl	8(%ecx),%esi | ||
|  | 	#     in14 = *(uint32 *) (k + 12) | ||
|  | 	movl	12(%ecx),%ecx | ||
|  | 	#     *(uint32 *) (x + 44) = in11 | ||
|  | 	movl	%edx,44(%eax) | ||
|  | 	#     *(uint32 *) (x + 48) = in12 | ||
|  | 	movl	%ebx,48(%eax) | ||
|  | 	#     *(uint32 *) (x + 52) = in13 | ||
|  | 	movl	%esi,52(%eax) | ||
|  | 	#     *(uint32 *) (x + 56) = in14 | ||
|  | 	movl	%ecx,56(%eax) | ||
|  | 	#     in0 = 1634760805 | ||
|  | 	mov	$1634760805,%ecx | ||
|  | 	#     in5 = 824206446 | ||
|  | 	mov	$824206446,%edx | ||
|  | 	#     in10 = 2036477238 | ||
|  | 	mov	$2036477238,%ebx | ||
|  | 	#     in15 = 1797285236 | ||
|  | 	mov	$1797285236,%esi | ||
|  | 	#     *(uint32 *) (x + 0) = in0 | ||
|  | 	movl	%ecx,0(%eax) | ||
|  | 	#     *(uint32 *) (x + 20) = in5 | ||
|  | 	movl	%edx,20(%eax) | ||
|  | 	#     *(uint32 *) (x + 40) = in10 | ||
|  | 	movl	%ebx,40(%eax) | ||
|  | 	#     *(uint32 *) (x + 60) = in15 | ||
|  | 	movl	%esi,60(%eax) | ||
|  | ._keysetupdone: | ||
|  | 	#   eax = eax_stack | ||
|  | 	movl	64(%esp),%eax | ||
|  | 	#   ebx = ebx_stack | ||
|  | 	movl	68(%esp),%ebx | ||
|  | 	#   esi = esi_stack | ||
|  | 	movl	72(%esp),%esi | ||
|  | 	#   edi = edi_stack | ||
|  | 	movl	76(%esp),%edi | ||
|  | 	#   ebp = ebp_stack | ||
|  | 	movl	80(%esp),%ebp | ||
|  | 	# leave | ||
|  | 	add	%eax,%esp | ||
|  | 	ret | ||
|  | # enter ECRYPT_ivsetup | ||
|  | .text | ||
|  | .p2align 5
 | ||
|  | .globl ECRYPT_ivsetup
 | ||
|  | ECRYPT_ivsetup: | ||
|  | 	mov	%esp,%eax | ||
|  | 	and	$31,%eax | ||
|  | 	add	$256,%eax | ||
|  | 	sub	%eax,%esp | ||
|  | 	#   eax_stack = eax | ||
|  | 	movl	%eax,64(%esp) | ||
|  | 	#   ebx_stack = ebx | ||
|  | 	movl	%ebx,68(%esp) | ||
|  | 	#   esi_stack = esi | ||
|  | 	movl	%esi,72(%esp) | ||
|  | 	#   edi_stack = edi | ||
|  | 	movl	%edi,76(%esp) | ||
|  | 	#   ebp_stack = ebp | ||
|  | 	movl	%ebp,80(%esp) | ||
|  | 	#   iv = arg2 | ||
|  | 	movl	8(%esp,%eax),%ecx | ||
|  | 	#   x = arg1 | ||
|  | 	movl	4(%esp,%eax),%eax | ||
|  | 	#   in6 = *(uint32 *) (iv + 0) | ||
|  | 	movl	0(%ecx),%edx | ||
|  | 	#   in7 = *(uint32 *) (iv + 4) | ||
|  | 	movl	4(%ecx),%ecx | ||
|  | 	#   in8 = 0 | ||
|  | 	mov	$0,%ebx | ||
|  | 	#   in9 = 0 | ||
|  | 	mov	$0,%esi | ||
|  | 	#   *(uint32 *) (x + 24) = in6 | ||
|  | 	movl	%edx,24(%eax) | ||
|  | 	#   *(uint32 *) (x + 28) = in7 | ||
|  | 	movl	%ecx,28(%eax) | ||
|  | 	#   *(uint32 *) (x + 32) = in8 | ||
|  | 	movl	%ebx,32(%eax) | ||
|  | 	#   *(uint32 *) (x + 36) = in9 | ||
|  | 	movl	%esi,36(%eax) | ||
|  | 	#   eax = eax_stack | ||
|  | 	movl	64(%esp),%eax | ||
|  | 	#   ebx = ebx_stack | ||
|  | 	movl	68(%esp),%ebx | ||
|  | 	#   esi = esi_stack | ||
|  | 	movl	72(%esp),%esi | ||
|  | 	#   edi = edi_stack | ||
|  | 	movl	76(%esp),%edi | ||
|  | 	#   ebp = ebp_stack | ||
|  | 	movl	80(%esp),%ebp | ||
|  | 	# leave | ||
|  | 	add	%eax,%esp | ||
|  | 	ret |