1918345e80e207568ce129eb6a419a511594d1b70sewardj
2918345e80e207568ce129eb6a419a511594d1b70sewardj#include <stdio.h>
3918345e80e207568ce129eb6a419a511594d1b70sewardj
4918345e80e207568ce129eb6a419a511594d1b70sewardjtypedef  unsigned long long int  ULong;
5918345e80e207568ce129eb6a419a511594d1b70sewardj
6918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRADI ------------------------ */
7918345e80e207568ce129eb6a419a511594d1b70sewardj
8918345e80e207568ce129eb6a419a511594d1b70sewardj#define INSN_SRADI(nnn)                                                    \
9918345e80e207568ce129eb6a419a511594d1b70sewardj   void do_sradi_##nnn ( ULong arg, /*OUT*/ULong* res, /*OUT*/ULong* xer ) \
10918345e80e207568ce129eb6a419a511594d1b70sewardj   {                                                                       \
11918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong argW = arg;                                                     \
12918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong resW = 0;                                                       \
13918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong xerW = 0;                                                       \
14918345e80e207568ce129eb6a419a511594d1b70sewardj     __asm__ __volatile__(                                                 \
15918345e80e207568ce129eb6a419a511594d1b70sewardj        "sradi %0,%2, " #nnn "\n\t"                                        \
16918345e80e207568ce129eb6a419a511594d1b70sewardj        "mfxer %1"                                                         \
17918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*out*/ "=b"(resW),  "=b"(xerW)                                  \
18918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*in*/  "b"(argW)                                                \
19918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*trash*/ "cc"                                                   \
20918345e80e207568ce129eb6a419a511594d1b70sewardj     );                                                                    \
21918345e80e207568ce129eb6a419a511594d1b70sewardj     *res = resW;                                                          \
22918345e80e207568ce129eb6a419a511594d1b70sewardj     *xer = xerW;                                                          \
23918345e80e207568ce129eb6a419a511594d1b70sewardj   }
24918345e80e207568ce129eb6a419a511594d1b70sewardj
25918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(0)
26918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(1)
27918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(2)
28918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(3)
29918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(4)
30918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(5)
31918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(6)
32918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(7)
33918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(8)
34918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(9)
35918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(10)
36918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(11)
37918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(12)
38918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(13)
39918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(14)
40918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(15)
41918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(16)
42918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(17)
43918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(18)
44918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(19)
45918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(20)
46918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(21)
47918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(22)
48918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(23)
49918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(24)
50918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(25)
51918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(26)
52918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(27)
53918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(28)
54918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(29)
55918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(30)
56918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(31)
57918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(32)
58918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(33)
59918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(34)
60918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(35)
61918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(36)
62918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(37)
63918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(38)
64918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(39)
65918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(40)
66918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(41)
67918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(42)
68918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(43)
69918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(44)
70918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(45)
71918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(46)
72918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(47)
73918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(48)
74918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(49)
75918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(50)
76918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(51)
77918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(52)
78918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(53)
79918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(54)
80918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(55)
81918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(56)
82918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(57)
83918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(58)
84918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(59)
85918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(60)
86918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(61)
87918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(62)
88918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(63)
89918345e80e207568ce129eb6a419a511594d1b70sewardj
90918345e80e207568ce129eb6a419a511594d1b70sewardjstatic void* all_sradi[64]
91918345e80e207568ce129eb6a419a511594d1b70sewardj  = {
92918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_0,
93918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_1,
94918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_2,
95918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_3,
96918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_4,
97918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_5,
98918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_6,
99918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_7,
100918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_8,
101918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_9,
102918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_10,
103918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_11,
104918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_12,
105918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_13,
106918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_14,
107918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_15,
108918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_16,
109918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_17,
110918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_18,
111918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_19,
112918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_20,
113918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_21,
114918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_22,
115918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_23,
116918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_24,
117918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_25,
118918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_26,
119918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_27,
120918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_28,
121918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_29,
122918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_30,
123918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_31,
124918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_32,
125918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_33,
126918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_34,
127918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_35,
128918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_36,
129918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_37,
130918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_38,
131918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_39,
132918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_40,
133918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_41,
134918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_42,
135918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_43,
136918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_44,
137918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_45,
138918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_46,
139918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_47,
140918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_48,
141918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_49,
142918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_50,
143918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_51,
144918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_52,
145918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_53,
146918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_54,
147918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_55,
148918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_56,
149918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_57,
150918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_58,
151918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_59,
152918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_60,
153918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_61,
154918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_62,
155918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_sradi_63
156918345e80e207568ce129eb6a419a511594d1b70sewardj   };
157918345e80e207568ce129eb6a419a511594d1b70sewardj
158918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAWI ------------------------ */
159918345e80e207568ce129eb6a419a511594d1b70sewardj
160918345e80e207568ce129eb6a419a511594d1b70sewardj#define INSN_SRAWI(nnn)                                                    \
161918345e80e207568ce129eb6a419a511594d1b70sewardj   void do_srawi_##nnn ( ULong arg, /*OUT*/ULong* res, /*OUT*/ULong* xer ) \
162918345e80e207568ce129eb6a419a511594d1b70sewardj   {                                                                       \
163918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong argW = arg;                                                     \
164918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong resW = 0;                                                       \
165918345e80e207568ce129eb6a419a511594d1b70sewardj     ULong xerW = 0;                                                       \
166918345e80e207568ce129eb6a419a511594d1b70sewardj     __asm__ __volatile__(                                                 \
167918345e80e207568ce129eb6a419a511594d1b70sewardj        "srawi %0,%2, " #nnn "\n\t"                                        \
168918345e80e207568ce129eb6a419a511594d1b70sewardj        "mfxer %1"                                                         \
169918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*out*/ "=b"(resW),  "=b"(xerW)                                  \
170918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*in*/  "b"(argW)                                                \
171918345e80e207568ce129eb6a419a511594d1b70sewardj        : /*trash*/ "cc"                                                   \
172918345e80e207568ce129eb6a419a511594d1b70sewardj     );                                                                    \
173918345e80e207568ce129eb6a419a511594d1b70sewardj     *res = resW;                                                          \
174918345e80e207568ce129eb6a419a511594d1b70sewardj     *xer = xerW;                                                          \
175918345e80e207568ce129eb6a419a511594d1b70sewardj   }
176918345e80e207568ce129eb6a419a511594d1b70sewardj
177918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(0)
178918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(1)
179918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(2)
180918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(3)
181918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(4)
182918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(5)
183918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(6)
184918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(7)
185918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(8)
186918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(9)
187918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(10)
188918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(11)
189918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(12)
190918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(13)
191918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(14)
192918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(15)
193918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(16)
194918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(17)
195918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(18)
196918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(19)
197918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(20)
198918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(21)
199918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(22)
200918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(23)
201918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(24)
202918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(25)
203918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(26)
204918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(27)
205918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(28)
206918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(29)
207918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(30)
208918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(31)
209918345e80e207568ce129eb6a419a511594d1b70sewardj
210918345e80e207568ce129eb6a419a511594d1b70sewardjstatic void* all_srawi[32]
211918345e80e207568ce129eb6a419a511594d1b70sewardj  = {
212918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_0,
213918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_1,
214918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_2,
215918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_3,
216918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_4,
217918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_5,
218918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_6,
219918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_7,
220918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_8,
221918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_9,
222918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_10,
223918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_11,
224918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_12,
225918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_13,
226918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_14,
227918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_15,
228918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_16,
229918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_17,
230918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_18,
231918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_19,
232918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_20,
233918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_21,
234918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_22,
235918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_23,
236918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_24,
237918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_25,
238918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_26,
239918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_27,
240918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_28,
241918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_29,
242918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_30,
243918345e80e207568ce129eb6a419a511594d1b70sewardj       (void*)&do_srawi_31
244918345e80e207568ce129eb6a419a511594d1b70sewardj   };
245918345e80e207568ce129eb6a419a511594d1b70sewardj
246918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAD ------------------------ */
247918345e80e207568ce129eb6a419a511594d1b70sewardj
248918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srad ( ULong arg1, ULong arg2,
249918345e80e207568ce129eb6a419a511594d1b70sewardj               /*OUT*/ULong* res, /*OUT*/ULong* xer )
250918345e80e207568ce129eb6a419a511594d1b70sewardj{
251918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
252918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
253918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
254918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
255918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
256918345e80e207568ce129eb6a419a511594d1b70sewardj     "srad %0,%2,%3\n\t"
257918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
258918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
259918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
260918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
261918345e80e207568ce129eb6a419a511594d1b70sewardj  );
262918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
263918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
264918345e80e207568ce129eb6a419a511594d1b70sewardj}
265918345e80e207568ce129eb6a419a511594d1b70sewardj
266918345e80e207568ce129eb6a419a511594d1b70sewardj
267918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAW ------------------------ */
268918345e80e207568ce129eb6a419a511594d1b70sewardj
269918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_sraw ( ULong arg1, ULong arg2,
270918345e80e207568ce129eb6a419a511594d1b70sewardj               /*OUT*/ULong* res, /*OUT*/ULong* xer )
271918345e80e207568ce129eb6a419a511594d1b70sewardj{
272918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
273918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
274918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
275918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
276918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
277918345e80e207568ce129eb6a419a511594d1b70sewardj     "sraw %0,%2,%3\n\t"
278918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
279918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
280918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
281918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
282918345e80e207568ce129eb6a419a511594d1b70sewardj  );
283918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
284918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
285918345e80e207568ce129eb6a419a511594d1b70sewardj}
286918345e80e207568ce129eb6a419a511594d1b70sewardj
287918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRD ------------------------ */
288918345e80e207568ce129eb6a419a511594d1b70sewardj
289918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srd ( ULong arg1, ULong arg2,
290918345e80e207568ce129eb6a419a511594d1b70sewardj              /*OUT*/ULong* res, /*OUT*/ULong* xer )
291918345e80e207568ce129eb6a419a511594d1b70sewardj{
292918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
293918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
294918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
295918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
296918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
297918345e80e207568ce129eb6a419a511594d1b70sewardj     "srd %0,%2,%3\n\t"
298918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
299918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
300918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
301918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
302918345e80e207568ce129eb6a419a511594d1b70sewardj  );
303918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
304918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
305918345e80e207568ce129eb6a419a511594d1b70sewardj}
306918345e80e207568ce129eb6a419a511594d1b70sewardj
307918345e80e207568ce129eb6a419a511594d1b70sewardj
308918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRW ------------------------ */
309918345e80e207568ce129eb6a419a511594d1b70sewardj
310918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srw ( ULong arg1, ULong arg2,
311918345e80e207568ce129eb6a419a511594d1b70sewardj              /*OUT*/ULong* res, /*OUT*/ULong* xer )
312918345e80e207568ce129eb6a419a511594d1b70sewardj{
313918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
314918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
315918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
316918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
317918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
318918345e80e207568ce129eb6a419a511594d1b70sewardj     "srw %0,%2,%3\n\t"
319918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
320918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
321918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
322918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
323918345e80e207568ce129eb6a419a511594d1b70sewardj  );
324918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
325918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
326918345e80e207568ce129eb6a419a511594d1b70sewardj}
327918345e80e207568ce129eb6a419a511594d1b70sewardj
328918345e80e207568ce129eb6a419a511594d1b70sewardj
329918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SLD ------------------------ */
330918345e80e207568ce129eb6a419a511594d1b70sewardj
331918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_sld ( ULong arg1, ULong arg2,
332918345e80e207568ce129eb6a419a511594d1b70sewardj              /*OUT*/ULong* res, /*OUT*/ULong* xer )
333918345e80e207568ce129eb6a419a511594d1b70sewardj{
334918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
335918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
336918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
337918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
338918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
339918345e80e207568ce129eb6a419a511594d1b70sewardj     "sld %0,%2,%3\n\t"
340918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
341918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
342918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
343918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
344918345e80e207568ce129eb6a419a511594d1b70sewardj  );
345918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
346918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
347918345e80e207568ce129eb6a419a511594d1b70sewardj}
348918345e80e207568ce129eb6a419a511594d1b70sewardj
349918345e80e207568ce129eb6a419a511594d1b70sewardj
350918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SLW ------------------------ */
351918345e80e207568ce129eb6a419a511594d1b70sewardj
352918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_slw ( ULong arg1, ULong arg2,
353918345e80e207568ce129eb6a419a511594d1b70sewardj              /*OUT*/ULong* res, /*OUT*/ULong* xer )
354918345e80e207568ce129eb6a419a511594d1b70sewardj{
355918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1W = arg1;
356918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg2W = arg2;
357918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong resW  = 0;
358918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong xerW  = 0;
359918345e80e207568ce129eb6a419a511594d1b70sewardj   __asm__ __volatile__(
360918345e80e207568ce129eb6a419a511594d1b70sewardj     "slw %0,%2,%3\n\t"
361918345e80e207568ce129eb6a419a511594d1b70sewardj     "mfxer %1"
362918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*out*/ "=b"(resW),  "=b"(xerW)
363918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*in*/  "b"(arg1W), "b"(arg2W)
364918345e80e207568ce129eb6a419a511594d1b70sewardj     : /*trash*/ "cc"
365918345e80e207568ce129eb6a419a511594d1b70sewardj  );
366918345e80e207568ce129eb6a419a511594d1b70sewardj  *res = resW;
367918345e80e207568ce129eb6a419a511594d1b70sewardj  *xer = xerW;
368918345e80e207568ce129eb6a419a511594d1b70sewardj}
369918345e80e207568ce129eb6a419a511594d1b70sewardj
370918345e80e207568ce129eb6a419a511594d1b70sewardj
371918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------  ------------------------ */
372918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------  ------------------------ */
373918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------  ------------------------ */
374918345e80e207568ce129eb6a419a511594d1b70sewardj
375918345e80e207568ce129eb6a419a511594d1b70sewardj#define N_ARGS64 41
376918345e80e207568ce129eb6a419a511594d1b70sewardj
377918345e80e207568ce129eb6a419a511594d1b70sewardjULong args64[N_ARGS64] = {
378918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000000000000ULL,
379918345e80e207568ce129eb6a419a511594d1b70sewardj
380918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000000000001ULL,
381918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000031415927ULL,
382918345e80e207568ce129eb6a419a511594d1b70sewardj  0x000000007FFFFFFFULL,
383918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000080000000ULL,
384918345e80e207568ce129eb6a419a511594d1b70sewardj  0x00000000FFFFFFFFULL,
385918345e80e207568ce129eb6a419a511594d1b70sewardj
386918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000100000000ULL,
387918345e80e207568ce129eb6a419a511594d1b70sewardj  0x3141592700000000ULL,
388918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF00000000ULL,
389918345e80e207568ce129eb6a419a511594d1b70sewardj  0x8000000000000000ULL,
390918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF00000000ULL,
391918345e80e207568ce129eb6a419a511594d1b70sewardj
392918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF00000001ULL,
393918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF31415927ULL,
394918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF7FFFFFFFULL,
395918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF80000000ULL,
396918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFFFFFFFFFFULL,
397918345e80e207568ce129eb6a419a511594d1b70sewardj
398918345e80e207568ce129eb6a419a511594d1b70sewardj  0x000000017FFFFFFFULL,
399918345e80e207568ce129eb6a419a511594d1b70sewardj  0x314159277FFFFFFFULL,
400918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF7FFFFFFFULL,
401918345e80e207568ce129eb6a419a511594d1b70sewardj  0x800000007FFFFFFFULL,
402918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF7FFFFFFFULL,
403918345e80e207568ce129eb6a419a511594d1b70sewardj
404918345e80e207568ce129eb6a419a511594d1b70sewardj  0x8000000000000001ULL,
405918345e80e207568ce129eb6a419a511594d1b70sewardj  0x8000000031415927ULL,
406918345e80e207568ce129eb6a419a511594d1b70sewardj  0x800000007FFFFFFFULL,
407918345e80e207568ce129eb6a419a511594d1b70sewardj  0x8000000080000000ULL,
408918345e80e207568ce129eb6a419a511594d1b70sewardj  0x80000000FFFFFFFFULL,
409918345e80e207568ce129eb6a419a511594d1b70sewardj
410918345e80e207568ce129eb6a419a511594d1b70sewardj  0x0000000180000000ULL,
411918345e80e207568ce129eb6a419a511594d1b70sewardj  0x3141592780000000ULL,
412918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFF80000000ULL,
413918345e80e207568ce129eb6a419a511594d1b70sewardj  0x8000000080000000ULL,
414918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF80000000ULL,
415918345e80e207568ce129eb6a419a511594d1b70sewardj
416918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF00000001ULL,
417918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF31415927ULL,
418918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF7FFFFFFFULL,
419918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFF80000000ULL,
420918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFFFFFFFFFFULL,
421918345e80e207568ce129eb6a419a511594d1b70sewardj
422918345e80e207568ce129eb6a419a511594d1b70sewardj  0x00000001FFFFFFFFULL,
423918345e80e207568ce129eb6a419a511594d1b70sewardj  0x31415927FFFFFFFFULL,
424918345e80e207568ce129eb6a419a511594d1b70sewardj  0x7FFFFFFFFFFFFFFFULL,
425918345e80e207568ce129eb6a419a511594d1b70sewardj  0x80000000FFFFFFFFULL,
426918345e80e207568ce129eb6a419a511594d1b70sewardj  0xFFFFFFFFFFFFFFFFULL
427918345e80e207568ce129eb6a419a511594d1b70sewardj};
428918345e80e207568ce129eb6a419a511594d1b70sewardj
429918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_unary ( char* name, void** fns, int n_fns )
430918345e80e207568ce129eb6a419a511594d1b70sewardj{
431918345e80e207568ce129eb6a419a511594d1b70sewardj   int i, j;
432918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg, res, xer;
433918345e80e207568ce129eb6a419a511594d1b70sewardj   void(*fn)(ULong,ULong*,ULong*);
434918345e80e207568ce129eb6a419a511594d1b70sewardj   for (i = 0; i < n_fns; i++) { /* shift */
435918345e80e207568ce129eb6a419a511594d1b70sewardj      for (j = 0; j < N_ARGS64; j++) { /* arg */
436918345e80e207568ce129eb6a419a511594d1b70sewardj         arg = args64[j];
437918345e80e207568ce129eb6a419a511594d1b70sewardj         res = xer = 0;
438918345e80e207568ce129eb6a419a511594d1b70sewardj         fn = fns[i];
439918345e80e207568ce129eb6a419a511594d1b70sewardj         fn( arg, &res, &xer );
440918345e80e207568ce129eb6a419a511594d1b70sewardj         printf("%5s(0x%016llx, %2d) = 0x%016llx, %d\n",
441918345e80e207568ce129eb6a419a511594d1b70sewardj                name, arg, (int)i, res, (int)((xer >> 29 & 1)));
442918345e80e207568ce129eb6a419a511594d1b70sewardj      }
443918345e80e207568ce129eb6a419a511594d1b70sewardj   }
444918345e80e207568ce129eb6a419a511594d1b70sewardj}
445918345e80e207568ce129eb6a419a511594d1b70sewardj
446918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_binary ( char* name, void* fnV )
447918345e80e207568ce129eb6a419a511594d1b70sewardj{
448918345e80e207568ce129eb6a419a511594d1b70sewardj   int i, j;
449918345e80e207568ce129eb6a419a511594d1b70sewardj   ULong arg1, arg2, res, xer;
450918345e80e207568ce129eb6a419a511594d1b70sewardj   void(*fn)(ULong,ULong,ULong*,ULong*);
451918345e80e207568ce129eb6a419a511594d1b70sewardj   for (i = 0; i < 64+10; i++) { /* shift */
452918345e80e207568ce129eb6a419a511594d1b70sewardj      for (j = 0; j < N_ARGS64; j++) { /* arg */
453918345e80e207568ce129eb6a419a511594d1b70sewardj         arg1 = args64[j];
454918345e80e207568ce129eb6a419a511594d1b70sewardj         arg2 = i;
455918345e80e207568ce129eb6a419a511594d1b70sewardj         res = xer = 0;
456918345e80e207568ce129eb6a419a511594d1b70sewardj         fn = fnV;
457918345e80e207568ce129eb6a419a511594d1b70sewardj         fn( arg1, arg2, &res, &xer );
458918345e80e207568ce129eb6a419a511594d1b70sewardj         printf("%5s(0x%016llx, %2d) = 0x%016llx, %d\n",
459918345e80e207568ce129eb6a419a511594d1b70sewardj                name, arg1, (int)arg2, res, (int)((xer >> 29 & 1)));
460918345e80e207568ce129eb6a419a511594d1b70sewardj      }
461918345e80e207568ce129eb6a419a511594d1b70sewardj   }
462918345e80e207568ce129eb6a419a511594d1b70sewardj}
463918345e80e207568ce129eb6a419a511594d1b70sewardj
464918345e80e207568ce129eb6a419a511594d1b70sewardjint main ( void )
465918345e80e207568ce129eb6a419a511594d1b70sewardj{
466918345e80e207568ce129eb6a419a511594d1b70sewardj   do_unary("sradi", all_sradi, 64);
467918345e80e207568ce129eb6a419a511594d1b70sewardj   do_unary("srawi", all_srawi, 32);
468918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("srad", do_srad);
469918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("sraw", do_sraw);
470918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("srd",  do_srd);
471918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("srw",  do_srw);
472918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("sld",  do_sld);
473918345e80e207568ce129eb6a419a511594d1b70sewardj   do_binary("slw",  do_slw);
474918345e80e207568ce129eb6a419a511594d1b70sewardj   return 0;
475918345e80e207568ce129eb6a419a511594d1b70sewardj}
476918345e80e207568ce129eb6a419a511594d1b70sewardj
477918345e80e207568ce129eb6a419a511594d1b70sewardj/*
478918345e80e207568ce129eb6a419a511594d1b70sewardj0
479918345e80e207568ce129eb6a419a511594d1b70sewardj1
480918345e80e207568ce129eb6a419a511594d1b70sewardj2
481918345e80e207568ce129eb6a419a511594d1b70sewardj3
482918345e80e207568ce129eb6a419a511594d1b70sewardj4
483918345e80e207568ce129eb6a419a511594d1b70sewardj5
484918345e80e207568ce129eb6a419a511594d1b70sewardj6
485918345e80e207568ce129eb6a419a511594d1b70sewardj7
486918345e80e207568ce129eb6a419a511594d1b70sewardj8
487918345e80e207568ce129eb6a419a511594d1b70sewardj9
488918345e80e207568ce129eb6a419a511594d1b70sewardj10
489918345e80e207568ce129eb6a419a511594d1b70sewardj11
490918345e80e207568ce129eb6a419a511594d1b70sewardj12
491918345e80e207568ce129eb6a419a511594d1b70sewardj13
492918345e80e207568ce129eb6a419a511594d1b70sewardj14
493918345e80e207568ce129eb6a419a511594d1b70sewardj15
494918345e80e207568ce129eb6a419a511594d1b70sewardj16
495918345e80e207568ce129eb6a419a511594d1b70sewardj17
496918345e80e207568ce129eb6a419a511594d1b70sewardj18
497918345e80e207568ce129eb6a419a511594d1b70sewardj19
498918345e80e207568ce129eb6a419a511594d1b70sewardj20
499918345e80e207568ce129eb6a419a511594d1b70sewardj21
500918345e80e207568ce129eb6a419a511594d1b70sewardj22
501918345e80e207568ce129eb6a419a511594d1b70sewardj23
502918345e80e207568ce129eb6a419a511594d1b70sewardj24
503918345e80e207568ce129eb6a419a511594d1b70sewardj25
504918345e80e207568ce129eb6a419a511594d1b70sewardj26
505918345e80e207568ce129eb6a419a511594d1b70sewardj27
506918345e80e207568ce129eb6a419a511594d1b70sewardj28
507918345e80e207568ce129eb6a419a511594d1b70sewardj29
508918345e80e207568ce129eb6a419a511594d1b70sewardj30
509918345e80e207568ce129eb6a419a511594d1b70sewardj31
510918345e80e207568ce129eb6a419a511594d1b70sewardj32
511918345e80e207568ce129eb6a419a511594d1b70sewardj33
512918345e80e207568ce129eb6a419a511594d1b70sewardj34
513918345e80e207568ce129eb6a419a511594d1b70sewardj35
514918345e80e207568ce129eb6a419a511594d1b70sewardj36
515918345e80e207568ce129eb6a419a511594d1b70sewardj37
516918345e80e207568ce129eb6a419a511594d1b70sewardj38
517918345e80e207568ce129eb6a419a511594d1b70sewardj39
518918345e80e207568ce129eb6a419a511594d1b70sewardj40
519918345e80e207568ce129eb6a419a511594d1b70sewardj41
520918345e80e207568ce129eb6a419a511594d1b70sewardj42
521918345e80e207568ce129eb6a419a511594d1b70sewardj43
522918345e80e207568ce129eb6a419a511594d1b70sewardj44
523918345e80e207568ce129eb6a419a511594d1b70sewardj45
524918345e80e207568ce129eb6a419a511594d1b70sewardj46
525918345e80e207568ce129eb6a419a511594d1b70sewardj47
526918345e80e207568ce129eb6a419a511594d1b70sewardj48
527918345e80e207568ce129eb6a419a511594d1b70sewardj49
528918345e80e207568ce129eb6a419a511594d1b70sewardj50
529918345e80e207568ce129eb6a419a511594d1b70sewardj51
530918345e80e207568ce129eb6a419a511594d1b70sewardj52
531918345e80e207568ce129eb6a419a511594d1b70sewardj53
532918345e80e207568ce129eb6a419a511594d1b70sewardj54
533918345e80e207568ce129eb6a419a511594d1b70sewardj55
534918345e80e207568ce129eb6a419a511594d1b70sewardj56
535918345e80e207568ce129eb6a419a511594d1b70sewardj57
536918345e80e207568ce129eb6a419a511594d1b70sewardj58
537918345e80e207568ce129eb6a419a511594d1b70sewardj59
538918345e80e207568ce129eb6a419a511594d1b70sewardj60
539918345e80e207568ce129eb6a419a511594d1b70sewardj61
540918345e80e207568ce129eb6a419a511594d1b70sewardj62
541918345e80e207568ce129eb6a419a511594d1b70sewardj63
542918345e80e207568ce129eb6a419a511594d1b70sewardj*/
543918345e80e207568ce129eb6a419a511594d1b70sewardj
544