1#include "asm-arm.h"
2	.arch armv6
3	.eabi_attribute 28, 1
4	.eabi_attribute 20, 1
5	.eabi_attribute 21, 1
6	.eabi_attribute 23, 3
7	.eabi_attribute 24, 1
8	.eabi_attribute 25, 1
9	.eabi_attribute 26, 1
10	.eabi_attribute 30, 2
11	.eabi_attribute 34, 1
12	.eabi_attribute 18, 4
13	.text
14	.align	2
15	.global C(callback_receiver)
16	.syntax unified
17	.arm
18	.fpu vfpv3-d16
19	.type	callback_receiver, %function
20FUNBEGIN(callback_receiver)
21	// args = 28, pretend = 0, frame = 176
22	// frame_needed = 1, uses_anonymous_args = 0
23	push	{fp, lr}
24	add	fp, sp, $4
25	sub	sp, sp, $176
26	ldr	r2, [fp, $4]
27	mov	r3, $0
28	add	lr, fp, $28
29	add	ip, fp, $44
30	vstr.32	s0, [fp, $-136]
31	vstr.32	s1, [fp, $-132]
32	vstr.32	s2, [fp, $-128]
33	vstr.32	s3, [fp, $-124]
34	vstr.32	s4, [fp, $-120]
35	vstr.32	s5, [fp, $-116]
36	vstr.32	s6, [fp, $-112]
37	vstr.32	s7, [fp, $-108]
38	vstr.32	s8, [fp, $-104]
39	vstr.32	s9, [fp, $-100]
40	vstr.32	s10, [fp, $-96]
41	vstr.32	s11, [fp, $-92]
42	vstr.32	s12, [fp, $-88]
43	vstr.32	s13, [fp, $-84]
44	vstr.32	s14, [fp, $-80]
45	vstr.32	s15, [fp, $-76]
46	vstr.64	d0, [fp, $-68]
47	vstr.64	d1, [fp, $-60]
48	vstr.64	d2, [fp, $-52]
49	vstr.64	d3, [fp, $-44]
50	vstr.64	d4, [fp, $-36]
51	vstr.64	d5, [fp, $-28]
52	vstr.64	d6, [fp, $-20]
53	vstr.64	d7, [fp, $-12]
54	str	r3, [fp, $-180]
55	str	r3, [fp, $-144]
56	str	r3, [fp, $-140]
57	str	r3, [fp, $-160]
58	strb	r3, [fp, $-156]
59	sub	r1, fp, $180
60	str	lr, [fp, $-148]
61	ldr	r3, [r2]
62	str	ip, [fp, $-164]
63	ldr	r0, [r2, $4]
64	blx	r3
65	ldrb	r3, [fp, $-156]	// zero_extendqisi2
66	cmp	r3, $0
67	beq	L(1)
68	cmp	r3, $1
69	beq	L(25)
70	cmp	r3, $2
71	ldrsbeq	r0, [fp, $-172]
72	beq	L(1)
73	cmp	r3, $3
74	beq	L(25)
75	cmp	r3, $4
76	ldrsheq	r0, [fp, $-172]
77	beq	L(1)
78	cmp	r3, $5
79	ldrheq	r0, [fp, $-172]
80	beq	L(1)
81	cmp	r3, $6
82	beq	L(27)
83	cmp	r3, $7
84	beq	L(27)
85	cmp	r3, $8
86	beq	L(27)
87	cmp	r3, $9
88	beq	L(27)
89	sub	r2, r3, $10
90	cmp	r2, $1
91	bls	L(29)
92	cmp	r3, $12
93	vldreq.32	s0, [fp, $-172]
94	beq	L(1)
95	cmp	r3, $13
96	beq	L(30)
97	cmp	r3, $14
98	beq	L(27)
99	cmp	r3, $15
100	bne	L(1)
101	ldr	r3, [fp, $-180]
102	tst	r3, $1024
103	beq	L(1)
104	ldr	r3, [fp, $-152]
105	cmp	r3, $1
106	beq	L(31)
107	cmp	r3, $2
108	ldr	r3, [fp, $-160]
109	ldrheq	r0, [r3]
110	ldrne	r0, [r3]
111L(1):
112	sub	sp, fp, $4
113	// sp needed
114	pop	{fp, pc}
115L(25):
116	ldrb	r0, [fp, $-172]	// zero_extendqisi2
117	sub	sp, fp, $4
118	// sp needed
119	pop	{fp, pc}
120L(27):
121	ldr	r0, [fp, $-172]
122	sub	sp, fp, $4
123	// sp needed
124	pop	{fp, pc}
125L(30):
126	vldr.64	d0, [fp, $-172]
127	b	L(1)
128L(29):
129	ldr	r0, [fp, $-172]
130	ldr	r1, [fp, $-168]
131	b	L(1)
132L(31):
133	ldr	r3, [fp, $-160]
134	ldrb	r0, [r3]	// zero_extendqisi2
135	b	L(1)
136	FUNEND(callback_receiver)
137	.align	2
138	.global C(callback_get_receiver)
139	.syntax unified
140	.arm
141	.fpu vfpv3-d16
142	.type	callback_get_receiver, %function
143FUNBEGIN(callback_get_receiver)
144	// args = 0, pretend = 0, frame = 0
145	// frame_needed = 1, uses_anonymous_args = 0
146	// link register save eliminated.
147	ldr	r3, L(34)
148	ldr	r2, L(34)+4
149L(PIC0):
150	add	r3, pc, r3
151	str	fp, [sp, $-4]!
152	add	fp, sp, $0
153	ldr	r3, [r3, r2]
154	mov	r0, r3
155	add	sp, fp, $0
156	// sp needed
157	ldr	fp, [sp], $4
158	bx	lr
159L(35):
160	.align	2
161L(34):
162	.word	_GLOBAL_OFFSET_TABLE_-(L(PIC0)+8)
163	.word	callback_receiver(GOT)
164	FUNEND(callback_get_receiver)
165#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
166	.section .note.GNU-stack,"",%progbits
167#endif
168