• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1%ifidn __OUTPUT_FORMAT__,obj
2section	code	use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4$@feat.00 equ 1
5section	.text	code align=64
6%else
7section	.text	code
8%endif
9global	_whirlpool_block_mmx
10align	16
11_whirlpool_block_mmx:
12L$_whirlpool_block_mmx_begin:
13	push	ebp
14	push	ebx
15	push	esi
16	push	edi
17	mov	esi,DWORD [20+esp]
18	mov	edi,DWORD [24+esp]
19	mov	ebp,DWORD [28+esp]
20	mov	eax,esp
21	sub	esp,148
22	and	esp,-64
23	lea	ebx,[128+esp]
24	mov	DWORD [ebx],esi
25	mov	DWORD [4+ebx],edi
26	mov	DWORD [8+ebx],ebp
27	mov	DWORD [16+ebx],eax
28	call	L$000pic_point
29L$000pic_point:
30	pop	ebp
31	lea	ebp,[(L$001table-L$000pic_point)+ebp]
32	xor	ecx,ecx
33	xor	edx,edx
34	movq	mm0,[esi]
35	movq	mm1,[8+esi]
36	movq	mm2,[16+esi]
37	movq	mm3,[24+esi]
38	movq	mm4,[32+esi]
39	movq	mm5,[40+esi]
40	movq	mm6,[48+esi]
41	movq	mm7,[56+esi]
42L$002outerloop:
43	movq	[esp],mm0
44	movq	[8+esp],mm1
45	movq	[16+esp],mm2
46	movq	[24+esp],mm3
47	movq	[32+esp],mm4
48	movq	[40+esp],mm5
49	movq	[48+esp],mm6
50	movq	[56+esp],mm7
51	pxor	mm0,[edi]
52	pxor	mm1,[8+edi]
53	pxor	mm2,[16+edi]
54	pxor	mm3,[24+edi]
55	pxor	mm4,[32+edi]
56	pxor	mm5,[40+edi]
57	pxor	mm6,[48+edi]
58	pxor	mm7,[56+edi]
59	movq	[64+esp],mm0
60	movq	[72+esp],mm1
61	movq	[80+esp],mm2
62	movq	[88+esp],mm3
63	movq	[96+esp],mm4
64	movq	[104+esp],mm5
65	movq	[112+esp],mm6
66	movq	[120+esp],mm7
67	xor	esi,esi
68	mov	DWORD [12+ebx],esi
69align	16
70L$003round:
71	movq	mm0,[4096+esi*8+ebp]
72	mov	eax,DWORD [esp]
73	mov	ebx,DWORD [4+esp]
74	movzx	ecx,al
75	movzx	edx,ah
76	shr	eax,16
77	lea	esi,[ecx*1+ecx]
78	movzx	ecx,al
79	lea	edi,[edx*1+edx]
80	movzx	edx,ah
81	pxor	mm0,[esi*8+ebp]
82	movq	mm1,[7+edi*8+ebp]
83	mov	eax,DWORD [8+esp]
84	lea	esi,[ecx*1+ecx]
85	movzx	ecx,bl
86	lea	edi,[edx*1+edx]
87	movzx	edx,bh
88	movq	mm2,[6+esi*8+ebp]
89	movq	mm3,[5+edi*8+ebp]
90	shr	ebx,16
91	lea	esi,[ecx*1+ecx]
92	movzx	ecx,bl
93	lea	edi,[edx*1+edx]
94	movzx	edx,bh
95	movq	mm4,[4+esi*8+ebp]
96	movq	mm5,[3+edi*8+ebp]
97	mov	ebx,DWORD [12+esp]
98	lea	esi,[ecx*1+ecx]
99	movzx	ecx,al
100	lea	edi,[edx*1+edx]
101	movzx	edx,ah
102	movq	mm6,[2+esi*8+ebp]
103	movq	mm7,[1+edi*8+ebp]
104	shr	eax,16
105	lea	esi,[ecx*1+ecx]
106	movzx	ecx,al
107	lea	edi,[edx*1+edx]
108	movzx	edx,ah
109	pxor	mm1,[esi*8+ebp]
110	pxor	mm2,[7+edi*8+ebp]
111	mov	eax,DWORD [16+esp]
112	lea	esi,[ecx*1+ecx]
113	movzx	ecx,bl
114	lea	edi,[edx*1+edx]
115	movzx	edx,bh
116	pxor	mm3,[6+esi*8+ebp]
117	pxor	mm4,[5+edi*8+ebp]
118	shr	ebx,16
119	lea	esi,[ecx*1+ecx]
120	movzx	ecx,bl
121	lea	edi,[edx*1+edx]
122	movzx	edx,bh
123	pxor	mm5,[4+esi*8+ebp]
124	pxor	mm6,[3+edi*8+ebp]
125	mov	ebx,DWORD [20+esp]
126	lea	esi,[ecx*1+ecx]
127	movzx	ecx,al
128	lea	edi,[edx*1+edx]
129	movzx	edx,ah
130	pxor	mm7,[2+esi*8+ebp]
131	pxor	mm0,[1+edi*8+ebp]
132	shr	eax,16
133	lea	esi,[ecx*1+ecx]
134	movzx	ecx,al
135	lea	edi,[edx*1+edx]
136	movzx	edx,ah
137	pxor	mm2,[esi*8+ebp]
138	pxor	mm3,[7+edi*8+ebp]
139	mov	eax,DWORD [24+esp]
140	lea	esi,[ecx*1+ecx]
141	movzx	ecx,bl
142	lea	edi,[edx*1+edx]
143	movzx	edx,bh
144	pxor	mm4,[6+esi*8+ebp]
145	pxor	mm5,[5+edi*8+ebp]
146	shr	ebx,16
147	lea	esi,[ecx*1+ecx]
148	movzx	ecx,bl
149	lea	edi,[edx*1+edx]
150	movzx	edx,bh
151	pxor	mm6,[4+esi*8+ebp]
152	pxor	mm7,[3+edi*8+ebp]
153	mov	ebx,DWORD [28+esp]
154	lea	esi,[ecx*1+ecx]
155	movzx	ecx,al
156	lea	edi,[edx*1+edx]
157	movzx	edx,ah
158	pxor	mm0,[2+esi*8+ebp]
159	pxor	mm1,[1+edi*8+ebp]
160	shr	eax,16
161	lea	esi,[ecx*1+ecx]
162	movzx	ecx,al
163	lea	edi,[edx*1+edx]
164	movzx	edx,ah
165	pxor	mm3,[esi*8+ebp]
166	pxor	mm4,[7+edi*8+ebp]
167	mov	eax,DWORD [32+esp]
168	lea	esi,[ecx*1+ecx]
169	movzx	ecx,bl
170	lea	edi,[edx*1+edx]
171	movzx	edx,bh
172	pxor	mm5,[6+esi*8+ebp]
173	pxor	mm6,[5+edi*8+ebp]
174	shr	ebx,16
175	lea	esi,[ecx*1+ecx]
176	movzx	ecx,bl
177	lea	edi,[edx*1+edx]
178	movzx	edx,bh
179	pxor	mm7,[4+esi*8+ebp]
180	pxor	mm0,[3+edi*8+ebp]
181	mov	ebx,DWORD [36+esp]
182	lea	esi,[ecx*1+ecx]
183	movzx	ecx,al
184	lea	edi,[edx*1+edx]
185	movzx	edx,ah
186	pxor	mm1,[2+esi*8+ebp]
187	pxor	mm2,[1+edi*8+ebp]
188	shr	eax,16
189	lea	esi,[ecx*1+ecx]
190	movzx	ecx,al
191	lea	edi,[edx*1+edx]
192	movzx	edx,ah
193	pxor	mm4,[esi*8+ebp]
194	pxor	mm5,[7+edi*8+ebp]
195	mov	eax,DWORD [40+esp]
196	lea	esi,[ecx*1+ecx]
197	movzx	ecx,bl
198	lea	edi,[edx*1+edx]
199	movzx	edx,bh
200	pxor	mm6,[6+esi*8+ebp]
201	pxor	mm7,[5+edi*8+ebp]
202	shr	ebx,16
203	lea	esi,[ecx*1+ecx]
204	movzx	ecx,bl
205	lea	edi,[edx*1+edx]
206	movzx	edx,bh
207	pxor	mm0,[4+esi*8+ebp]
208	pxor	mm1,[3+edi*8+ebp]
209	mov	ebx,DWORD [44+esp]
210	lea	esi,[ecx*1+ecx]
211	movzx	ecx,al
212	lea	edi,[edx*1+edx]
213	movzx	edx,ah
214	pxor	mm2,[2+esi*8+ebp]
215	pxor	mm3,[1+edi*8+ebp]
216	shr	eax,16
217	lea	esi,[ecx*1+ecx]
218	movzx	ecx,al
219	lea	edi,[edx*1+edx]
220	movzx	edx,ah
221	pxor	mm5,[esi*8+ebp]
222	pxor	mm6,[7+edi*8+ebp]
223	mov	eax,DWORD [48+esp]
224	lea	esi,[ecx*1+ecx]
225	movzx	ecx,bl
226	lea	edi,[edx*1+edx]
227	movzx	edx,bh
228	pxor	mm7,[6+esi*8+ebp]
229	pxor	mm0,[5+edi*8+ebp]
230	shr	ebx,16
231	lea	esi,[ecx*1+ecx]
232	movzx	ecx,bl
233	lea	edi,[edx*1+edx]
234	movzx	edx,bh
235	pxor	mm1,[4+esi*8+ebp]
236	pxor	mm2,[3+edi*8+ebp]
237	mov	ebx,DWORD [52+esp]
238	lea	esi,[ecx*1+ecx]
239	movzx	ecx,al
240	lea	edi,[edx*1+edx]
241	movzx	edx,ah
242	pxor	mm3,[2+esi*8+ebp]
243	pxor	mm4,[1+edi*8+ebp]
244	shr	eax,16
245	lea	esi,[ecx*1+ecx]
246	movzx	ecx,al
247	lea	edi,[edx*1+edx]
248	movzx	edx,ah
249	pxor	mm6,[esi*8+ebp]
250	pxor	mm7,[7+edi*8+ebp]
251	mov	eax,DWORD [56+esp]
252	lea	esi,[ecx*1+ecx]
253	movzx	ecx,bl
254	lea	edi,[edx*1+edx]
255	movzx	edx,bh
256	pxor	mm0,[6+esi*8+ebp]
257	pxor	mm1,[5+edi*8+ebp]
258	shr	ebx,16
259	lea	esi,[ecx*1+ecx]
260	movzx	ecx,bl
261	lea	edi,[edx*1+edx]
262	movzx	edx,bh
263	pxor	mm2,[4+esi*8+ebp]
264	pxor	mm3,[3+edi*8+ebp]
265	mov	ebx,DWORD [60+esp]
266	lea	esi,[ecx*1+ecx]
267	movzx	ecx,al
268	lea	edi,[edx*1+edx]
269	movzx	edx,ah
270	pxor	mm4,[2+esi*8+ebp]
271	pxor	mm5,[1+edi*8+ebp]
272	shr	eax,16
273	lea	esi,[ecx*1+ecx]
274	movzx	ecx,al
275	lea	edi,[edx*1+edx]
276	movzx	edx,ah
277	pxor	mm7,[esi*8+ebp]
278	pxor	mm0,[7+edi*8+ebp]
279	mov	eax,DWORD [64+esp]
280	lea	esi,[ecx*1+ecx]
281	movzx	ecx,bl
282	lea	edi,[edx*1+edx]
283	movzx	edx,bh
284	pxor	mm1,[6+esi*8+ebp]
285	pxor	mm2,[5+edi*8+ebp]
286	shr	ebx,16
287	lea	esi,[ecx*1+ecx]
288	movzx	ecx,bl
289	lea	edi,[edx*1+edx]
290	movzx	edx,bh
291	pxor	mm3,[4+esi*8+ebp]
292	pxor	mm4,[3+edi*8+ebp]
293	mov	ebx,DWORD [68+esp]
294	lea	esi,[ecx*1+ecx]
295	movzx	ecx,al
296	lea	edi,[edx*1+edx]
297	movzx	edx,ah
298	pxor	mm5,[2+esi*8+ebp]
299	pxor	mm6,[1+edi*8+ebp]
300	movq	[esp],mm0
301	movq	[8+esp],mm1
302	movq	[16+esp],mm2
303	movq	[24+esp],mm3
304	movq	[32+esp],mm4
305	movq	[40+esp],mm5
306	movq	[48+esp],mm6
307	movq	[56+esp],mm7
308	shr	eax,16
309	lea	esi,[ecx*1+ecx]
310	movzx	ecx,al
311	lea	edi,[edx*1+edx]
312	movzx	edx,ah
313	pxor	mm0,[esi*8+ebp]
314	pxor	mm1,[7+edi*8+ebp]
315	mov	eax,DWORD [72+esp]
316	lea	esi,[ecx*1+ecx]
317	movzx	ecx,bl
318	lea	edi,[edx*1+edx]
319	movzx	edx,bh
320	pxor	mm2,[6+esi*8+ebp]
321	pxor	mm3,[5+edi*8+ebp]
322	shr	ebx,16
323	lea	esi,[ecx*1+ecx]
324	movzx	ecx,bl
325	lea	edi,[edx*1+edx]
326	movzx	edx,bh
327	pxor	mm4,[4+esi*8+ebp]
328	pxor	mm5,[3+edi*8+ebp]
329	mov	ebx,DWORD [76+esp]
330	lea	esi,[ecx*1+ecx]
331	movzx	ecx,al
332	lea	edi,[edx*1+edx]
333	movzx	edx,ah
334	pxor	mm6,[2+esi*8+ebp]
335	pxor	mm7,[1+edi*8+ebp]
336	shr	eax,16
337	lea	esi,[ecx*1+ecx]
338	movzx	ecx,al
339	lea	edi,[edx*1+edx]
340	movzx	edx,ah
341	pxor	mm1,[esi*8+ebp]
342	pxor	mm2,[7+edi*8+ebp]
343	mov	eax,DWORD [80+esp]
344	lea	esi,[ecx*1+ecx]
345	movzx	ecx,bl
346	lea	edi,[edx*1+edx]
347	movzx	edx,bh
348	pxor	mm3,[6+esi*8+ebp]
349	pxor	mm4,[5+edi*8+ebp]
350	shr	ebx,16
351	lea	esi,[ecx*1+ecx]
352	movzx	ecx,bl
353	lea	edi,[edx*1+edx]
354	movzx	edx,bh
355	pxor	mm5,[4+esi*8+ebp]
356	pxor	mm6,[3+edi*8+ebp]
357	mov	ebx,DWORD [84+esp]
358	lea	esi,[ecx*1+ecx]
359	movzx	ecx,al
360	lea	edi,[edx*1+edx]
361	movzx	edx,ah
362	pxor	mm7,[2+esi*8+ebp]
363	pxor	mm0,[1+edi*8+ebp]
364	shr	eax,16
365	lea	esi,[ecx*1+ecx]
366	movzx	ecx,al
367	lea	edi,[edx*1+edx]
368	movzx	edx,ah
369	pxor	mm2,[esi*8+ebp]
370	pxor	mm3,[7+edi*8+ebp]
371	mov	eax,DWORD [88+esp]
372	lea	esi,[ecx*1+ecx]
373	movzx	ecx,bl
374	lea	edi,[edx*1+edx]
375	movzx	edx,bh
376	pxor	mm4,[6+esi*8+ebp]
377	pxor	mm5,[5+edi*8+ebp]
378	shr	ebx,16
379	lea	esi,[ecx*1+ecx]
380	movzx	ecx,bl
381	lea	edi,[edx*1+edx]
382	movzx	edx,bh
383	pxor	mm6,[4+esi*8+ebp]
384	pxor	mm7,[3+edi*8+ebp]
385	mov	ebx,DWORD [92+esp]
386	lea	esi,[ecx*1+ecx]
387	movzx	ecx,al
388	lea	edi,[edx*1+edx]
389	movzx	edx,ah
390	pxor	mm0,[2+esi*8+ebp]
391	pxor	mm1,[1+edi*8+ebp]
392	shr	eax,16
393	lea	esi,[ecx*1+ecx]
394	movzx	ecx,al
395	lea	edi,[edx*1+edx]
396	movzx	edx,ah
397	pxor	mm3,[esi*8+ebp]
398	pxor	mm4,[7+edi*8+ebp]
399	mov	eax,DWORD [96+esp]
400	lea	esi,[ecx*1+ecx]
401	movzx	ecx,bl
402	lea	edi,[edx*1+edx]
403	movzx	edx,bh
404	pxor	mm5,[6+esi*8+ebp]
405	pxor	mm6,[5+edi*8+ebp]
406	shr	ebx,16
407	lea	esi,[ecx*1+ecx]
408	movzx	ecx,bl
409	lea	edi,[edx*1+edx]
410	movzx	edx,bh
411	pxor	mm7,[4+esi*8+ebp]
412	pxor	mm0,[3+edi*8+ebp]
413	mov	ebx,DWORD [100+esp]
414	lea	esi,[ecx*1+ecx]
415	movzx	ecx,al
416	lea	edi,[edx*1+edx]
417	movzx	edx,ah
418	pxor	mm1,[2+esi*8+ebp]
419	pxor	mm2,[1+edi*8+ebp]
420	shr	eax,16
421	lea	esi,[ecx*1+ecx]
422	movzx	ecx,al
423	lea	edi,[edx*1+edx]
424	movzx	edx,ah
425	pxor	mm4,[esi*8+ebp]
426	pxor	mm5,[7+edi*8+ebp]
427	mov	eax,DWORD [104+esp]
428	lea	esi,[ecx*1+ecx]
429	movzx	ecx,bl
430	lea	edi,[edx*1+edx]
431	movzx	edx,bh
432	pxor	mm6,[6+esi*8+ebp]
433	pxor	mm7,[5+edi*8+ebp]
434	shr	ebx,16
435	lea	esi,[ecx*1+ecx]
436	movzx	ecx,bl
437	lea	edi,[edx*1+edx]
438	movzx	edx,bh
439	pxor	mm0,[4+esi*8+ebp]
440	pxor	mm1,[3+edi*8+ebp]
441	mov	ebx,DWORD [108+esp]
442	lea	esi,[ecx*1+ecx]
443	movzx	ecx,al
444	lea	edi,[edx*1+edx]
445	movzx	edx,ah
446	pxor	mm2,[2+esi*8+ebp]
447	pxor	mm3,[1+edi*8+ebp]
448	shr	eax,16
449	lea	esi,[ecx*1+ecx]
450	movzx	ecx,al
451	lea	edi,[edx*1+edx]
452	movzx	edx,ah
453	pxor	mm5,[esi*8+ebp]
454	pxor	mm6,[7+edi*8+ebp]
455	mov	eax,DWORD [112+esp]
456	lea	esi,[ecx*1+ecx]
457	movzx	ecx,bl
458	lea	edi,[edx*1+edx]
459	movzx	edx,bh
460	pxor	mm7,[6+esi*8+ebp]
461	pxor	mm0,[5+edi*8+ebp]
462	shr	ebx,16
463	lea	esi,[ecx*1+ecx]
464	movzx	ecx,bl
465	lea	edi,[edx*1+edx]
466	movzx	edx,bh
467	pxor	mm1,[4+esi*8+ebp]
468	pxor	mm2,[3+edi*8+ebp]
469	mov	ebx,DWORD [116+esp]
470	lea	esi,[ecx*1+ecx]
471	movzx	ecx,al
472	lea	edi,[edx*1+edx]
473	movzx	edx,ah
474	pxor	mm3,[2+esi*8+ebp]
475	pxor	mm4,[1+edi*8+ebp]
476	shr	eax,16
477	lea	esi,[ecx*1+ecx]
478	movzx	ecx,al
479	lea	edi,[edx*1+edx]
480	movzx	edx,ah
481	pxor	mm6,[esi*8+ebp]
482	pxor	mm7,[7+edi*8+ebp]
483	mov	eax,DWORD [120+esp]
484	lea	esi,[ecx*1+ecx]
485	movzx	ecx,bl
486	lea	edi,[edx*1+edx]
487	movzx	edx,bh
488	pxor	mm0,[6+esi*8+ebp]
489	pxor	mm1,[5+edi*8+ebp]
490	shr	ebx,16
491	lea	esi,[ecx*1+ecx]
492	movzx	ecx,bl
493	lea	edi,[edx*1+edx]
494	movzx	edx,bh
495	pxor	mm2,[4+esi*8+ebp]
496	pxor	mm3,[3+edi*8+ebp]
497	mov	ebx,DWORD [124+esp]
498	lea	esi,[ecx*1+ecx]
499	movzx	ecx,al
500	lea	edi,[edx*1+edx]
501	movzx	edx,ah
502	pxor	mm4,[2+esi*8+ebp]
503	pxor	mm5,[1+edi*8+ebp]
504	shr	eax,16
505	lea	esi,[ecx*1+ecx]
506	movzx	ecx,al
507	lea	edi,[edx*1+edx]
508	movzx	edx,ah
509	pxor	mm7,[esi*8+ebp]
510	pxor	mm0,[7+edi*8+ebp]
511	lea	esi,[ecx*1+ecx]
512	movzx	ecx,bl
513	lea	edi,[edx*1+edx]
514	movzx	edx,bh
515	pxor	mm1,[6+esi*8+ebp]
516	pxor	mm2,[5+edi*8+ebp]
517	shr	ebx,16
518	lea	esi,[ecx*1+ecx]
519	movzx	ecx,bl
520	lea	edi,[edx*1+edx]
521	movzx	edx,bh
522	pxor	mm3,[4+esi*8+ebp]
523	pxor	mm4,[3+edi*8+ebp]
524	lea	esi,[ecx*1+ecx]
525	movzx	ecx,al
526	lea	edi,[edx*1+edx]
527	movzx	edx,ah
528	pxor	mm5,[2+esi*8+ebp]
529	pxor	mm6,[1+edi*8+ebp]
530	lea	ebx,[128+esp]
531	mov	esi,DWORD [12+ebx]
532	add	esi,1
533	cmp	esi,10
534	je	NEAR L$004roundsdone
535	mov	DWORD [12+ebx],esi
536	movq	[64+esp],mm0
537	movq	[72+esp],mm1
538	movq	[80+esp],mm2
539	movq	[88+esp],mm3
540	movq	[96+esp],mm4
541	movq	[104+esp],mm5
542	movq	[112+esp],mm6
543	movq	[120+esp],mm7
544	jmp	NEAR L$003round
545align	16
546L$004roundsdone:
547	mov	esi,DWORD [ebx]
548	mov	edi,DWORD [4+ebx]
549	mov	eax,DWORD [8+ebx]
550	pxor	mm0,[edi]
551	pxor	mm1,[8+edi]
552	pxor	mm2,[16+edi]
553	pxor	mm3,[24+edi]
554	pxor	mm4,[32+edi]
555	pxor	mm5,[40+edi]
556	pxor	mm6,[48+edi]
557	pxor	mm7,[56+edi]
558	pxor	mm0,[esi]
559	pxor	mm1,[8+esi]
560	pxor	mm2,[16+esi]
561	pxor	mm3,[24+esi]
562	pxor	mm4,[32+esi]
563	pxor	mm5,[40+esi]
564	pxor	mm6,[48+esi]
565	pxor	mm7,[56+esi]
566	movq	[esi],mm0
567	movq	[8+esi],mm1
568	movq	[16+esi],mm2
569	movq	[24+esi],mm3
570	movq	[32+esi],mm4
571	movq	[40+esi],mm5
572	movq	[48+esi],mm6
573	movq	[56+esi],mm7
574	lea	edi,[64+edi]
575	sub	eax,1
576	jz	NEAR L$005alldone
577	mov	DWORD [4+ebx],edi
578	mov	DWORD [8+ebx],eax
579	jmp	NEAR L$002outerloop
580L$005alldone:
581	emms
582	mov	esp,DWORD [16+ebx]
583	pop	edi
584	pop	esi
585	pop	ebx
586	pop	ebp
587	ret
588align	64
589L$001table:
590db	24,24,96,24,192,120,48,216
591db	24,24,96,24,192,120,48,216
592db	35,35,140,35,5,175,70,38
593db	35,35,140,35,5,175,70,38
594db	198,198,63,198,126,249,145,184
595db	198,198,63,198,126,249,145,184
596db	232,232,135,232,19,111,205,251
597db	232,232,135,232,19,111,205,251
598db	135,135,38,135,76,161,19,203
599db	135,135,38,135,76,161,19,203
600db	184,184,218,184,169,98,109,17
601db	184,184,218,184,169,98,109,17
602db	1,1,4,1,8,5,2,9
603db	1,1,4,1,8,5,2,9
604db	79,79,33,79,66,110,158,13
605db	79,79,33,79,66,110,158,13
606db	54,54,216,54,173,238,108,155
607db	54,54,216,54,173,238,108,155
608db	166,166,162,166,89,4,81,255
609db	166,166,162,166,89,4,81,255
610db	210,210,111,210,222,189,185,12
611db	210,210,111,210,222,189,185,12
612db	245,245,243,245,251,6,247,14
613db	245,245,243,245,251,6,247,14
614db	121,121,249,121,239,128,242,150
615db	121,121,249,121,239,128,242,150
616db	111,111,161,111,95,206,222,48
617db	111,111,161,111,95,206,222,48
618db	145,145,126,145,252,239,63,109
619db	145,145,126,145,252,239,63,109
620db	82,82,85,82,170,7,164,248
621db	82,82,85,82,170,7,164,248
622db	96,96,157,96,39,253,192,71
623db	96,96,157,96,39,253,192,71
624db	188,188,202,188,137,118,101,53
625db	188,188,202,188,137,118,101,53
626db	155,155,86,155,172,205,43,55
627db	155,155,86,155,172,205,43,55
628db	142,142,2,142,4,140,1,138
629db	142,142,2,142,4,140,1,138
630db	163,163,182,163,113,21,91,210
631db	163,163,182,163,113,21,91,210
632db	12,12,48,12,96,60,24,108
633db	12,12,48,12,96,60,24,108
634db	123,123,241,123,255,138,246,132
635db	123,123,241,123,255,138,246,132
636db	53,53,212,53,181,225,106,128
637db	53,53,212,53,181,225,106,128
638db	29,29,116,29,232,105,58,245
639db	29,29,116,29,232,105,58,245
640db	224,224,167,224,83,71,221,179
641db	224,224,167,224,83,71,221,179
642db	215,215,123,215,246,172,179,33
643db	215,215,123,215,246,172,179,33
644db	194,194,47,194,94,237,153,156
645db	194,194,47,194,94,237,153,156
646db	46,46,184,46,109,150,92,67
647db	46,46,184,46,109,150,92,67
648db	75,75,49,75,98,122,150,41
649db	75,75,49,75,98,122,150,41
650db	254,254,223,254,163,33,225,93
651db	254,254,223,254,163,33,225,93
652db	87,87,65,87,130,22,174,213
653db	87,87,65,87,130,22,174,213
654db	21,21,84,21,168,65,42,189
655db	21,21,84,21,168,65,42,189
656db	119,119,193,119,159,182,238,232
657db	119,119,193,119,159,182,238,232
658db	55,55,220,55,165,235,110,146
659db	55,55,220,55,165,235,110,146
660db	229,229,179,229,123,86,215,158
661db	229,229,179,229,123,86,215,158
662db	159,159,70,159,140,217,35,19
663db	159,159,70,159,140,217,35,19
664db	240,240,231,240,211,23,253,35
665db	240,240,231,240,211,23,253,35
666db	74,74,53,74,106,127,148,32
667db	74,74,53,74,106,127,148,32
668db	218,218,79,218,158,149,169,68
669db	218,218,79,218,158,149,169,68
670db	88,88,125,88,250,37,176,162
671db	88,88,125,88,250,37,176,162
672db	201,201,3,201,6,202,143,207
673db	201,201,3,201,6,202,143,207
674db	41,41,164,41,85,141,82,124
675db	41,41,164,41,85,141,82,124
676db	10,10,40,10,80,34,20,90
677db	10,10,40,10,80,34,20,90
678db	177,177,254,177,225,79,127,80
679db	177,177,254,177,225,79,127,80
680db	160,160,186,160,105,26,93,201
681db	160,160,186,160,105,26,93,201
682db	107,107,177,107,127,218,214,20
683db	107,107,177,107,127,218,214,20
684db	133,133,46,133,92,171,23,217
685db	133,133,46,133,92,171,23,217
686db	189,189,206,189,129,115,103,60
687db	189,189,206,189,129,115,103,60
688db	93,93,105,93,210,52,186,143
689db	93,93,105,93,210,52,186,143
690db	16,16,64,16,128,80,32,144
691db	16,16,64,16,128,80,32,144
692db	244,244,247,244,243,3,245,7
693db	244,244,247,244,243,3,245,7
694db	203,203,11,203,22,192,139,221
695db	203,203,11,203,22,192,139,221
696db	62,62,248,62,237,198,124,211
697db	62,62,248,62,237,198,124,211
698db	5,5,20,5,40,17,10,45
699db	5,5,20,5,40,17,10,45
700db	103,103,129,103,31,230,206,120
701db	103,103,129,103,31,230,206,120
702db	228,228,183,228,115,83,213,151
703db	228,228,183,228,115,83,213,151
704db	39,39,156,39,37,187,78,2
705db	39,39,156,39,37,187,78,2
706db	65,65,25,65,50,88,130,115
707db	65,65,25,65,50,88,130,115
708db	139,139,22,139,44,157,11,167
709db	139,139,22,139,44,157,11,167
710db	167,167,166,167,81,1,83,246
711db	167,167,166,167,81,1,83,246
712db	125,125,233,125,207,148,250,178
713db	125,125,233,125,207,148,250,178
714db	149,149,110,149,220,251,55,73
715db	149,149,110,149,220,251,55,73
716db	216,216,71,216,142,159,173,86
717db	216,216,71,216,142,159,173,86
718db	251,251,203,251,139,48,235,112
719db	251,251,203,251,139,48,235,112
720db	238,238,159,238,35,113,193,205
721db	238,238,159,238,35,113,193,205
722db	124,124,237,124,199,145,248,187
723db	124,124,237,124,199,145,248,187
724db	102,102,133,102,23,227,204,113
725db	102,102,133,102,23,227,204,113
726db	221,221,83,221,166,142,167,123
727db	221,221,83,221,166,142,167,123
728db	23,23,92,23,184,75,46,175
729db	23,23,92,23,184,75,46,175
730db	71,71,1,71,2,70,142,69
731db	71,71,1,71,2,70,142,69
732db	158,158,66,158,132,220,33,26
733db	158,158,66,158,132,220,33,26
734db	202,202,15,202,30,197,137,212
735db	202,202,15,202,30,197,137,212
736db	45,45,180,45,117,153,90,88
737db	45,45,180,45,117,153,90,88
738db	191,191,198,191,145,121,99,46
739db	191,191,198,191,145,121,99,46
740db	7,7,28,7,56,27,14,63
741db	7,7,28,7,56,27,14,63
742db	173,173,142,173,1,35,71,172
743db	173,173,142,173,1,35,71,172
744db	90,90,117,90,234,47,180,176
745db	90,90,117,90,234,47,180,176
746db	131,131,54,131,108,181,27,239
747db	131,131,54,131,108,181,27,239
748db	51,51,204,51,133,255,102,182
749db	51,51,204,51,133,255,102,182
750db	99,99,145,99,63,242,198,92
751db	99,99,145,99,63,242,198,92
752db	2,2,8,2,16,10,4,18
753db	2,2,8,2,16,10,4,18
754db	170,170,146,170,57,56,73,147
755db	170,170,146,170,57,56,73,147
756db	113,113,217,113,175,168,226,222
757db	113,113,217,113,175,168,226,222
758db	200,200,7,200,14,207,141,198
759db	200,200,7,200,14,207,141,198
760db	25,25,100,25,200,125,50,209
761db	25,25,100,25,200,125,50,209
762db	73,73,57,73,114,112,146,59
763db	73,73,57,73,114,112,146,59
764db	217,217,67,217,134,154,175,95
765db	217,217,67,217,134,154,175,95
766db	242,242,239,242,195,29,249,49
767db	242,242,239,242,195,29,249,49
768db	227,227,171,227,75,72,219,168
769db	227,227,171,227,75,72,219,168
770db	91,91,113,91,226,42,182,185
771db	91,91,113,91,226,42,182,185
772db	136,136,26,136,52,146,13,188
773db	136,136,26,136,52,146,13,188
774db	154,154,82,154,164,200,41,62
775db	154,154,82,154,164,200,41,62
776db	38,38,152,38,45,190,76,11
777db	38,38,152,38,45,190,76,11
778db	50,50,200,50,141,250,100,191
779db	50,50,200,50,141,250,100,191
780db	176,176,250,176,233,74,125,89
781db	176,176,250,176,233,74,125,89
782db	233,233,131,233,27,106,207,242
783db	233,233,131,233,27,106,207,242
784db	15,15,60,15,120,51,30,119
785db	15,15,60,15,120,51,30,119
786db	213,213,115,213,230,166,183,51
787db	213,213,115,213,230,166,183,51
788db	128,128,58,128,116,186,29,244
789db	128,128,58,128,116,186,29,244
790db	190,190,194,190,153,124,97,39
791db	190,190,194,190,153,124,97,39
792db	205,205,19,205,38,222,135,235
793db	205,205,19,205,38,222,135,235
794db	52,52,208,52,189,228,104,137
795db	52,52,208,52,189,228,104,137
796db	72,72,61,72,122,117,144,50
797db	72,72,61,72,122,117,144,50
798db	255,255,219,255,171,36,227,84
799db	255,255,219,255,171,36,227,84
800db	122,122,245,122,247,143,244,141
801db	122,122,245,122,247,143,244,141
802db	144,144,122,144,244,234,61,100
803db	144,144,122,144,244,234,61,100
804db	95,95,97,95,194,62,190,157
805db	95,95,97,95,194,62,190,157
806db	32,32,128,32,29,160,64,61
807db	32,32,128,32,29,160,64,61
808db	104,104,189,104,103,213,208,15
809db	104,104,189,104,103,213,208,15
810db	26,26,104,26,208,114,52,202
811db	26,26,104,26,208,114,52,202
812db	174,174,130,174,25,44,65,183
813db	174,174,130,174,25,44,65,183
814db	180,180,234,180,201,94,117,125
815db	180,180,234,180,201,94,117,125
816db	84,84,77,84,154,25,168,206
817db	84,84,77,84,154,25,168,206
818db	147,147,118,147,236,229,59,127
819db	147,147,118,147,236,229,59,127
820db	34,34,136,34,13,170,68,47
821db	34,34,136,34,13,170,68,47
822db	100,100,141,100,7,233,200,99
823db	100,100,141,100,7,233,200,99
824db	241,241,227,241,219,18,255,42
825db	241,241,227,241,219,18,255,42
826db	115,115,209,115,191,162,230,204
827db	115,115,209,115,191,162,230,204
828db	18,18,72,18,144,90,36,130
829db	18,18,72,18,144,90,36,130
830db	64,64,29,64,58,93,128,122
831db	64,64,29,64,58,93,128,122
832db	8,8,32,8,64,40,16,72
833db	8,8,32,8,64,40,16,72
834db	195,195,43,195,86,232,155,149
835db	195,195,43,195,86,232,155,149
836db	236,236,151,236,51,123,197,223
837db	236,236,151,236,51,123,197,223
838db	219,219,75,219,150,144,171,77
839db	219,219,75,219,150,144,171,77
840db	161,161,190,161,97,31,95,192
841db	161,161,190,161,97,31,95,192
842db	141,141,14,141,28,131,7,145
843db	141,141,14,141,28,131,7,145
844db	61,61,244,61,245,201,122,200
845db	61,61,244,61,245,201,122,200
846db	151,151,102,151,204,241,51,91
847db	151,151,102,151,204,241,51,91
848db	0,0,0,0,0,0,0,0
849db	0,0,0,0,0,0,0,0
850db	207,207,27,207,54,212,131,249
851db	207,207,27,207,54,212,131,249
852db	43,43,172,43,69,135,86,110
853db	43,43,172,43,69,135,86,110
854db	118,118,197,118,151,179,236,225
855db	118,118,197,118,151,179,236,225
856db	130,130,50,130,100,176,25,230
857db	130,130,50,130,100,176,25,230
858db	214,214,127,214,254,169,177,40
859db	214,214,127,214,254,169,177,40
860db	27,27,108,27,216,119,54,195
861db	27,27,108,27,216,119,54,195
862db	181,181,238,181,193,91,119,116
863db	181,181,238,181,193,91,119,116
864db	175,175,134,175,17,41,67,190
865db	175,175,134,175,17,41,67,190
866db	106,106,181,106,119,223,212,29
867db	106,106,181,106,119,223,212,29
868db	80,80,93,80,186,13,160,234
869db	80,80,93,80,186,13,160,234
870db	69,69,9,69,18,76,138,87
871db	69,69,9,69,18,76,138,87
872db	243,243,235,243,203,24,251,56
873db	243,243,235,243,203,24,251,56
874db	48,48,192,48,157,240,96,173
875db	48,48,192,48,157,240,96,173
876db	239,239,155,239,43,116,195,196
877db	239,239,155,239,43,116,195,196
878db	63,63,252,63,229,195,126,218
879db	63,63,252,63,229,195,126,218
880db	85,85,73,85,146,28,170,199
881db	85,85,73,85,146,28,170,199
882db	162,162,178,162,121,16,89,219
883db	162,162,178,162,121,16,89,219
884db	234,234,143,234,3,101,201,233
885db	234,234,143,234,3,101,201,233
886db	101,101,137,101,15,236,202,106
887db	101,101,137,101,15,236,202,106
888db	186,186,210,186,185,104,105,3
889db	186,186,210,186,185,104,105,3
890db	47,47,188,47,101,147,94,74
891db	47,47,188,47,101,147,94,74
892db	192,192,39,192,78,231,157,142
893db	192,192,39,192,78,231,157,142
894db	222,222,95,222,190,129,161,96
895db	222,222,95,222,190,129,161,96
896db	28,28,112,28,224,108,56,252
897db	28,28,112,28,224,108,56,252
898db	253,253,211,253,187,46,231,70
899db	253,253,211,253,187,46,231,70
900db	77,77,41,77,82,100,154,31
901db	77,77,41,77,82,100,154,31
902db	146,146,114,146,228,224,57,118
903db	146,146,114,146,228,224,57,118
904db	117,117,201,117,143,188,234,250
905db	117,117,201,117,143,188,234,250
906db	6,6,24,6,48,30,12,54
907db	6,6,24,6,48,30,12,54
908db	138,138,18,138,36,152,9,174
909db	138,138,18,138,36,152,9,174
910db	178,178,242,178,249,64,121,75
911db	178,178,242,178,249,64,121,75
912db	230,230,191,230,99,89,209,133
913db	230,230,191,230,99,89,209,133
914db	14,14,56,14,112,54,28,126
915db	14,14,56,14,112,54,28,126
916db	31,31,124,31,248,99,62,231
917db	31,31,124,31,248,99,62,231
918db	98,98,149,98,55,247,196,85
919db	98,98,149,98,55,247,196,85
920db	212,212,119,212,238,163,181,58
921db	212,212,119,212,238,163,181,58
922db	168,168,154,168,41,50,77,129
923db	168,168,154,168,41,50,77,129
924db	150,150,98,150,196,244,49,82
925db	150,150,98,150,196,244,49,82
926db	249,249,195,249,155,58,239,98
927db	249,249,195,249,155,58,239,98
928db	197,197,51,197,102,246,151,163
929db	197,197,51,197,102,246,151,163
930db	37,37,148,37,53,177,74,16
931db	37,37,148,37,53,177,74,16
932db	89,89,121,89,242,32,178,171
933db	89,89,121,89,242,32,178,171
934db	132,132,42,132,84,174,21,208
935db	132,132,42,132,84,174,21,208
936db	114,114,213,114,183,167,228,197
937db	114,114,213,114,183,167,228,197
938db	57,57,228,57,213,221,114,236
939db	57,57,228,57,213,221,114,236
940db	76,76,45,76,90,97,152,22
941db	76,76,45,76,90,97,152,22
942db	94,94,101,94,202,59,188,148
943db	94,94,101,94,202,59,188,148
944db	120,120,253,120,231,133,240,159
945db	120,120,253,120,231,133,240,159
946db	56,56,224,56,221,216,112,229
947db	56,56,224,56,221,216,112,229
948db	140,140,10,140,20,134,5,152
949db	140,140,10,140,20,134,5,152
950db	209,209,99,209,198,178,191,23
951db	209,209,99,209,198,178,191,23
952db	165,165,174,165,65,11,87,228
953db	165,165,174,165,65,11,87,228
954db	226,226,175,226,67,77,217,161
955db	226,226,175,226,67,77,217,161
956db	97,97,153,97,47,248,194,78
957db	97,97,153,97,47,248,194,78
958db	179,179,246,179,241,69,123,66
959db	179,179,246,179,241,69,123,66
960db	33,33,132,33,21,165,66,52
961db	33,33,132,33,21,165,66,52
962db	156,156,74,156,148,214,37,8
963db	156,156,74,156,148,214,37,8
964db	30,30,120,30,240,102,60,238
965db	30,30,120,30,240,102,60,238
966db	67,67,17,67,34,82,134,97
967db	67,67,17,67,34,82,134,97
968db	199,199,59,199,118,252,147,177
969db	199,199,59,199,118,252,147,177
970db	252,252,215,252,179,43,229,79
971db	252,252,215,252,179,43,229,79
972db	4,4,16,4,32,20,8,36
973db	4,4,16,4,32,20,8,36
974db	81,81,89,81,178,8,162,227
975db	81,81,89,81,178,8,162,227
976db	153,153,94,153,188,199,47,37
977db	153,153,94,153,188,199,47,37
978db	109,109,169,109,79,196,218,34
979db	109,109,169,109,79,196,218,34
980db	13,13,52,13,104,57,26,101
981db	13,13,52,13,104,57,26,101
982db	250,250,207,250,131,53,233,121
983db	250,250,207,250,131,53,233,121
984db	223,223,91,223,182,132,163,105
985db	223,223,91,223,182,132,163,105
986db	126,126,229,126,215,155,252,169
987db	126,126,229,126,215,155,252,169
988db	36,36,144,36,61,180,72,25
989db	36,36,144,36,61,180,72,25
990db	59,59,236,59,197,215,118,254
991db	59,59,236,59,197,215,118,254
992db	171,171,150,171,49,61,75,154
993db	171,171,150,171,49,61,75,154
994db	206,206,31,206,62,209,129,240
995db	206,206,31,206,62,209,129,240
996db	17,17,68,17,136,85,34,153
997db	17,17,68,17,136,85,34,153
998db	143,143,6,143,12,137,3,131
999db	143,143,6,143,12,137,3,131
1000db	78,78,37,78,74,107,156,4
1001db	78,78,37,78,74,107,156,4
1002db	183,183,230,183,209,81,115,102
1003db	183,183,230,183,209,81,115,102
1004db	235,235,139,235,11,96,203,224
1005db	235,235,139,235,11,96,203,224
1006db	60,60,240,60,253,204,120,193
1007db	60,60,240,60,253,204,120,193
1008db	129,129,62,129,124,191,31,253
1009db	129,129,62,129,124,191,31,253
1010db	148,148,106,148,212,254,53,64
1011db	148,148,106,148,212,254,53,64
1012db	247,247,251,247,235,12,243,28
1013db	247,247,251,247,235,12,243,28
1014db	185,185,222,185,161,103,111,24
1015db	185,185,222,185,161,103,111,24
1016db	19,19,76,19,152,95,38,139
1017db	19,19,76,19,152,95,38,139
1018db	44,44,176,44,125,156,88,81
1019db	44,44,176,44,125,156,88,81
1020db	211,211,107,211,214,184,187,5
1021db	211,211,107,211,214,184,187,5
1022db	231,231,187,231,107,92,211,140
1023db	231,231,187,231,107,92,211,140
1024db	110,110,165,110,87,203,220,57
1025db	110,110,165,110,87,203,220,57
1026db	196,196,55,196,110,243,149,170
1027db	196,196,55,196,110,243,149,170
1028db	3,3,12,3,24,15,6,27
1029db	3,3,12,3,24,15,6,27
1030db	86,86,69,86,138,19,172,220
1031db	86,86,69,86,138,19,172,220
1032db	68,68,13,68,26,73,136,94
1033db	68,68,13,68,26,73,136,94
1034db	127,127,225,127,223,158,254,160
1035db	127,127,225,127,223,158,254,160
1036db	169,169,158,169,33,55,79,136
1037db	169,169,158,169,33,55,79,136
1038db	42,42,168,42,77,130,84,103
1039db	42,42,168,42,77,130,84,103
1040db	187,187,214,187,177,109,107,10
1041db	187,187,214,187,177,109,107,10
1042db	193,193,35,193,70,226,159,135
1043db	193,193,35,193,70,226,159,135
1044db	83,83,81,83,162,2,166,241
1045db	83,83,81,83,162,2,166,241
1046db	220,220,87,220,174,139,165,114
1047db	220,220,87,220,174,139,165,114
1048db	11,11,44,11,88,39,22,83
1049db	11,11,44,11,88,39,22,83
1050db	157,157,78,157,156,211,39,1
1051db	157,157,78,157,156,211,39,1
1052db	108,108,173,108,71,193,216,43
1053db	108,108,173,108,71,193,216,43
1054db	49,49,196,49,149,245,98,164
1055db	49,49,196,49,149,245,98,164
1056db	116,116,205,116,135,185,232,243
1057db	116,116,205,116,135,185,232,243
1058db	246,246,255,246,227,9,241,21
1059db	246,246,255,246,227,9,241,21
1060db	70,70,5,70,10,67,140,76
1061db	70,70,5,70,10,67,140,76
1062db	172,172,138,172,9,38,69,165
1063db	172,172,138,172,9,38,69,165
1064db	137,137,30,137,60,151,15,181
1065db	137,137,30,137,60,151,15,181
1066db	20,20,80,20,160,68,40,180
1067db	20,20,80,20,160,68,40,180
1068db	225,225,163,225,91,66,223,186
1069db	225,225,163,225,91,66,223,186
1070db	22,22,88,22,176,78,44,166
1071db	22,22,88,22,176,78,44,166
1072db	58,58,232,58,205,210,116,247
1073db	58,58,232,58,205,210,116,247
1074db	105,105,185,105,111,208,210,6
1075db	105,105,185,105,111,208,210,6
1076db	9,9,36,9,72,45,18,65
1077db	9,9,36,9,72,45,18,65
1078db	112,112,221,112,167,173,224,215
1079db	112,112,221,112,167,173,224,215
1080db	182,182,226,182,217,84,113,111
1081db	182,182,226,182,217,84,113,111
1082db	208,208,103,208,206,183,189,30
1083db	208,208,103,208,206,183,189,30
1084db	237,237,147,237,59,126,199,214
1085db	237,237,147,237,59,126,199,214
1086db	204,204,23,204,46,219,133,226
1087db	204,204,23,204,46,219,133,226
1088db	66,66,21,66,42,87,132,104
1089db	66,66,21,66,42,87,132,104
1090db	152,152,90,152,180,194,45,44
1091db	152,152,90,152,180,194,45,44
1092db	164,164,170,164,73,14,85,237
1093db	164,164,170,164,73,14,85,237
1094db	40,40,160,40,93,136,80,117
1095db	40,40,160,40,93,136,80,117
1096db	92,92,109,92,218,49,184,134
1097db	92,92,109,92,218,49,184,134
1098db	248,248,199,248,147,63,237,107
1099db	248,248,199,248,147,63,237,107
1100db	134,134,34,134,68,164,17,194
1101db	134,134,34,134,68,164,17,194
1102db	24,35,198,232,135,184,1,79
1103db	54,166,210,245,121,111,145,82
1104db	96,188,155,142,163,12,123,53
1105db	29,224,215,194,46,75,254,87
1106db	21,119,55,229,159,240,74,218
1107db	88,201,41,10,177,160,107,133
1108db	189,93,16,244,203,62,5,103
1109db	228,39,65,139,167,125,149,216
1110db	251,238,124,102,221,23,71,158
1111db	202,45,191,7,173,90,131,51
1112