xref: /freebsd/sys/crypto/openssl/amd64/rsaz-4k-avxifma.S (revision 4757b351ea9d59d71d4a38b82506d2d16fcd560d)
1*4757b351SPierre Pronchery/* Do not modify. This file is auto-generated from rsaz-4k-avxifma.pl. */
2*4757b351SPierre Pronchery.text
3*4757b351SPierre Pronchery
4*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x40_x1_avxifma256
5*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x40_x1_avxifma256,@function
6*4757b351SPierre Pronchery.align	32
7*4757b351SPierre Proncheryossl_rsaz_amm52x40_x1_avxifma256:
8*4757b351SPierre Pronchery.cfi_startproc
9*4757b351SPierre Pronchery.byte	243,15,30,250
10*4757b351SPierre Pronchery	pushq	%rbx
11*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
12*4757b351SPierre Pronchery.cfi_offset	%rbx,-16
13*4757b351SPierre Pronchery	pushq	%rbp
14*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
15*4757b351SPierre Pronchery.cfi_offset	%rbp,-24
16*4757b351SPierre Pronchery	pushq	%r12
17*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
18*4757b351SPierre Pronchery.cfi_offset	%r12,-32
19*4757b351SPierre Pronchery	pushq	%r13
20*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
21*4757b351SPierre Pronchery.cfi_offset	%r13,-40
22*4757b351SPierre Pronchery	pushq	%r14
23*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
24*4757b351SPierre Pronchery.cfi_offset	%r14,-48
25*4757b351SPierre Pronchery	pushq	%r15
26*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
27*4757b351SPierre Pronchery.cfi_offset	%r15,-56
28*4757b351SPierre Pronchery
29*4757b351SPierre Pronchery	vpxor	%ymm0,%ymm0,%ymm0
30*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
31*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
32*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
33*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
34*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
35*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
36*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
37*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm10
38*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm11
39*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm12
40*4757b351SPierre Pronchery
41*4757b351SPierre Pronchery	xorl	%r9d,%r9d
42*4757b351SPierre Pronchery
43*4757b351SPierre Pronchery	movq	%rdx,%r11
44*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
45*4757b351SPierre Pronchery
46*4757b351SPierre Pronchery
47*4757b351SPierre Pronchery	movl	$10,%ebx
48*4757b351SPierre Pronchery
49*4757b351SPierre Pronchery.align	32
50*4757b351SPierre Pronchery.Lloop10:
51*4757b351SPierre Pronchery	movq	0(%r11),%r13
52*4757b351SPierre Pronchery
53*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
54*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
55*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
56*4757b351SPierre Pronchery	addq	%r13,%r9
57*4757b351SPierre Pronchery	movq	%r12,%r10
58*4757b351SPierre Pronchery	adcq	$0,%r10
59*4757b351SPierre Pronchery
60*4757b351SPierre Pronchery	movq	%r8,%r13
61*4757b351SPierre Pronchery	imulq	%r9,%r13
62*4757b351SPierre Pronchery	andq	%rax,%r13
63*4757b351SPierre Pronchery
64*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
65*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
66*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
67*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
68*4757b351SPierre Pronchery	addq	%r13,%r9
69*4757b351SPierre Pronchery	adcq	%r12,%r10
70*4757b351SPierre Pronchery
71*4757b351SPierre Pronchery	shrq	$52,%r9
72*4757b351SPierre Pronchery	salq	$12,%r10
73*4757b351SPierre Pronchery	orq	%r10,%r9
74*4757b351SPierre Pronchery
75*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
76*4757b351SPierre Pronchery
77*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
78*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
79*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
80*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
81*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
82*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
83*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
84*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
85*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm11
86*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm12
87*4757b351SPierre Pronchery
88*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
89*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
90*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
91*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
92*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
93*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
94*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
95*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
96*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm11
97*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm12
98*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
99*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
100*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
101*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
102*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
103*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
104*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
105*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
106*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
107*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
108*4757b351SPierre Pronchery	movq	$0,320(%rsp)
109*4757b351SPierre Pronchery
110*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
111*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
112*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
113*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
114*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
115*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
116*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
117*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
118*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
119*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
120*4757b351SPierre Pronchery
121*4757b351SPierre Pronchery	addq	8(%rsp),%r9
122*4757b351SPierre Pronchery
123*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
124*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
125*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
126*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
127*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
128*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
129*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
130*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
131*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm11
132*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm12
133*4757b351SPierre Pronchery
134*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
135*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
136*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
137*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
138*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
139*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
140*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
141*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
142*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm11
143*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm12
144*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
145*4757b351SPierre Pronchery	movq	8(%r11),%r13
146*4757b351SPierre Pronchery
147*4757b351SPierre Pronchery	vpbroadcastq	8(%r11),%ymm1
148*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
149*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
150*4757b351SPierre Pronchery	addq	%r13,%r9
151*4757b351SPierre Pronchery	movq	%r12,%r10
152*4757b351SPierre Pronchery	adcq	$0,%r10
153*4757b351SPierre Pronchery
154*4757b351SPierre Pronchery	movq	%r8,%r13
155*4757b351SPierre Pronchery	imulq	%r9,%r13
156*4757b351SPierre Pronchery	andq	%rax,%r13
157*4757b351SPierre Pronchery
158*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
159*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
160*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
161*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
162*4757b351SPierre Pronchery	addq	%r13,%r9
163*4757b351SPierre Pronchery	adcq	%r12,%r10
164*4757b351SPierre Pronchery
165*4757b351SPierre Pronchery	shrq	$52,%r9
166*4757b351SPierre Pronchery	salq	$12,%r10
167*4757b351SPierre Pronchery	orq	%r10,%r9
168*4757b351SPierre Pronchery
169*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
170*4757b351SPierre Pronchery
171*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
172*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
173*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
174*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
175*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
176*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
177*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
178*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
179*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm11
180*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm12
181*4757b351SPierre Pronchery
182*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
183*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
184*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
185*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
186*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
187*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
188*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
189*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
190*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm11
191*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm12
192*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
193*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
194*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
195*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
196*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
197*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
198*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
199*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
200*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
201*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
202*4757b351SPierre Pronchery	movq	$0,320(%rsp)
203*4757b351SPierre Pronchery
204*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
205*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
206*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
207*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
208*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
209*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
210*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
211*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
212*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
213*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
214*4757b351SPierre Pronchery
215*4757b351SPierre Pronchery	addq	8(%rsp),%r9
216*4757b351SPierre Pronchery
217*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
218*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
219*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
220*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
221*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
222*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
223*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
224*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
225*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm11
226*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm12
227*4757b351SPierre Pronchery
228*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
229*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
230*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
231*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
232*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
233*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
234*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
235*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
236*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm11
237*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm12
238*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
239*4757b351SPierre Pronchery	movq	16(%r11),%r13
240*4757b351SPierre Pronchery
241*4757b351SPierre Pronchery	vpbroadcastq	16(%r11),%ymm1
242*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
243*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
244*4757b351SPierre Pronchery	addq	%r13,%r9
245*4757b351SPierre Pronchery	movq	%r12,%r10
246*4757b351SPierre Pronchery	adcq	$0,%r10
247*4757b351SPierre Pronchery
248*4757b351SPierre Pronchery	movq	%r8,%r13
249*4757b351SPierre Pronchery	imulq	%r9,%r13
250*4757b351SPierre Pronchery	andq	%rax,%r13
251*4757b351SPierre Pronchery
252*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
253*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
254*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
255*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
256*4757b351SPierre Pronchery	addq	%r13,%r9
257*4757b351SPierre Pronchery	adcq	%r12,%r10
258*4757b351SPierre Pronchery
259*4757b351SPierre Pronchery	shrq	$52,%r9
260*4757b351SPierre Pronchery	salq	$12,%r10
261*4757b351SPierre Pronchery	orq	%r10,%r9
262*4757b351SPierre Pronchery
263*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
264*4757b351SPierre Pronchery
265*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
266*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
267*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
268*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
269*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
270*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
271*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
272*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
273*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm11
274*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm12
275*4757b351SPierre Pronchery
276*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
277*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
278*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
279*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
280*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
281*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
282*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
283*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
284*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm11
285*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm12
286*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
287*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
288*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
289*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
290*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
291*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
292*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
293*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
294*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
295*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
296*4757b351SPierre Pronchery	movq	$0,320(%rsp)
297*4757b351SPierre Pronchery
298*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
299*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
300*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
301*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
302*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
303*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
304*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
305*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
306*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
307*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
308*4757b351SPierre Pronchery
309*4757b351SPierre Pronchery	addq	8(%rsp),%r9
310*4757b351SPierre Pronchery
311*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
312*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
313*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
314*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
315*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
316*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
317*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
318*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
319*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm11
320*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm12
321*4757b351SPierre Pronchery
322*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
323*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
324*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
325*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
326*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
327*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
328*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
329*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
330*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm11
331*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm12
332*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
333*4757b351SPierre Pronchery	movq	24(%r11),%r13
334*4757b351SPierre Pronchery
335*4757b351SPierre Pronchery	vpbroadcastq	24(%r11),%ymm1
336*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
337*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
338*4757b351SPierre Pronchery	addq	%r13,%r9
339*4757b351SPierre Pronchery	movq	%r12,%r10
340*4757b351SPierre Pronchery	adcq	$0,%r10
341*4757b351SPierre Pronchery
342*4757b351SPierre Pronchery	movq	%r8,%r13
343*4757b351SPierre Pronchery	imulq	%r9,%r13
344*4757b351SPierre Pronchery	andq	%rax,%r13
345*4757b351SPierre Pronchery
346*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
347*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
348*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
349*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
350*4757b351SPierre Pronchery	addq	%r13,%r9
351*4757b351SPierre Pronchery	adcq	%r12,%r10
352*4757b351SPierre Pronchery
353*4757b351SPierre Pronchery	shrq	$52,%r9
354*4757b351SPierre Pronchery	salq	$12,%r10
355*4757b351SPierre Pronchery	orq	%r10,%r9
356*4757b351SPierre Pronchery
357*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
358*4757b351SPierre Pronchery
359*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
360*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
361*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
362*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
363*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
364*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
365*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
366*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
367*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm11
368*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm12
369*4757b351SPierre Pronchery
370*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
371*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
372*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
373*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
374*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
375*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
376*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
377*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
378*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm11
379*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm12
380*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
381*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
382*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
383*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
384*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
385*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
386*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
387*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
388*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
389*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
390*4757b351SPierre Pronchery	movq	$0,320(%rsp)
391*4757b351SPierre Pronchery
392*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
393*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
394*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
395*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
396*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
397*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
398*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
399*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
400*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
401*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
402*4757b351SPierre Pronchery
403*4757b351SPierre Pronchery	addq	8(%rsp),%r9
404*4757b351SPierre Pronchery
405*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
406*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
407*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
408*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
409*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
410*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
411*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
412*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
413*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm11
414*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm12
415*4757b351SPierre Pronchery
416*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
417*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
418*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
419*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
420*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
421*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
422*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
423*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
424*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm11
425*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm12
426*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
427*4757b351SPierre Pronchery	leaq	32(%r11),%r11
428*4757b351SPierre Pronchery	decl	%ebx
429*4757b351SPierre Pronchery	jne	.Lloop10
430*4757b351SPierre Pronchery
431*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
432*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
433*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
434*4757b351SPierre Pronchery
435*4757b351SPierre Pronchery	leaq	-640(%rsp),%rsp
436*4757b351SPierre Pronchery	vmovupd	%ymm3,0(%rsp)
437*4757b351SPierre Pronchery	vmovupd	%ymm4,32(%rsp)
438*4757b351SPierre Pronchery	vmovupd	%ymm5,64(%rsp)
439*4757b351SPierre Pronchery	vmovupd	%ymm6,96(%rsp)
440*4757b351SPierre Pronchery	vmovupd	%ymm7,128(%rsp)
441*4757b351SPierre Pronchery	vmovupd	%ymm8,160(%rsp)
442*4757b351SPierre Pronchery	vmovupd	%ymm9,192(%rsp)
443*4757b351SPierre Pronchery	vmovupd	%ymm10,224(%rsp)
444*4757b351SPierre Pronchery	vmovupd	%ymm11,256(%rsp)
445*4757b351SPierre Pronchery	vmovupd	%ymm12,288(%rsp)
446*4757b351SPierre Pronchery
447*4757b351SPierre Pronchery
448*4757b351SPierre Pronchery
449*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm3
450*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm4
451*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm5
452*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm6
453*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm7
454*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm8
455*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm9
456*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm10
457*4757b351SPierre Pronchery	vpsrlq	$52,%ymm11,%ymm11
458*4757b351SPierre Pronchery	vpsrlq	$52,%ymm12,%ymm12
459*4757b351SPierre Pronchery
460*4757b351SPierre Pronchery
461*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
462*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm13
463*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm12,%ymm12
464*4757b351SPierre Pronchery
465*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
466*4757b351SPierre Pronchery	vpermq	$3,%ymm10,%ymm13
467*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm11,%ymm11
468*4757b351SPierre Pronchery
469*4757b351SPierre Pronchery	vpermq	$144,%ymm10,%ymm10
470*4757b351SPierre Pronchery	vpermq	$3,%ymm9,%ymm13
471*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm10,%ymm10
472*4757b351SPierre Pronchery
473*4757b351SPierre Pronchery	vpermq	$144,%ymm9,%ymm9
474*4757b351SPierre Pronchery	vpermq	$3,%ymm8,%ymm13
475*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm9,%ymm9
476*4757b351SPierre Pronchery
477*4757b351SPierre Pronchery	vpermq	$144,%ymm8,%ymm8
478*4757b351SPierre Pronchery	vpermq	$3,%ymm7,%ymm13
479*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm8,%ymm8
480*4757b351SPierre Pronchery
481*4757b351SPierre Pronchery	vpermq	$144,%ymm7,%ymm7
482*4757b351SPierre Pronchery	vpermq	$3,%ymm6,%ymm13
483*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm7,%ymm7
484*4757b351SPierre Pronchery
485*4757b351SPierre Pronchery	vpermq	$144,%ymm6,%ymm6
486*4757b351SPierre Pronchery	vpermq	$3,%ymm5,%ymm13
487*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm6,%ymm6
488*4757b351SPierre Pronchery
489*4757b351SPierre Pronchery	vpermq	$144,%ymm5,%ymm5
490*4757b351SPierre Pronchery	vpermq	$3,%ymm4,%ymm13
491*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm5,%ymm5
492*4757b351SPierre Pronchery
493*4757b351SPierre Pronchery	vpermq	$144,%ymm4,%ymm4
494*4757b351SPierre Pronchery	vpermq	$3,%ymm3,%ymm13
495*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm4,%ymm4
496*4757b351SPierre Pronchery
497*4757b351SPierre Pronchery	vpermq	$144,%ymm3,%ymm3
498*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm3,%ymm3
499*4757b351SPierre Pronchery
500*4757b351SPierre Pronchery	vmovupd	%ymm3,320(%rsp)
501*4757b351SPierre Pronchery	vmovupd	%ymm4,352(%rsp)
502*4757b351SPierre Pronchery	vmovupd	%ymm5,384(%rsp)
503*4757b351SPierre Pronchery	vmovupd	%ymm6,416(%rsp)
504*4757b351SPierre Pronchery	vmovupd	%ymm7,448(%rsp)
505*4757b351SPierre Pronchery	vmovupd	%ymm8,480(%rsp)
506*4757b351SPierre Pronchery	vmovupd	%ymm9,512(%rsp)
507*4757b351SPierre Pronchery	vmovupd	%ymm10,544(%rsp)
508*4757b351SPierre Pronchery	vmovupd	%ymm11,576(%rsp)
509*4757b351SPierre Pronchery	vmovupd	%ymm12,608(%rsp)
510*4757b351SPierre Pronchery
511*4757b351SPierre Pronchery	vmovupd	0(%rsp),%ymm3
512*4757b351SPierre Pronchery	vmovupd	32(%rsp),%ymm4
513*4757b351SPierre Pronchery	vmovupd	64(%rsp),%ymm5
514*4757b351SPierre Pronchery	vmovupd	96(%rsp),%ymm6
515*4757b351SPierre Pronchery	vmovupd	128(%rsp),%ymm7
516*4757b351SPierre Pronchery	vmovupd	160(%rsp),%ymm8
517*4757b351SPierre Pronchery	vmovupd	192(%rsp),%ymm9
518*4757b351SPierre Pronchery	vmovupd	224(%rsp),%ymm10
519*4757b351SPierre Pronchery	vmovupd	256(%rsp),%ymm11
520*4757b351SPierre Pronchery	vmovupd	288(%rsp),%ymm12
521*4757b351SPierre Pronchery
522*4757b351SPierre Pronchery
523*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
524*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
525*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
526*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
527*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
528*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
529*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
530*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
531*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
532*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
533*4757b351SPierre Pronchery
534*4757b351SPierre Pronchery
535*4757b351SPierre Pronchery	vpaddq	320(%rsp),%ymm3,%ymm3
536*4757b351SPierre Pronchery	vpaddq	352(%rsp),%ymm4,%ymm4
537*4757b351SPierre Pronchery	vpaddq	384(%rsp),%ymm5,%ymm5
538*4757b351SPierre Pronchery	vpaddq	416(%rsp),%ymm6,%ymm6
539*4757b351SPierre Pronchery	vpaddq	448(%rsp),%ymm7,%ymm7
540*4757b351SPierre Pronchery	vpaddq	480(%rsp),%ymm8,%ymm8
541*4757b351SPierre Pronchery	vpaddq	512(%rsp),%ymm9,%ymm9
542*4757b351SPierre Pronchery	vpaddq	544(%rsp),%ymm10,%ymm10
543*4757b351SPierre Pronchery	vpaddq	576(%rsp),%ymm11,%ymm11
544*4757b351SPierre Pronchery	vpaddq	608(%rsp),%ymm12,%ymm12
545*4757b351SPierre Pronchery
546*4757b351SPierre Pronchery	leaq	640(%rsp),%rsp
547*4757b351SPierre Pronchery
548*4757b351SPierre Pronchery
549*4757b351SPierre Pronchery
550*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm13
551*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r14d
552*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm13
553*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
554*4757b351SPierre Pronchery	shlb	$4,%r13b
555*4757b351SPierre Pronchery	orb	%r13b,%r14b
556*4757b351SPierre Pronchery
557*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm13
558*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
559*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm13
560*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
561*4757b351SPierre Pronchery	shlb	$4,%r12b
562*4757b351SPierre Pronchery	orb	%r12b,%r13b
563*4757b351SPierre Pronchery
564*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm13
565*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
566*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
567*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
568*4757b351SPierre Pronchery	shlb	$4,%r11b
569*4757b351SPierre Pronchery	orb	%r11b,%r12b
570*4757b351SPierre Pronchery
571*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm13
572*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
573*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm13
574*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
575*4757b351SPierre Pronchery	shlb	$4,%r10b
576*4757b351SPierre Pronchery	orb	%r10b,%r11b
577*4757b351SPierre Pronchery
578*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm11,%ymm13
579*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
580*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm12,%ymm13
581*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
582*4757b351SPierre Pronchery	shlb	$4,%r9b
583*4757b351SPierre Pronchery	orb	%r9b,%r10b
584*4757b351SPierre Pronchery
585*4757b351SPierre Pronchery	addb	%r14b,%r14b
586*4757b351SPierre Pronchery	adcb	%r13b,%r13b
587*4757b351SPierre Pronchery	adcb	%r12b,%r12b
588*4757b351SPierre Pronchery	adcb	%r11b,%r11b
589*4757b351SPierre Pronchery	adcb	%r10b,%r10b
590*4757b351SPierre Pronchery
591*4757b351SPierre Pronchery
592*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm13
593*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
594*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm13
595*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
596*4757b351SPierre Pronchery	shlb	$4,%r8b
597*4757b351SPierre Pronchery	orb	%r8b,%r9b
598*4757b351SPierre Pronchery
599*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm13
600*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
601*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm13
602*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
603*4757b351SPierre Pronchery	shlb	$4,%dl
604*4757b351SPierre Pronchery	orb	%dl,%r8b
605*4757b351SPierre Pronchery
606*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm13
607*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
608*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
609*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
610*4757b351SPierre Pronchery	shlb	$4,%cl
611*4757b351SPierre Pronchery	orb	%cl,%dl
612*4757b351SPierre Pronchery
613*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm13
614*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
615*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm13
616*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
617*4757b351SPierre Pronchery	shlb	$4,%bl
618*4757b351SPierre Pronchery	orb	%bl,%cl
619*4757b351SPierre Pronchery
620*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm11,%ymm13
621*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
622*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm12,%ymm13
623*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%eax
624*4757b351SPierre Pronchery	shlb	$4,%al
625*4757b351SPierre Pronchery	orb	%al,%bl
626*4757b351SPierre Pronchery
627*4757b351SPierre Pronchery	addb	%r9b,%r14b
628*4757b351SPierre Pronchery	adcb	%r8b,%r13b
629*4757b351SPierre Pronchery	adcb	%dl,%r12b
630*4757b351SPierre Pronchery	adcb	%cl,%r11b
631*4757b351SPierre Pronchery	adcb	%bl,%r10b
632*4757b351SPierre Pronchery
633*4757b351SPierre Pronchery	xorb	%r9b,%r14b
634*4757b351SPierre Pronchery	xorb	%r8b,%r13b
635*4757b351SPierre Pronchery	xorb	%dl,%r12b
636*4757b351SPierre Pronchery	xorb	%cl,%r11b
637*4757b351SPierre Pronchery	xorb	%bl,%r10b
638*4757b351SPierre Pronchery
639*4757b351SPierre Pronchery	pushq	%r9
640*4757b351SPierre Pronchery	pushq	%r8
641*4757b351SPierre Pronchery
642*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%r8
643*4757b351SPierre Pronchery
644*4757b351SPierre Pronchery	movb	%r14b,%r9b
645*4757b351SPierre Pronchery	andq	$0xf,%r14
646*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm13
647*4757b351SPierre Pronchery	shlq	$5,%r14
648*4757b351SPierre Pronchery	vmovapd	(%r8,%r14,1),%ymm14
649*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm3,%ymm3
650*4757b351SPierre Pronchery
651*4757b351SPierre Pronchery	shrb	$4,%r9b
652*4757b351SPierre Pronchery	andq	$0xf,%r9
653*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm13
654*4757b351SPierre Pronchery	shlq	$5,%r9
655*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
656*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm4,%ymm4
657*4757b351SPierre Pronchery
658*4757b351SPierre Pronchery	movb	%r13b,%r9b
659*4757b351SPierre Pronchery	andq	$0xf,%r13
660*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm13
661*4757b351SPierre Pronchery	shlq	$5,%r13
662*4757b351SPierre Pronchery	vmovapd	(%r8,%r13,1),%ymm14
663*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm5,%ymm5
664*4757b351SPierre Pronchery
665*4757b351SPierre Pronchery	shrb	$4,%r9b
666*4757b351SPierre Pronchery	andq	$0xf,%r9
667*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm13
668*4757b351SPierre Pronchery	shlq	$5,%r9
669*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
670*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm6,%ymm6
671*4757b351SPierre Pronchery
672*4757b351SPierre Pronchery	movb	%r12b,%r9b
673*4757b351SPierre Pronchery	andq	$0xf,%r12
674*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm13
675*4757b351SPierre Pronchery	shlq	$5,%r12
676*4757b351SPierre Pronchery	vmovapd	(%r8,%r12,1),%ymm14
677*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm7,%ymm7
678*4757b351SPierre Pronchery
679*4757b351SPierre Pronchery	shrb	$4,%r9b
680*4757b351SPierre Pronchery	andq	$0xf,%r9
681*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm13
682*4757b351SPierre Pronchery	shlq	$5,%r9
683*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
684*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm8,%ymm8
685*4757b351SPierre Pronchery
686*4757b351SPierre Pronchery	movb	%r11b,%r9b
687*4757b351SPierre Pronchery	andq	$0xf,%r11
688*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm13
689*4757b351SPierre Pronchery	shlq	$5,%r11
690*4757b351SPierre Pronchery	vmovapd	(%r8,%r11,1),%ymm14
691*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm9,%ymm9
692*4757b351SPierre Pronchery
693*4757b351SPierre Pronchery	shrb	$4,%r9b
694*4757b351SPierre Pronchery	andq	$0xf,%r9
695*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm13
696*4757b351SPierre Pronchery	shlq	$5,%r9
697*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
698*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm10,%ymm10
699*4757b351SPierre Pronchery
700*4757b351SPierre Pronchery	movb	%r10b,%r9b
701*4757b351SPierre Pronchery	andq	$0xf,%r10
702*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm11,%ymm13
703*4757b351SPierre Pronchery	shlq	$5,%r10
704*4757b351SPierre Pronchery	vmovapd	(%r8,%r10,1),%ymm14
705*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm11,%ymm11
706*4757b351SPierre Pronchery
707*4757b351SPierre Pronchery	shrb	$4,%r9b
708*4757b351SPierre Pronchery	andq	$0xf,%r9
709*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm12,%ymm13
710*4757b351SPierre Pronchery	shlq	$5,%r9
711*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
712*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm12,%ymm12
713*4757b351SPierre Pronchery
714*4757b351SPierre Pronchery	popq	%r8
715*4757b351SPierre Pronchery	popq	%r9
716*4757b351SPierre Pronchery
717*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
718*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
719*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
720*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
721*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
722*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
723*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
724*4757b351SPierre Pronchery
725*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
726*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
727*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
728*4757b351SPierre Pronchery
729*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rdi)
730*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rdi)
731*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rdi)
732*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rdi)
733*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rdi)
734*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rdi)
735*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rdi)
736*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rdi)
737*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rdi)
738*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rdi)
739*4757b351SPierre Pronchery
740*4757b351SPierre Pronchery	vzeroupper
741*4757b351SPierre Pronchery	leaq	(%rsp),%rax
742*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
743*4757b351SPierre Pronchery	movq	0(%rax),%r15
744*4757b351SPierre Pronchery.cfi_restore	%r15
745*4757b351SPierre Pronchery	movq	8(%rax),%r14
746*4757b351SPierre Pronchery.cfi_restore	%r14
747*4757b351SPierre Pronchery	movq	16(%rax),%r13
748*4757b351SPierre Pronchery.cfi_restore	%r13
749*4757b351SPierre Pronchery	movq	24(%rax),%r12
750*4757b351SPierre Pronchery.cfi_restore	%r12
751*4757b351SPierre Pronchery	movq	32(%rax),%rbp
752*4757b351SPierre Pronchery.cfi_restore	%rbp
753*4757b351SPierre Pronchery	movq	40(%rax),%rbx
754*4757b351SPierre Pronchery.cfi_restore	%rbx
755*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
756*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
757*4757b351SPierre Pronchery.Lossl_rsaz_amm52x40_x1_avxifma256_epilogue:
758*4757b351SPierre Pronchery
759*4757b351SPierre Pronchery	.byte	0xf3,0xc3
760*4757b351SPierre Pronchery.cfi_endproc
761*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x40_x1_avxifma256, .-ossl_rsaz_amm52x40_x1_avxifma256
762*4757b351SPierre Pronchery.section	.rodata
763*4757b351SPierre Pronchery.align	32
764*4757b351SPierre Pronchery.Lmask52x4:
765*4757b351SPierre Pronchery.quad	0xfffffffffffff
766*4757b351SPierre Pronchery.quad	0xfffffffffffff
767*4757b351SPierre Pronchery.quad	0xfffffffffffff
768*4757b351SPierre Pronchery.quad	0xfffffffffffff
769*4757b351SPierre Pronchery.Lhigh64x3:
770*4757b351SPierre Pronchery.quad	0x0
771*4757b351SPierre Pronchery.quad	0xffffffffffffffff
772*4757b351SPierre Pronchery.quad	0xffffffffffffffff
773*4757b351SPierre Pronchery.quad	0xffffffffffffffff
774*4757b351SPierre Pronchery.Lkmasklut:
775*4757b351SPierre Pronchery
776*4757b351SPierre Pronchery.quad	0x0
777*4757b351SPierre Pronchery.quad	0x0
778*4757b351SPierre Pronchery.quad	0x0
779*4757b351SPierre Pronchery.quad	0x0
780*4757b351SPierre Pronchery
781*4757b351SPierre Pronchery.quad	0xffffffffffffffff
782*4757b351SPierre Pronchery.quad	0x0
783*4757b351SPierre Pronchery.quad	0x0
784*4757b351SPierre Pronchery.quad	0x0
785*4757b351SPierre Pronchery
786*4757b351SPierre Pronchery.quad	0x0
787*4757b351SPierre Pronchery.quad	0xffffffffffffffff
788*4757b351SPierre Pronchery.quad	0x0
789*4757b351SPierre Pronchery.quad	0x0
790*4757b351SPierre Pronchery
791*4757b351SPierre Pronchery.quad	0xffffffffffffffff
792*4757b351SPierre Pronchery.quad	0xffffffffffffffff
793*4757b351SPierre Pronchery.quad	0x0
794*4757b351SPierre Pronchery.quad	0x0
795*4757b351SPierre Pronchery
796*4757b351SPierre Pronchery.quad	0x0
797*4757b351SPierre Pronchery.quad	0x0
798*4757b351SPierre Pronchery.quad	0xffffffffffffffff
799*4757b351SPierre Pronchery.quad	0x0
800*4757b351SPierre Pronchery
801*4757b351SPierre Pronchery.quad	0xffffffffffffffff
802*4757b351SPierre Pronchery.quad	0x0
803*4757b351SPierre Pronchery.quad	0xffffffffffffffff
804*4757b351SPierre Pronchery.quad	0x0
805*4757b351SPierre Pronchery
806*4757b351SPierre Pronchery.quad	0x0
807*4757b351SPierre Pronchery.quad	0xffffffffffffffff
808*4757b351SPierre Pronchery.quad	0xffffffffffffffff
809*4757b351SPierre Pronchery.quad	0x0
810*4757b351SPierre Pronchery
811*4757b351SPierre Pronchery.quad	0xffffffffffffffff
812*4757b351SPierre Pronchery.quad	0xffffffffffffffff
813*4757b351SPierre Pronchery.quad	0xffffffffffffffff
814*4757b351SPierre Pronchery.quad	0x0
815*4757b351SPierre Pronchery
816*4757b351SPierre Pronchery.quad	0x0
817*4757b351SPierre Pronchery.quad	0x0
818*4757b351SPierre Pronchery.quad	0x0
819*4757b351SPierre Pronchery.quad	0xffffffffffffffff
820*4757b351SPierre Pronchery
821*4757b351SPierre Pronchery.quad	0xffffffffffffffff
822*4757b351SPierre Pronchery.quad	0x0
823*4757b351SPierre Pronchery.quad	0x0
824*4757b351SPierre Pronchery.quad	0xffffffffffffffff
825*4757b351SPierre Pronchery
826*4757b351SPierre Pronchery.quad	0x0
827*4757b351SPierre Pronchery.quad	0xffffffffffffffff
828*4757b351SPierre Pronchery.quad	0x0
829*4757b351SPierre Pronchery.quad	0xffffffffffffffff
830*4757b351SPierre Pronchery
831*4757b351SPierre Pronchery.quad	0xffffffffffffffff
832*4757b351SPierre Pronchery.quad	0xffffffffffffffff
833*4757b351SPierre Pronchery.quad	0x0
834*4757b351SPierre Pronchery.quad	0xffffffffffffffff
835*4757b351SPierre Pronchery
836*4757b351SPierre Pronchery.quad	0x0
837*4757b351SPierre Pronchery.quad	0x0
838*4757b351SPierre Pronchery.quad	0xffffffffffffffff
839*4757b351SPierre Pronchery.quad	0xffffffffffffffff
840*4757b351SPierre Pronchery
841*4757b351SPierre Pronchery.quad	0xffffffffffffffff
842*4757b351SPierre Pronchery.quad	0x0
843*4757b351SPierre Pronchery.quad	0xffffffffffffffff
844*4757b351SPierre Pronchery.quad	0xffffffffffffffff
845*4757b351SPierre Pronchery
846*4757b351SPierre Pronchery.quad	0x0
847*4757b351SPierre Pronchery.quad	0xffffffffffffffff
848*4757b351SPierre Pronchery.quad	0xffffffffffffffff
849*4757b351SPierre Pronchery.quad	0xffffffffffffffff
850*4757b351SPierre Pronchery
851*4757b351SPierre Pronchery.quad	0xffffffffffffffff
852*4757b351SPierre Pronchery.quad	0xffffffffffffffff
853*4757b351SPierre Pronchery.quad	0xffffffffffffffff
854*4757b351SPierre Pronchery.quad	0xffffffffffffffff
855*4757b351SPierre Pronchery.text
856*4757b351SPierre Pronchery
857*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x40_x2_avxifma256
858*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x40_x2_avxifma256,@function
859*4757b351SPierre Pronchery.align	32
860*4757b351SPierre Proncheryossl_rsaz_amm52x40_x2_avxifma256:
861*4757b351SPierre Pronchery.cfi_startproc
862*4757b351SPierre Pronchery.byte	243,15,30,250
863*4757b351SPierre Pronchery	pushq	%rbx
864*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
865*4757b351SPierre Pronchery.cfi_offset	%rbx,-16
866*4757b351SPierre Pronchery	pushq	%rbp
867*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
868*4757b351SPierre Pronchery.cfi_offset	%rbp,-24
869*4757b351SPierre Pronchery	pushq	%r12
870*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
871*4757b351SPierre Pronchery.cfi_offset	%r12,-32
872*4757b351SPierre Pronchery	pushq	%r13
873*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
874*4757b351SPierre Pronchery.cfi_offset	%r13,-40
875*4757b351SPierre Pronchery	pushq	%r14
876*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
877*4757b351SPierre Pronchery.cfi_offset	%r14,-48
878*4757b351SPierre Pronchery	pushq	%r15
879*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
880*4757b351SPierre Pronchery.cfi_offset	%r15,-56
881*4757b351SPierre Pronchery
882*4757b351SPierre Pronchery	vpxor	%ymm0,%ymm0,%ymm0
883*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
884*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
885*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
886*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
887*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
888*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
889*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
890*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm10
891*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm11
892*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm12
893*4757b351SPierre Pronchery
894*4757b351SPierre Pronchery	xorl	%r9d,%r9d
895*4757b351SPierre Pronchery
896*4757b351SPierre Pronchery	movq	%rdx,%r11
897*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
898*4757b351SPierre Pronchery
899*4757b351SPierre Pronchery	movl	$40,%ebx
900*4757b351SPierre Pronchery
901*4757b351SPierre Pronchery.align	32
902*4757b351SPierre Pronchery.Lloop40:
903*4757b351SPierre Pronchery	movq	0(%r11),%r13
904*4757b351SPierre Pronchery
905*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
906*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
907*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
908*4757b351SPierre Pronchery	addq	%r13,%r9
909*4757b351SPierre Pronchery	movq	%r12,%r10
910*4757b351SPierre Pronchery	adcq	$0,%r10
911*4757b351SPierre Pronchery
912*4757b351SPierre Pronchery	movq	(%r8),%r13
913*4757b351SPierre Pronchery	imulq	%r9,%r13
914*4757b351SPierre Pronchery	andq	%rax,%r13
915*4757b351SPierre Pronchery
916*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
917*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
918*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
919*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
920*4757b351SPierre Pronchery	addq	%r13,%r9
921*4757b351SPierre Pronchery	adcq	%r12,%r10
922*4757b351SPierre Pronchery
923*4757b351SPierre Pronchery	shrq	$52,%r9
924*4757b351SPierre Pronchery	salq	$12,%r10
925*4757b351SPierre Pronchery	orq	%r10,%r9
926*4757b351SPierre Pronchery
927*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
928*4757b351SPierre Pronchery
929*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
930*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
931*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
932*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
933*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
934*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
935*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
936*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
937*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm11
938*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm12
939*4757b351SPierre Pronchery
940*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
941*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
942*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
943*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
944*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
945*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
946*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
947*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
948*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm11
949*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm12
950*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
951*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
952*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
953*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
954*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
955*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
956*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
957*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
958*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
959*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
960*4757b351SPierre Pronchery	movq	$0,320(%rsp)
961*4757b351SPierre Pronchery
962*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
963*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
964*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
965*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
966*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
967*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
968*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
969*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
970*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
971*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
972*4757b351SPierre Pronchery
973*4757b351SPierre Pronchery	addq	8(%rsp),%r9
974*4757b351SPierre Pronchery
975*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
976*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
977*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
978*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
979*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
980*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
981*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
982*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
983*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm11
984*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm12
985*4757b351SPierre Pronchery
986*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
987*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
988*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
989*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
990*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
991*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
992*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
993*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
994*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm11
995*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm12
996*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
997*4757b351SPierre Pronchery	leaq	8(%r11),%r11
998*4757b351SPierre Pronchery	decl	%ebx
999*4757b351SPierre Pronchery	jne	.Lloop40
1000*4757b351SPierre Pronchery
1001*4757b351SPierre Pronchery	pushq	%r11
1002*4757b351SPierre Pronchery	pushq	%rsi
1003*4757b351SPierre Pronchery	pushq	%rcx
1004*4757b351SPierre Pronchery	pushq	%r8
1005*4757b351SPierre Pronchery
1006*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
1007*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
1008*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
1009*4757b351SPierre Pronchery
1010*4757b351SPierre Pronchery	leaq	-640(%rsp),%rsp
1011*4757b351SPierre Pronchery	vmovupd	%ymm3,0(%rsp)
1012*4757b351SPierre Pronchery	vmovupd	%ymm4,32(%rsp)
1013*4757b351SPierre Pronchery	vmovupd	%ymm5,64(%rsp)
1014*4757b351SPierre Pronchery	vmovupd	%ymm6,96(%rsp)
1015*4757b351SPierre Pronchery	vmovupd	%ymm7,128(%rsp)
1016*4757b351SPierre Pronchery	vmovupd	%ymm8,160(%rsp)
1017*4757b351SPierre Pronchery	vmovupd	%ymm9,192(%rsp)
1018*4757b351SPierre Pronchery	vmovupd	%ymm10,224(%rsp)
1019*4757b351SPierre Pronchery	vmovupd	%ymm11,256(%rsp)
1020*4757b351SPierre Pronchery	vmovupd	%ymm12,288(%rsp)
1021*4757b351SPierre Pronchery
1022*4757b351SPierre Pronchery
1023*4757b351SPierre Pronchery
1024*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm3
1025*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm4
1026*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm5
1027*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm6
1028*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm7
1029*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm8
1030*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm9
1031*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm10
1032*4757b351SPierre Pronchery	vpsrlq	$52,%ymm11,%ymm11
1033*4757b351SPierre Pronchery	vpsrlq	$52,%ymm12,%ymm12
1034*4757b351SPierre Pronchery
1035*4757b351SPierre Pronchery
1036*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
1037*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm13
1038*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm12,%ymm12
1039*4757b351SPierre Pronchery
1040*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
1041*4757b351SPierre Pronchery	vpermq	$3,%ymm10,%ymm13
1042*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm11,%ymm11
1043*4757b351SPierre Pronchery
1044*4757b351SPierre Pronchery	vpermq	$144,%ymm10,%ymm10
1045*4757b351SPierre Pronchery	vpermq	$3,%ymm9,%ymm13
1046*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm10,%ymm10
1047*4757b351SPierre Pronchery
1048*4757b351SPierre Pronchery	vpermq	$144,%ymm9,%ymm9
1049*4757b351SPierre Pronchery	vpermq	$3,%ymm8,%ymm13
1050*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm9,%ymm9
1051*4757b351SPierre Pronchery
1052*4757b351SPierre Pronchery	vpermq	$144,%ymm8,%ymm8
1053*4757b351SPierre Pronchery	vpermq	$3,%ymm7,%ymm13
1054*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm8,%ymm8
1055*4757b351SPierre Pronchery
1056*4757b351SPierre Pronchery	vpermq	$144,%ymm7,%ymm7
1057*4757b351SPierre Pronchery	vpermq	$3,%ymm6,%ymm13
1058*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm7,%ymm7
1059*4757b351SPierre Pronchery
1060*4757b351SPierre Pronchery	vpermq	$144,%ymm6,%ymm6
1061*4757b351SPierre Pronchery	vpermq	$3,%ymm5,%ymm13
1062*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm6,%ymm6
1063*4757b351SPierre Pronchery
1064*4757b351SPierre Pronchery	vpermq	$144,%ymm5,%ymm5
1065*4757b351SPierre Pronchery	vpermq	$3,%ymm4,%ymm13
1066*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm5,%ymm5
1067*4757b351SPierre Pronchery
1068*4757b351SPierre Pronchery	vpermq	$144,%ymm4,%ymm4
1069*4757b351SPierre Pronchery	vpermq	$3,%ymm3,%ymm13
1070*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm4,%ymm4
1071*4757b351SPierre Pronchery
1072*4757b351SPierre Pronchery	vpermq	$144,%ymm3,%ymm3
1073*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm3,%ymm3
1074*4757b351SPierre Pronchery
1075*4757b351SPierre Pronchery	vmovupd	%ymm3,320(%rsp)
1076*4757b351SPierre Pronchery	vmovupd	%ymm4,352(%rsp)
1077*4757b351SPierre Pronchery	vmovupd	%ymm5,384(%rsp)
1078*4757b351SPierre Pronchery	vmovupd	%ymm6,416(%rsp)
1079*4757b351SPierre Pronchery	vmovupd	%ymm7,448(%rsp)
1080*4757b351SPierre Pronchery	vmovupd	%ymm8,480(%rsp)
1081*4757b351SPierre Pronchery	vmovupd	%ymm9,512(%rsp)
1082*4757b351SPierre Pronchery	vmovupd	%ymm10,544(%rsp)
1083*4757b351SPierre Pronchery	vmovupd	%ymm11,576(%rsp)
1084*4757b351SPierre Pronchery	vmovupd	%ymm12,608(%rsp)
1085*4757b351SPierre Pronchery
1086*4757b351SPierre Pronchery	vmovupd	0(%rsp),%ymm3
1087*4757b351SPierre Pronchery	vmovupd	32(%rsp),%ymm4
1088*4757b351SPierre Pronchery	vmovupd	64(%rsp),%ymm5
1089*4757b351SPierre Pronchery	vmovupd	96(%rsp),%ymm6
1090*4757b351SPierre Pronchery	vmovupd	128(%rsp),%ymm7
1091*4757b351SPierre Pronchery	vmovupd	160(%rsp),%ymm8
1092*4757b351SPierre Pronchery	vmovupd	192(%rsp),%ymm9
1093*4757b351SPierre Pronchery	vmovupd	224(%rsp),%ymm10
1094*4757b351SPierre Pronchery	vmovupd	256(%rsp),%ymm11
1095*4757b351SPierre Pronchery	vmovupd	288(%rsp),%ymm12
1096*4757b351SPierre Pronchery
1097*4757b351SPierre Pronchery
1098*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1099*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1100*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1101*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1102*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1103*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1104*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1105*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1106*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
1107*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
1108*4757b351SPierre Pronchery
1109*4757b351SPierre Pronchery
1110*4757b351SPierre Pronchery	vpaddq	320(%rsp),%ymm3,%ymm3
1111*4757b351SPierre Pronchery	vpaddq	352(%rsp),%ymm4,%ymm4
1112*4757b351SPierre Pronchery	vpaddq	384(%rsp),%ymm5,%ymm5
1113*4757b351SPierre Pronchery	vpaddq	416(%rsp),%ymm6,%ymm6
1114*4757b351SPierre Pronchery	vpaddq	448(%rsp),%ymm7,%ymm7
1115*4757b351SPierre Pronchery	vpaddq	480(%rsp),%ymm8,%ymm8
1116*4757b351SPierre Pronchery	vpaddq	512(%rsp),%ymm9,%ymm9
1117*4757b351SPierre Pronchery	vpaddq	544(%rsp),%ymm10,%ymm10
1118*4757b351SPierre Pronchery	vpaddq	576(%rsp),%ymm11,%ymm11
1119*4757b351SPierre Pronchery	vpaddq	608(%rsp),%ymm12,%ymm12
1120*4757b351SPierre Pronchery
1121*4757b351SPierre Pronchery	leaq	640(%rsp),%rsp
1122*4757b351SPierre Pronchery
1123*4757b351SPierre Pronchery
1124*4757b351SPierre Pronchery
1125*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm13
1126*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r14d
1127*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm13
1128*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
1129*4757b351SPierre Pronchery	shlb	$4,%r13b
1130*4757b351SPierre Pronchery	orb	%r13b,%r14b
1131*4757b351SPierre Pronchery
1132*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm13
1133*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
1134*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm13
1135*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
1136*4757b351SPierre Pronchery	shlb	$4,%r12b
1137*4757b351SPierre Pronchery	orb	%r12b,%r13b
1138*4757b351SPierre Pronchery
1139*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm13
1140*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
1141*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
1142*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1143*4757b351SPierre Pronchery	shlb	$4,%r11b
1144*4757b351SPierre Pronchery	orb	%r11b,%r12b
1145*4757b351SPierre Pronchery
1146*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm13
1147*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1148*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm13
1149*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
1150*4757b351SPierre Pronchery	shlb	$4,%r10b
1151*4757b351SPierre Pronchery	orb	%r10b,%r11b
1152*4757b351SPierre Pronchery
1153*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm11,%ymm13
1154*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
1155*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm12,%ymm13
1156*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
1157*4757b351SPierre Pronchery	shlb	$4,%r9b
1158*4757b351SPierre Pronchery	orb	%r9b,%r10b
1159*4757b351SPierre Pronchery
1160*4757b351SPierre Pronchery	addb	%r14b,%r14b
1161*4757b351SPierre Pronchery	adcb	%r13b,%r13b
1162*4757b351SPierre Pronchery	adcb	%r12b,%r12b
1163*4757b351SPierre Pronchery	adcb	%r11b,%r11b
1164*4757b351SPierre Pronchery	adcb	%r10b,%r10b
1165*4757b351SPierre Pronchery
1166*4757b351SPierre Pronchery
1167*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm13
1168*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
1169*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm13
1170*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
1171*4757b351SPierre Pronchery	shlb	$4,%r8b
1172*4757b351SPierre Pronchery	orb	%r8b,%r9b
1173*4757b351SPierre Pronchery
1174*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm13
1175*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
1176*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm13
1177*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
1178*4757b351SPierre Pronchery	shlb	$4,%dl
1179*4757b351SPierre Pronchery	orb	%dl,%r8b
1180*4757b351SPierre Pronchery
1181*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm13
1182*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
1183*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
1184*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1185*4757b351SPierre Pronchery	shlb	$4,%cl
1186*4757b351SPierre Pronchery	orb	%cl,%dl
1187*4757b351SPierre Pronchery
1188*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm13
1189*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1190*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm13
1191*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
1192*4757b351SPierre Pronchery	shlb	$4,%bl
1193*4757b351SPierre Pronchery	orb	%bl,%cl
1194*4757b351SPierre Pronchery
1195*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm11,%ymm13
1196*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
1197*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm12,%ymm13
1198*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%eax
1199*4757b351SPierre Pronchery	shlb	$4,%al
1200*4757b351SPierre Pronchery	orb	%al,%bl
1201*4757b351SPierre Pronchery
1202*4757b351SPierre Pronchery	addb	%r9b,%r14b
1203*4757b351SPierre Pronchery	adcb	%r8b,%r13b
1204*4757b351SPierre Pronchery	adcb	%dl,%r12b
1205*4757b351SPierre Pronchery	adcb	%cl,%r11b
1206*4757b351SPierre Pronchery	adcb	%bl,%r10b
1207*4757b351SPierre Pronchery
1208*4757b351SPierre Pronchery	xorb	%r9b,%r14b
1209*4757b351SPierre Pronchery	xorb	%r8b,%r13b
1210*4757b351SPierre Pronchery	xorb	%dl,%r12b
1211*4757b351SPierre Pronchery	xorb	%cl,%r11b
1212*4757b351SPierre Pronchery	xorb	%bl,%r10b
1213*4757b351SPierre Pronchery
1214*4757b351SPierre Pronchery	pushq	%r9
1215*4757b351SPierre Pronchery	pushq	%r8
1216*4757b351SPierre Pronchery
1217*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%r8
1218*4757b351SPierre Pronchery
1219*4757b351SPierre Pronchery	movb	%r14b,%r9b
1220*4757b351SPierre Pronchery	andq	$0xf,%r14
1221*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm13
1222*4757b351SPierre Pronchery	shlq	$5,%r14
1223*4757b351SPierre Pronchery	vmovapd	(%r8,%r14,1),%ymm14
1224*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm3,%ymm3
1225*4757b351SPierre Pronchery
1226*4757b351SPierre Pronchery	shrb	$4,%r9b
1227*4757b351SPierre Pronchery	andq	$0xf,%r9
1228*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm13
1229*4757b351SPierre Pronchery	shlq	$5,%r9
1230*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1231*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm4,%ymm4
1232*4757b351SPierre Pronchery
1233*4757b351SPierre Pronchery	movb	%r13b,%r9b
1234*4757b351SPierre Pronchery	andq	$0xf,%r13
1235*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm13
1236*4757b351SPierre Pronchery	shlq	$5,%r13
1237*4757b351SPierre Pronchery	vmovapd	(%r8,%r13,1),%ymm14
1238*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm5,%ymm5
1239*4757b351SPierre Pronchery
1240*4757b351SPierre Pronchery	shrb	$4,%r9b
1241*4757b351SPierre Pronchery	andq	$0xf,%r9
1242*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm13
1243*4757b351SPierre Pronchery	shlq	$5,%r9
1244*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1245*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm6,%ymm6
1246*4757b351SPierre Pronchery
1247*4757b351SPierre Pronchery	movb	%r12b,%r9b
1248*4757b351SPierre Pronchery	andq	$0xf,%r12
1249*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm13
1250*4757b351SPierre Pronchery	shlq	$5,%r12
1251*4757b351SPierre Pronchery	vmovapd	(%r8,%r12,1),%ymm14
1252*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm7,%ymm7
1253*4757b351SPierre Pronchery
1254*4757b351SPierre Pronchery	shrb	$4,%r9b
1255*4757b351SPierre Pronchery	andq	$0xf,%r9
1256*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm13
1257*4757b351SPierre Pronchery	shlq	$5,%r9
1258*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1259*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm8,%ymm8
1260*4757b351SPierre Pronchery
1261*4757b351SPierre Pronchery	movb	%r11b,%r9b
1262*4757b351SPierre Pronchery	andq	$0xf,%r11
1263*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm13
1264*4757b351SPierre Pronchery	shlq	$5,%r11
1265*4757b351SPierre Pronchery	vmovapd	(%r8,%r11,1),%ymm14
1266*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm9,%ymm9
1267*4757b351SPierre Pronchery
1268*4757b351SPierre Pronchery	shrb	$4,%r9b
1269*4757b351SPierre Pronchery	andq	$0xf,%r9
1270*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm13
1271*4757b351SPierre Pronchery	shlq	$5,%r9
1272*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1273*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm10,%ymm10
1274*4757b351SPierre Pronchery
1275*4757b351SPierre Pronchery	movb	%r10b,%r9b
1276*4757b351SPierre Pronchery	andq	$0xf,%r10
1277*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm11,%ymm13
1278*4757b351SPierre Pronchery	shlq	$5,%r10
1279*4757b351SPierre Pronchery	vmovapd	(%r8,%r10,1),%ymm14
1280*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm11,%ymm11
1281*4757b351SPierre Pronchery
1282*4757b351SPierre Pronchery	shrb	$4,%r9b
1283*4757b351SPierre Pronchery	andq	$0xf,%r9
1284*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm12,%ymm13
1285*4757b351SPierre Pronchery	shlq	$5,%r9
1286*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1287*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm12,%ymm12
1288*4757b351SPierre Pronchery
1289*4757b351SPierre Pronchery	popq	%r8
1290*4757b351SPierre Pronchery	popq	%r9
1291*4757b351SPierre Pronchery
1292*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1293*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1294*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1295*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1296*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1297*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1298*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1299*4757b351SPierre Pronchery
1300*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1301*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
1302*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
1303*4757b351SPierre Pronchery
1304*4757b351SPierre Pronchery	popq	%r8
1305*4757b351SPierre Pronchery	popq	%rcx
1306*4757b351SPierre Pronchery	popq	%rsi
1307*4757b351SPierre Pronchery	popq	%r11
1308*4757b351SPierre Pronchery
1309*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rdi)
1310*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rdi)
1311*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rdi)
1312*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rdi)
1313*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rdi)
1314*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rdi)
1315*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rdi)
1316*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rdi)
1317*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rdi)
1318*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rdi)
1319*4757b351SPierre Pronchery
1320*4757b351SPierre Pronchery	xorl	%r15d,%r15d
1321*4757b351SPierre Pronchery
1322*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
1323*4757b351SPierre Pronchery
1324*4757b351SPierre Pronchery	movl	$40,%ebx
1325*4757b351SPierre Pronchery
1326*4757b351SPierre Pronchery	vpxor	%ymm0,%ymm0,%ymm0
1327*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
1328*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
1329*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
1330*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
1331*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
1332*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
1333*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
1334*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm10
1335*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm11
1336*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm12
1337*4757b351SPierre Pronchery.align	32
1338*4757b351SPierre Pronchery.Lloop40_1:
1339*4757b351SPierre Pronchery	movq	0(%r11),%r13
1340*4757b351SPierre Pronchery
1341*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
1342*4757b351SPierre Pronchery	movq	320(%rsi),%rdx
1343*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
1344*4757b351SPierre Pronchery	addq	%r13,%r9
1345*4757b351SPierre Pronchery	movq	%r12,%r10
1346*4757b351SPierre Pronchery	adcq	$0,%r10
1347*4757b351SPierre Pronchery
1348*4757b351SPierre Pronchery	movq	8(%r8),%r13
1349*4757b351SPierre Pronchery	imulq	%r9,%r13
1350*4757b351SPierre Pronchery	andq	%rax,%r13
1351*4757b351SPierre Pronchery
1352*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
1353*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
1354*4757b351SPierre Pronchery	movq	320(%rcx),%rdx
1355*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
1356*4757b351SPierre Pronchery	addq	%r13,%r9
1357*4757b351SPierre Pronchery	adcq	%r12,%r10
1358*4757b351SPierre Pronchery
1359*4757b351SPierre Pronchery	shrq	$52,%r9
1360*4757b351SPierre Pronchery	salq	$12,%r10
1361*4757b351SPierre Pronchery	orq	%r10,%r9
1362*4757b351SPierre Pronchery
1363*4757b351SPierre Pronchery	leaq	-328(%rsp),%rsp
1364*4757b351SPierre Pronchery
1365*4757b351SPierre Pronchery{vex}	vpmadd52luq	320(%rsi),%ymm1,%ymm3
1366*4757b351SPierre Pronchery{vex}	vpmadd52luq	352(%rsi),%ymm1,%ymm4
1367*4757b351SPierre Pronchery{vex}	vpmadd52luq	384(%rsi),%ymm1,%ymm5
1368*4757b351SPierre Pronchery{vex}	vpmadd52luq	416(%rsi),%ymm1,%ymm6
1369*4757b351SPierre Pronchery{vex}	vpmadd52luq	448(%rsi),%ymm1,%ymm7
1370*4757b351SPierre Pronchery{vex}	vpmadd52luq	480(%rsi),%ymm1,%ymm8
1371*4757b351SPierre Pronchery{vex}	vpmadd52luq	512(%rsi),%ymm1,%ymm9
1372*4757b351SPierre Pronchery{vex}	vpmadd52luq	544(%rsi),%ymm1,%ymm10
1373*4757b351SPierre Pronchery{vex}	vpmadd52luq	576(%rsi),%ymm1,%ymm11
1374*4757b351SPierre Pronchery{vex}	vpmadd52luq	608(%rsi),%ymm1,%ymm12
1375*4757b351SPierre Pronchery
1376*4757b351SPierre Pronchery{vex}	vpmadd52luq	320(%rcx),%ymm2,%ymm3
1377*4757b351SPierre Pronchery{vex}	vpmadd52luq	352(%rcx),%ymm2,%ymm4
1378*4757b351SPierre Pronchery{vex}	vpmadd52luq	384(%rcx),%ymm2,%ymm5
1379*4757b351SPierre Pronchery{vex}	vpmadd52luq	416(%rcx),%ymm2,%ymm6
1380*4757b351SPierre Pronchery{vex}	vpmadd52luq	448(%rcx),%ymm2,%ymm7
1381*4757b351SPierre Pronchery{vex}	vpmadd52luq	480(%rcx),%ymm2,%ymm8
1382*4757b351SPierre Pronchery{vex}	vpmadd52luq	512(%rcx),%ymm2,%ymm9
1383*4757b351SPierre Pronchery{vex}	vpmadd52luq	544(%rcx),%ymm2,%ymm10
1384*4757b351SPierre Pronchery{vex}	vpmadd52luq	576(%rcx),%ymm2,%ymm11
1385*4757b351SPierre Pronchery{vex}	vpmadd52luq	608(%rcx),%ymm2,%ymm12
1386*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
1387*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
1388*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
1389*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
1390*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
1391*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
1392*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
1393*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
1394*4757b351SPierre Pronchery	vmovdqu	%ymm11,256(%rsp)
1395*4757b351SPierre Pronchery	vmovdqu	%ymm12,288(%rsp)
1396*4757b351SPierre Pronchery	movq	$0,320(%rsp)
1397*4757b351SPierre Pronchery
1398*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
1399*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
1400*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
1401*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
1402*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
1403*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
1404*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
1405*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
1406*4757b351SPierre Pronchery	vmovdqu	264(%rsp),%ymm11
1407*4757b351SPierre Pronchery	vmovdqu	296(%rsp),%ymm12
1408*4757b351SPierre Pronchery
1409*4757b351SPierre Pronchery	addq	8(%rsp),%r9
1410*4757b351SPierre Pronchery
1411*4757b351SPierre Pronchery{vex}	vpmadd52huq	320(%rsi),%ymm1,%ymm3
1412*4757b351SPierre Pronchery{vex}	vpmadd52huq	352(%rsi),%ymm1,%ymm4
1413*4757b351SPierre Pronchery{vex}	vpmadd52huq	384(%rsi),%ymm1,%ymm5
1414*4757b351SPierre Pronchery{vex}	vpmadd52huq	416(%rsi),%ymm1,%ymm6
1415*4757b351SPierre Pronchery{vex}	vpmadd52huq	448(%rsi),%ymm1,%ymm7
1416*4757b351SPierre Pronchery{vex}	vpmadd52huq	480(%rsi),%ymm1,%ymm8
1417*4757b351SPierre Pronchery{vex}	vpmadd52huq	512(%rsi),%ymm1,%ymm9
1418*4757b351SPierre Pronchery{vex}	vpmadd52huq	544(%rsi),%ymm1,%ymm10
1419*4757b351SPierre Pronchery{vex}	vpmadd52huq	576(%rsi),%ymm1,%ymm11
1420*4757b351SPierre Pronchery{vex}	vpmadd52huq	608(%rsi),%ymm1,%ymm12
1421*4757b351SPierre Pronchery
1422*4757b351SPierre Pronchery{vex}	vpmadd52huq	320(%rcx),%ymm2,%ymm3
1423*4757b351SPierre Pronchery{vex}	vpmadd52huq	352(%rcx),%ymm2,%ymm4
1424*4757b351SPierre Pronchery{vex}	vpmadd52huq	384(%rcx),%ymm2,%ymm5
1425*4757b351SPierre Pronchery{vex}	vpmadd52huq	416(%rcx),%ymm2,%ymm6
1426*4757b351SPierre Pronchery{vex}	vpmadd52huq	448(%rcx),%ymm2,%ymm7
1427*4757b351SPierre Pronchery{vex}	vpmadd52huq	480(%rcx),%ymm2,%ymm8
1428*4757b351SPierre Pronchery{vex}	vpmadd52huq	512(%rcx),%ymm2,%ymm9
1429*4757b351SPierre Pronchery{vex}	vpmadd52huq	544(%rcx),%ymm2,%ymm10
1430*4757b351SPierre Pronchery{vex}	vpmadd52huq	576(%rcx),%ymm2,%ymm11
1431*4757b351SPierre Pronchery{vex}	vpmadd52huq	608(%rcx),%ymm2,%ymm12
1432*4757b351SPierre Pronchery	leaq	328(%rsp),%rsp
1433*4757b351SPierre Pronchery	leaq	8(%r11),%r11
1434*4757b351SPierre Pronchery	decl	%ebx
1435*4757b351SPierre Pronchery	jne	.Lloop40_1
1436*4757b351SPierre Pronchery
1437*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
1438*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
1439*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
1440*4757b351SPierre Pronchery
1441*4757b351SPierre Pronchery	leaq	-640(%rsp),%rsp
1442*4757b351SPierre Pronchery	vmovupd	%ymm3,0(%rsp)
1443*4757b351SPierre Pronchery	vmovupd	%ymm4,32(%rsp)
1444*4757b351SPierre Pronchery	vmovupd	%ymm5,64(%rsp)
1445*4757b351SPierre Pronchery	vmovupd	%ymm6,96(%rsp)
1446*4757b351SPierre Pronchery	vmovupd	%ymm7,128(%rsp)
1447*4757b351SPierre Pronchery	vmovupd	%ymm8,160(%rsp)
1448*4757b351SPierre Pronchery	vmovupd	%ymm9,192(%rsp)
1449*4757b351SPierre Pronchery	vmovupd	%ymm10,224(%rsp)
1450*4757b351SPierre Pronchery	vmovupd	%ymm11,256(%rsp)
1451*4757b351SPierre Pronchery	vmovupd	%ymm12,288(%rsp)
1452*4757b351SPierre Pronchery
1453*4757b351SPierre Pronchery
1454*4757b351SPierre Pronchery
1455*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm3
1456*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm4
1457*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm5
1458*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm6
1459*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm7
1460*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm8
1461*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm9
1462*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm10
1463*4757b351SPierre Pronchery	vpsrlq	$52,%ymm11,%ymm11
1464*4757b351SPierre Pronchery	vpsrlq	$52,%ymm12,%ymm12
1465*4757b351SPierre Pronchery
1466*4757b351SPierre Pronchery
1467*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
1468*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm13
1469*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm12,%ymm12
1470*4757b351SPierre Pronchery
1471*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
1472*4757b351SPierre Pronchery	vpermq	$3,%ymm10,%ymm13
1473*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm11,%ymm11
1474*4757b351SPierre Pronchery
1475*4757b351SPierre Pronchery	vpermq	$144,%ymm10,%ymm10
1476*4757b351SPierre Pronchery	vpermq	$3,%ymm9,%ymm13
1477*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm10,%ymm10
1478*4757b351SPierre Pronchery
1479*4757b351SPierre Pronchery	vpermq	$144,%ymm9,%ymm9
1480*4757b351SPierre Pronchery	vpermq	$3,%ymm8,%ymm13
1481*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm9,%ymm9
1482*4757b351SPierre Pronchery
1483*4757b351SPierre Pronchery	vpermq	$144,%ymm8,%ymm8
1484*4757b351SPierre Pronchery	vpermq	$3,%ymm7,%ymm13
1485*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm8,%ymm8
1486*4757b351SPierre Pronchery
1487*4757b351SPierre Pronchery	vpermq	$144,%ymm7,%ymm7
1488*4757b351SPierre Pronchery	vpermq	$3,%ymm6,%ymm13
1489*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm7,%ymm7
1490*4757b351SPierre Pronchery
1491*4757b351SPierre Pronchery	vpermq	$144,%ymm6,%ymm6
1492*4757b351SPierre Pronchery	vpermq	$3,%ymm5,%ymm13
1493*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm6,%ymm6
1494*4757b351SPierre Pronchery
1495*4757b351SPierre Pronchery	vpermq	$144,%ymm5,%ymm5
1496*4757b351SPierre Pronchery	vpermq	$3,%ymm4,%ymm13
1497*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm5,%ymm5
1498*4757b351SPierre Pronchery
1499*4757b351SPierre Pronchery	vpermq	$144,%ymm4,%ymm4
1500*4757b351SPierre Pronchery	vpermq	$3,%ymm3,%ymm13
1501*4757b351SPierre Pronchery	vblendpd	$1,%ymm13,%ymm4,%ymm4
1502*4757b351SPierre Pronchery
1503*4757b351SPierre Pronchery	vpermq	$144,%ymm3,%ymm3
1504*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm3,%ymm3
1505*4757b351SPierre Pronchery
1506*4757b351SPierre Pronchery	vmovupd	%ymm3,320(%rsp)
1507*4757b351SPierre Pronchery	vmovupd	%ymm4,352(%rsp)
1508*4757b351SPierre Pronchery	vmovupd	%ymm5,384(%rsp)
1509*4757b351SPierre Pronchery	vmovupd	%ymm6,416(%rsp)
1510*4757b351SPierre Pronchery	vmovupd	%ymm7,448(%rsp)
1511*4757b351SPierre Pronchery	vmovupd	%ymm8,480(%rsp)
1512*4757b351SPierre Pronchery	vmovupd	%ymm9,512(%rsp)
1513*4757b351SPierre Pronchery	vmovupd	%ymm10,544(%rsp)
1514*4757b351SPierre Pronchery	vmovupd	%ymm11,576(%rsp)
1515*4757b351SPierre Pronchery	vmovupd	%ymm12,608(%rsp)
1516*4757b351SPierre Pronchery
1517*4757b351SPierre Pronchery	vmovupd	0(%rsp),%ymm3
1518*4757b351SPierre Pronchery	vmovupd	32(%rsp),%ymm4
1519*4757b351SPierre Pronchery	vmovupd	64(%rsp),%ymm5
1520*4757b351SPierre Pronchery	vmovupd	96(%rsp),%ymm6
1521*4757b351SPierre Pronchery	vmovupd	128(%rsp),%ymm7
1522*4757b351SPierre Pronchery	vmovupd	160(%rsp),%ymm8
1523*4757b351SPierre Pronchery	vmovupd	192(%rsp),%ymm9
1524*4757b351SPierre Pronchery	vmovupd	224(%rsp),%ymm10
1525*4757b351SPierre Pronchery	vmovupd	256(%rsp),%ymm11
1526*4757b351SPierre Pronchery	vmovupd	288(%rsp),%ymm12
1527*4757b351SPierre Pronchery
1528*4757b351SPierre Pronchery
1529*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1530*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1531*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1532*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1533*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1534*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1535*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1536*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1537*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
1538*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
1539*4757b351SPierre Pronchery
1540*4757b351SPierre Pronchery
1541*4757b351SPierre Pronchery	vpaddq	320(%rsp),%ymm3,%ymm3
1542*4757b351SPierre Pronchery	vpaddq	352(%rsp),%ymm4,%ymm4
1543*4757b351SPierre Pronchery	vpaddq	384(%rsp),%ymm5,%ymm5
1544*4757b351SPierre Pronchery	vpaddq	416(%rsp),%ymm6,%ymm6
1545*4757b351SPierre Pronchery	vpaddq	448(%rsp),%ymm7,%ymm7
1546*4757b351SPierre Pronchery	vpaddq	480(%rsp),%ymm8,%ymm8
1547*4757b351SPierre Pronchery	vpaddq	512(%rsp),%ymm9,%ymm9
1548*4757b351SPierre Pronchery	vpaddq	544(%rsp),%ymm10,%ymm10
1549*4757b351SPierre Pronchery	vpaddq	576(%rsp),%ymm11,%ymm11
1550*4757b351SPierre Pronchery	vpaddq	608(%rsp),%ymm12,%ymm12
1551*4757b351SPierre Pronchery
1552*4757b351SPierre Pronchery	leaq	640(%rsp),%rsp
1553*4757b351SPierre Pronchery
1554*4757b351SPierre Pronchery
1555*4757b351SPierre Pronchery
1556*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm13
1557*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r14d
1558*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm13
1559*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
1560*4757b351SPierre Pronchery	shlb	$4,%r13b
1561*4757b351SPierre Pronchery	orb	%r13b,%r14b
1562*4757b351SPierre Pronchery
1563*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm13
1564*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r13d
1565*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm13
1566*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
1567*4757b351SPierre Pronchery	shlb	$4,%r12b
1568*4757b351SPierre Pronchery	orb	%r12b,%r13b
1569*4757b351SPierre Pronchery
1570*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm13
1571*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r12d
1572*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
1573*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1574*4757b351SPierre Pronchery	shlb	$4,%r11b
1575*4757b351SPierre Pronchery	orb	%r11b,%r12b
1576*4757b351SPierre Pronchery
1577*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm13
1578*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1579*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm13
1580*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
1581*4757b351SPierre Pronchery	shlb	$4,%r10b
1582*4757b351SPierre Pronchery	orb	%r10b,%r11b
1583*4757b351SPierre Pronchery
1584*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm11,%ymm13
1585*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r10d
1586*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm12,%ymm13
1587*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
1588*4757b351SPierre Pronchery	shlb	$4,%r9b
1589*4757b351SPierre Pronchery	orb	%r9b,%r10b
1590*4757b351SPierre Pronchery
1591*4757b351SPierre Pronchery	addb	%r14b,%r14b
1592*4757b351SPierre Pronchery	adcb	%r13b,%r13b
1593*4757b351SPierre Pronchery	adcb	%r12b,%r12b
1594*4757b351SPierre Pronchery	adcb	%r11b,%r11b
1595*4757b351SPierre Pronchery	adcb	%r10b,%r10b
1596*4757b351SPierre Pronchery
1597*4757b351SPierre Pronchery
1598*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm13
1599*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r9d
1600*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm13
1601*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
1602*4757b351SPierre Pronchery	shlb	$4,%r8b
1603*4757b351SPierre Pronchery	orb	%r8b,%r9b
1604*4757b351SPierre Pronchery
1605*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm13
1606*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r8d
1607*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm13
1608*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
1609*4757b351SPierre Pronchery	shlb	$4,%dl
1610*4757b351SPierre Pronchery	orb	%dl,%r8b
1611*4757b351SPierre Pronchery
1612*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm13
1613*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%edx
1614*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
1615*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1616*4757b351SPierre Pronchery	shlb	$4,%cl
1617*4757b351SPierre Pronchery	orb	%cl,%dl
1618*4757b351SPierre Pronchery
1619*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm13
1620*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1621*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm13
1622*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
1623*4757b351SPierre Pronchery	shlb	$4,%bl
1624*4757b351SPierre Pronchery	orb	%bl,%cl
1625*4757b351SPierre Pronchery
1626*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm11,%ymm13
1627*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ebx
1628*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm12,%ymm13
1629*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%eax
1630*4757b351SPierre Pronchery	shlb	$4,%al
1631*4757b351SPierre Pronchery	orb	%al,%bl
1632*4757b351SPierre Pronchery
1633*4757b351SPierre Pronchery	addb	%r9b,%r14b
1634*4757b351SPierre Pronchery	adcb	%r8b,%r13b
1635*4757b351SPierre Pronchery	adcb	%dl,%r12b
1636*4757b351SPierre Pronchery	adcb	%cl,%r11b
1637*4757b351SPierre Pronchery	adcb	%bl,%r10b
1638*4757b351SPierre Pronchery
1639*4757b351SPierre Pronchery	xorb	%r9b,%r14b
1640*4757b351SPierre Pronchery	xorb	%r8b,%r13b
1641*4757b351SPierre Pronchery	xorb	%dl,%r12b
1642*4757b351SPierre Pronchery	xorb	%cl,%r11b
1643*4757b351SPierre Pronchery	xorb	%bl,%r10b
1644*4757b351SPierre Pronchery
1645*4757b351SPierre Pronchery	pushq	%r9
1646*4757b351SPierre Pronchery	pushq	%r8
1647*4757b351SPierre Pronchery
1648*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%r8
1649*4757b351SPierre Pronchery
1650*4757b351SPierre Pronchery	movb	%r14b,%r9b
1651*4757b351SPierre Pronchery	andq	$0xf,%r14
1652*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm13
1653*4757b351SPierre Pronchery	shlq	$5,%r14
1654*4757b351SPierre Pronchery	vmovapd	(%r8,%r14,1),%ymm14
1655*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm3,%ymm3
1656*4757b351SPierre Pronchery
1657*4757b351SPierre Pronchery	shrb	$4,%r9b
1658*4757b351SPierre Pronchery	andq	$0xf,%r9
1659*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm13
1660*4757b351SPierre Pronchery	shlq	$5,%r9
1661*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1662*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm4,%ymm4
1663*4757b351SPierre Pronchery
1664*4757b351SPierre Pronchery	movb	%r13b,%r9b
1665*4757b351SPierre Pronchery	andq	$0xf,%r13
1666*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm13
1667*4757b351SPierre Pronchery	shlq	$5,%r13
1668*4757b351SPierre Pronchery	vmovapd	(%r8,%r13,1),%ymm14
1669*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm5,%ymm5
1670*4757b351SPierre Pronchery
1671*4757b351SPierre Pronchery	shrb	$4,%r9b
1672*4757b351SPierre Pronchery	andq	$0xf,%r9
1673*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm13
1674*4757b351SPierre Pronchery	shlq	$5,%r9
1675*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1676*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm6,%ymm6
1677*4757b351SPierre Pronchery
1678*4757b351SPierre Pronchery	movb	%r12b,%r9b
1679*4757b351SPierre Pronchery	andq	$0xf,%r12
1680*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm13
1681*4757b351SPierre Pronchery	shlq	$5,%r12
1682*4757b351SPierre Pronchery	vmovapd	(%r8,%r12,1),%ymm14
1683*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm7,%ymm7
1684*4757b351SPierre Pronchery
1685*4757b351SPierre Pronchery	shrb	$4,%r9b
1686*4757b351SPierre Pronchery	andq	$0xf,%r9
1687*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm13
1688*4757b351SPierre Pronchery	shlq	$5,%r9
1689*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1690*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm8,%ymm8
1691*4757b351SPierre Pronchery
1692*4757b351SPierre Pronchery	movb	%r11b,%r9b
1693*4757b351SPierre Pronchery	andq	$0xf,%r11
1694*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm13
1695*4757b351SPierre Pronchery	shlq	$5,%r11
1696*4757b351SPierre Pronchery	vmovapd	(%r8,%r11,1),%ymm14
1697*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm9,%ymm9
1698*4757b351SPierre Pronchery
1699*4757b351SPierre Pronchery	shrb	$4,%r9b
1700*4757b351SPierre Pronchery	andq	$0xf,%r9
1701*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm13
1702*4757b351SPierre Pronchery	shlq	$5,%r9
1703*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1704*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm10,%ymm10
1705*4757b351SPierre Pronchery
1706*4757b351SPierre Pronchery	movb	%r10b,%r9b
1707*4757b351SPierre Pronchery	andq	$0xf,%r10
1708*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm11,%ymm13
1709*4757b351SPierre Pronchery	shlq	$5,%r10
1710*4757b351SPierre Pronchery	vmovapd	(%r8,%r10,1),%ymm14
1711*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm11,%ymm11
1712*4757b351SPierre Pronchery
1713*4757b351SPierre Pronchery	shrb	$4,%r9b
1714*4757b351SPierre Pronchery	andq	$0xf,%r9
1715*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm12,%ymm13
1716*4757b351SPierre Pronchery	shlq	$5,%r9
1717*4757b351SPierre Pronchery	vmovapd	(%r8,%r9,1),%ymm14
1718*4757b351SPierre Pronchery	vblendvpd	%ymm14,%ymm13,%ymm12,%ymm12
1719*4757b351SPierre Pronchery
1720*4757b351SPierre Pronchery	popq	%r8
1721*4757b351SPierre Pronchery	popq	%r9
1722*4757b351SPierre Pronchery
1723*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1724*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1725*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1726*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1727*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1728*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1729*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1730*4757b351SPierre Pronchery
1731*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1732*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm11,%ymm11
1733*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm12,%ymm12
1734*4757b351SPierre Pronchery
1735*4757b351SPierre Pronchery	vmovdqu	%ymm3,320(%rdi)
1736*4757b351SPierre Pronchery	vmovdqu	%ymm4,352(%rdi)
1737*4757b351SPierre Pronchery	vmovdqu	%ymm5,384(%rdi)
1738*4757b351SPierre Pronchery	vmovdqu	%ymm6,416(%rdi)
1739*4757b351SPierre Pronchery	vmovdqu	%ymm7,448(%rdi)
1740*4757b351SPierre Pronchery	vmovdqu	%ymm8,480(%rdi)
1741*4757b351SPierre Pronchery	vmovdqu	%ymm9,512(%rdi)
1742*4757b351SPierre Pronchery	vmovdqu	%ymm10,544(%rdi)
1743*4757b351SPierre Pronchery	vmovdqu	%ymm11,576(%rdi)
1744*4757b351SPierre Pronchery	vmovdqu	%ymm12,608(%rdi)
1745*4757b351SPierre Pronchery
1746*4757b351SPierre Pronchery	vzeroupper
1747*4757b351SPierre Pronchery	leaq	(%rsp),%rax
1748*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
1749*4757b351SPierre Pronchery	movq	0(%rax),%r15
1750*4757b351SPierre Pronchery.cfi_restore	%r15
1751*4757b351SPierre Pronchery	movq	8(%rax),%r14
1752*4757b351SPierre Pronchery.cfi_restore	%r14
1753*4757b351SPierre Pronchery	movq	16(%rax),%r13
1754*4757b351SPierre Pronchery.cfi_restore	%r13
1755*4757b351SPierre Pronchery	movq	24(%rax),%r12
1756*4757b351SPierre Pronchery.cfi_restore	%r12
1757*4757b351SPierre Pronchery	movq	32(%rax),%rbp
1758*4757b351SPierre Pronchery.cfi_restore	%rbp
1759*4757b351SPierre Pronchery	movq	40(%rax),%rbx
1760*4757b351SPierre Pronchery.cfi_restore	%rbx
1761*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
1762*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
1763*4757b351SPierre Pronchery.Lossl_rsaz_amm52x40_x2_avxifma256_epilogue:
1764*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1765*4757b351SPierre Pronchery.cfi_endproc
1766*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x40_x2_avxifma256, .-ossl_rsaz_amm52x40_x2_avxifma256
1767*4757b351SPierre Pronchery.text
1768*4757b351SPierre Pronchery
1769*4757b351SPierre Pronchery.align	32
1770*4757b351SPierre Pronchery.globl	ossl_extract_multiplier_2x40_win5_avx
1771*4757b351SPierre Pronchery.type	ossl_extract_multiplier_2x40_win5_avx,@function
1772*4757b351SPierre Proncheryossl_extract_multiplier_2x40_win5_avx:
1773*4757b351SPierre Pronchery.cfi_startproc
1774*4757b351SPierre Pronchery.byte	243,15,30,250
1775*4757b351SPierre Pronchery	vmovapd	.Lones(%rip),%ymm14
1776*4757b351SPierre Pronchery	vmovq	%rdx,%xmm10
1777*4757b351SPierre Pronchery	vpbroadcastq	%xmm10,%ymm12
1778*4757b351SPierre Pronchery	vmovq	%rcx,%xmm10
1779*4757b351SPierre Pronchery	vpbroadcastq	%xmm10,%ymm13
1780*4757b351SPierre Pronchery	leaq	20480(%rsi),%rax
1781*4757b351SPierre Pronchery
1782*4757b351SPierre Pronchery
1783*4757b351SPierre Pronchery	movq	%rsi,%r10
1784*4757b351SPierre Pronchery
1785*4757b351SPierre Pronchery
1786*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm0,%xmm0
1787*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm1
1788*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm2
1789*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
1790*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
1791*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
1792*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
1793*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
1794*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
1795*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
1796*4757b351SPierre Pronchery	vpxor	%ymm11,%ymm11,%ymm11
1797*4757b351SPierre Pronchery.align	32
1798*4757b351SPierre Pronchery.Lloop_0:
1799*4757b351SPierre Pronchery	vpcmpeqq	%ymm11,%ymm12,%ymm15
1800*4757b351SPierre Pronchery	vmovdqu	0(%rsi),%ymm10
1801*4757b351SPierre Pronchery
1802*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm0,%ymm0
1803*4757b351SPierre Pronchery	vmovdqu	32(%rsi),%ymm10
1804*4757b351SPierre Pronchery
1805*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm1,%ymm1
1806*4757b351SPierre Pronchery	vmovdqu	64(%rsi),%ymm10
1807*4757b351SPierre Pronchery
1808*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm2,%ymm2
1809*4757b351SPierre Pronchery	vmovdqu	96(%rsi),%ymm10
1810*4757b351SPierre Pronchery
1811*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm3,%ymm3
1812*4757b351SPierre Pronchery	vmovdqu	128(%rsi),%ymm10
1813*4757b351SPierre Pronchery
1814*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm4,%ymm4
1815*4757b351SPierre Pronchery	vmovdqu	160(%rsi),%ymm10
1816*4757b351SPierre Pronchery
1817*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm5,%ymm5
1818*4757b351SPierre Pronchery	vmovdqu	192(%rsi),%ymm10
1819*4757b351SPierre Pronchery
1820*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm6,%ymm6
1821*4757b351SPierre Pronchery	vmovdqu	224(%rsi),%ymm10
1822*4757b351SPierre Pronchery
1823*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm7,%ymm7
1824*4757b351SPierre Pronchery	vmovdqu	256(%rsi),%ymm10
1825*4757b351SPierre Pronchery
1826*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm8,%ymm8
1827*4757b351SPierre Pronchery	vmovdqu	288(%rsi),%ymm10
1828*4757b351SPierre Pronchery
1829*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm9,%ymm9
1830*4757b351SPierre Pronchery	vpaddq	%ymm14,%ymm11,%ymm11
1831*4757b351SPierre Pronchery	addq	$640,%rsi
1832*4757b351SPierre Pronchery	cmpq	%rsi,%rax
1833*4757b351SPierre Pronchery	jne	.Lloop_0
1834*4757b351SPierre Pronchery	vmovdqu	%ymm0,0(%rdi)
1835*4757b351SPierre Pronchery	vmovdqu	%ymm1,32(%rdi)
1836*4757b351SPierre Pronchery	vmovdqu	%ymm2,64(%rdi)
1837*4757b351SPierre Pronchery	vmovdqu	%ymm3,96(%rdi)
1838*4757b351SPierre Pronchery	vmovdqu	%ymm4,128(%rdi)
1839*4757b351SPierre Pronchery	vmovdqu	%ymm5,160(%rdi)
1840*4757b351SPierre Pronchery	vmovdqu	%ymm6,192(%rdi)
1841*4757b351SPierre Pronchery	vmovdqu	%ymm7,224(%rdi)
1842*4757b351SPierre Pronchery	vmovdqu	%ymm8,256(%rdi)
1843*4757b351SPierre Pronchery	vmovdqu	%ymm9,288(%rdi)
1844*4757b351SPierre Pronchery	movq	%r10,%rsi
1845*4757b351SPierre Pronchery	vpxor	%ymm11,%ymm11,%ymm11
1846*4757b351SPierre Pronchery.align	32
1847*4757b351SPierre Pronchery.Lloop_320:
1848*4757b351SPierre Pronchery	vpcmpeqq	%ymm11,%ymm13,%ymm15
1849*4757b351SPierre Pronchery	vmovdqu	320(%rsi),%ymm10
1850*4757b351SPierre Pronchery
1851*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm0,%ymm0
1852*4757b351SPierre Pronchery	vmovdqu	352(%rsi),%ymm10
1853*4757b351SPierre Pronchery
1854*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm1,%ymm1
1855*4757b351SPierre Pronchery	vmovdqu	384(%rsi),%ymm10
1856*4757b351SPierre Pronchery
1857*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm2,%ymm2
1858*4757b351SPierre Pronchery	vmovdqu	416(%rsi),%ymm10
1859*4757b351SPierre Pronchery
1860*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm3,%ymm3
1861*4757b351SPierre Pronchery	vmovdqu	448(%rsi),%ymm10
1862*4757b351SPierre Pronchery
1863*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm4,%ymm4
1864*4757b351SPierre Pronchery	vmovdqu	480(%rsi),%ymm10
1865*4757b351SPierre Pronchery
1866*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm5,%ymm5
1867*4757b351SPierre Pronchery	vmovdqu	512(%rsi),%ymm10
1868*4757b351SPierre Pronchery
1869*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm6,%ymm6
1870*4757b351SPierre Pronchery	vmovdqu	544(%rsi),%ymm10
1871*4757b351SPierre Pronchery
1872*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm7,%ymm7
1873*4757b351SPierre Pronchery	vmovdqu	576(%rsi),%ymm10
1874*4757b351SPierre Pronchery
1875*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm8,%ymm8
1876*4757b351SPierre Pronchery	vmovdqu	608(%rsi),%ymm10
1877*4757b351SPierre Pronchery
1878*4757b351SPierre Pronchery	vblendvpd	%ymm15,%ymm10,%ymm9,%ymm9
1879*4757b351SPierre Pronchery	vpaddq	%ymm14,%ymm11,%ymm11
1880*4757b351SPierre Pronchery	addq	$640,%rsi
1881*4757b351SPierre Pronchery	cmpq	%rsi,%rax
1882*4757b351SPierre Pronchery	jne	.Lloop_320
1883*4757b351SPierre Pronchery	vmovdqu	%ymm0,320(%rdi)
1884*4757b351SPierre Pronchery	vmovdqu	%ymm1,352(%rdi)
1885*4757b351SPierre Pronchery	vmovdqu	%ymm2,384(%rdi)
1886*4757b351SPierre Pronchery	vmovdqu	%ymm3,416(%rdi)
1887*4757b351SPierre Pronchery	vmovdqu	%ymm4,448(%rdi)
1888*4757b351SPierre Pronchery	vmovdqu	%ymm5,480(%rdi)
1889*4757b351SPierre Pronchery	vmovdqu	%ymm6,512(%rdi)
1890*4757b351SPierre Pronchery	vmovdqu	%ymm7,544(%rdi)
1891*4757b351SPierre Pronchery	vmovdqu	%ymm8,576(%rdi)
1892*4757b351SPierre Pronchery	vmovdqu	%ymm9,608(%rdi)
1893*4757b351SPierre Pronchery
1894*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1895*4757b351SPierre Pronchery.cfi_endproc
1896*4757b351SPierre Pronchery.size	ossl_extract_multiplier_2x40_win5_avx, .-ossl_extract_multiplier_2x40_win5_avx
1897*4757b351SPierre Pronchery.section	.rodata
1898*4757b351SPierre Pronchery.align	32
1899*4757b351SPierre Pronchery.Lones:
1900*4757b351SPierre Pronchery.quad	1,1,1,1
1901*4757b351SPierre Pronchery.Lzeros:
1902*4757b351SPierre Pronchery.quad	0,0,0,0
1903*4757b351SPierre Pronchery	.section ".note.gnu.property", "a"
1904*4757b351SPierre Pronchery	.p2align 3
1905*4757b351SPierre Pronchery	.long 1f - 0f
1906*4757b351SPierre Pronchery	.long 4f - 1f
1907*4757b351SPierre Pronchery	.long 5
1908*4757b351SPierre Pronchery0:
1909*4757b351SPierre Pronchery	# "GNU" encoded with .byte, since .asciz isn't supported
1910*4757b351SPierre Pronchery	# on Solaris.
1911*4757b351SPierre Pronchery	.byte 0x47
1912*4757b351SPierre Pronchery	.byte 0x4e
1913*4757b351SPierre Pronchery	.byte 0x55
1914*4757b351SPierre Pronchery	.byte 0
1915*4757b351SPierre Pronchery1:
1916*4757b351SPierre Pronchery	.p2align 3
1917*4757b351SPierre Pronchery	.long 0xc0000002
1918*4757b351SPierre Pronchery	.long 3f - 2f
1919*4757b351SPierre Pronchery2:
1920*4757b351SPierre Pronchery	.long 3
1921*4757b351SPierre Pronchery3:
1922*4757b351SPierre Pronchery	.p2align 3
1923*4757b351SPierre Pronchery4:
1924