1#include "asm-sparc.h"
2	.section	".text"
3	.align 4
4	.global C(callback_receiver)
5	DECLARE_FUNCTION(callback_receiver)
6	.proc	020
7FUNBEGIN(callback_receiver)
8	.register	%g2, $scratch
9	.register	%g3, $scratch
10	save	%sp, -448, %sp
11	stx	%i0, [%fp+2175]
12	stx	%i1, [%fp+2183]
13	stx	%i2, [%fp+2191]
14	stx	%i3, [%fp+2199]
15	stx	%i4, [%fp+2207]
16	stx	%i5, [%fp+2215]
17	std	%f0, [%fp+1903]
18	std	%f2, [%fp+1911]
19	std	%f4, [%fp+1919]
20	std	%f6, [%fp+1927]
21	std	%f8, [%fp+1935]
22	std	%f10, [%fp+1943]
23	std	%f12, [%fp+1951]
24	std	%f14, [%fp+1959]
25	std	%f16, [%fp+1967]
26	std	%f18, [%fp+1975]
27	std	%f20, [%fp+1983]
28	std	%f22, [%fp+1991]
29	std	%f24, [%fp+1999]
30	std	%f26, [%fp+2007]
31	std	%f28, [%fp+2015]
32	std	%f30, [%fp+2023]
33	st	%f1, [%fp+1835]
34	st	%f3, [%fp+1839]
35	st	%f5, [%fp+1843]
36	st	%f7, [%fp+1847]
37	st	%f9, [%fp+1851]
38	st	%f11, [%fp+1855]
39	st	%f13, [%fp+1859]
40	st	%f15, [%fp+1863]
41	st	%f17, [%fp+1867]
42	st	%f19, [%fp+1871]
43	st	%f21, [%fp+1875]
44	st	%f23, [%fp+1879]
45	add	%fp, 2175, %g2
46	stx	%g0, [%fp+1807]
47	st	%f25, [%fp+1883]
48	st	%f27, [%fp+1887]
49	st	%f29, [%fp+1891]
50	st	%f31, [%fp+1895]
51	st	%g0, [%fp+1775]
52	st	%g0, [%fp+1815]
53	st	%g0, [%fp+1831]
54	ldx	[%g5+8], %o0
55	stx	%g2, [%fp+1799]
56	ldx	[%g5], %g3
57	call	%g3, 0
58	 add	%fp, 1775, %o1
59	lduw	[%fp+1815], %g1
60	cmp	%g1, 0
61	be,pn	%icc, L(L61)
62	 cmp	%g1, 1
63	be,pn	%icc, L(L50)
64	 cmp	%g1, 2
65	be,pn	%icc, L(L50)
66	 cmp	%g1, 3
67	be,pn	%icc, L(L53)
68	 cmp	%g1, 4
69	be,pn	%icc, L(L54)
70	 cmp	%g1, 5
71	be,pn	%icc, L(L55)
72	 cmp	%g1, 6
73	be,pn	%icc, L(L56)
74	 cmp	%g1, 7
75	be,pn	%icc, L(L57)
76	 cmp	%g1, 8
77	be,pn	%icc, L(L51)
78	 cmp	%g1, 9
79	be,pn	%icc, L(L51)
80	 cmp	%g1, 10
81	be,pn	%icc, L(L51)
82	 cmp	%g1, 11
83	be,pn	%icc, L(L51)
84	 cmp	%g1, 12
85	be,pn	%icc, L(L58)
86	 cmp	%g1, 13
87	be,pn	%icc, L(L59)
88	 cmp	%g1, 14
89	be,pn	%icc, L(L51)
90	 cmp	%g1, 15
91	bne,pt	%icc, L(L61)
92	 lduw	[%fp+1775], %g1
93	andcc	%g1, 1024, %g0
94	be,pn	%xcc, L(L61)
95	 ldx	[%fp+1823], %o5
96	add	%o5, -1, %g1
97	cmp	%g1, 31
98	bgu,pn	%xcc, L(L61)
99	 ldx	[%fp+1807], %g1
100	cmp	%o5, 8
101	and	%g1, 7, %o1
102	and	%g1, -8, %l1
103	bgu,pt	%xcc, L(L35)
104	 add	%o5, %o1, %g2
105	cmp	%g2, 8
106	bgu,pt	%xcc, L(L37)
107	 sllx	%o1, 3, %g4
108	sllx	%g2, 3, %g2
109	ldx	[%l1], %g3
110	sub	%g0, %g2, %g2
111	mov	-1, %g1
112	sllx	%g1, %g2, %g1
113	and	%g1, %g3, %g1
114	return	%i7+8
115	 sllx	%g1, %g4, %o0
116L(L47):
117	ldx	[%l1], %g1
118	sllx	%g1, %o3, %g1
119	ldx	[%l1+8], %g4
120	ldx	[%l1+16], %o5
121	sllx	%g4, %o3, %o0
122	sllx	%o5, %o3, %o7
123	ldx	[%l1+24], %o4
124	sllx	%g2, 3, %o2
125	sllx	%o4, %o3, %l0
126	ldx	[%l1+32], %o1
127	sub	%g0, %o2, %o2
128	mov	64, %g3
129	sub	%g3, %o3, %g3
130	srax	%g4, %g3, %g4
131	srax	%o5, %g3, %o5
132	or	%g1, %g4, %i0
133	srax	%o4, %g3, %o4
134	mov	-1, %g1
135	or	%o0, %o5, %i1
136	sllx	%g1, %o2, %g1
137	or	%o7, %o4, %i2
138	and	%g1, %o1, %g1
139	srax	%g1, %g3, %g1
140	or	%l0, %g1, %i3
141L(L61):
142	return	%i7+8
143	 nop
144L(L50):
145	ldsb	[%fp+1783], %i0
146	return	%i7+8
147	 nop
148L(L54):
149	ldsh	[%fp+1783], %i0
150	return	%i7+8
151	 nop
152L(L53):
153	ldub	[%fp+1783], %i0
154	return	%i7+8
155	 nop
156L(L51):
157	ldx	[%fp+1783], %i0
158	return	%i7+8
159	 nop
160L(L55):
161	lduh	[%fp+1783], %i0
162	return	%i7+8
163	 nop
164L(L56):
165	ldsw	[%fp+1783], %i0
166	return	%i7+8
167	 nop
168L(L57):
169	lduw	[%fp+1783], %i0
170	return	%i7+8
171	 nop
172L(L58):
173	ld	[%fp+1783], %f0
174	return	%i7+8
175	 nop
176L(L59):
177	ldd	[%fp+1783], %f0
178	return	%i7+8
179	 nop
180L(L35):
181	cmp	%o5, 16
182	bgu,pt	%xcc, L(L39)
183	 cmp	%o5, 24
184	cmp	%g2, 16
185	bgu,pt	%xcc, L(L41)
186	 sllx	%o1, 3, %o4
187	sllx	%g2, 3, %g3
188	ldx	[%l1+8], %g2
189	sll	%o1, 3, %o5
190	sllx	%o1, 2, %o4
191	sub	%g0, %g3, %g3
192	ldx	[%l1], %g4
193	mov	-1, %g1
194	sllx	%g4, %o5, %g4
195	sllx	%g1, %g3, %g1
196	and	%g1, %g2, %g1
197	mov	32, %g2
198	sllx	%g1, %o5, %i1
199	sub	%g2, %o4, %g2
200	srax	%g1, %g2, %g1
201	srax	%g1, %g2, %g1
202	return	%i7+8
203	 or	%g4, %g1, %o0
204L(L37):
205	sllx	%g2, 3, %g3
206	ldx	[%l1+8], %o5
207	sub	%g0, %g3, %g3
208	sub	%g0, %g4, %o4
209	ldx	[%l1], %g2
210	mov	-1, %g1
211	sllx	%g2, %g4, %g2
212	sllx	%g1, %g3, %g1
213	and	%g1, %o5, %g1
214	srax	%g1, %o4, %g1
215	return	%i7+8
216	 or	%g2, %g1, %o0
217L(L39):
218	bgu,pt	%xcc, L(L43)
219	 cmp	%g2, 32
220	cmp	%g2, 24
221	bgu,pt	%xcc, L(L45)
222	 sllx	%o1, 3, %o3
223	sllx	%o1, 2, %g1
224	sll	%o1, 3, %o5
225	sllx	%g2, 3, %o4
226	ldx	[%l1+8], %g3
227	ldx	[%l1+16], %o3
228	sllx	%g3, %o5, %o2
229	sub	%g0, %o4, %o4
230	mov	32, %g4
231	ldx	[%l1], %g2
232	sub	%g4, %g1, %g4
233	sllx	%g2, %o5, %g2
234	srax	%g3, %g4, %g3
235	mov	-1, %g1
236	srax	%g3, %g4, %g3
237	sllx	%g1, %o4, %g1
238	and	%g1, %o3, %g1
239	sllx	%g1, %o5, %i2
240	srax	%g1, %g4, %g1
241	srax	%g1, %g4, %g1
242	or	%o2, %g1, %i1
243	return	%i7+8
244	 or	%g2, %g3, %o0
245L(L41):
246	sllx	%g2, 3, %o5
247	ldx	[%l1+8], %g3
248	ldx	[%l1+16], %o3
249	sllx	%g3, %o4, %o2
250	sub	%g0, %o5, %o5
251	mov	64, %g4
252	ldx	[%l1], %g2
253	sub	%g4, %o4, %g4
254	sllx	%g2, %o4, %g2
255	srax	%g3, %g4, %g3
256	mov	-1, %g1
257	sllx	%g1, %o5, %g1
258	and	%g1, %o3, %g1
259	srax	%g1, %g4, %g1
260	or	%o2, %g1, %i1
261	return	%i7+8
262	 or	%g2, %g3, %o0
263L(L45):
264	ldx	[%l1], %g1
265	sllx	%g1, %o3, %g1
266	ldx	[%l1+8], %g3
267	ldx	[%l1+16], %g4
268	sllx	%g3, %o3, %o2
269	sllx	%g4, %o3, %o0
270	sllx	%g2, 3, %o4
271	ldx	[%l1+24], %o1
272	sub	%g0, %o4, %o4
273	mov	64, %o5
274	sub	%o5, %o3, %o5
275	srax	%g3, %o5, %g3
276	srax	%g4, %o5, %g4
277	or	%g1, %g3, %i0
278	or	%o2, %g4, %i1
279	mov	-1, %g1
280	sllx	%g1, %o4, %g1
281	and	%g1, %o1, %g1
282	srax	%g1, %o5, %g1
283	or	%o0, %g1, %i2
284	return	%i7+8
285	 nop
286L(L43):
287	bgu,pt	%xcc, L(L47)
288	 sllx	%o1, 3, %o3
289	sll	%o1, 3, %o4
290	ldx	[%l1], %g1
291	sllx	%g1, %o4, %g1
292	sllx	%o1, 2, %o3
293	sllx	%g2, 3, %o5
294	ldx	[%l1+8], %g3
295	ldx	[%l1+16], %g4
296	sllx	%g3, %o4, %o1
297	sllx	%g4, %o4, %o0
298	ldx	[%l1+24], %o2
299	sub	%g0, %o5, %o5
300	mov	32, %g2
301	sub	%g2, %o3, %g2
302	srax	%g3, %g2, %g3
303	srax	%g4, %g2, %g4
304	srax	%g3, %g2, %g3
305	srax	%g4, %g2, %g4
306	or	%g1, %g3, %i0
307	or	%o1, %g4, %i1
308	mov	-1, %g1
309	sllx	%g1, %o5, %g1
310	and	%g1, %o2, %g1
311	sllx	%g1, %o4, %i3
312	srax	%g1, %g2, %g1
313	srax	%g1, %g2, %g1
314	or	%o0, %g1, %i2
315	return	%i7+8
316	 nop
317	FUNEND(callback_receiver)
318#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
319	.section .note.GNU-stack,"",@progbits
320#endif
321