1	.align 4
2.global _filter_mem16;
3.type _filter_mem16, STT_FUNC;
4_filter_mem16:
5	[--sp] = ( r7:7 );
6
7	[--SP] = R4;
8	[--SP] = R5;
9	[--SP] = P3;
10	[--SP] = P4;
11	LINK 68;
12	[FP+28] = R0;
13	[FP+32] = R1;
14	[FP+36] = R2;
15	[FP+-68] = SP;
16	R0 = SP;
17	[FP+-24] = R0;
18	R0 = [FP+44];
19	R3 = R0;
20	R3 += 1;
21	R2 = R3;
22	R0 = R2;
23	R1 = 0 (X);
24	R2 = -1 (X);
25	R0 = R0 & R2;
26	R2 = 15 (X);
27	R1 = R1 & R2;
28	R2 = R0 >> 27;
29	R7 = R1 << 5;
30	[FP+-60] = R7;
31	R7 = [FP+-60];
32	R7 = R2 | R7;
33	[FP+-60] = R7;
34	R2 = R0 << 5;
35	[FP+-64] = R2;
36	R0 = [FP+-64];
37	R1 = [FP+-60];
38	[FP+-64] = R0;
39	[FP+-60] = R1;
40	R0 = -1 (X);
41	R1 = [FP+-64];
42	R1 = R1 & R0;
43	[FP+-64] = R1;
44	R0 = 15 (X);
45	R2 = [FP+-60];
46	R2 = R2 & R0;
47	R2 = R3;
48	R0 = R2;
49	R1 = 0 (X);
50	R2 = -1 (X);
51	R0 = R0 & R2;
52	R2 = 15 (X);
53	R1 = R1 & R2;
54	R2 = R0 >> 27;
55	R7 = R1 << 5;
56	[FP+-52] = R7;
57	R7 = [FP+-52];
58	R7 = R2 | R7;
59	[FP+-52] = R7;
60	R2 = R0 << 5;
61	[FP+-56] = R2;
62	R0 = [FP+-56];
63	R1 = [FP+-52];
64	[FP+-56] = R0;
65	[FP+-52] = R1;
66	R0 = -1 (X);
67	R1 = [FP+-56];
68	R1 = R1 & R0;
69	[FP+-56] = R1;
70	R0 = 15 (X);
71	R2 = [FP+-52];
72	R2 = R2 & R0;
73	R0 = R3;
74	R0 <<= 2;
75	R0 += 3;
76	R0 += 3;
77	R0 >>= 2;
78	P1 = R0;
79	P2 = P1 << 2;
80	SP -= P2;
81	[FP+-48] = SP;
82	R0 = [FP+-48];
83	R0 += 3;
84	R0 >>= 2;
85	R0 <<= 2;
86	[FP+-48] = R0;
87	R0 = [FP+-48];
88	[FP+-12] = R0;
89	R0 = [FP+48];
90	R0 += 1;
91	R3 = R0 << 1;
92	R2 = R3;
93	R0 = R2;
94	R1 = 0 (X);
95	R2 = -1 (X);
96	R0 = R0 & R2;
97	R2 = 15 (X);
98	R1 = R1 & R2;
99	R2 = R0 >> 27;
100	R7 = R1 << 5;
101	[FP+-40] = R7;
102	R7 = [FP+-40];
103	R7 = R2 | R7;
104	[FP+-40] = R7;
105	R2 = R0 << 5;
106	[FP+-44] = R2;
107	R0 = [FP+-44];
108	R1 = [FP+-40];
109	[FP+-44] = R0;
110	[FP+-40] = R1;
111	R0 = -1 (X);
112	R1 = [FP+-44];
113	R1 = R1 & R0;
114	[FP+-44] = R1;
115	R0 = 15 (X);
116	R2 = [FP+-40];
117	R2 = R2 & R0;
118	R2 = R3;
119	R0 = R2;
120	R1 = 0 (X);
121	R2 = -1 (X);
122	R0 = R0 & R2;
123	R2 = 15 (X);
124	R1 = R1 & R2;
125	R2 = R0 >> 27;
126	R7 = R1 << 5;
127	[FP+-32] = R7;
128	R7 = [FP+-32];
129	R7 = R2 | R7;
130	[FP+-32] = R7;
131	R2 = R0 << 5;
132	[FP+-36] = R2;
133	R0 = [FP+-36];
134	R1 = [FP+-32];
135	[FP+-36] = R0;
136	[FP+-32] = R1;
137	R0 = -1 (X);
138	R1 = [FP+-36];
139	R1 = R1 & R0;
140	[FP+-36] = R1;
141	R0 = 15 (X);
142	R2 = [FP+-32];
143	R2 = R2 & R0;
144	R0 = R3;
145	R0 <<= 2;
146	R0 += 3;
147	R0 += 3;
148	R0 >>= 2;
149	P1 = R0;
150	P2 = P1 << 2;
151	SP -= P2;
152	[FP+-28] = SP;
153	R0 = [FP+-28];
154	R0 += 3;
155	R0 >>= 2;
156	R0 <<= 2;
157	[FP+-28] = R0;
158	R0 = [FP+-28];
159	[FP+-8] = R0;
160	R0 = [FP+-12];
161	R0 += 4;
162	[FP+-16] = R0;
163	R0 = [FP+-8];
164	[FP+-20] = R0;
165	R0 = 0 (X);
166	[FP+-4] = R0;
167	jump.s .L6;
168.L7:
169	R1 = [FP+-20];
170	R0 = [FP+-4];
171	R0 <<= 2;
172	R1 = R1 + R0;
173	P1 = R1;
174	R0 = [FP+-4];
175	R1 = R0 << 1;
176	R0 = [FP+32];
177	R0 = R0 + R1;
178	P2 = R0;
179	R0 = W [P2] (Z);
180	W [P1] = R0;
181	R1 = [FP+-20];
182	R0 = [FP+-4];
183	R0 <<= 1;
184	R0 += 1;
185	R0 <<= 1;
186	R1 = R1 + R0;
187	P1 = R1;
188	R0 = [FP+-4];
189	R1 = R0 << 1;
190	R0 = [FP+36];
191	R0 = R0 + R1;
192	P2 = R0;
193	R0 = W [P2] (Z);
194	W [P1] = R0;
195	R0 = [FP+-4];
196	R0 += 1;
197	[FP+-4] = R0;
198.L6:
199	R1 = [FP+48];
200	R0 = [FP+-4];
201	cc =R0<R1;
202	if cc jump .L7;
203	R0 = [FP+48];
204	P0 = [FP+-20];
205	I0 = P0;
206	B0 = P0;
207	L0 = 0;
208	P2 = [FP+-16];
209	I2 = P2;
210	L2 = 0;
211	P4 = [FP+52];
212	P0 = [FP+28];
213	P1 = [FP+40];
214	R1 = [P4++];
215	R1 <<= 3;
216	R1.L = R1 (RND);
217	R2 = W[P0++];
218	R1.L = R1.L + R2.L;
219	W[P1++] = R1;
220	R2 = PACK(R1.L, R2.L);
221	[P2] = R2;
222	R0 += -1;
223	R3 = 0;
224	LC0 = R0;
225	LOOP filter_start256 LC0;
226	LOOP_BEGIN filter_start256;
227	R3 += 1;
228	LC1 = R3;
229	R1 = [P4++];
230	A1 = R1;
231	A0 = 0;
232	I0 = B0;
233	I2 = P2;
234	P2 += 4;
235	R4 = [I0++] || R5 = [I2--];
236	LOOP filter_start_inner256 LC1;
237	LOOP_BEGIN filter_start_inner256;
238	A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
239	LOOP_END filter_start_inner256;
240	A0 += A1;
241	R4 = A0;
242	R4 <<= 3;
243	R4.L = R4 (RND);
244	R2 = W[P0++];
245	R4.L = R4.L + R2.L;
246	W[P1++] = R4;
247	R2 = PACK(R4.L, R2.L);
248	[P2] = R2;
249	LOOP_END filter_start256;
250	R0 = [FP+48];
251	R0 <<= 1;
252	I0 = B0;
253	R0 <<= 1;
254	L0 = R0;
255	R0 = [FP+48];
256	R2 = [FP+44];
257	R2 = R2 - R0;
258	R4 = [I0++];
259	LC0 = R2;
260	P3 = R0;
261	R0 <<= 2;
262	R0 += 8;
263	I2 = P2;
264	M0 = R0;
265	A1 = A0 = 0;
266	R5 = [I2--];
267	LOOP filter_mid256 LC0;
268	LOOP_BEGIN filter_mid256;
269	LOOP filter_mid_inner256 LC1=P3;
270	LOOP_BEGIN filter_mid_inner256;
271	A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
272	LOOP_END filter_mid_inner256;
273	R0 = (A0 += A1) || I2 += M0;
274	R0 = R0 << 3 || R5 = W[P0++];
275	R0.L = R0 (RND);
276	R0.L = R0.L + R5.L;
277	R5 = PACK(R0.L, R5.L) || W[P1++] = R0;
278	A1 = A0 = 0 || [I2--] = R5
279	LOOP_END filter_mid256;
280	I2 += 4;
281	P2 = I2;
282	P4 = [FP+52];
283	R0 = [FP+48];
284	LC0 = R0;
285	P0 = B0;
286	A1 = A0 = 0;
287	LOOP mem_update256 LC0;
288	LOOP_BEGIN mem_update256;
289	I2 = P2;
290	I0 = P0;
291	P0 += 4;
292	R0 = LC0;
293	LC1 = R0;
294	R5 = [I2--] || R4 = [I0++];
295	LOOP mem_accum256 LC1;
296	LOOP_BEGIN mem_accum256;
297	A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
298	LOOP_END mem_accum256;
299	R0 = (A0 += A1);
300	A1 = A0 = 0 || [P4++] = R0;
301	LOOP_END mem_update256;
302	L0 = 0;
303	SP = [FP+-24];
304	SP = [FP+-68];
305	UNLINK;
306	P4 = [SP++];
307	P3 = [SP++];
308	R5 = [SP++];
309	R4 = [SP++];
310	( r7:7 ) = [sp++];
311	rts;
312	.size	_filter_mem16, .-_filter_mem16
313