1#include "asm-m68k.h"
2	.text
3	.align	2
4	DECLARE_FUNCTION(callback_receiver)
5FUNBEGIN(callback_receiver)
6	link.w %a6,#-32
7	movm.l #0x3030,-(%sp)
8	clr.l -32(%a6)
9	lea (8,%a6),%a2
10	move.l %a2,-20(%a6)
11	clr.l -16(%a6)
12	clr.l -12(%a6)
13	move.l %a1,-4(%a6)
14	pea -32(%a6)
15	move.l 4(%a0),-(%sp)
16	move.l (%a0),%a2
17	jsr (%a2)
18	addq.l #8,%sp
19	move.l -12(%a6),%a3
20	tst.l %a3
21	jbeq L(1)
22	moveq.l #1,%d2
23	cmp.l %a3,%d2
24	jbeq L(46)
25	moveq.l #2,%d3
26	cmp.l %a3,%d3
27	jbeq L(46)
28	moveq.l #3,%d2
29	cmp.l %a3,%d2
30	jbeq L(47)
31	moveq.l #4,%d3
32	cmp.l %a3,%d3
33	jbeq L(48)
34	moveq.l #5,%d2
35	cmp.l %a3,%d2
36	jbeq L(49)
37	moveq.l #6,%d3
38	cmp.l %a3,%d3
39	jbeq L(45)
40	moveq.l #7,%d2
41	cmp.l %a3,%d2
42	jbeq L(45)
43	moveq.l #8,%d3
44	cmp.l %a3,%d3
45	jbeq L(45)
46	moveq.l #9,%d2
47	cmp.l %a3,%d2
48	jbeq L(45)
49	lea (-10,%a3),%a2
50	moveq.l #1,%d3
51	cmp.l %a2,%d3
52	jbcs L(22)
53	move.l -28(%a6),%d0
54	move.l -24(%a6),%d1
55	jbra L(1)
56	.align	2
57L(22):
58	moveq.l #12,%d2
59	cmp.l %a3,%d2
60	jbeq L(50)
61	moveq.l #13,%d2
62	cmp.l %a3,%d2
63	jbeq L(51)
64	moveq.l #14,%d3
65	cmp.l %a3,%d3
66	jbeq L(52)
67	moveq.l #15,%d2
68	cmp.l %a3,%d2
69	jbne L(1)
70	btst #2,-30(%a6)
71	jbeq L(1)
72	move.l -8(%a6),%d2
73	moveq.l #1,%d3
74	cmp.l %d2,%d3
75	jbeq L(53)
76	moveq.l #2,%d3
77	cmp.l %d2,%d3
78	jbeq L(54)
79	moveq.l #4,%d3
80	cmp.l %d2,%d3
81	jbeq L(55)
82	moveq.l #8,%d3
83	cmp.l %d2,%d3
84	jbne L(1)
85	move.l -16(%a6),%a2
86	move.l (%a2),%d0
87	move.l 4(%a2),%d1
88	jbra L(1)
89	.align	2
90L(55):
91	move.l -16(%a6),%a2
92	move.l (%a2),%d0
93	jbra L(1)
94	.align	2
95L(54):
96	move.l -16(%a6),%a2
97	clr.l %d0
98	move.w (%a2),%d0
99	jbra L(1)
100	.align	2
101L(53):
102	move.l -16(%a6),%a2
103	clr.l %d0
104	move.b (%a2),%d0
105	jbra L(1)
106	.align	2
107L(52):
108	move.l -28(%a6),%d0
109	move.l %d0,%a0
110	jbra L(1)
111	.align	2
112L(51):
113	btst #6,-29(%a6)
114	jbeq L(31)
115	fmove.d -28(%a6),%fp0
116	jbra L(1)
117	.align	2
118L(31):
119	move.l -28(%a6),%d0
120	move.l -24(%a6),%d1
121	jbra L(1)
122	.align	2
123L(50):
124	move.l -32(%a6),%d2
125	btst #6,%d2
126	jbeq L(25)
127	fmove.s -28(%a6),%fp0
128	jbra L(1)
129	.align	2
130L(25):
131	btst #5,%d2
132	jbeq L(27)
133	fmove.s -28(%a6),%fp1
134	fmove.d %fp1,-(%sp)
135	move.l (%sp)+,%d0
136	move.l (%sp)+,%d1
137	jbra L(1)
138	.align	2
139L(27):
140	move.l -28(%a6),%d0
141	jbra L(1)
142	.align	2
143L(45):
144	move.l -28(%a6),%d0
145	jbra L(1)
146	.align	2
147L(49):
148	clr.l %d0
149	move.w -28(%a6),%d0
150	jbra L(1)
151	.align	2
152L(48):
153	move.w -28(%a6),%d0
154	ext.l %d0
155	jbra L(1)
156	.align	2
157L(47):
158	clr.l %d0
159	move.b -28(%a6),%d0
160	jbra L(1)
161	.align	2
162L(46):
163	move.b -28(%a6),%d0
164	extb.l %d0
165L(1):
166	movm.l -48(%a6),#0xc0c
167	unlk %a6
168	rts
169L(fe1):
170	FUNEND(callback_receiver)
171	.align	2
172	.globl C(callback_get_receiver)
173	DECLARE_FUNCTION(callback_get_receiver)
174FUNBEGIN(callback_get_receiver)
175	link.w %a6,#0
176	move.l %a5,-(%sp)
177	lea (%pc, _GLOBAL_OFFSET_TABLE_@GOTPC), %a5
178	move.l callback_receiver@GOT(%a5),%a0
179	move.l %a0,%d0
180	move.l (%sp)+,%a5
181	unlk %a6
182	rts
183L(fe2):
184	FUNEND(callback_get_receiver)
185#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
186	.section .note.GNU-stack,"",@progbits
187#endif
188