1e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%ifidn __OUTPUT_FORMAT__,obj
2e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection	code	use32 class=code align=64
3e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%elifidn __OUTPUT_FORMAT__,win32
4e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%ifdef __YASM_VERSION_ID__
5e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%if __YASM_VERSION_ID__ < 01010000h
6e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%error yasm version 1.1.0 or later needed.
7e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif
8e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley; Yasm automatically includes .00 and complains about redefining it.
9e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%else
11e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley$@feat.00 equ 1
12e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif
13e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection	.text	code align=64
14e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%else
15e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection	.text	code
16e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif
17e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal	_bn_mul_comba8
18e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign	16
19e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_mul_comba8:
20e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_mul_comba8_begin:
21e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	esi
22e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	esi,DWORD [12+esp]
23e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	edi
24e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edi,DWORD [20+esp]
25e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebp
26e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebx
27e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
28e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
29e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
30e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
31e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 0
32e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
33e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[0]
34e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
35e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
36e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
37e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
38e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
39e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
40e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [eax],ebx
41e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
42e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[0]
43e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 1
44e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
45e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[0]
46e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
47e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
48e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
49e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
50e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
51e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
52e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[1]
53e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
54e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
55e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
56e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
57e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
58e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
59e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [4+eax],ecx
60e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
61e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[1]
62e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 2
63e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
64e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[0]
65e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
66e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
67e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
68e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
69e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
70e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
71e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[1]
72e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
73e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
74e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
75e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
76e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
77e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
78e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[2]
79e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
80e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
81e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
82e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
83e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
84e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
85e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [8+eax],ebp
86e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
87e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[2]
88e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 3
89e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
90e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[0]
91e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
92e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
93e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
94e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
95e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
96e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
97e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[1]
98e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
99e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
100e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
101e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
102e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
103e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
104e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[2]
105e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
106e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
107e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
108e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
109e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
110e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
111e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[3]
112e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
113e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
114e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
115e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
116e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
117e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
118e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [12+eax],ebx
119e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[3]
121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 4
122e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
123e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[0]
124e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
125e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
126e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
127e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
128e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
129e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
130e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[1]
131e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
132e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
133e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
134e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
135e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
136e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
137e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[2]
138e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
139e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
140e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
141e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
142e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
143e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
144e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[3]
145e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
146e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
147e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
148e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
149e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
150e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
151e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[4]
152e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
153e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
154e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
155e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
156e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
157e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
158e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [16+eax],ecx
159e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
160e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[4]
161e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 5
162e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
163e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[0]
164e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
165e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
166e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
167e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
168e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
169e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
170e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[1]
171e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
173e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
174e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
175e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
177e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[2]
178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
179e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
180e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
182e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
183e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
184e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[3]
185e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
186e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
187e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
188e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
189e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
190e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
191e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[4]
192e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
193e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
194e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
195e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
196e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
197e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
198e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[5]
199e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
200e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
201e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
202e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
203e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
204e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
205e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [20+eax],ebp
206e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
207e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[5]
208e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 6
209e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
210e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[0]
211e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
212e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
213e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
214e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
215e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
216e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
217e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[1]
218e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
219e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
220e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
221e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
222e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
223e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
224e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[2]
225e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
226e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
227e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
228e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
229e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
230e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
231e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[3]
232e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
233e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
234e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
235e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
236e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
237e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
238e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[4]
239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
240e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
245e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[5]
246e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
247e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
250e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
251e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
252e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[6]
253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
256e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
257e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
258e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [24+eax],ebx
260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
261e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[6]
262e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 7
263e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
264e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[0]
265e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
266e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
267e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
268e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
269e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
270e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
271e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[1]
272e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
273e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
274e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
275e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
276e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
277e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
278e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[2]
279e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
280e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
281e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
282e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
283e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
284e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
285e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[3]
286e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
287e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
288e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
289e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
290e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
291e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
292e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[4]
293e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
294e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
295e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
296e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
297e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
298e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
299e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[5]
300e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
301e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
302e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
303e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
304e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
305e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
306e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[6]
307e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
308e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
309e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
310e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
311e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
312e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
313e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[7]
314e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
315e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
316e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
317e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
318e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
319e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
320e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [28+eax],ecx
321e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
322e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[7]
323e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 8
324e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
325e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[1]
326e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
327e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
328e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
329e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
330e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
331e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
332e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[2]
333e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
334e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
335e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
336e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
337e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
338e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
339e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[3]
340e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
341e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
342e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
343e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
344e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
345e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
346e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[4]
347e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
348e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
349e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
350e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
351e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
352e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
353e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[5]
354e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
355e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
356e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
357e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
358e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
359e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
360e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[6]
361e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
362e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
363e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
364e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
365e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
366e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
367e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[7]
368e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
369e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
370e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
371e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
372e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
373e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
374e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [32+eax],ebp
375e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
376e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[8]
377e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 9
378e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
379e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[2]
380e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
381e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
382e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
383e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
384e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
385e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
386e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[3]
387e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
388e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
389e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
390e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
391e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
392e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
393e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[4]
394e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
395e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
396e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
397e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
398e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
399e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
400e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[5]
401e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
402e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
403e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
404e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
405e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
406e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
407e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[6]
408e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
409e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
410e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
411e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
412e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
413e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
414e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[7]
415e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
416e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
417e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
418e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
419e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
420e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
421e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [36+eax],ebx
422e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
423e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[9]
424e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 10
425e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
426e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[3]
427e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
428e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
429e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
430e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
431e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
432e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
433e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[4]
434e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
435e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
436e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
437e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
438e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
439e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
440e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[5]
441e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
442e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
443e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
444e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
445e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
446e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
447e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[6]
448e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
449e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
450e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
451e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
452e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
453e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
454e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[7]
455e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
456e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
457e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
458e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
459e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+edi]
460e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
461e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [40+eax],ecx
462e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
463e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[10]
464e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 11
465e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
466e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[4]
467e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
468e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
469e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
470e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
471e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
472e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
473e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[5]
474e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
475e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
476e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
477e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
478e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
479e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
480e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[6]
481e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
482e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
483e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
484e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
485e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
486e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
487e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[4]*b[7]
488e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
489e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
490e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
491e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
492e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+edi]
493e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
494e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [44+eax],ebp
495e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
496e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[11]
497e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 12
498e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
499e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[5]
500e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
501e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
502e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
503e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
504e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
505e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
506e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[6]
507e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
508e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
509e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
510e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
511e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
512e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
513e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[5]*b[7]
514e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
515e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
516e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
517e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
518e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+edi]
519e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
520e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [48+eax],ebx
521e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
522e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[12]
523e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 13
524e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
525e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[6]
526e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
527e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
528e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
529e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
530e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
531e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
532e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[6]*b[7]
533e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
534e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
535e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
536e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
537e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [28+edi]
538e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
539e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [52+eax],ecx
540e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
541e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[13]
542e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 14
543e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
544e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[7]*b[7]
545e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
546e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
547e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
548e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
549e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
550e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [56+eax],ebp
551e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[14]
552e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; save r[15]
553e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [60+eax],ebx
554e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebx
555e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebp
556e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	edi
557e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	esi
558e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	ret
559e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal	_bn_mul_comba4
560e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign	16
561e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_mul_comba4:
562e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_mul_comba4_begin:
563e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	esi
564e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	esi,DWORD [12+esp]
565e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	edi
566e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edi,DWORD [20+esp]
567e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebp
568e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebx
569e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
570e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
571e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
572e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
573e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 0
574e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
575e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[0]
576e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
577e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
578e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
579e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
580e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
581e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
582e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [eax],ebx
583e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
584e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[0]
585e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 1
586e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
587e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[0]
588e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
589e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
590e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
591e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
592e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
593e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
594e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[1]
595e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
596e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
597e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
598e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
599e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
600e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
601e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [4+eax],ecx
602e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
603e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[1]
604e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 2
605e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
606e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[0]
607e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
608e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
609e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
610e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
611e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
612e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
613e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[1]
614e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
615e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
616e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
617e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
618e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
619e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
620e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[2]
621e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
622e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
623e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
624e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
625e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [edi]
626e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
627e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [8+eax],ebp
628e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
629e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[2]
630e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 3
631e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
632e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[0]
633e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
634e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
635e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
636e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
637e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
638e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
639e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[1]
640e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
641e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
642e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
643e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
644e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
645e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
646e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[2]
647e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
648e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
649e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
650e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
651e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
652e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
653e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[0]*b[3]
654e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
655e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
656e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
657e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
658e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+edi]
659e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
660e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [12+eax],ebx
661e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
662e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[3]
663e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 4
664e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
665e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[1]
666e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
667e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
668e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
669e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
670e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
671e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
672e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[2]
673e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
674e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
675e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
676e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
677e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
678e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
679e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[1]*b[3]
680e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
681e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
682e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
683e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
684e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+edi]
685e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
686e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [16+eax],ecx
687e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
688e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[4]
689e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 5
690e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
691e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[2]
692e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
693e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
694e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
695e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
696e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
697e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
698e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[2]*b[3]
699e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
700e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
701e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
702e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
703e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+edi]
704e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
705e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [20+eax],ebp
706e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
707e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[5]
708e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ################## Calculate word 6
709e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
710e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; mul a[3]*b[3]
711e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
712e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
713e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esp]
714e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
715e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
716e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [24+eax],ebx
717e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[6]
718e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; save r[7]
719e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [28+eax],ecx
720e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebx
721e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebp
722e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	edi
723e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	esi
724e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	ret
725e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal	_bn_sqr_comba8
726e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign	16
727e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_sqr_comba8:
728e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_sqr_comba8_begin:
729e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	esi
730e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	edi
731e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebp
732e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebx
733e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edi,DWORD [20+esp]
734e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	esi,DWORD [24+esp]
735e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
736e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
737e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
738e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 0
739e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
740e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[0]*a[0]
741e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
742e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
743e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
744e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
745e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
746e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [edi],ebx
747e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
748e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[0]
749e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 1
750e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
751e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[1]*a[0]
752e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
753e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
754e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
755e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
756e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
757e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
758e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
759e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
760e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [4+edi],ecx
761e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
762e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[1]
763e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 2
764e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
765e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[0]
766e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
767e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
768e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
769e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
770e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
771e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
772e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
773e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
774e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[1]*a[1]
775e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
776e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
777e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
778e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
779e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
780e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [8+edi],ebp
781e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
782e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[2]
783e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 3
784e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
785e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[0]
786e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
787e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
788e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
789e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
790e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
791e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
792e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
793e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
794e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
795e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[1]
796e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
797e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
798e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
799e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
800e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
801e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
802e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
803e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
804e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [12+edi],ebx
805e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
806e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[3]
807e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 4
808e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
809e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[4]*a[0]
810e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
811e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
812e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
813e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
814e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
815e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
816e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
817e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
818e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
819e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[1]
820e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
821e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
822e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
823e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
824e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
825e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
826e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
827e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
828e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[2]
829e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
830e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
831e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
832e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
833e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
834e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [16+edi],ecx
835e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
836e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[4]
837e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 5
838e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
839e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[0]
840e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
841e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
842e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
843e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
844e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
845e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
846e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
847e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
848e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
849e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[4]*a[1]
850e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
851e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
852e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
853e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
854e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
855e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
856e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
857e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
858e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
859e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[2]
860e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
861e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
862e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
863e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
864e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
865e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
866e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
867e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
868e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [20+edi],ebp
869e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
870e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[5]
871e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 6
872e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
873e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[0]
874e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
875e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
876e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
877e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
878e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
879e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
880e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
881e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
882e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
883e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[1]
884e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
885e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
886e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
887e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
888e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
889e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
890e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
891e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
892e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
893e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[4]*a[2]
894e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
895e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
896e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
897e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
898e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
899e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
900e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
901e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
902e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[3]
903e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
904e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
905e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
906e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
907e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
908e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [24+edi],ebx
909e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
910e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[6]
911e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 7
912e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
913e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[0]
914e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
915e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
916e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
917e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
918e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
919e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
920e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
921e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
922e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
923e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[1]
924e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
925e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
926e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
927e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
928e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
929e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
930e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
931e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
932e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
933e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[2]
934e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
935e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
936e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
937e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
938e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
939e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
940e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
941e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
942e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+esi]
943e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[4]*a[3]
944e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
945e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
946e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
947e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
948e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
949e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
950e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
951e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
952e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [28+edi],ecx
953e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
954e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[7]
955e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 8
956e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
957e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[1]
958e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
959e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
960e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
961e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
962e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
963e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
964e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
965e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
966e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
967e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[2]
968e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
969e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
970e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
971e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
972e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
973e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
974e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
975e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
976e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+esi]
977e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[3]
978e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
979e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
980e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
981e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
982e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
983e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
984e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [16+esi]
985e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
986e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[4]*a[4]
987e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
988e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
989e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
990e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
991e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
992e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [32+edi],ebp
993e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
994e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[8]
995e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 9
996e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
997e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[2]
998e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
999e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1000e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1001e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1002e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1003e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1004e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
1005e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1006e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+esi]
1007e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[3]
1008e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1009e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1010e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1011e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1012e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1013e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1014e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
1015e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1016e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+esi]
1017e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[4]
1018e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1019e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1020e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1021e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1022e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1023e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1024e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
1025e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1026e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [36+edi],ebx
1027e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [12+esi]
1028e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[9]
1029e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 10
1030e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
1031e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[3]
1032e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1033e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1034e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1035e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1036e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1037e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1038e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
1039e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1040e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+esi]
1041e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[4]
1042e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1043e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1044e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1045e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1046e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1047e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1048e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [20+esi]
1049e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1050e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[5]*a[5]
1051e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1052e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1053e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1054e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [16+esi]
1055e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1056e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [40+edi],ecx
1057e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
1058e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[10]
1059e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 11
1060e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
1061e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[4]
1062e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1063e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1064e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1065e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1066e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1067e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1068e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
1069e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1070e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+esi]
1071e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[5]
1072e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1073e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1074e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1075e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1076e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1077e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1078e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
1079e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1080e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [44+edi],ebp
1081e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [20+esi]
1082e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[11]
1083e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 12
1084e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
1085e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[5]
1086e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1087e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1088e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1089e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1090e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1091e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1092e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [24+esi]
1093e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1094e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[6]*a[6]
1095e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1096e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1097e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1098e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [24+esi]
1099e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1100e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [48+edi],ebx
1101e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
1102e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[12]
1103e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 13
1104e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
1105e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[6]
1106e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1107e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1108e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1109e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1110e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1111e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1112e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [28+esi]
1113e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1114e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [52+edi],ecx
1115e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[13]
1116e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 14
1117e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
1118e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[7]*a[7]
1119e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1122e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1123e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [56+edi],ebp
1124e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[14]
1125e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [60+edi],ebx
1126e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebx
1127e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebp
1128e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	edi
1129e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	esi
1130e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	ret
1131e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal	_bn_sqr_comba4
1132e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign	16
1133e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_sqr_comba4:
1134e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_sqr_comba4_begin:
1135e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	esi
1136e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	edi
1137e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebp
1138e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	push	ebx
1139e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edi,DWORD [20+esp]
1140e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	esi,DWORD [24+esp]
1141e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
1142e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
1143e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [esi]
1144e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 0
1145e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
1146e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[0]*a[0]
1147e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1148e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1149e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1150e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
1151e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1152e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [edi],ebx
1153e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
1154e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[0]
1155e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 1
1156e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
1157e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[1]*a[0]
1158e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1159e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1160e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1161e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1162e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1163e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1164e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
1165e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1166e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [4+edi],ecx
1167e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
1168e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[1]
1169e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 2
1170e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
1171e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[0]
1172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1173e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1174e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1175e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1177e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [4+esi]
1179e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1180e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[1]*a[1]
1181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1182e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1183e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1184e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [esi]
1185e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1186e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [8+edi],ebp
1187e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
1188e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[2]
1189e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 3
1190e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
1191e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[0]
1192e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1193e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1194e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1195e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1196e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1197e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1198e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
1199e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1200e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
1201e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[1]
1202e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1203e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1204e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1205e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1206e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1207e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1208e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
1209e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1210e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [12+edi],ebx
1211e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [4+esi]
1212e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[3]
1213e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 4
1214e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebx,ebx
1215e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[1]
1216e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1217e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1218e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1219e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1220e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1221e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1222e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [8+esi]
1223e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1224e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[2]*a[2]
1225e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1226e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ecx,eax
1227e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,edx
1228e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	edx,DWORD [8+esi]
1229e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,0
1230e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [16+edi],ecx
1231e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
1232e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[4]
1233e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 5
1234e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ecx,ecx
1235e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[2]
1236e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	edx
1237e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	eax,eax
1238e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	edx,edx
1239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1240e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebp,eax
1241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebx,edx
1242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	eax,DWORD [12+esi]
1243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,0
1244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [20+edi],ebp
1245e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[5]
1246e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; ############### Calculate word 6
1247e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	xor	ebp,ebp
1248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; sqr a[3]*a[3]
1249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mul	eax
1250e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	add	ebx,eax
1251e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ecx,edx
1252e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adc	ebp,0
1253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [24+edi],ebx
1254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	; saved r[6]
1255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	mov	DWORD [28+edi],ecx
1256e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebx
1257e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	ebp
1258e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	edi
1259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	pop	esi
1260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	ret
1261