|  | #include <linux/linkage.h> | 
|  |  | 
|  | # enter salsa20_encrypt_bytes | 
|  | ENTRY(salsa20_encrypt_bytes) | 
|  | mov	%rsp,%r11 | 
|  | and	$31,%r11 | 
|  | add	$256,%r11 | 
|  | sub	%r11,%rsp | 
|  | # x = arg1 | 
|  | mov	%rdi,%r8 | 
|  | # m = arg2 | 
|  | mov	%rsi,%rsi | 
|  | # out = arg3 | 
|  | mov	%rdx,%rdi | 
|  | # bytes = arg4 | 
|  | mov	%rcx,%rdx | 
|  | #               unsigned>? bytes - 0 | 
|  | cmp	$0,%rdx | 
|  | # comment:fp stack unchanged by jump | 
|  | # goto done if !unsigned> | 
|  | jbe	._done | 
|  | # comment:fp stack unchanged by fallthrough | 
|  | # start: | 
|  | ._start: | 
|  | # r11_stack = r11 | 
|  | movq	%r11,0(%rsp) | 
|  | # r12_stack = r12 | 
|  | movq	%r12,8(%rsp) | 
|  | # r13_stack = r13 | 
|  | movq	%r13,16(%rsp) | 
|  | # r14_stack = r14 | 
|  | movq	%r14,24(%rsp) | 
|  | # r15_stack = r15 | 
|  | movq	%r15,32(%rsp) | 
|  | # rbx_stack = rbx | 
|  | movq	%rbx,40(%rsp) | 
|  | # rbp_stack = rbp | 
|  | movq	%rbp,48(%rsp) | 
|  | # in0 = *(uint64 *) (x + 0) | 
|  | movq	0(%r8),%rcx | 
|  | # in2 = *(uint64 *) (x + 8) | 
|  | movq	8(%r8),%r9 | 
|  | # in4 = *(uint64 *) (x + 16) | 
|  | movq	16(%r8),%rax | 
|  | # in6 = *(uint64 *) (x + 24) | 
|  | movq	24(%r8),%r10 | 
|  | # in8 = *(uint64 *) (x + 32) | 
|  | movq	32(%r8),%r11 | 
|  | # in10 = *(uint64 *) (x + 40) | 
|  | movq	40(%r8),%r12 | 
|  | # in12 = *(uint64 *) (x + 48) | 
|  | movq	48(%r8),%r13 | 
|  | # in14 = *(uint64 *) (x + 56) | 
|  | movq	56(%r8),%r14 | 
|  | # j0 = in0 | 
|  | movq	%rcx,56(%rsp) | 
|  | # j2 = in2 | 
|  | movq	%r9,64(%rsp) | 
|  | # j4 = in4 | 
|  | movq	%rax,72(%rsp) | 
|  | # j6 = in6 | 
|  | movq	%r10,80(%rsp) | 
|  | # j8 = in8 | 
|  | movq	%r11,88(%rsp) | 
|  | # j10 = in10 | 
|  | movq	%r12,96(%rsp) | 
|  | # j12 = in12 | 
|  | movq	%r13,104(%rsp) | 
|  | # j14 = in14 | 
|  | movq	%r14,112(%rsp) | 
|  | # x_backup = x | 
|  | movq	%r8,120(%rsp) | 
|  | # bytesatleast1: | 
|  | ._bytesatleast1: | 
|  | #                   unsigned<? bytes - 64 | 
|  | cmp	$64,%rdx | 
|  | # comment:fp stack unchanged by jump | 
|  | #   goto nocopy if !unsigned< | 
|  | jae	._nocopy | 
|  | #     ctarget = out | 
|  | movq	%rdi,128(%rsp) | 
|  | #     out = &tmp | 
|  | leaq	192(%rsp),%rdi | 
|  | #     i = bytes | 
|  | mov	%rdx,%rcx | 
|  | #     while (i) { *out++ = *m++; --i } | 
|  | rep	movsb | 
|  | #     out = &tmp | 
|  | leaq	192(%rsp),%rdi | 
|  | #     m = &tmp | 
|  | leaq	192(%rsp),%rsi | 
|  | # comment:fp stack unchanged by fallthrough | 
|  | #   nocopy: | 
|  | ._nocopy: | 
|  | #   out_backup = out | 
|  | movq	%rdi,136(%rsp) | 
|  | #   m_backup = m | 
|  | movq	%rsi,144(%rsp) | 
|  | #   bytes_backup = bytes | 
|  | movq	%rdx,152(%rsp) | 
|  | #   x1 = j0 | 
|  | movq	56(%rsp),%rdi | 
|  | #   x0 = x1 | 
|  | mov	%rdi,%rdx | 
|  | #   (uint64) x1 >>= 32 | 
|  | shr	$32,%rdi | 
|  | #   		x3 = j2 | 
|  | movq	64(%rsp),%rsi | 
|  | #   		x2 = x3 | 
|  | mov	%rsi,%rcx | 
|  | #   		(uint64) x3 >>= 32 | 
|  | shr	$32,%rsi | 
|  | #   x5 = j4 | 
|  | movq	72(%rsp),%r8 | 
|  | #   x4 = x5 | 
|  | mov	%r8,%r9 | 
|  | #   (uint64) x5 >>= 32 | 
|  | shr	$32,%r8 | 
|  | #   x5_stack = x5 | 
|  | movq	%r8,160(%rsp) | 
|  | #   		x7 = j6 | 
|  | movq	80(%rsp),%r8 | 
|  | #   		x6 = x7 | 
|  | mov	%r8,%rax | 
|  | #   		(uint64) x7 >>= 32 | 
|  | shr	$32,%r8 | 
|  | #   x9 = j8 | 
|  | movq	88(%rsp),%r10 | 
|  | #   x8 = x9 | 
|  | mov	%r10,%r11 | 
|  | #   (uint64) x9 >>= 32 | 
|  | shr	$32,%r10 | 
|  | #   		x11 = j10 | 
|  | movq	96(%rsp),%r12 | 
|  | #   		x10 = x11 | 
|  | mov	%r12,%r13 | 
|  | #   		x10_stack = x10 | 
|  | movq	%r13,168(%rsp) | 
|  | #   		(uint64) x11 >>= 32 | 
|  | shr	$32,%r12 | 
|  | #   x13 = j12 | 
|  | movq	104(%rsp),%r13 | 
|  | #   x12 = x13 | 
|  | mov	%r13,%r14 | 
|  | #   (uint64) x13 >>= 32 | 
|  | shr	$32,%r13 | 
|  | #   		x15 = j14 | 
|  | movq	112(%rsp),%r15 | 
|  | #   		x14 = x15 | 
|  | mov	%r15,%rbx | 
|  | #   		(uint64) x15 >>= 32 | 
|  | shr	$32,%r15 | 
|  | #   		x15_stack = x15 | 
|  | movq	%r15,176(%rsp) | 
|  | #   i = 20 | 
|  | mov	$20,%r15 | 
|  | #   mainloop: | 
|  | ._mainloop: | 
|  | #   i_backup = i | 
|  | movq	%r15,184(%rsp) | 
|  | # 		x5 = x5_stack | 
|  | movq	160(%rsp),%r15 | 
|  | # a = x12 + x0 | 
|  | lea	(%r14,%rdx),%rbp | 
|  | # (uint32) a <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # x4 ^= a | 
|  | xor	%rbp,%r9 | 
|  | # 		b = x1 + x5 | 
|  | lea	(%rdi,%r15),%rbp | 
|  | # 		(uint32) b <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 		x9 ^= b | 
|  | xor	%rbp,%r10 | 
|  | # a = x0 + x4 | 
|  | lea	(%rdx,%r9),%rbp | 
|  | # (uint32) a <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # x8 ^= a | 
|  | xor	%rbp,%r11 | 
|  | # 		b = x5 + x9 | 
|  | lea	(%r15,%r10),%rbp | 
|  | # 		(uint32) b <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 		x13 ^= b | 
|  | xor	%rbp,%r13 | 
|  | # a = x4 + x8 | 
|  | lea	(%r9,%r11),%rbp | 
|  | # (uint32) a <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # x12 ^= a | 
|  | xor	%rbp,%r14 | 
|  | # 		b = x9 + x13 | 
|  | lea	(%r10,%r13),%rbp | 
|  | # 		(uint32) b <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 		x1 ^= b | 
|  | xor	%rbp,%rdi | 
|  | # a = x8 + x12 | 
|  | lea	(%r11,%r14),%rbp | 
|  | # (uint32) a <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # x0 ^= a | 
|  | xor	%rbp,%rdx | 
|  | # 		b = x13 + x1 | 
|  | lea	(%r13,%rdi),%rbp | 
|  | # 		(uint32) b <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 		x5 ^= b | 
|  | xor	%rbp,%r15 | 
|  | # 				x10 = x10_stack | 
|  | movq	168(%rsp),%rbp | 
|  | # 		x5_stack = x5 | 
|  | movq	%r15,160(%rsp) | 
|  | # 				c = x6 + x10 | 
|  | lea	(%rax,%rbp),%r15 | 
|  | # 				(uint32) c <<<= 7 | 
|  | rol	$7,%r15d | 
|  | # 				x14 ^= c | 
|  | xor	%r15,%rbx | 
|  | # 				c = x10 + x14 | 
|  | lea	(%rbp,%rbx),%r15 | 
|  | # 				(uint32) c <<<= 9 | 
|  | rol	$9,%r15d | 
|  | # 				x2 ^= c | 
|  | xor	%r15,%rcx | 
|  | # 				c = x14 + x2 | 
|  | lea	(%rbx,%rcx),%r15 | 
|  | # 				(uint32) c <<<= 13 | 
|  | rol	$13,%r15d | 
|  | # 				x6 ^= c | 
|  | xor	%r15,%rax | 
|  | # 				c = x2 + x6 | 
|  | lea	(%rcx,%rax),%r15 | 
|  | # 				(uint32) c <<<= 18 | 
|  | rol	$18,%r15d | 
|  | # 				x10 ^= c | 
|  | xor	%r15,%rbp | 
|  | # 						x15 = x15_stack | 
|  | movq	176(%rsp),%r15 | 
|  | # 				x10_stack = x10 | 
|  | movq	%rbp,168(%rsp) | 
|  | # 						d = x11 + x15 | 
|  | lea	(%r12,%r15),%rbp | 
|  | # 						(uint32) d <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 						x3 ^= d | 
|  | xor	%rbp,%rsi | 
|  | # 						d = x15 + x3 | 
|  | lea	(%r15,%rsi),%rbp | 
|  | # 						(uint32) d <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 						x7 ^= d | 
|  | xor	%rbp,%r8 | 
|  | # 						d = x3 + x7 | 
|  | lea	(%rsi,%r8),%rbp | 
|  | # 						(uint32) d <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 						x11 ^= d | 
|  | xor	%rbp,%r12 | 
|  | # 						d = x7 + x11 | 
|  | lea	(%r8,%r12),%rbp | 
|  | # 						(uint32) d <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 						x15 ^= d | 
|  | xor	%rbp,%r15 | 
|  | # 						x15_stack = x15 | 
|  | movq	%r15,176(%rsp) | 
|  | # 		x5 = x5_stack | 
|  | movq	160(%rsp),%r15 | 
|  | # a = x3 + x0 | 
|  | lea	(%rsi,%rdx),%rbp | 
|  | # (uint32) a <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # x1 ^= a | 
|  | xor	%rbp,%rdi | 
|  | # 		b = x4 + x5 | 
|  | lea	(%r9,%r15),%rbp | 
|  | # 		(uint32) b <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 		x6 ^= b | 
|  | xor	%rbp,%rax | 
|  | # a = x0 + x1 | 
|  | lea	(%rdx,%rdi),%rbp | 
|  | # (uint32) a <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # x2 ^= a | 
|  | xor	%rbp,%rcx | 
|  | # 		b = x5 + x6 | 
|  | lea	(%r15,%rax),%rbp | 
|  | # 		(uint32) b <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 		x7 ^= b | 
|  | xor	%rbp,%r8 | 
|  | # a = x1 + x2 | 
|  | lea	(%rdi,%rcx),%rbp | 
|  | # (uint32) a <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # x3 ^= a | 
|  | xor	%rbp,%rsi | 
|  | # 		b = x6 + x7 | 
|  | lea	(%rax,%r8),%rbp | 
|  | # 		(uint32) b <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 		x4 ^= b | 
|  | xor	%rbp,%r9 | 
|  | # a = x2 + x3 | 
|  | lea	(%rcx,%rsi),%rbp | 
|  | # (uint32) a <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # x0 ^= a | 
|  | xor	%rbp,%rdx | 
|  | # 		b = x7 + x4 | 
|  | lea	(%r8,%r9),%rbp | 
|  | # 		(uint32) b <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 		x5 ^= b | 
|  | xor	%rbp,%r15 | 
|  | # 				x10 = x10_stack | 
|  | movq	168(%rsp),%rbp | 
|  | # 		x5_stack = x5 | 
|  | movq	%r15,160(%rsp) | 
|  | # 				c = x9 + x10 | 
|  | lea	(%r10,%rbp),%r15 | 
|  | # 				(uint32) c <<<= 7 | 
|  | rol	$7,%r15d | 
|  | # 				x11 ^= c | 
|  | xor	%r15,%r12 | 
|  | # 				c = x10 + x11 | 
|  | lea	(%rbp,%r12),%r15 | 
|  | # 				(uint32) c <<<= 9 | 
|  | rol	$9,%r15d | 
|  | # 				x8 ^= c | 
|  | xor	%r15,%r11 | 
|  | # 				c = x11 + x8 | 
|  | lea	(%r12,%r11),%r15 | 
|  | # 				(uint32) c <<<= 13 | 
|  | rol	$13,%r15d | 
|  | # 				x9 ^= c | 
|  | xor	%r15,%r10 | 
|  | # 				c = x8 + x9 | 
|  | lea	(%r11,%r10),%r15 | 
|  | # 				(uint32) c <<<= 18 | 
|  | rol	$18,%r15d | 
|  | # 				x10 ^= c | 
|  | xor	%r15,%rbp | 
|  | # 						x15 = x15_stack | 
|  | movq	176(%rsp),%r15 | 
|  | # 				x10_stack = x10 | 
|  | movq	%rbp,168(%rsp) | 
|  | # 						d = x14 + x15 | 
|  | lea	(%rbx,%r15),%rbp | 
|  | # 						(uint32) d <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 						x12 ^= d | 
|  | xor	%rbp,%r14 | 
|  | # 						d = x15 + x12 | 
|  | lea	(%r15,%r14),%rbp | 
|  | # 						(uint32) d <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 						x13 ^= d | 
|  | xor	%rbp,%r13 | 
|  | # 						d = x12 + x13 | 
|  | lea	(%r14,%r13),%rbp | 
|  | # 						(uint32) d <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 						x14 ^= d | 
|  | xor	%rbp,%rbx | 
|  | # 						d = x13 + x14 | 
|  | lea	(%r13,%rbx),%rbp | 
|  | # 						(uint32) d <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 						x15 ^= d | 
|  | xor	%rbp,%r15 | 
|  | # 						x15_stack = x15 | 
|  | movq	%r15,176(%rsp) | 
|  | # 		x5 = x5_stack | 
|  | movq	160(%rsp),%r15 | 
|  | # a = x12 + x0 | 
|  | lea	(%r14,%rdx),%rbp | 
|  | # (uint32) a <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # x4 ^= a | 
|  | xor	%rbp,%r9 | 
|  | # 		b = x1 + x5 | 
|  | lea	(%rdi,%r15),%rbp | 
|  | # 		(uint32) b <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 		x9 ^= b | 
|  | xor	%rbp,%r10 | 
|  | # a = x0 + x4 | 
|  | lea	(%rdx,%r9),%rbp | 
|  | # (uint32) a <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # x8 ^= a | 
|  | xor	%rbp,%r11 | 
|  | # 		b = x5 + x9 | 
|  | lea	(%r15,%r10),%rbp | 
|  | # 		(uint32) b <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 		x13 ^= b | 
|  | xor	%rbp,%r13 | 
|  | # a = x4 + x8 | 
|  | lea	(%r9,%r11),%rbp | 
|  | # (uint32) a <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # x12 ^= a | 
|  | xor	%rbp,%r14 | 
|  | # 		b = x9 + x13 | 
|  | lea	(%r10,%r13),%rbp | 
|  | # 		(uint32) b <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 		x1 ^= b | 
|  | xor	%rbp,%rdi | 
|  | # a = x8 + x12 | 
|  | lea	(%r11,%r14),%rbp | 
|  | # (uint32) a <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # x0 ^= a | 
|  | xor	%rbp,%rdx | 
|  | # 		b = x13 + x1 | 
|  | lea	(%r13,%rdi),%rbp | 
|  | # 		(uint32) b <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 		x5 ^= b | 
|  | xor	%rbp,%r15 | 
|  | # 				x10 = x10_stack | 
|  | movq	168(%rsp),%rbp | 
|  | # 		x5_stack = x5 | 
|  | movq	%r15,160(%rsp) | 
|  | # 				c = x6 + x10 | 
|  | lea	(%rax,%rbp),%r15 | 
|  | # 				(uint32) c <<<= 7 | 
|  | rol	$7,%r15d | 
|  | # 				x14 ^= c | 
|  | xor	%r15,%rbx | 
|  | # 				c = x10 + x14 | 
|  | lea	(%rbp,%rbx),%r15 | 
|  | # 				(uint32) c <<<= 9 | 
|  | rol	$9,%r15d | 
|  | # 				x2 ^= c | 
|  | xor	%r15,%rcx | 
|  | # 				c = x14 + x2 | 
|  | lea	(%rbx,%rcx),%r15 | 
|  | # 				(uint32) c <<<= 13 | 
|  | rol	$13,%r15d | 
|  | # 				x6 ^= c | 
|  | xor	%r15,%rax | 
|  | # 				c = x2 + x6 | 
|  | lea	(%rcx,%rax),%r15 | 
|  | # 				(uint32) c <<<= 18 | 
|  | rol	$18,%r15d | 
|  | # 				x10 ^= c | 
|  | xor	%r15,%rbp | 
|  | # 						x15 = x15_stack | 
|  | movq	176(%rsp),%r15 | 
|  | # 				x10_stack = x10 | 
|  | movq	%rbp,168(%rsp) | 
|  | # 						d = x11 + x15 | 
|  | lea	(%r12,%r15),%rbp | 
|  | # 						(uint32) d <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 						x3 ^= d | 
|  | xor	%rbp,%rsi | 
|  | # 						d = x15 + x3 | 
|  | lea	(%r15,%rsi),%rbp | 
|  | # 						(uint32) d <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 						x7 ^= d | 
|  | xor	%rbp,%r8 | 
|  | # 						d = x3 + x7 | 
|  | lea	(%rsi,%r8),%rbp | 
|  | # 						(uint32) d <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 						x11 ^= d | 
|  | xor	%rbp,%r12 | 
|  | # 						d = x7 + x11 | 
|  | lea	(%r8,%r12),%rbp | 
|  | # 						(uint32) d <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 						x15 ^= d | 
|  | xor	%rbp,%r15 | 
|  | # 						x15_stack = x15 | 
|  | movq	%r15,176(%rsp) | 
|  | # 		x5 = x5_stack | 
|  | movq	160(%rsp),%r15 | 
|  | # a = x3 + x0 | 
|  | lea	(%rsi,%rdx),%rbp | 
|  | # (uint32) a <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # x1 ^= a | 
|  | xor	%rbp,%rdi | 
|  | # 		b = x4 + x5 | 
|  | lea	(%r9,%r15),%rbp | 
|  | # 		(uint32) b <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 		x6 ^= b | 
|  | xor	%rbp,%rax | 
|  | # a = x0 + x1 | 
|  | lea	(%rdx,%rdi),%rbp | 
|  | # (uint32) a <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # x2 ^= a | 
|  | xor	%rbp,%rcx | 
|  | # 		b = x5 + x6 | 
|  | lea	(%r15,%rax),%rbp | 
|  | # 		(uint32) b <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 		x7 ^= b | 
|  | xor	%rbp,%r8 | 
|  | # a = x1 + x2 | 
|  | lea	(%rdi,%rcx),%rbp | 
|  | # (uint32) a <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # x3 ^= a | 
|  | xor	%rbp,%rsi | 
|  | # 		b = x6 + x7 | 
|  | lea	(%rax,%r8),%rbp | 
|  | # 		(uint32) b <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 		x4 ^= b | 
|  | xor	%rbp,%r9 | 
|  | # a = x2 + x3 | 
|  | lea	(%rcx,%rsi),%rbp | 
|  | # (uint32) a <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # x0 ^= a | 
|  | xor	%rbp,%rdx | 
|  | # 		b = x7 + x4 | 
|  | lea	(%r8,%r9),%rbp | 
|  | # 		(uint32) b <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 		x5 ^= b | 
|  | xor	%rbp,%r15 | 
|  | # 				x10 = x10_stack | 
|  | movq	168(%rsp),%rbp | 
|  | # 		x5_stack = x5 | 
|  | movq	%r15,160(%rsp) | 
|  | # 				c = x9 + x10 | 
|  | lea	(%r10,%rbp),%r15 | 
|  | # 				(uint32) c <<<= 7 | 
|  | rol	$7,%r15d | 
|  | # 				x11 ^= c | 
|  | xor	%r15,%r12 | 
|  | # 				c = x10 + x11 | 
|  | lea	(%rbp,%r12),%r15 | 
|  | # 				(uint32) c <<<= 9 | 
|  | rol	$9,%r15d | 
|  | # 				x8 ^= c | 
|  | xor	%r15,%r11 | 
|  | # 				c = x11 + x8 | 
|  | lea	(%r12,%r11),%r15 | 
|  | # 				(uint32) c <<<= 13 | 
|  | rol	$13,%r15d | 
|  | # 				x9 ^= c | 
|  | xor	%r15,%r10 | 
|  | # 				c = x8 + x9 | 
|  | lea	(%r11,%r10),%r15 | 
|  | # 				(uint32) c <<<= 18 | 
|  | rol	$18,%r15d | 
|  | # 				x10 ^= c | 
|  | xor	%r15,%rbp | 
|  | # 						x15 = x15_stack | 
|  | movq	176(%rsp),%r15 | 
|  | # 				x10_stack = x10 | 
|  | movq	%rbp,168(%rsp) | 
|  | # 						d = x14 + x15 | 
|  | lea	(%rbx,%r15),%rbp | 
|  | # 						(uint32) d <<<= 7 | 
|  | rol	$7,%ebp | 
|  | # 						x12 ^= d | 
|  | xor	%rbp,%r14 | 
|  | # 						d = x15 + x12 | 
|  | lea	(%r15,%r14),%rbp | 
|  | # 						(uint32) d <<<= 9 | 
|  | rol	$9,%ebp | 
|  | # 						x13 ^= d | 
|  | xor	%rbp,%r13 | 
|  | # 						d = x12 + x13 | 
|  | lea	(%r14,%r13),%rbp | 
|  | # 						(uint32) d <<<= 13 | 
|  | rol	$13,%ebp | 
|  | # 						x14 ^= d | 
|  | xor	%rbp,%rbx | 
|  | # 						d = x13 + x14 | 
|  | lea	(%r13,%rbx),%rbp | 
|  | # 						(uint32) d <<<= 18 | 
|  | rol	$18,%ebp | 
|  | # 						x15 ^= d | 
|  | xor	%rbp,%r15 | 
|  | # 						x15_stack = x15 | 
|  | movq	%r15,176(%rsp) | 
|  | #   i = i_backup | 
|  | movq	184(%rsp),%r15 | 
|  | #                  unsigned>? i -= 4 | 
|  | sub	$4,%r15 | 
|  | # comment:fp stack unchanged by jump | 
|  | # goto mainloop if unsigned> | 
|  | ja	._mainloop | 
|  | #   (uint32) x2 += j2 | 
|  | addl	64(%rsp),%ecx | 
|  | #   x3 <<= 32 | 
|  | shl	$32,%rsi | 
|  | #   x3 += j2 | 
|  | addq	64(%rsp),%rsi | 
|  | #   (uint64) x3 >>= 32 | 
|  | shr	$32,%rsi | 
|  | #   x3 <<= 32 | 
|  | shl	$32,%rsi | 
|  | #   x2 += x3 | 
|  | add	%rsi,%rcx | 
|  | #   (uint32) x6 += j6 | 
|  | addl	80(%rsp),%eax | 
|  | #   x7 <<= 32 | 
|  | shl	$32,%r8 | 
|  | #   x7 += j6 | 
|  | addq	80(%rsp),%r8 | 
|  | #   (uint64) x7 >>= 32 | 
|  | shr	$32,%r8 | 
|  | #   x7 <<= 32 | 
|  | shl	$32,%r8 | 
|  | #   x6 += x7 | 
|  | add	%r8,%rax | 
|  | #   (uint32) x8 += j8 | 
|  | addl	88(%rsp),%r11d | 
|  | #   x9 <<= 32 | 
|  | shl	$32,%r10 | 
|  | #   x9 += j8 | 
|  | addq	88(%rsp),%r10 | 
|  | #   (uint64) x9 >>= 32 | 
|  | shr	$32,%r10 | 
|  | #   x9 <<= 32 | 
|  | shl	$32,%r10 | 
|  | #   x8 += x9 | 
|  | add	%r10,%r11 | 
|  | #   (uint32) x12 += j12 | 
|  | addl	104(%rsp),%r14d | 
|  | #   x13 <<= 32 | 
|  | shl	$32,%r13 | 
|  | #   x13 += j12 | 
|  | addq	104(%rsp),%r13 | 
|  | #   (uint64) x13 >>= 32 | 
|  | shr	$32,%r13 | 
|  | #   x13 <<= 32 | 
|  | shl	$32,%r13 | 
|  | #   x12 += x13 | 
|  | add	%r13,%r14 | 
|  | #   (uint32) x0 += j0 | 
|  | addl	56(%rsp),%edx | 
|  | #   x1 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x1 += j0 | 
|  | addq	56(%rsp),%rdi | 
|  | #   (uint64) x1 >>= 32 | 
|  | shr	$32,%rdi | 
|  | #   x1 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x0 += x1 | 
|  | add	%rdi,%rdx | 
|  | #   x5 = x5_stack | 
|  | movq	160(%rsp),%rdi | 
|  | #   (uint32) x4 += j4 | 
|  | addl	72(%rsp),%r9d | 
|  | #   x5 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x5 += j4 | 
|  | addq	72(%rsp),%rdi | 
|  | #   (uint64) x5 >>= 32 | 
|  | shr	$32,%rdi | 
|  | #   x5 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x4 += x5 | 
|  | add	%rdi,%r9 | 
|  | #   x10 = x10_stack | 
|  | movq	168(%rsp),%r8 | 
|  | #   (uint32) x10 += j10 | 
|  | addl	96(%rsp),%r8d | 
|  | #   x11 <<= 32 | 
|  | shl	$32,%r12 | 
|  | #   x11 += j10 | 
|  | addq	96(%rsp),%r12 | 
|  | #   (uint64) x11 >>= 32 | 
|  | shr	$32,%r12 | 
|  | #   x11 <<= 32 | 
|  | shl	$32,%r12 | 
|  | #   x10 += x11 | 
|  | add	%r12,%r8 | 
|  | #   x15 = x15_stack | 
|  | movq	176(%rsp),%rdi | 
|  | #   (uint32) x14 += j14 | 
|  | addl	112(%rsp),%ebx | 
|  | #   x15 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x15 += j14 | 
|  | addq	112(%rsp),%rdi | 
|  | #   (uint64) x15 >>= 32 | 
|  | shr	$32,%rdi | 
|  | #   x15 <<= 32 | 
|  | shl	$32,%rdi | 
|  | #   x14 += x15 | 
|  | add	%rdi,%rbx | 
|  | #   out = out_backup | 
|  | movq	136(%rsp),%rdi | 
|  | #   m = m_backup | 
|  | movq	144(%rsp),%rsi | 
|  | #   x0 ^= *(uint64 *) (m + 0) | 
|  | xorq	0(%rsi),%rdx | 
|  | #   *(uint64 *) (out + 0) = x0 | 
|  | movq	%rdx,0(%rdi) | 
|  | #   x2 ^= *(uint64 *) (m + 8) | 
|  | xorq	8(%rsi),%rcx | 
|  | #   *(uint64 *) (out + 8) = x2 | 
|  | movq	%rcx,8(%rdi) | 
|  | #   x4 ^= *(uint64 *) (m + 16) | 
|  | xorq	16(%rsi),%r9 | 
|  | #   *(uint64 *) (out + 16) = x4 | 
|  | movq	%r9,16(%rdi) | 
|  | #   x6 ^= *(uint64 *) (m + 24) | 
|  | xorq	24(%rsi),%rax | 
|  | #   *(uint64 *) (out + 24) = x6 | 
|  | movq	%rax,24(%rdi) | 
|  | #   x8 ^= *(uint64 *) (m + 32) | 
|  | xorq	32(%rsi),%r11 | 
|  | #   *(uint64 *) (out + 32) = x8 | 
|  | movq	%r11,32(%rdi) | 
|  | #   x10 ^= *(uint64 *) (m + 40) | 
|  | xorq	40(%rsi),%r8 | 
|  | #   *(uint64 *) (out + 40) = x10 | 
|  | movq	%r8,40(%rdi) | 
|  | #   x12 ^= *(uint64 *) (m + 48) | 
|  | xorq	48(%rsi),%r14 | 
|  | #   *(uint64 *) (out + 48) = x12 | 
|  | movq	%r14,48(%rdi) | 
|  | #   x14 ^= *(uint64 *) (m + 56) | 
|  | xorq	56(%rsi),%rbx | 
|  | #   *(uint64 *) (out + 56) = x14 | 
|  | movq	%rbx,56(%rdi) | 
|  | #   bytes = bytes_backup | 
|  | movq	152(%rsp),%rdx | 
|  | #   in8 = j8 | 
|  | movq	88(%rsp),%rcx | 
|  | #   in8 += 1 | 
|  | add	$1,%rcx | 
|  | #   j8 = in8 | 
|  | movq	%rcx,88(%rsp) | 
|  | #                          unsigned>? unsigned<? bytes - 64 | 
|  | cmp	$64,%rdx | 
|  | # comment:fp stack unchanged by jump | 
|  | #   goto bytesatleast65 if unsigned> | 
|  | ja	._bytesatleast65 | 
|  | # comment:fp stack unchanged by jump | 
|  | #     goto bytesatleast64 if !unsigned< | 
|  | jae	._bytesatleast64 | 
|  | #       m = out | 
|  | mov	%rdi,%rsi | 
|  | #       out = ctarget | 
|  | movq	128(%rsp),%rdi | 
|  | #       i = bytes | 
|  | mov	%rdx,%rcx | 
|  | #       while (i) { *out++ = *m++; --i } | 
|  | rep	movsb | 
|  | # comment:fp stack unchanged by fallthrough | 
|  | #     bytesatleast64: | 
|  | ._bytesatleast64: | 
|  | #     x = x_backup | 
|  | movq	120(%rsp),%rdi | 
|  | #     in8 = j8 | 
|  | movq	88(%rsp),%rsi | 
|  | #     *(uint64 *) (x + 32) = in8 | 
|  | movq	%rsi,32(%rdi) | 
|  | #     r11 = r11_stack | 
|  | movq	0(%rsp),%r11 | 
|  | #     r12 = r12_stack | 
|  | movq	8(%rsp),%r12 | 
|  | #     r13 = r13_stack | 
|  | movq	16(%rsp),%r13 | 
|  | #     r14 = r14_stack | 
|  | movq	24(%rsp),%r14 | 
|  | #     r15 = r15_stack | 
|  | movq	32(%rsp),%r15 | 
|  | #     rbx = rbx_stack | 
|  | movq	40(%rsp),%rbx | 
|  | #     rbp = rbp_stack | 
|  | movq	48(%rsp),%rbp | 
|  | # comment:fp stack unchanged by fallthrough | 
|  | #     done: | 
|  | ._done: | 
|  | #     leave | 
|  | add	%r11,%rsp | 
|  | mov	%rdi,%rax | 
|  | mov	%rsi,%rdx | 
|  | ret | 
|  | #   bytesatleast65: | 
|  | ._bytesatleast65: | 
|  | #   bytes -= 64 | 
|  | sub	$64,%rdx | 
|  | #   out += 64 | 
|  | add	$64,%rdi | 
|  | #   m += 64 | 
|  | add	$64,%rsi | 
|  | # comment:fp stack unchanged by jump | 
|  | # goto bytesatleast1 | 
|  | jmp	._bytesatleast1 | 
|  | ENDPROC(salsa20_encrypt_bytes) | 
|  |  | 
|  | # enter salsa20_keysetup | 
|  | ENTRY(salsa20_keysetup) | 
|  | mov	%rsp,%r11 | 
|  | and	$31,%r11 | 
|  | add	$256,%r11 | 
|  | sub	%r11,%rsp | 
|  | #   k = arg2 | 
|  | mov	%rsi,%rsi | 
|  | #   kbits = arg3 | 
|  | mov	%rdx,%rdx | 
|  | #   x = arg1 | 
|  | mov	%rdi,%rdi | 
|  | #   in0 = *(uint64 *) (k + 0) | 
|  | movq	0(%rsi),%r8 | 
|  | #   in2 = *(uint64 *) (k + 8) | 
|  | movq	8(%rsi),%r9 | 
|  | #   *(uint64 *) (x + 4) = in0 | 
|  | movq	%r8,4(%rdi) | 
|  | #   *(uint64 *) (x + 12) = in2 | 
|  | movq	%r9,12(%rdi) | 
|  | #                    unsigned<? kbits - 256 | 
|  | cmp	$256,%rdx | 
|  | # comment:fp stack unchanged by jump | 
|  | #   goto kbits128 if unsigned< | 
|  | jb	._kbits128 | 
|  | #   kbits256: | 
|  | ._kbits256: | 
|  | #     in10 = *(uint64 *) (k + 16) | 
|  | movq	16(%rsi),%rdx | 
|  | #     in12 = *(uint64 *) (k + 24) | 
|  | movq	24(%rsi),%rsi | 
|  | #     *(uint64 *) (x + 44) = in10 | 
|  | movq	%rdx,44(%rdi) | 
|  | #     *(uint64 *) (x + 52) = in12 | 
|  | movq	%rsi,52(%rdi) | 
|  | #     in0 = 1634760805 | 
|  | mov	$1634760805,%rsi | 
|  | #     in4 = 857760878 | 
|  | mov	$857760878,%rdx | 
|  | #     in10 = 2036477234 | 
|  | mov	$2036477234,%rcx | 
|  | #     in14 = 1797285236 | 
|  | mov	$1797285236,%r8 | 
|  | #     *(uint32 *) (x + 0) = in0 | 
|  | movl	%esi,0(%rdi) | 
|  | #     *(uint32 *) (x + 20) = in4 | 
|  | movl	%edx,20(%rdi) | 
|  | #     *(uint32 *) (x + 40) = in10 | 
|  | movl	%ecx,40(%rdi) | 
|  | #     *(uint32 *) (x + 60) = in14 | 
|  | movl	%r8d,60(%rdi) | 
|  | # comment:fp stack unchanged by jump | 
|  | #   goto keysetupdone | 
|  | jmp	._keysetupdone | 
|  | #   kbits128: | 
|  | ._kbits128: | 
|  | #     in10 = *(uint64 *) (k + 0) | 
|  | movq	0(%rsi),%rdx | 
|  | #     in12 = *(uint64 *) (k + 8) | 
|  | movq	8(%rsi),%rsi | 
|  | #     *(uint64 *) (x + 44) = in10 | 
|  | movq	%rdx,44(%rdi) | 
|  | #     *(uint64 *) (x + 52) = in12 | 
|  | movq	%rsi,52(%rdi) | 
|  | #     in0 = 1634760805 | 
|  | mov	$1634760805,%rsi | 
|  | #     in4 = 824206446 | 
|  | mov	$824206446,%rdx | 
|  | #     in10 = 2036477238 | 
|  | mov	$2036477238,%rcx | 
|  | #     in14 = 1797285236 | 
|  | mov	$1797285236,%r8 | 
|  | #     *(uint32 *) (x + 0) = in0 | 
|  | movl	%esi,0(%rdi) | 
|  | #     *(uint32 *) (x + 20) = in4 | 
|  | movl	%edx,20(%rdi) | 
|  | #     *(uint32 *) (x + 40) = in10 | 
|  | movl	%ecx,40(%rdi) | 
|  | #     *(uint32 *) (x + 60) = in14 | 
|  | movl	%r8d,60(%rdi) | 
|  | #   keysetupdone: | 
|  | ._keysetupdone: | 
|  | # leave | 
|  | add	%r11,%rsp | 
|  | mov	%rdi,%rax | 
|  | mov	%rsi,%rdx | 
|  | ret | 
|  | ENDPROC(salsa20_keysetup) | 
|  |  | 
|  | # enter salsa20_ivsetup | 
|  | ENTRY(salsa20_ivsetup) | 
|  | mov	%rsp,%r11 | 
|  | and	$31,%r11 | 
|  | add	$256,%r11 | 
|  | sub	%r11,%rsp | 
|  | #   iv = arg2 | 
|  | mov	%rsi,%rsi | 
|  | #   x = arg1 | 
|  | mov	%rdi,%rdi | 
|  | #   in6 = *(uint64 *) (iv + 0) | 
|  | movq	0(%rsi),%rsi | 
|  | #   in8 = 0 | 
|  | mov	$0,%r8 | 
|  | #   *(uint64 *) (x + 24) = in6 | 
|  | movq	%rsi,24(%rdi) | 
|  | #   *(uint64 *) (x + 32) = in8 | 
|  | movq	%r8,32(%rdi) | 
|  | # leave | 
|  | add	%r11,%rsp | 
|  | mov	%rdi,%rax | 
|  | mov	%rsi,%rdx | 
|  | ret | 
|  | ENDPROC(salsa20_ivsetup) |