1 // Licensed to the Apache Software Foundation (ASF) under one
2 // or more contributor license agreements.  See the NOTICE file
3 // distributed with this work for additional information
4 // regarding copyright ownership.  The ASF licenses this file
5 // to you under the Apache License, Version 2.0 (the
6 // "License"); you may not use this file except in compliance
7 // with the License.  You may obtain a copy of the License at
8 //
9 //   http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing,
12 // software distributed under the License is distributed on an
13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 // KIND, either express or implied.  See the License for the
15 // specific language governing permissions and limitations
16 // under the License.
17 
18 /// Unpack 32 values with bit width `num_bits` from `in_ptr`, and write to `out_ptr`.
19 /// Return the `in_ptr` where the starting offset points to the first byte after all the
20 /// bytes that were consumed.
21 // TODO: may be better to make these more compact using if-else conditions.
22 //  However, this may require const generics:
23 //     https://github.com/rust-lang/rust/issues/44580
24 //  to eliminate the branching cost.
25 // TODO: we should use SIMD instructions to further optimize this. I have explored
26 //    https://github.com/tantivy-search/bitpacking
27 // but the layout it uses for SIMD is different from Parquet.
28 // TODO: support packing as well, which is used for encoding.
unpack32( mut in_ptr: *const u32, out_ptr: *mut u32, num_bits: usize, ) -> *const u3229 pub unsafe fn unpack32(
30     mut in_ptr: *const u32,
31     out_ptr: *mut u32,
32     num_bits: usize,
33 ) -> *const u32 {
34     in_ptr = match num_bits {
35         0 => nullunpacker32(in_ptr, out_ptr),
36         1 => unpack1_32(in_ptr, out_ptr),
37         2 => unpack2_32(in_ptr, out_ptr),
38         3 => unpack3_32(in_ptr, out_ptr),
39         4 => unpack4_32(in_ptr, out_ptr),
40         5 => unpack5_32(in_ptr, out_ptr),
41         6 => unpack6_32(in_ptr, out_ptr),
42         7 => unpack7_32(in_ptr, out_ptr),
43         8 => unpack8_32(in_ptr, out_ptr),
44         9 => unpack9_32(in_ptr, out_ptr),
45         10 => unpack10_32(in_ptr, out_ptr),
46         11 => unpack11_32(in_ptr, out_ptr),
47         12 => unpack12_32(in_ptr, out_ptr),
48         13 => unpack13_32(in_ptr, out_ptr),
49         14 => unpack14_32(in_ptr, out_ptr),
50         15 => unpack15_32(in_ptr, out_ptr),
51         16 => unpack16_32(in_ptr, out_ptr),
52         17 => unpack17_32(in_ptr, out_ptr),
53         18 => unpack18_32(in_ptr, out_ptr),
54         19 => unpack19_32(in_ptr, out_ptr),
55         20 => unpack20_32(in_ptr, out_ptr),
56         21 => unpack21_32(in_ptr, out_ptr),
57         22 => unpack22_32(in_ptr, out_ptr),
58         23 => unpack23_32(in_ptr, out_ptr),
59         24 => unpack24_32(in_ptr, out_ptr),
60         25 => unpack25_32(in_ptr, out_ptr),
61         26 => unpack26_32(in_ptr, out_ptr),
62         27 => unpack27_32(in_ptr, out_ptr),
63         28 => unpack28_32(in_ptr, out_ptr),
64         29 => unpack29_32(in_ptr, out_ptr),
65         30 => unpack30_32(in_ptr, out_ptr),
66         31 => unpack31_32(in_ptr, out_ptr),
67         32 => unpack32_32(in_ptr, out_ptr),
68         _ => unimplemented!(),
69     };
70     in_ptr
71 }
72 
nullunpacker32(in_buf: *const u32, mut out: *mut u32) -> *const u3273 unsafe fn nullunpacker32(in_buf: *const u32, mut out: *mut u32) -> *const u32 {
74     for _ in 0..32 {
75         *out = 0;
76         out = out.offset(1);
77     }
78     in_buf
79 }
80 
unpack1_32(in_buf: *const u32, mut out: *mut u32) -> *const u3281 unsafe fn unpack1_32(in_buf: *const u32, mut out: *mut u32) -> *const u32 {
82     *out = (*in_buf) & 1;
83     out = out.offset(1);
84     *out = ((*in_buf) >> 1) & 1;
85     out = out.offset(1);
86     *out = ((*in_buf) >> 2) & 1;
87     out = out.offset(1);
88     *out = ((*in_buf) >> 3) & 1;
89     out = out.offset(1);
90     *out = ((*in_buf) >> 4) & 1;
91     out = out.offset(1);
92     *out = ((*in_buf) >> 5) & 1;
93     out = out.offset(1);
94     *out = ((*in_buf) >> 6) & 1;
95     out = out.offset(1);
96     *out = ((*in_buf) >> 7) & 1;
97     out = out.offset(1);
98     *out = ((*in_buf) >> 8) & 1;
99     out = out.offset(1);
100     *out = ((*in_buf) >> 9) & 1;
101     out = out.offset(1);
102     *out = ((*in_buf) >> 10) & 1;
103     out = out.offset(1);
104     *out = ((*in_buf) >> 11) & 1;
105     out = out.offset(1);
106     *out = ((*in_buf) >> 12) & 1;
107     out = out.offset(1);
108     *out = ((*in_buf) >> 13) & 1;
109     out = out.offset(1);
110     *out = ((*in_buf) >> 14) & 1;
111     out = out.offset(1);
112     *out = ((*in_buf) >> 15) & 1;
113     out = out.offset(1);
114     *out = ((*in_buf) >> 16) & 1;
115     out = out.offset(1);
116     *out = ((*in_buf) >> 17) & 1;
117     out = out.offset(1);
118     *out = ((*in_buf) >> 18) & 1;
119     out = out.offset(1);
120     *out = ((*in_buf) >> 19) & 1;
121     out = out.offset(1);
122     *out = ((*in_buf) >> 20) & 1;
123     out = out.offset(1);
124     *out = ((*in_buf) >> 21) & 1;
125     out = out.offset(1);
126     *out = ((*in_buf) >> 22) & 1;
127     out = out.offset(1);
128     *out = ((*in_buf) >> 23) & 1;
129     out = out.offset(1);
130     *out = ((*in_buf) >> 24) & 1;
131     out = out.offset(1);
132     *out = ((*in_buf) >> 25) & 1;
133     out = out.offset(1);
134     *out = ((*in_buf) >> 26) & 1;
135     out = out.offset(1);
136     *out = ((*in_buf) >> 27) & 1;
137     out = out.offset(1);
138     *out = ((*in_buf) >> 28) & 1;
139     out = out.offset(1);
140     *out = ((*in_buf) >> 29) & 1;
141     out = out.offset(1);
142     *out = ((*in_buf) >> 30) & 1;
143     out = out.offset(1);
144     *out = (*in_buf) >> 31;
145 
146     in_buf.offset(1)
147 }
148 
unpack2_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32149 unsafe fn unpack2_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
150     *out = (*in_buf) % (1u32 << 2);
151     out = out.offset(1);
152     *out = ((*in_buf) >> 2) % (1u32 << 2);
153     out = out.offset(1);
154     *out = ((*in_buf) >> 4) % (1u32 << 2);
155     out = out.offset(1);
156     *out = ((*in_buf) >> 6) % (1u32 << 2);
157     out = out.offset(1);
158     *out = ((*in_buf) >> 8) % (1u32 << 2);
159     out = out.offset(1);
160     *out = ((*in_buf) >> 10) % (1u32 << 2);
161     out = out.offset(1);
162     *out = ((*in_buf) >> 12) % (1u32 << 2);
163     out = out.offset(1);
164     *out = ((*in_buf) >> 14) % (1u32 << 2);
165     out = out.offset(1);
166     *out = ((*in_buf) >> 16) % (1u32 << 2);
167     out = out.offset(1);
168     *out = ((*in_buf) >> 18) % (1u32 << 2);
169     out = out.offset(1);
170     *out = ((*in_buf) >> 20) % (1u32 << 2);
171     out = out.offset(1);
172     *out = ((*in_buf) >> 22) % (1u32 << 2);
173     out = out.offset(1);
174     *out = ((*in_buf) >> 24) % (1u32 << 2);
175     out = out.offset(1);
176     *out = ((*in_buf) >> 26) % (1u32 << 2);
177     out = out.offset(1);
178     *out = ((*in_buf) >> 28) % (1u32 << 2);
179     out = out.offset(1);
180     *out = (*in_buf) >> 30;
181     out = out.offset(1);
182     in_buf = in_buf.offset(1);
183     *out = (*in_buf) % (1u32 << 2);
184     out = out.offset(1);
185     *out = ((*in_buf) >> 2) % (1u32 << 2);
186     out = out.offset(1);
187     *out = ((*in_buf) >> 4) % (1u32 << 2);
188     out = out.offset(1);
189     *out = ((*in_buf) >> 6) % (1u32 << 2);
190     out = out.offset(1);
191     *out = ((*in_buf) >> 8) % (1u32 << 2);
192     out = out.offset(1);
193     *out = ((*in_buf) >> 10) % (1u32 << 2);
194     out = out.offset(1);
195     *out = ((*in_buf) >> 12) % (1u32 << 2);
196     out = out.offset(1);
197     *out = ((*in_buf) >> 14) % (1u32 << 2);
198     out = out.offset(1);
199     *out = ((*in_buf) >> 16) % (1u32 << 2);
200     out = out.offset(1);
201     *out = ((*in_buf) >> 18) % (1u32 << 2);
202     out = out.offset(1);
203     *out = ((*in_buf) >> 20) % (1u32 << 2);
204     out = out.offset(1);
205     *out = ((*in_buf) >> 22) % (1u32 << 2);
206     out = out.offset(1);
207     *out = ((*in_buf) >> 24) % (1u32 << 2);
208     out = out.offset(1);
209     *out = ((*in_buf) >> 26) % (1u32 << 2);
210     out = out.offset(1);
211     *out = ((*in_buf) >> 28) % (1u32 << 2);
212     out = out.offset(1);
213     *out = (*in_buf) >> 30;
214 
215     in_buf.offset(1)
216 }
217 
unpack3_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32218 unsafe fn unpack3_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
219     *out = (*in_buf) % (1u32 << 3);
220     out = out.offset(1);
221     *out = ((*in_buf) >> 3) % (1u32 << 3);
222     out = out.offset(1);
223     *out = ((*in_buf) >> 6) % (1u32 << 3);
224     out = out.offset(1);
225     *out = ((*in_buf) >> 9) % (1u32 << 3);
226     out = out.offset(1);
227     *out = ((*in_buf) >> 12) % (1u32 << 3);
228     out = out.offset(1);
229     *out = ((*in_buf) >> 15) % (1u32 << 3);
230     out = out.offset(1);
231     *out = ((*in_buf) >> 18) % (1u32 << 3);
232     out = out.offset(1);
233     *out = ((*in_buf) >> 21) % (1u32 << 3);
234     out = out.offset(1);
235     *out = ((*in_buf) >> 24) % (1u32 << 3);
236     out = out.offset(1);
237     *out = ((*in_buf) >> 27) % (1u32 << 3);
238     out = out.offset(1);
239     *out = (*in_buf) >> 30;
240     in_buf = in_buf.offset(1);
241     *out |= ((*in_buf) % (1u32 << 1)) << (3 - 1);
242     out = out.offset(1);
243 
244     *out = ((*in_buf) >> 1) % (1u32 << 3);
245     out = out.offset(1);
246     *out = ((*in_buf) >> 4) % (1u32 << 3);
247     out = out.offset(1);
248     *out = ((*in_buf) >> 7) % (1u32 << 3);
249     out = out.offset(1);
250     *out = ((*in_buf) >> 10) % (1u32 << 3);
251     out = out.offset(1);
252     *out = ((*in_buf) >> 13) % (1u32 << 3);
253     out = out.offset(1);
254     *out = ((*in_buf) >> 16) % (1u32 << 3);
255     out = out.offset(1);
256     *out = ((*in_buf) >> 19) % (1u32 << 3);
257     out = out.offset(1);
258     *out = ((*in_buf) >> 22) % (1u32 << 3);
259     out = out.offset(1);
260     *out = ((*in_buf) >> 25) % (1u32 << 3);
261     out = out.offset(1);
262     *out = ((*in_buf) >> 28) % (1u32 << 3);
263     out = out.offset(1);
264     *out = (*in_buf) >> 31;
265     in_buf = in_buf.offset(1);
266     *out |= ((*in_buf) % (1u32 << 2)) << (3 - 2);
267     out = out.offset(1);
268 
269     *out = ((*in_buf) >> 2) % (1u32 << 3);
270     out = out.offset(1);
271     *out = ((*in_buf) >> 5) % (1u32 << 3);
272     out = out.offset(1);
273     *out = ((*in_buf) >> 8) % (1u32 << 3);
274     out = out.offset(1);
275     *out = ((*in_buf) >> 11) % (1u32 << 3);
276     out = out.offset(1);
277     *out = ((*in_buf) >> 14) % (1u32 << 3);
278     out = out.offset(1);
279     *out = ((*in_buf) >> 17) % (1u32 << 3);
280     out = out.offset(1);
281     *out = ((*in_buf) >> 20) % (1u32 << 3);
282     out = out.offset(1);
283     *out = ((*in_buf) >> 23) % (1u32 << 3);
284     out = out.offset(1);
285     *out = ((*in_buf) >> 26) % (1u32 << 3);
286     out = out.offset(1);
287     *out = (*in_buf) >> 29;
288 
289     in_buf.offset(1)
290 }
291 
unpack4_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32292 unsafe fn unpack4_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
293     *out = (*in_buf) % (1u32 << 4);
294     out = out.offset(1);
295     *out = ((*in_buf) >> 4) % (1u32 << 4);
296     out = out.offset(1);
297     *out = ((*in_buf) >> 8) % (1u32 << 4);
298     out = out.offset(1);
299     *out = ((*in_buf) >> 12) % (1u32 << 4);
300     out = out.offset(1);
301     *out = ((*in_buf) >> 16) % (1u32 << 4);
302     out = out.offset(1);
303     *out = ((*in_buf) >> 20) % (1u32 << 4);
304     out = out.offset(1);
305     *out = ((*in_buf) >> 24) % (1u32 << 4);
306     out = out.offset(1);
307     *out = ((*in_buf) >> 28) % (1u32 << 4);
308     out = out.offset(1);
309     in_buf = in_buf.offset(1);
310 
311     *out = (*in_buf) % (1u32 << 4);
312     out = out.offset(1);
313     *out = ((*in_buf) >> 4) % (1u32 << 4);
314     out = out.offset(1);
315     *out = ((*in_buf) >> 8) % (1u32 << 4);
316     out = out.offset(1);
317     *out = ((*in_buf) >> 12) % (1u32 << 4);
318     out = out.offset(1);
319     *out = ((*in_buf) >> 16) % (1u32 << 4);
320     out = out.offset(1);
321     *out = ((*in_buf) >> 20) % (1u32 << 4);
322     out = out.offset(1);
323     *out = ((*in_buf) >> 24) % (1u32 << 4);
324     out = out.offset(1);
325     *out = ((*in_buf) >> 28) % (1u32 << 4);
326     out = out.offset(1);
327     in_buf = in_buf.offset(1);
328 
329     *out = (*in_buf) % (1u32 << 4);
330     out = out.offset(1);
331     *out = ((*in_buf) >> 4) % (1u32 << 4);
332     out = out.offset(1);
333     *out = ((*in_buf) >> 8) % (1u32 << 4);
334     out = out.offset(1);
335     *out = ((*in_buf) >> 12) % (1u32 << 4);
336     out = out.offset(1);
337     *out = ((*in_buf) >> 16) % (1u32 << 4);
338     out = out.offset(1);
339     *out = ((*in_buf) >> 20) % (1u32 << 4);
340     out = out.offset(1);
341     *out = ((*in_buf) >> 24) % (1u32 << 4);
342     out = out.offset(1);
343     *out = ((*in_buf) >> 28) % (1u32 << 4);
344     out = out.offset(1);
345     in_buf = in_buf.offset(1);
346 
347     *out = (*in_buf) % (1u32 << 4);
348     out = out.offset(1);
349     *out = ((*in_buf) >> 4) % (1u32 << 4);
350     out = out.offset(1);
351     *out = ((*in_buf) >> 8) % (1u32 << 4);
352     out = out.offset(1);
353     *out = ((*in_buf) >> 12) % (1u32 << 4);
354     out = out.offset(1);
355     *out = ((*in_buf) >> 16) % (1u32 << 4);
356     out = out.offset(1);
357     *out = ((*in_buf) >> 20) % (1u32 << 4);
358     out = out.offset(1);
359     *out = ((*in_buf) >> 24) % (1u32 << 4);
360     out = out.offset(1);
361     *out = ((*in_buf) >> 28) % (1u32 << 4);
362 
363     in_buf.offset(1)
364 }
365 
unpack5_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32366 unsafe fn unpack5_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
367     *out = (*in_buf) % (1u32 << 5);
368     out = out.offset(1);
369     *out = ((*in_buf) >> 5) % (1u32 << 5);
370     out = out.offset(1);
371     *out = ((*in_buf) >> 10) % (1u32 << 5);
372     out = out.offset(1);
373     *out = ((*in_buf) >> 15) % (1u32 << 5);
374     out = out.offset(1);
375     *out = ((*in_buf) >> 20) % (1u32 << 5);
376     out = out.offset(1);
377     *out = ((*in_buf) >> 25) % (1u32 << 5);
378     out = out.offset(1);
379     *out = (*in_buf) >> 30;
380     in_buf = in_buf.offset(1);
381     *out |= ((*in_buf) % (1u32 << 3)) << (5 - 3);
382     out = out.offset(1);
383 
384     *out = ((*in_buf) >> 3) % (1u32 << 5);
385     out = out.offset(1);
386     *out = ((*in_buf) >> 8) % (1u32 << 5);
387     out = out.offset(1);
388     *out = ((*in_buf) >> 13) % (1u32 << 5);
389     out = out.offset(1);
390     *out = ((*in_buf) >> 18) % (1u32 << 5);
391     out = out.offset(1);
392     *out = ((*in_buf) >> 23) % (1u32 << 5);
393     out = out.offset(1);
394     *out = ((*in_buf) >> 28) % (1u32 << 5);
395     in_buf = in_buf.offset(1);
396     *out |= ((*in_buf) % (1u32 << 1)) << (5 - 1);
397     out = out.offset(1);
398 
399     *out = ((*in_buf) >> 1) % (1u32 << 5);
400     out = out.offset(1);
401     *out = ((*in_buf) >> 6) % (1u32 << 5);
402     out = out.offset(1);
403     *out = ((*in_buf) >> 11) % (1u32 << 5);
404     out = out.offset(1);
405     *out = ((*in_buf) >> 16) % (1u32 << 5);
406     out = out.offset(1);
407     *out = ((*in_buf) >> 21) % (1u32 << 5);
408     out = out.offset(1);
409     *out = ((*in_buf) >> 26) % (1u32 << 5);
410     out = out.offset(1);
411     *out = (*in_buf) >> 31;
412     in_buf = in_buf.offset(1);
413     *out |= ((*in_buf) % (1u32 << 4)) << (5 - 4);
414     out = out.offset(1);
415 
416     *out = ((*in_buf) >> 4) % (1u32 << 5);
417     out = out.offset(1);
418     *out = ((*in_buf) >> 9) % (1u32 << 5);
419     out = out.offset(1);
420     *out = ((*in_buf) >> 14) % (1u32 << 5);
421     out = out.offset(1);
422     *out = ((*in_buf) >> 19) % (1u32 << 5);
423     out = out.offset(1);
424     *out = ((*in_buf) >> 24) % (1u32 << 5);
425     out = out.offset(1);
426     *out = (*in_buf) >> 29;
427     in_buf = in_buf.offset(1);
428     *out |= ((*in_buf) % (1u32 << 2)) << (5 - 2);
429     out = out.offset(1);
430 
431     *out = ((*in_buf) >> 2) % (1u32 << 5);
432     out = out.offset(1);
433     *out = ((*in_buf) >> 7) % (1u32 << 5);
434     out = out.offset(1);
435     *out = ((*in_buf) >> 12) % (1u32 << 5);
436     out = out.offset(1);
437     *out = ((*in_buf) >> 17) % (1u32 << 5);
438     out = out.offset(1);
439     *out = ((*in_buf) >> 22) % (1u32 << 5);
440     out = out.offset(1);
441     *out = (*in_buf) >> 27;
442 
443     in_buf.offset(1)
444 }
445 
unpack6_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32446 unsafe fn unpack6_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
447     *out = (*in_buf) % (1u32 << 6);
448     out = out.offset(1);
449     *out = ((*in_buf) >> 6) % (1u32 << 6);
450     out = out.offset(1);
451     *out = ((*in_buf) >> 12) % (1u32 << 6);
452     out = out.offset(1);
453     *out = ((*in_buf) >> 18) % (1u32 << 6);
454     out = out.offset(1);
455     *out = ((*in_buf) >> 24) % (1u32 << 6);
456     out = out.offset(1);
457     *out = (*in_buf) >> 30;
458     in_buf = in_buf.offset(1);
459     *out |= ((*in_buf) % (1u32 << 4)) << (6 - 4);
460     out = out.offset(1);
461 
462     *out = ((*in_buf) >> 4) % (1u32 << 6);
463     out = out.offset(1);
464     *out = ((*in_buf) >> 10) % (1u32 << 6);
465     out = out.offset(1);
466     *out = ((*in_buf) >> 16) % (1u32 << 6);
467     out = out.offset(1);
468     *out = ((*in_buf) >> 22) % (1u32 << 6);
469     out = out.offset(1);
470     *out = (*in_buf) >> 28;
471     in_buf = in_buf.offset(1);
472     *out |= ((*in_buf) % (1u32 << 2)) << (6 - 2);
473     out = out.offset(1);
474 
475     *out = ((*in_buf) >> 2) % (1u32 << 6);
476     out = out.offset(1);
477     *out = ((*in_buf) >> 8) % (1u32 << 6);
478     out = out.offset(1);
479     *out = ((*in_buf) >> 14) % (1u32 << 6);
480     out = out.offset(1);
481     *out = ((*in_buf) >> 20) % (1u32 << 6);
482     out = out.offset(1);
483     *out = (*in_buf) >> 26;
484     in_buf = in_buf.offset(1);
485     out = out.offset(1);
486 
487     *out = (*in_buf) % (1u32 << 6);
488     out = out.offset(1);
489     *out = ((*in_buf) >> 6) % (1u32 << 6);
490     out = out.offset(1);
491     *out = ((*in_buf) >> 12) % (1u32 << 6);
492     out = out.offset(1);
493     *out = ((*in_buf) >> 18) % (1u32 << 6);
494     out = out.offset(1);
495     *out = ((*in_buf) >> 24) % (1u32 << 6);
496     out = out.offset(1);
497     *out = (*in_buf) >> 30;
498     in_buf = in_buf.offset(1);
499     *out |= ((*in_buf) % (1u32 << 4)) << (6 - 4);
500     out = out.offset(1);
501 
502     *out = ((*in_buf) >> 4) % (1u32 << 6);
503     out = out.offset(1);
504     *out = ((*in_buf) >> 10) % (1u32 << 6);
505     out = out.offset(1);
506     *out = ((*in_buf) >> 16) % (1u32 << 6);
507     out = out.offset(1);
508     *out = ((*in_buf) >> 22) % (1u32 << 6);
509     out = out.offset(1);
510     *out = (*in_buf) >> 28;
511     in_buf = in_buf.offset(1);
512     *out |= ((*in_buf) % (1u32 << 2)) << (6 - 2);
513     out = out.offset(1);
514 
515     *out = ((*in_buf) >> 2) % (1u32 << 6);
516     out = out.offset(1);
517     *out = ((*in_buf) >> 8) % (1u32 << 6);
518     out = out.offset(1);
519     *out = ((*in_buf) >> 14) % (1u32 << 6);
520     out = out.offset(1);
521     *out = ((*in_buf) >> 20) % (1u32 << 6);
522     out = out.offset(1);
523     *out = (*in_buf) >> 26;
524 
525     in_buf.offset(1)
526 }
527 
unpack7_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32528 unsafe fn unpack7_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
529     *out = (*in_buf) % (1u32 << 7);
530     out = out.offset(1);
531     *out = ((*in_buf) >> 7) % (1u32 << 7);
532     out = out.offset(1);
533     *out = ((*in_buf) >> 14) % (1u32 << 7);
534     out = out.offset(1);
535     *out = ((*in_buf) >> 21) % (1u32 << 7);
536     out = out.offset(1);
537     *out = (*in_buf) >> 28;
538     in_buf = in_buf.offset(1);
539     *out |= ((*in_buf) % (1u32 << 3)) << (7 - 3);
540     out = out.offset(1);
541 
542     *out = ((*in_buf) >> 3) % (1u32 << 7);
543     out = out.offset(1);
544     *out = ((*in_buf) >> 10) % (1u32 << 7);
545     out = out.offset(1);
546     *out = ((*in_buf) >> 17) % (1u32 << 7);
547     out = out.offset(1);
548     *out = ((*in_buf) >> 24) % (1u32 << 7);
549     out = out.offset(1);
550     *out = (*in_buf) >> 31;
551     in_buf = in_buf.offset(1);
552     *out |= ((*in_buf) % (1u32 << 6)) << (7 - 6);
553     out = out.offset(1);
554 
555     *out = ((*in_buf) >> 6) % (1u32 << 7);
556     out = out.offset(1);
557     *out = ((*in_buf) >> 13) % (1u32 << 7);
558     out = out.offset(1);
559     *out = ((*in_buf) >> 20) % (1u32 << 7);
560     out = out.offset(1);
561     *out = (*in_buf) >> 27;
562     in_buf = in_buf.offset(1);
563     *out |= ((*in_buf) % (1u32 << 2)) << (7 - 2);
564     out = out.offset(1);
565 
566     *out = ((*in_buf) >> 2) % (1u32 << 7);
567     out = out.offset(1);
568     *out = ((*in_buf) >> 9) % (1u32 << 7);
569     out = out.offset(1);
570     *out = ((*in_buf) >> 16) % (1u32 << 7);
571     out = out.offset(1);
572     *out = ((*in_buf) >> 23) % (1u32 << 7);
573     out = out.offset(1);
574     *out = (*in_buf) >> 30;
575     in_buf = in_buf.offset(1);
576     *out |= ((*in_buf) % (1u32 << 5)) << (7 - 5);
577     out = out.offset(1);
578 
579     *out = ((*in_buf) >> 5) % (1u32 << 7);
580     out = out.offset(1);
581     *out = ((*in_buf) >> 12) % (1u32 << 7);
582     out = out.offset(1);
583     *out = ((*in_buf) >> 19) % (1u32 << 7);
584     out = out.offset(1);
585     *out = (*in_buf) >> 26;
586     in_buf = in_buf.offset(1);
587     *out |= ((*in_buf) % (1u32 << 1)) << (7 - 1);
588     out = out.offset(1);
589 
590     *out = ((*in_buf) >> 1) % (1u32 << 7);
591     out = out.offset(1);
592     *out = ((*in_buf) >> 8) % (1u32 << 7);
593     out = out.offset(1);
594     *out = ((*in_buf) >> 15) % (1u32 << 7);
595     out = out.offset(1);
596     *out = ((*in_buf) >> 22) % (1u32 << 7);
597     out = out.offset(1);
598     *out = (*in_buf) >> 29;
599     in_buf = in_buf.offset(1);
600     *out |= ((*in_buf) % (1u32 << 4)) << (7 - 4);
601     out = out.offset(1);
602 
603     *out = ((*in_buf) >> 4) % (1u32 << 7);
604     out = out.offset(1);
605     *out = ((*in_buf) >> 11) % (1u32 << 7);
606     out = out.offset(1);
607     *out = ((*in_buf) >> 18) % (1u32 << 7);
608     out = out.offset(1);
609     *out = (*in_buf) >> 25;
610 
611     in_buf.offset(1)
612 }
613 
unpack8_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32614 unsafe fn unpack8_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
615     *out = (*in_buf) % (1u32 << 8);
616     out = out.offset(1);
617     *out = ((*in_buf) >> 8) % (1u32 << 8);
618     out = out.offset(1);
619     *out = ((*in_buf) >> 16) % (1u32 << 8);
620     out = out.offset(1);
621     *out = (*in_buf) >> 24;
622     out = out.offset(1);
623     in_buf = in_buf.offset(1);
624 
625     *out = (*in_buf) % (1u32 << 8);
626     out = out.offset(1);
627     *out = ((*in_buf) >> 8) % (1u32 << 8);
628     out = out.offset(1);
629     *out = ((*in_buf) >> 16) % (1u32 << 8);
630     out = out.offset(1);
631     *out = (*in_buf) >> 24;
632     out = out.offset(1);
633     in_buf = in_buf.offset(1);
634 
635     *out = (*in_buf) % (1u32 << 8);
636     out = out.offset(1);
637     *out = ((*in_buf) >> 8) % (1u32 << 8);
638     out = out.offset(1);
639     *out = ((*in_buf) >> 16) % (1u32 << 8);
640     out = out.offset(1);
641     *out = (*in_buf) >> 24;
642     out = out.offset(1);
643     in_buf = in_buf.offset(1);
644 
645     *out = (*in_buf) % (1u32 << 8);
646     out = out.offset(1);
647     *out = ((*in_buf) >> 8) % (1u32 << 8);
648     out = out.offset(1);
649     *out = ((*in_buf) >> 16) % (1u32 << 8);
650     out = out.offset(1);
651     *out = (*in_buf) >> 24;
652     out = out.offset(1);
653     in_buf = in_buf.offset(1);
654 
655     *out = (*in_buf) % (1u32 << 8);
656     out = out.offset(1);
657     *out = ((*in_buf) >> 8) % (1u32 << 8);
658     out = out.offset(1);
659     *out = ((*in_buf) >> 16) % (1u32 << 8);
660     out = out.offset(1);
661     *out = (*in_buf) >> 24;
662     out = out.offset(1);
663     in_buf = in_buf.offset(1);
664 
665     *out = (*in_buf) % (1u32 << 8);
666     out = out.offset(1);
667     *out = ((*in_buf) >> 8) % (1u32 << 8);
668     out = out.offset(1);
669     *out = ((*in_buf) >> 16) % (1u32 << 8);
670     out = out.offset(1);
671     *out = (*in_buf) >> 24;
672     out = out.offset(1);
673     in_buf = in_buf.offset(1);
674 
675     *out = (*in_buf) % (1u32 << 8);
676     out = out.offset(1);
677     *out = ((*in_buf) >> 8) % (1u32 << 8);
678     out = out.offset(1);
679     *out = ((*in_buf) >> 16) % (1u32 << 8);
680     out = out.offset(1);
681     *out = (*in_buf) >> 24;
682     out = out.offset(1);
683     in_buf = in_buf.offset(1);
684 
685     *out = (*in_buf) % (1u32 << 8);
686     out = out.offset(1);
687     *out = ((*in_buf) >> 8) % (1u32 << 8);
688     out = out.offset(1);
689     *out = ((*in_buf) >> 16) % (1u32 << 8);
690     out = out.offset(1);
691     *out = (*in_buf) >> 24;
692 
693     in_buf.offset(1)
694 }
695 
unpack9_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32696 unsafe fn unpack9_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
697     *out = (*in_buf) % (1u32 << 9);
698     out = out.offset(1);
699     *out = ((*in_buf) >> 9) % (1u32 << 9);
700     out = out.offset(1);
701     *out = ((*in_buf) >> 18) % (1u32 << 9);
702     out = out.offset(1);
703     *out = (*in_buf) >> 27;
704     in_buf = in_buf.offset(1);
705     *out |= ((*in_buf) % (1u32 << 4)) << (9 - 4);
706     out = out.offset(1);
707 
708     *out = ((*in_buf) >> 4) % (1u32 << 9);
709     out = out.offset(1);
710     *out = ((*in_buf) >> 13) % (1u32 << 9);
711     out = out.offset(1);
712     *out = ((*in_buf) >> 22) % (1u32 << 9);
713     out = out.offset(1);
714     *out = (*in_buf) >> 31;
715     in_buf = in_buf.offset(1);
716     *out |= ((*in_buf) % (1u32 << 8)) << (9 - 8);
717     out = out.offset(1);
718 
719     *out = ((*in_buf) >> 8) % (1u32 << 9);
720     out = out.offset(1);
721     *out = ((*in_buf) >> 17) % (1u32 << 9);
722     out = out.offset(1);
723     *out = (*in_buf) >> 26;
724     in_buf = in_buf.offset(1);
725     *out |= ((*in_buf) % (1u32 << 3)) << (9 - 3);
726     out = out.offset(1);
727 
728     *out = ((*in_buf) >> 3) % (1u32 << 9);
729     out = out.offset(1);
730     *out = ((*in_buf) >> 12) % (1u32 << 9);
731     out = out.offset(1);
732     *out = ((*in_buf) >> 21) % (1u32 << 9);
733     out = out.offset(1);
734     *out = (*in_buf) >> 30;
735     in_buf = in_buf.offset(1);
736     *out |= ((*in_buf) % (1u32 << 7)) << (9 - 7);
737     out = out.offset(1);
738 
739     *out = ((*in_buf) >> 7) % (1u32 << 9);
740     out = out.offset(1);
741     *out = ((*in_buf) >> 16) % (1u32 << 9);
742     out = out.offset(1);
743     *out = (*in_buf) >> 25;
744     in_buf = in_buf.offset(1);
745     *out |= ((*in_buf) % (1u32 << 2)) << (9 - 2);
746     out = out.offset(1);
747 
748     *out = ((*in_buf) >> 2) % (1u32 << 9);
749     out = out.offset(1);
750     *out = ((*in_buf) >> 11) % (1u32 << 9);
751     out = out.offset(1);
752     *out = ((*in_buf) >> 20) % (1u32 << 9);
753     out = out.offset(1);
754     *out = (*in_buf) >> 29;
755     in_buf = in_buf.offset(1);
756     *out |= ((*in_buf) % (1u32 << 6)) << (9 - 6);
757     out = out.offset(1);
758 
759     *out = ((*in_buf) >> 6) % (1u32 << 9);
760     out = out.offset(1);
761     *out = ((*in_buf) >> 15) % (1u32 << 9);
762     out = out.offset(1);
763     *out = (*in_buf) >> 24;
764     in_buf = in_buf.offset(1);
765     *out |= ((*in_buf) % (1u32 << 1)) << (9 - 1);
766     out = out.offset(1);
767 
768     *out = ((*in_buf) >> 1) % (1u32 << 9);
769     out = out.offset(1);
770     *out = ((*in_buf) >> 10) % (1u32 << 9);
771     out = out.offset(1);
772     *out = ((*in_buf) >> 19) % (1u32 << 9);
773     out = out.offset(1);
774     *out = (*in_buf) >> 28;
775     in_buf = in_buf.offset(1);
776     *out |= ((*in_buf) % (1u32 << 5)) << (9 - 5);
777     out = out.offset(1);
778 
779     *out = ((*in_buf) >> 5) % (1u32 << 9);
780     out = out.offset(1);
781     *out = ((*in_buf) >> 14) % (1u32 << 9);
782     out = out.offset(1);
783     *out = (*in_buf) >> 23;
784 
785     in_buf.offset(1)
786 }
787 
unpack10_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32788 unsafe fn unpack10_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
789     *out = (*in_buf) % (1u32 << 10);
790     out = out.offset(1);
791     *out = ((*in_buf) >> 10) % (1u32 << 10);
792     out = out.offset(1);
793     *out = ((*in_buf) >> 20) % (1u32 << 10);
794     out = out.offset(1);
795     *out = (*in_buf) >> 30;
796     in_buf = in_buf.offset(1);
797     *out |= ((*in_buf) % (1u32 << 8)) << (10 - 8);
798     out = out.offset(1);
799 
800     *out = ((*in_buf) >> 8) % (1u32 << 10);
801     out = out.offset(1);
802     *out = ((*in_buf) >> 18) % (1u32 << 10);
803     out = out.offset(1);
804     *out = (*in_buf) >> 28;
805     in_buf = in_buf.offset(1);
806     *out |= ((*in_buf) % (1u32 << 6)) << (10 - 6);
807     out = out.offset(1);
808 
809     *out = ((*in_buf) >> 6) % (1u32 << 10);
810     out = out.offset(1);
811     *out = ((*in_buf) >> 16) % (1u32 << 10);
812     out = out.offset(1);
813     *out = (*in_buf) >> 26;
814     in_buf = in_buf.offset(1);
815     *out |= ((*in_buf) % (1u32 << 4)) << (10 - 4);
816     out = out.offset(1);
817 
818     *out = ((*in_buf) >> 4) % (1u32 << 10);
819     out = out.offset(1);
820     *out = ((*in_buf) >> 14) % (1u32 << 10);
821     out = out.offset(1);
822     *out = (*in_buf) >> 24;
823     in_buf = in_buf.offset(1);
824     *out |= ((*in_buf) % (1u32 << 2)) << (10 - 2);
825     out = out.offset(1);
826 
827     *out = ((*in_buf) >> 2) % (1u32 << 10);
828     out = out.offset(1);
829     *out = ((*in_buf) >> 12) % (1u32 << 10);
830     out = out.offset(1);
831     *out = (*in_buf) >> 22;
832     in_buf = in_buf.offset(1);
833     out = out.offset(1);
834 
835     *out = (*in_buf) % (1u32 << 10);
836     out = out.offset(1);
837     *out = ((*in_buf) >> 10) % (1u32 << 10);
838     out = out.offset(1);
839     *out = ((*in_buf) >> 20) % (1u32 << 10);
840     out = out.offset(1);
841     *out = (*in_buf) >> 30;
842     in_buf = in_buf.offset(1);
843     *out |= ((*in_buf) % (1u32 << 8)) << (10 - 8);
844     out = out.offset(1);
845 
846     *out = ((*in_buf) >> 8) % (1u32 << 10);
847     out = out.offset(1);
848     *out = ((*in_buf) >> 18) % (1u32 << 10);
849     out = out.offset(1);
850     *out = (*in_buf) >> 28;
851     in_buf = in_buf.offset(1);
852     *out |= ((*in_buf) % (1u32 << 6)) << (10 - 6);
853     out = out.offset(1);
854 
855     *out = ((*in_buf) >> 6) % (1u32 << 10);
856     out = out.offset(1);
857     *out = ((*in_buf) >> 16) % (1u32 << 10);
858     out = out.offset(1);
859     *out = (*in_buf) >> 26;
860     in_buf = in_buf.offset(1);
861     *out |= ((*in_buf) % (1u32 << 4)) << (10 - 4);
862     out = out.offset(1);
863 
864     *out = ((*in_buf) >> 4) % (1u32 << 10);
865     out = out.offset(1);
866     *out = ((*in_buf) >> 14) % (1u32 << 10);
867     out = out.offset(1);
868     *out = (*in_buf) >> 24;
869     in_buf = in_buf.offset(1);
870     *out |= ((*in_buf) % (1u32 << 2)) << (10 - 2);
871     out = out.offset(1);
872 
873     *out = ((*in_buf) >> 2) % (1u32 << 10);
874     out = out.offset(1);
875     *out = ((*in_buf) >> 12) % (1u32 << 10);
876     out = out.offset(1);
877     *out = (*in_buf) >> 22;
878 
879     in_buf.offset(1)
880 }
881 
unpack11_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32882 unsafe fn unpack11_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
883     *out = (*in_buf) % (1u32 << 11);
884     out = out.offset(1);
885     *out = ((*in_buf) >> 11) % (1u32 << 11);
886     out = out.offset(1);
887     *out = (*in_buf) >> 22;
888     in_buf = in_buf.offset(1);
889     *out |= ((*in_buf) % (1u32 << 1)) << (11 - 1);
890     out = out.offset(1);
891 
892     *out = ((*in_buf) >> 1) % (1u32 << 11);
893     out = out.offset(1);
894     *out = ((*in_buf) >> 12) % (1u32 << 11);
895     out = out.offset(1);
896     *out = (*in_buf) >> 23;
897     in_buf = in_buf.offset(1);
898     *out |= ((*in_buf) % (1u32 << 2)) << (11 - 2);
899     out = out.offset(1);
900 
901     *out = ((*in_buf) >> 2) % (1u32 << 11);
902     out = out.offset(1);
903     *out = ((*in_buf) >> 13) % (1u32 << 11);
904     out = out.offset(1);
905     *out = (*in_buf) >> 24;
906     in_buf = in_buf.offset(1);
907     *out |= ((*in_buf) % (1u32 << 3)) << (11 - 3);
908     out = out.offset(1);
909 
910     *out = ((*in_buf) >> 3) % (1u32 << 11);
911     out = out.offset(1);
912     *out = ((*in_buf) >> 14) % (1u32 << 11);
913     out = out.offset(1);
914     *out = (*in_buf) >> 25;
915     in_buf = in_buf.offset(1);
916     *out |= ((*in_buf) % (1u32 << 4)) << (11 - 4);
917     out = out.offset(1);
918 
919     *out = ((*in_buf) >> 4) % (1u32 << 11);
920     out = out.offset(1);
921     *out = ((*in_buf) >> 15) % (1u32 << 11);
922     out = out.offset(1);
923     *out = (*in_buf) >> 26;
924     in_buf = in_buf.offset(1);
925     *out |= ((*in_buf) % (1u32 << 5)) << (11 - 5);
926     out = out.offset(1);
927 
928     *out = ((*in_buf) >> 5) % (1u32 << 11);
929     out = out.offset(1);
930     *out = ((*in_buf) >> 16) % (1u32 << 11);
931     out = out.offset(1);
932     *out = (*in_buf) >> 27;
933     in_buf = in_buf.offset(1);
934     *out |= ((*in_buf) % (1u32 << 6)) << (11 - 6);
935     out = out.offset(1);
936 
937     *out = ((*in_buf) >> 6) % (1u32 << 11);
938     out = out.offset(1);
939     *out = ((*in_buf) >> 17) % (1u32 << 11);
940     out = out.offset(1);
941     *out = (*in_buf) >> 28;
942     in_buf = in_buf.offset(1);
943     *out |= ((*in_buf) % (1u32 << 7)) << (11 - 7);
944     out = out.offset(1);
945 
946     *out = ((*in_buf) >> 7) % (1u32 << 11);
947     out = out.offset(1);
948     *out = ((*in_buf) >> 18) % (1u32 << 11);
949     out = out.offset(1);
950     *out = (*in_buf) >> 29;
951     in_buf = in_buf.offset(1);
952     *out |= ((*in_buf) % (1u32 << 8)) << (11 - 8);
953     out = out.offset(1);
954 
955     *out = ((*in_buf) >> 8) % (1u32 << 11);
956     out = out.offset(1);
957     *out = ((*in_buf) >> 19) % (1u32 << 11);
958     out = out.offset(1);
959     *out = (*in_buf) >> 30;
960     in_buf = in_buf.offset(1);
961     *out |= ((*in_buf) % (1u32 << 9)) << (11 - 9);
962     out = out.offset(1);
963 
964     *out = ((*in_buf) >> 9) % (1u32 << 11);
965     out = out.offset(1);
966     *out = ((*in_buf) >> 20) % (1u32 << 11);
967     out = out.offset(1);
968     *out = (*in_buf) >> 31;
969     in_buf = in_buf.offset(1);
970     *out |= ((*in_buf) % (1u32 << 10)) << (11 - 10);
971     out = out.offset(1);
972 
973     *out = ((*in_buf) >> 10) % (1u32 << 11);
974     out = out.offset(1);
975     *out = (*in_buf) >> 21;
976 
977     in_buf.offset(1)
978 }
979 
unpack12_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32980 unsafe fn unpack12_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
981     *out = (*in_buf) % (1u32 << 12);
982     out = out.offset(1);
983     *out = ((*in_buf) >> 12) % (1u32 << 12);
984     out = out.offset(1);
985     *out = (*in_buf) >> 24;
986     in_buf = in_buf.offset(1);
987     *out |= ((*in_buf) % (1u32 << 4)) << (12 - 4);
988     out = out.offset(1);
989 
990     *out = ((*in_buf) >> 4) % (1u32 << 12);
991     out = out.offset(1);
992     *out = ((*in_buf) >> 16) % (1u32 << 12);
993     out = out.offset(1);
994     *out = (*in_buf) >> 28;
995     in_buf = in_buf.offset(1);
996     *out |= ((*in_buf) % (1u32 << 8)) << (12 - 8);
997     out = out.offset(1);
998 
999     *out = ((*in_buf) >> 8) % (1u32 << 12);
1000     out = out.offset(1);
1001     *out = (*in_buf) >> 20;
1002     in_buf = in_buf.offset(1);
1003     out = out.offset(1);
1004 
1005     *out = (*in_buf) % (1u32 << 12);
1006     out = out.offset(1);
1007     *out = ((*in_buf) >> 12) % (1u32 << 12);
1008     out = out.offset(1);
1009     *out = (*in_buf) >> 24;
1010     in_buf = in_buf.offset(1);
1011     *out |= ((*in_buf) % (1u32 << 4)) << (12 - 4);
1012     out = out.offset(1);
1013 
1014     *out = ((*in_buf) >> 4) % (1u32 << 12);
1015     out = out.offset(1);
1016     *out = ((*in_buf) >> 16) % (1u32 << 12);
1017     out = out.offset(1);
1018     *out = (*in_buf) >> 28;
1019     in_buf = in_buf.offset(1);
1020     *out |= ((*in_buf) % (1u32 << 8)) << (12 - 8);
1021     out = out.offset(1);
1022 
1023     *out = ((*in_buf) >> 8) % (1u32 << 12);
1024     out = out.offset(1);
1025     *out = (*in_buf) >> 20;
1026     in_buf = in_buf.offset(1);
1027     out = out.offset(1);
1028 
1029     *out = (*in_buf) % (1u32 << 12);
1030     out = out.offset(1);
1031     *out = ((*in_buf) >> 12) % (1u32 << 12);
1032     out = out.offset(1);
1033     *out = (*in_buf) >> 24;
1034     in_buf = in_buf.offset(1);
1035     *out |= ((*in_buf) % (1u32 << 4)) << (12 - 4);
1036     out = out.offset(1);
1037 
1038     *out = ((*in_buf) >> 4) % (1u32 << 12);
1039     out = out.offset(1);
1040     *out = ((*in_buf) >> 16) % (1u32 << 12);
1041     out = out.offset(1);
1042     *out = (*in_buf) >> 28;
1043     in_buf = in_buf.offset(1);
1044     *out |= ((*in_buf) % (1u32 << 8)) << (12 - 8);
1045     out = out.offset(1);
1046 
1047     *out = ((*in_buf) >> 8) % (1u32 << 12);
1048     out = out.offset(1);
1049     *out = (*in_buf) >> 20;
1050     in_buf = in_buf.offset(1);
1051     out = out.offset(1);
1052 
1053     *out = (*in_buf) % (1u32 << 12);
1054     out = out.offset(1);
1055     *out = ((*in_buf) >> 12) % (1u32 << 12);
1056     out = out.offset(1);
1057     *out = (*in_buf) >> 24;
1058     in_buf = in_buf.offset(1);
1059     *out |= ((*in_buf) % (1u32 << 4)) << (12 - 4);
1060     out = out.offset(1);
1061 
1062     *out = ((*in_buf) >> 4) % (1u32 << 12);
1063     out = out.offset(1);
1064     *out = ((*in_buf) >> 16) % (1u32 << 12);
1065     out = out.offset(1);
1066     *out = (*in_buf) >> 28;
1067     in_buf = in_buf.offset(1);
1068     *out |= ((*in_buf) % (1u32 << 8)) << (12 - 8);
1069     out = out.offset(1);
1070 
1071     *out = ((*in_buf) >> 8) % (1u32 << 12);
1072     out = out.offset(1);
1073     *out = (*in_buf) >> 20;
1074 
1075     in_buf.offset(1)
1076 }
1077 
unpack13_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321078 unsafe fn unpack13_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1079     *out = (*in_buf) % (1u32 << 13);
1080     out = out.offset(1);
1081     *out = ((*in_buf) >> 13) % (1u32 << 13);
1082     out = out.offset(1);
1083     *out = (*in_buf) >> 26;
1084     in_buf = in_buf.offset(1);
1085     *out |= ((*in_buf) % (1u32 << 7)) << (13 - 7);
1086     out = out.offset(1);
1087 
1088     *out = ((*in_buf) >> 7) % (1u32 << 13);
1089     out = out.offset(1);
1090     *out = (*in_buf) >> 20;
1091     in_buf = in_buf.offset(1);
1092     *out |= ((*in_buf) % (1u32 << 1)) << (13 - 1);
1093     out = out.offset(1);
1094 
1095     *out = ((*in_buf) >> 1) % (1u32 << 13);
1096     out = out.offset(1);
1097     *out = ((*in_buf) >> 14) % (1u32 << 13);
1098     out = out.offset(1);
1099     *out = (*in_buf) >> 27;
1100     in_buf = in_buf.offset(1);
1101     *out |= ((*in_buf) % (1u32 << 8)) << (13 - 8);
1102     out = out.offset(1);
1103 
1104     *out = ((*in_buf) >> 8) % (1u32 << 13);
1105     out = out.offset(1);
1106     *out = (*in_buf) >> 21;
1107     in_buf = in_buf.offset(1);
1108     *out |= ((*in_buf) % (1u32 << 2)) << (13 - 2);
1109     out = out.offset(1);
1110 
1111     *out = ((*in_buf) >> 2) % (1u32 << 13);
1112     out = out.offset(1);
1113     *out = ((*in_buf) >> 15) % (1u32 << 13);
1114     out = out.offset(1);
1115     *out = (*in_buf) >> 28;
1116     in_buf = in_buf.offset(1);
1117     *out |= ((*in_buf) % (1u32 << 9)) << (13 - 9);
1118     out = out.offset(1);
1119 
1120     *out = ((*in_buf) >> 9) % (1u32 << 13);
1121     out = out.offset(1);
1122     *out = (*in_buf) >> 22;
1123     in_buf = in_buf.offset(1);
1124     *out |= ((*in_buf) % (1u32 << 3)) << (13 - 3);
1125     out = out.offset(1);
1126 
1127     *out = ((*in_buf) >> 3) % (1u32 << 13);
1128     out = out.offset(1);
1129     *out = ((*in_buf) >> 16) % (1u32 << 13);
1130     out = out.offset(1);
1131     *out = (*in_buf) >> 29;
1132     in_buf = in_buf.offset(1);
1133     *out |= ((*in_buf) % (1u32 << 10)) << (13 - 10);
1134     out = out.offset(1);
1135 
1136     *out = ((*in_buf) >> 10) % (1u32 << 13);
1137     out = out.offset(1);
1138     *out = (*in_buf) >> 23;
1139     in_buf = in_buf.offset(1);
1140     *out |= ((*in_buf) % (1u32 << 4)) << (13 - 4);
1141     out = out.offset(1);
1142 
1143     *out = ((*in_buf) >> 4) % (1u32 << 13);
1144     out = out.offset(1);
1145     *out = ((*in_buf) >> 17) % (1u32 << 13);
1146     out = out.offset(1);
1147     *out = (*in_buf) >> 30;
1148     in_buf = in_buf.offset(1);
1149     *out |= ((*in_buf) % (1u32 << 11)) << (13 - 11);
1150     out = out.offset(1);
1151 
1152     *out = ((*in_buf) >> 11) % (1u32 << 13);
1153     out = out.offset(1);
1154     *out = (*in_buf) >> 24;
1155     in_buf = in_buf.offset(1);
1156     *out |= ((*in_buf) % (1u32 << 5)) << (13 - 5);
1157     out = out.offset(1);
1158 
1159     *out = ((*in_buf) >> 5) % (1u32 << 13);
1160     out = out.offset(1);
1161     *out = ((*in_buf) >> 18) % (1u32 << 13);
1162     out = out.offset(1);
1163     *out = (*in_buf) >> 31;
1164     in_buf = in_buf.offset(1);
1165     *out |= ((*in_buf) % (1u32 << 12)) << (13 - 12);
1166     out = out.offset(1);
1167 
1168     *out = ((*in_buf) >> 12) % (1u32 << 13);
1169     out = out.offset(1);
1170     *out = (*in_buf) >> 25;
1171     in_buf = in_buf.offset(1);
1172     *out |= ((*in_buf) % (1u32 << 6)) << (13 - 6);
1173     out = out.offset(1);
1174 
1175     *out = ((*in_buf) >> 6) % (1u32 << 13);
1176     out = out.offset(1);
1177     *out = (*in_buf) >> 19;
1178 
1179     in_buf.offset(1)
1180 }
1181 
unpack14_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321182 unsafe fn unpack14_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1183     *out = (*in_buf) % (1u32 << 14);
1184     out = out.offset(1);
1185     *out = ((*in_buf) >> 14) % (1u32 << 14);
1186     out = out.offset(1);
1187     *out = (*in_buf) >> 28;
1188     in_buf = in_buf.offset(1);
1189     *out |= ((*in_buf) % (1u32 << 10)) << (14 - 10);
1190     out = out.offset(1);
1191 
1192     *out = ((*in_buf) >> 10) % (1u32 << 14);
1193     out = out.offset(1);
1194     *out = (*in_buf) >> 24;
1195     in_buf = in_buf.offset(1);
1196     *out |= ((*in_buf) % (1u32 << 6)) << (14 - 6);
1197     out = out.offset(1);
1198 
1199     *out = ((*in_buf) >> 6) % (1u32 << 14);
1200     out = out.offset(1);
1201     *out = (*in_buf) >> 20;
1202     in_buf = in_buf.offset(1);
1203     *out |= ((*in_buf) % (1u32 << 2)) << (14 - 2);
1204     out = out.offset(1);
1205 
1206     *out = ((*in_buf) >> 2) % (1u32 << 14);
1207     out = out.offset(1);
1208     *out = ((*in_buf) >> 16) % (1u32 << 14);
1209     out = out.offset(1);
1210     *out = (*in_buf) >> 30;
1211     in_buf = in_buf.offset(1);
1212     *out |= ((*in_buf) % (1u32 << 12)) << (14 - 12);
1213     out = out.offset(1);
1214 
1215     *out = ((*in_buf) >> 12) % (1u32 << 14);
1216     out = out.offset(1);
1217     *out = (*in_buf) >> 26;
1218     in_buf = in_buf.offset(1);
1219     *out |= ((*in_buf) % (1u32 << 8)) << (14 - 8);
1220     out = out.offset(1);
1221 
1222     *out = ((*in_buf) >> 8) % (1u32 << 14);
1223     out = out.offset(1);
1224     *out = (*in_buf) >> 22;
1225     in_buf = in_buf.offset(1);
1226     *out |= ((*in_buf) % (1u32 << 4)) << (14 - 4);
1227     out = out.offset(1);
1228 
1229     *out = ((*in_buf) >> 4) % (1u32 << 14);
1230     out = out.offset(1);
1231     *out = (*in_buf) >> 18;
1232     in_buf = in_buf.offset(1);
1233     out = out.offset(1);
1234 
1235     *out = (*in_buf) % (1u32 << 14);
1236     out = out.offset(1);
1237     *out = ((*in_buf) >> 14) % (1u32 << 14);
1238     out = out.offset(1);
1239     *out = (*in_buf) >> 28;
1240     in_buf = in_buf.offset(1);
1241     *out |= ((*in_buf) % (1u32 << 10)) << (14 - 10);
1242     out = out.offset(1);
1243 
1244     *out = ((*in_buf) >> 10) % (1u32 << 14);
1245     out = out.offset(1);
1246     *out = (*in_buf) >> 24;
1247     in_buf = in_buf.offset(1);
1248     *out |= ((*in_buf) % (1u32 << 6)) << (14 - 6);
1249     out = out.offset(1);
1250 
1251     *out = ((*in_buf) >> 6) % (1u32 << 14);
1252     out = out.offset(1);
1253     *out = (*in_buf) >> 20;
1254     in_buf = in_buf.offset(1);
1255     *out |= ((*in_buf) % (1u32 << 2)) << (14 - 2);
1256     out = out.offset(1);
1257 
1258     *out = ((*in_buf) >> 2) % (1u32 << 14);
1259     out = out.offset(1);
1260     *out = ((*in_buf) >> 16) % (1u32 << 14);
1261     out = out.offset(1);
1262     *out = (*in_buf) >> 30;
1263     in_buf = in_buf.offset(1);
1264     *out |= ((*in_buf) % (1u32 << 12)) << (14 - 12);
1265     out = out.offset(1);
1266 
1267     *out = ((*in_buf) >> 12) % (1u32 << 14);
1268     out = out.offset(1);
1269     *out = (*in_buf) >> 26;
1270     in_buf = in_buf.offset(1);
1271     *out |= ((*in_buf) % (1u32 << 8)) << (14 - 8);
1272     out = out.offset(1);
1273 
1274     *out = ((*in_buf) >> 8) % (1u32 << 14);
1275     out = out.offset(1);
1276     *out = (*in_buf) >> 22;
1277     in_buf = in_buf.offset(1);
1278     *out |= ((*in_buf) % (1u32 << 4)) << (14 - 4);
1279     out = out.offset(1);
1280 
1281     *out = ((*in_buf) >> 4) % (1u32 << 14);
1282     out = out.offset(1);
1283     *out = (*in_buf) >> 18;
1284 
1285     in_buf.offset(1)
1286 }
1287 
unpack15_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321288 unsafe fn unpack15_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1289     *out = (*in_buf) % (1u32 << 15);
1290     out = out.offset(1);
1291     *out = ((*in_buf) >> 15) % (1u32 << 15);
1292     out = out.offset(1);
1293     *out = (*in_buf) >> 30;
1294     in_buf = in_buf.offset(1);
1295     *out |= ((*in_buf) % (1u32 << 13)) << (15 - 13);
1296     out = out.offset(1);
1297 
1298     *out = ((*in_buf) >> 13) % (1u32 << 15);
1299     out = out.offset(1);
1300     *out = (*in_buf) >> 28;
1301     in_buf = in_buf.offset(1);
1302     *out |= ((*in_buf) % (1u32 << 11)) << (15 - 11);
1303     out = out.offset(1);
1304 
1305     *out = ((*in_buf) >> 11) % (1u32 << 15);
1306     out = out.offset(1);
1307     *out = (*in_buf) >> 26;
1308     in_buf = in_buf.offset(1);
1309     *out |= ((*in_buf) % (1u32 << 9)) << (15 - 9);
1310     out = out.offset(1);
1311 
1312     *out = ((*in_buf) >> 9) % (1u32 << 15);
1313     out = out.offset(1);
1314     *out = (*in_buf) >> 24;
1315     in_buf = in_buf.offset(1);
1316     *out |= ((*in_buf) % (1u32 << 7)) << (15 - 7);
1317     out = out.offset(1);
1318 
1319     *out = ((*in_buf) >> 7) % (1u32 << 15);
1320     out = out.offset(1);
1321     *out = (*in_buf) >> 22;
1322     in_buf = in_buf.offset(1);
1323     *out |= ((*in_buf) % (1u32 << 5)) << (15 - 5);
1324     out = out.offset(1);
1325 
1326     *out = ((*in_buf) >> 5) % (1u32 << 15);
1327     out = out.offset(1);
1328     *out = (*in_buf) >> 20;
1329     in_buf = in_buf.offset(1);
1330     *out |= ((*in_buf) % (1u32 << 3)) << (15 - 3);
1331     out = out.offset(1);
1332 
1333     *out = ((*in_buf) >> 3) % (1u32 << 15);
1334     out = out.offset(1);
1335     *out = (*in_buf) >> 18;
1336     in_buf = in_buf.offset(1);
1337     *out |= ((*in_buf) % (1u32 << 1)) << (15 - 1);
1338     out = out.offset(1);
1339 
1340     *out = ((*in_buf) >> 1) % (1u32 << 15);
1341     out = out.offset(1);
1342     *out = ((*in_buf) >> 16) % (1u32 << 15);
1343     out = out.offset(1);
1344     *out = (*in_buf) >> 31;
1345     in_buf = in_buf.offset(1);
1346     *out |= ((*in_buf) % (1u32 << 14)) << (15 - 14);
1347     out = out.offset(1);
1348 
1349     *out = ((*in_buf) >> 14) % (1u32 << 15);
1350     out = out.offset(1);
1351     *out = (*in_buf) >> 29;
1352     in_buf = in_buf.offset(1);
1353     *out |= ((*in_buf) % (1u32 << 12)) << (15 - 12);
1354     out = out.offset(1);
1355 
1356     *out = ((*in_buf) >> 12) % (1u32 << 15);
1357     out = out.offset(1);
1358     *out = (*in_buf) >> 27;
1359     in_buf = in_buf.offset(1);
1360     *out |= ((*in_buf) % (1u32 << 10)) << (15 - 10);
1361     out = out.offset(1);
1362 
1363     *out = ((*in_buf) >> 10) % (1u32 << 15);
1364     out = out.offset(1);
1365     *out = (*in_buf) >> 25;
1366     in_buf = in_buf.offset(1);
1367     *out |= ((*in_buf) % (1u32 << 8)) << (15 - 8);
1368     out = out.offset(1);
1369 
1370     *out = ((*in_buf) >> 8) % (1u32 << 15);
1371     out = out.offset(1);
1372     *out = (*in_buf) >> 23;
1373     in_buf = in_buf.offset(1);
1374     *out |= ((*in_buf) % (1u32 << 6)) << (15 - 6);
1375     out = out.offset(1);
1376 
1377     *out = ((*in_buf) >> 6) % (1u32 << 15);
1378     out = out.offset(1);
1379     *out = (*in_buf) >> 21;
1380     in_buf = in_buf.offset(1);
1381     *out |= ((*in_buf) % (1u32 << 4)) << (15 - 4);
1382     out = out.offset(1);
1383 
1384     *out = ((*in_buf) >> 4) % (1u32 << 15);
1385     out = out.offset(1);
1386     *out = (*in_buf) >> 19;
1387     in_buf = in_buf.offset(1);
1388     *out |= ((*in_buf) % (1u32 << 2)) << (15 - 2);
1389     out = out.offset(1);
1390 
1391     *out = ((*in_buf) >> 2) % (1u32 << 15);
1392     out = out.offset(1);
1393     *out = (*in_buf) >> 17;
1394 
1395     in_buf.offset(1)
1396 }
1397 
unpack16_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321398 unsafe fn unpack16_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1399     *out = (*in_buf) % (1u32 << 16);
1400     out = out.offset(1);
1401     *out = (*in_buf) >> 16;
1402     out = out.offset(1);
1403     in_buf = in_buf.offset(1);
1404 
1405     *out = (*in_buf) % (1u32 << 16);
1406     out = out.offset(1);
1407     *out = (*in_buf) >> 16;
1408     out = out.offset(1);
1409     in_buf = in_buf.offset(1);
1410 
1411     *out = (*in_buf) % (1u32 << 16);
1412     out = out.offset(1);
1413     *out = (*in_buf) >> 16;
1414     out = out.offset(1);
1415     in_buf = in_buf.offset(1);
1416 
1417     *out = (*in_buf) % (1u32 << 16);
1418     out = out.offset(1);
1419     *out = (*in_buf) >> 16;
1420     out = out.offset(1);
1421     in_buf = in_buf.offset(1);
1422 
1423     *out = (*in_buf) % (1u32 << 16);
1424     out = out.offset(1);
1425     *out = (*in_buf) >> 16;
1426     out = out.offset(1);
1427     in_buf = in_buf.offset(1);
1428 
1429     *out = (*in_buf) % (1u32 << 16);
1430     out = out.offset(1);
1431     *out = (*in_buf) >> 16;
1432     out = out.offset(1);
1433     in_buf = in_buf.offset(1);
1434 
1435     *out = (*in_buf) % (1u32 << 16);
1436     out = out.offset(1);
1437     *out = (*in_buf) >> 16;
1438     out = out.offset(1);
1439     in_buf = in_buf.offset(1);
1440 
1441     *out = (*in_buf) % (1u32 << 16);
1442     out = out.offset(1);
1443     *out = (*in_buf) >> 16;
1444     out = out.offset(1);
1445     in_buf = in_buf.offset(1);
1446 
1447     *out = (*in_buf) % (1u32 << 16);
1448     out = out.offset(1);
1449     *out = (*in_buf) >> 16;
1450     out = out.offset(1);
1451     in_buf = in_buf.offset(1);
1452 
1453     *out = (*in_buf) % (1u32 << 16);
1454     out = out.offset(1);
1455     *out = (*in_buf) >> 16;
1456     out = out.offset(1);
1457     in_buf = in_buf.offset(1);
1458 
1459     *out = (*in_buf) % (1u32 << 16);
1460     out = out.offset(1);
1461     *out = (*in_buf) >> 16;
1462     out = out.offset(1);
1463     in_buf = in_buf.offset(1);
1464 
1465     *out = (*in_buf) % (1u32 << 16);
1466     out = out.offset(1);
1467     *out = (*in_buf) >> 16;
1468     out = out.offset(1);
1469     in_buf = in_buf.offset(1);
1470 
1471     *out = (*in_buf) % (1u32 << 16);
1472     out = out.offset(1);
1473     *out = (*in_buf) >> 16;
1474     out = out.offset(1);
1475     in_buf = in_buf.offset(1);
1476 
1477     *out = (*in_buf) % (1u32 << 16);
1478     out = out.offset(1);
1479     *out = (*in_buf) >> 16;
1480     out = out.offset(1);
1481     in_buf = in_buf.offset(1);
1482 
1483     *out = (*in_buf) % (1u32 << 16);
1484     out = out.offset(1);
1485     *out = (*in_buf) >> 16;
1486     out = out.offset(1);
1487     in_buf = in_buf.offset(1);
1488 
1489     *out = (*in_buf) % (1u32 << 16);
1490     out = out.offset(1);
1491     *out = (*in_buf) >> 16;
1492 
1493     in_buf.offset(1)
1494 }
1495 
unpack17_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321496 unsafe fn unpack17_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1497     *out = (*in_buf) % (1u32 << 17);
1498     out = out.offset(1);
1499     *out = (*in_buf) >> 17;
1500     in_buf = in_buf.offset(1);
1501     *out |= ((*in_buf) % (1u32 << 2)) << (17 - 2);
1502     out = out.offset(1);
1503 
1504     *out = ((*in_buf) >> 2) % (1u32 << 17);
1505     out = out.offset(1);
1506     *out = (*in_buf) >> 19;
1507     in_buf = in_buf.offset(1);
1508     *out |= ((*in_buf) % (1u32 << 4)) << (17 - 4);
1509     out = out.offset(1);
1510 
1511     *out = ((*in_buf) >> 4) % (1u32 << 17);
1512     out = out.offset(1);
1513     *out = (*in_buf) >> 21;
1514     in_buf = in_buf.offset(1);
1515     *out |= ((*in_buf) % (1u32 << 6)) << (17 - 6);
1516     out = out.offset(1);
1517 
1518     *out = ((*in_buf) >> 6) % (1u32 << 17);
1519     out = out.offset(1);
1520     *out = (*in_buf) >> 23;
1521     in_buf = in_buf.offset(1);
1522     *out |= ((*in_buf) % (1u32 << 8)) << (17 - 8);
1523     out = out.offset(1);
1524 
1525     *out = ((*in_buf) >> 8) % (1u32 << 17);
1526     out = out.offset(1);
1527     *out = (*in_buf) >> 25;
1528     in_buf = in_buf.offset(1);
1529     *out |= ((*in_buf) % (1u32 << 10)) << (17 - 10);
1530     out = out.offset(1);
1531 
1532     *out = ((*in_buf) >> 10) % (1u32 << 17);
1533     out = out.offset(1);
1534     *out = (*in_buf) >> 27;
1535     in_buf = in_buf.offset(1);
1536     *out |= ((*in_buf) % (1u32 << 12)) << (17 - 12);
1537     out = out.offset(1);
1538 
1539     *out = ((*in_buf) >> 12) % (1u32 << 17);
1540     out = out.offset(1);
1541     *out = (*in_buf) >> 29;
1542     in_buf = in_buf.offset(1);
1543     *out |= ((*in_buf) % (1u32 << 14)) << (17 - 14);
1544     out = out.offset(1);
1545 
1546     *out = ((*in_buf) >> 14) % (1u32 << 17);
1547     out = out.offset(1);
1548     *out = (*in_buf) >> 31;
1549     in_buf = in_buf.offset(1);
1550     *out |= ((*in_buf) % (1u32 << 16)) << (17 - 16);
1551     out = out.offset(1);
1552 
1553     *out = (*in_buf) >> 16;
1554     in_buf = in_buf.offset(1);
1555     *out |= ((*in_buf) % (1u32 << 1)) << (17 - 1);
1556     out = out.offset(1);
1557 
1558     *out = ((*in_buf) >> 1) % (1u32 << 17);
1559     out = out.offset(1);
1560     *out = (*in_buf) >> 18;
1561     in_buf = in_buf.offset(1);
1562     *out |= ((*in_buf) % (1u32 << 3)) << (17 - 3);
1563     out = out.offset(1);
1564 
1565     *out = ((*in_buf) >> 3) % (1u32 << 17);
1566     out = out.offset(1);
1567     *out = (*in_buf) >> 20;
1568     in_buf = in_buf.offset(1);
1569     *out |= ((*in_buf) % (1u32 << 5)) << (17 - 5);
1570     out = out.offset(1);
1571 
1572     *out = ((*in_buf) >> 5) % (1u32 << 17);
1573     out = out.offset(1);
1574     *out = (*in_buf) >> 22;
1575     in_buf = in_buf.offset(1);
1576     *out |= ((*in_buf) % (1u32 << 7)) << (17 - 7);
1577     out = out.offset(1);
1578 
1579     *out = ((*in_buf) >> 7) % (1u32 << 17);
1580     out = out.offset(1);
1581     *out = (*in_buf) >> 24;
1582     in_buf = in_buf.offset(1);
1583     *out |= ((*in_buf) % (1u32 << 9)) << (17 - 9);
1584     out = out.offset(1);
1585 
1586     *out = ((*in_buf) >> 9) % (1u32 << 17);
1587     out = out.offset(1);
1588     *out = (*in_buf) >> 26;
1589     in_buf = in_buf.offset(1);
1590     *out |= ((*in_buf) % (1u32 << 11)) << (17 - 11);
1591     out = out.offset(1);
1592 
1593     *out = ((*in_buf) >> 11) % (1u32 << 17);
1594     out = out.offset(1);
1595     *out = (*in_buf) >> 28;
1596     in_buf = in_buf.offset(1);
1597     *out |= ((*in_buf) % (1u32 << 13)) << (17 - 13);
1598     out = out.offset(1);
1599 
1600     *out = ((*in_buf) >> 13) % (1u32 << 17);
1601     out = out.offset(1);
1602     *out = (*in_buf) >> 30;
1603     in_buf = in_buf.offset(1);
1604     *out |= ((*in_buf) % (1u32 << 15)) << (17 - 15);
1605     out = out.offset(1);
1606 
1607     *out = (*in_buf) >> 15;
1608 
1609     in_buf.offset(1)
1610 }
1611 
unpack18_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321612 unsafe fn unpack18_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1613     *out = (*in_buf) % (1u32 << 18);
1614     out = out.offset(1);
1615     *out = (*in_buf) >> 18;
1616     in_buf = in_buf.offset(1);
1617     *out |= ((*in_buf) % (1u32 << 4)) << (18 - 4);
1618     out = out.offset(1);
1619 
1620     *out = ((*in_buf) >> 4) % (1u32 << 18);
1621     out = out.offset(1);
1622     *out = (*in_buf) >> 22;
1623     in_buf = in_buf.offset(1);
1624     *out |= ((*in_buf) % (1u32 << 8)) << (18 - 8);
1625     out = out.offset(1);
1626 
1627     *out = ((*in_buf) >> 8) % (1u32 << 18);
1628     out = out.offset(1);
1629     *out = (*in_buf) >> 26;
1630     in_buf = in_buf.offset(1);
1631     *out |= ((*in_buf) % (1u32 << 12)) << (18 - 12);
1632     out = out.offset(1);
1633 
1634     *out = ((*in_buf) >> 12) % (1u32 << 18);
1635     out = out.offset(1);
1636     *out = (*in_buf) >> 30;
1637     in_buf = in_buf.offset(1);
1638     *out |= ((*in_buf) % (1u32 << 16)) << (18 - 16);
1639     out = out.offset(1);
1640 
1641     *out = (*in_buf) >> 16;
1642     in_buf = in_buf.offset(1);
1643     *out |= ((*in_buf) % (1u32 << 2)) << (18 - 2);
1644     out = out.offset(1);
1645 
1646     *out = ((*in_buf) >> 2) % (1u32 << 18);
1647     out = out.offset(1);
1648     *out = (*in_buf) >> 20;
1649     in_buf = in_buf.offset(1);
1650     *out |= ((*in_buf) % (1u32 << 6)) << (18 - 6);
1651     out = out.offset(1);
1652 
1653     *out = ((*in_buf) >> 6) % (1u32 << 18);
1654     out = out.offset(1);
1655     *out = (*in_buf) >> 24;
1656     in_buf = in_buf.offset(1);
1657     *out |= ((*in_buf) % (1u32 << 10)) << (18 - 10);
1658     out = out.offset(1);
1659 
1660     *out = ((*in_buf) >> 10) % (1u32 << 18);
1661     out = out.offset(1);
1662     *out = (*in_buf) >> 28;
1663     in_buf = in_buf.offset(1);
1664     *out |= ((*in_buf) % (1u32 << 14)) << (18 - 14);
1665     out = out.offset(1);
1666 
1667     *out = (*in_buf) >> 14;
1668     in_buf = in_buf.offset(1);
1669     out = out.offset(1);
1670 
1671     *out = (*in_buf) % (1u32 << 18);
1672     out = out.offset(1);
1673     *out = (*in_buf) >> 18;
1674     in_buf = in_buf.offset(1);
1675     *out |= ((*in_buf) % (1u32 << 4)) << (18 - 4);
1676     out = out.offset(1);
1677 
1678     *out = ((*in_buf) >> 4) % (1u32 << 18);
1679     out = out.offset(1);
1680     *out = (*in_buf) >> 22;
1681     in_buf = in_buf.offset(1);
1682     *out |= ((*in_buf) % (1u32 << 8)) << (18 - 8);
1683     out = out.offset(1);
1684 
1685     *out = ((*in_buf) >> 8) % (1u32 << 18);
1686     out = out.offset(1);
1687     *out = (*in_buf) >> 26;
1688     in_buf = in_buf.offset(1);
1689     *out |= ((*in_buf) % (1u32 << 12)) << (18 - 12);
1690     out = out.offset(1);
1691 
1692     *out = ((*in_buf) >> 12) % (1u32 << 18);
1693     out = out.offset(1);
1694     *out = (*in_buf) >> 30;
1695     in_buf = in_buf.offset(1);
1696     *out |= ((*in_buf) % (1u32 << 16)) << (18 - 16);
1697     out = out.offset(1);
1698 
1699     *out = (*in_buf) >> 16;
1700     in_buf = in_buf.offset(1);
1701     *out |= ((*in_buf) % (1u32 << 2)) << (18 - 2);
1702     out = out.offset(1);
1703 
1704     *out = ((*in_buf) >> 2) % (1u32 << 18);
1705     out = out.offset(1);
1706     *out = (*in_buf) >> 20;
1707     in_buf = in_buf.offset(1);
1708     *out |= ((*in_buf) % (1u32 << 6)) << (18 - 6);
1709     out = out.offset(1);
1710 
1711     *out = ((*in_buf) >> 6) % (1u32 << 18);
1712     out = out.offset(1);
1713     *out = (*in_buf) >> 24;
1714     in_buf = in_buf.offset(1);
1715     *out |= ((*in_buf) % (1u32 << 10)) << (18 - 10);
1716     out = out.offset(1);
1717 
1718     *out = ((*in_buf) >> 10) % (1u32 << 18);
1719     out = out.offset(1);
1720     *out = (*in_buf) >> 28;
1721     in_buf = in_buf.offset(1);
1722     *out |= ((*in_buf) % (1u32 << 14)) << (18 - 14);
1723     out = out.offset(1);
1724 
1725     *out = (*in_buf) >> 14;
1726 
1727     in_buf.offset(1)
1728 }
1729 
unpack19_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321730 unsafe fn unpack19_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1731     *out = (*in_buf) % (1u32 << 19);
1732     out = out.offset(1);
1733     *out = (*in_buf) >> 19;
1734     in_buf = in_buf.offset(1);
1735     *out |= ((*in_buf) % (1u32 << 6)) << (19 - 6);
1736     out = out.offset(1);
1737 
1738     *out = ((*in_buf) >> 6) % (1u32 << 19);
1739     out = out.offset(1);
1740     *out = (*in_buf) >> 25;
1741     in_buf = in_buf.offset(1);
1742     *out |= ((*in_buf) % (1u32 << 12)) << (19 - 12);
1743     out = out.offset(1);
1744 
1745     *out = ((*in_buf) >> 12) % (1u32 << 19);
1746     out = out.offset(1);
1747     *out = (*in_buf) >> 31;
1748     in_buf = in_buf.offset(1);
1749     *out |= ((*in_buf) % (1u32 << 18)) << (19 - 18);
1750     out = out.offset(1);
1751 
1752     *out = (*in_buf) >> 18;
1753     in_buf = in_buf.offset(1);
1754     *out |= ((*in_buf) % (1u32 << 5)) << (19 - 5);
1755     out = out.offset(1);
1756 
1757     *out = ((*in_buf) >> 5) % (1u32 << 19);
1758     out = out.offset(1);
1759     *out = (*in_buf) >> 24;
1760     in_buf = in_buf.offset(1);
1761     *out |= ((*in_buf) % (1u32 << 11)) << (19 - 11);
1762     out = out.offset(1);
1763 
1764     *out = ((*in_buf) >> 11) % (1u32 << 19);
1765     out = out.offset(1);
1766     *out = (*in_buf) >> 30;
1767     in_buf = in_buf.offset(1);
1768     *out |= ((*in_buf) % (1u32 << 17)) << (19 - 17);
1769     out = out.offset(1);
1770 
1771     *out = (*in_buf) >> 17;
1772     in_buf = in_buf.offset(1);
1773     *out |= ((*in_buf) % (1u32 << 4)) << (19 - 4);
1774     out = out.offset(1);
1775 
1776     *out = ((*in_buf) >> 4) % (1u32 << 19);
1777     out = out.offset(1);
1778     *out = (*in_buf) >> 23;
1779     in_buf = in_buf.offset(1);
1780     *out |= ((*in_buf) % (1u32 << 10)) << (19 - 10);
1781     out = out.offset(1);
1782 
1783     *out = ((*in_buf) >> 10) % (1u32 << 19);
1784     out = out.offset(1);
1785     *out = (*in_buf) >> 29;
1786     in_buf = in_buf.offset(1);
1787     *out |= ((*in_buf) % (1u32 << 16)) << (19 - 16);
1788     out = out.offset(1);
1789 
1790     *out = (*in_buf) >> 16;
1791     in_buf = in_buf.offset(1);
1792     *out |= ((*in_buf) % (1u32 << 3)) << (19 - 3);
1793     out = out.offset(1);
1794 
1795     *out = ((*in_buf) >> 3) % (1u32 << 19);
1796     out = out.offset(1);
1797     *out = (*in_buf) >> 22;
1798     in_buf = in_buf.offset(1);
1799     *out |= ((*in_buf) % (1u32 << 9)) << (19 - 9);
1800     out = out.offset(1);
1801 
1802     *out = ((*in_buf) >> 9) % (1u32 << 19);
1803     out = out.offset(1);
1804     *out = (*in_buf) >> 28;
1805     in_buf = in_buf.offset(1);
1806     *out |= ((*in_buf) % (1u32 << 15)) << (19 - 15);
1807     out = out.offset(1);
1808 
1809     *out = (*in_buf) >> 15;
1810     in_buf = in_buf.offset(1);
1811     *out |= ((*in_buf) % (1u32 << 2)) << (19 - 2);
1812     out = out.offset(1);
1813 
1814     *out = ((*in_buf) >> 2) % (1u32 << 19);
1815     out = out.offset(1);
1816     *out = (*in_buf) >> 21;
1817     in_buf = in_buf.offset(1);
1818     *out |= ((*in_buf) % (1u32 << 8)) << (19 - 8);
1819     out = out.offset(1);
1820 
1821     *out = ((*in_buf) >> 8) % (1u32 << 19);
1822     out = out.offset(1);
1823     *out = (*in_buf) >> 27;
1824     in_buf = in_buf.offset(1);
1825     *out |= ((*in_buf) % (1u32 << 14)) << (19 - 14);
1826     out = out.offset(1);
1827 
1828     *out = (*in_buf) >> 14;
1829     in_buf = in_buf.offset(1);
1830     *out |= ((*in_buf) % (1u32 << 1)) << (19 - 1);
1831     out = out.offset(1);
1832 
1833     *out = ((*in_buf) >> 1) % (1u32 << 19);
1834     out = out.offset(1);
1835     *out = (*in_buf) >> 20;
1836     in_buf = in_buf.offset(1);
1837     *out |= ((*in_buf) % (1u32 << 7)) << (19 - 7);
1838     out = out.offset(1);
1839 
1840     *out = ((*in_buf) >> 7) % (1u32 << 19);
1841     out = out.offset(1);
1842     *out = (*in_buf) >> 26;
1843     in_buf = in_buf.offset(1);
1844     *out |= ((*in_buf) % (1u32 << 13)) << (19 - 13);
1845     out = out.offset(1);
1846 
1847     *out = (*in_buf) >> 13;
1848 
1849     in_buf.offset(1)
1850 }
1851 
unpack20_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321852 unsafe fn unpack20_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1853     *out = (*in_buf) % (1u32 << 20);
1854     out = out.offset(1);
1855     *out = (*in_buf) >> 20;
1856     in_buf = in_buf.offset(1);
1857     *out |= ((*in_buf) % (1u32 << 8)) << (20 - 8);
1858     out = out.offset(1);
1859 
1860     *out = ((*in_buf) >> 8) % (1u32 << 20);
1861     out = out.offset(1);
1862     *out = (*in_buf) >> 28;
1863     in_buf = in_buf.offset(1);
1864     *out |= ((*in_buf) % (1u32 << 16)) << (20 - 16);
1865     out = out.offset(1);
1866 
1867     *out = (*in_buf) >> 16;
1868     in_buf = in_buf.offset(1);
1869     *out |= ((*in_buf) % (1u32 << 4)) << (20 - 4);
1870     out = out.offset(1);
1871 
1872     *out = ((*in_buf) >> 4) % (1u32 << 20);
1873     out = out.offset(1);
1874     *out = (*in_buf) >> 24;
1875     in_buf = in_buf.offset(1);
1876     *out |= ((*in_buf) % (1u32 << 12)) << (20 - 12);
1877     out = out.offset(1);
1878 
1879     *out = (*in_buf) >> 12;
1880     in_buf = in_buf.offset(1);
1881     out = out.offset(1);
1882 
1883     *out = (*in_buf) % (1u32 << 20);
1884     out = out.offset(1);
1885     *out = (*in_buf) >> 20;
1886     in_buf = in_buf.offset(1);
1887     *out |= ((*in_buf) % (1u32 << 8)) << (20 - 8);
1888     out = out.offset(1);
1889 
1890     *out = ((*in_buf) >> 8) % (1u32 << 20);
1891     out = out.offset(1);
1892     *out = (*in_buf) >> 28;
1893     in_buf = in_buf.offset(1);
1894     *out |= ((*in_buf) % (1u32 << 16)) << (20 - 16);
1895     out = out.offset(1);
1896 
1897     *out = (*in_buf) >> 16;
1898     in_buf = in_buf.offset(1);
1899     *out |= ((*in_buf) % (1u32 << 4)) << (20 - 4);
1900     out = out.offset(1);
1901 
1902     *out = ((*in_buf) >> 4) % (1u32 << 20);
1903     out = out.offset(1);
1904     *out = (*in_buf) >> 24;
1905     in_buf = in_buf.offset(1);
1906     *out |= ((*in_buf) % (1u32 << 12)) << (20 - 12);
1907     out = out.offset(1);
1908 
1909     *out = (*in_buf) >> 12;
1910     in_buf = in_buf.offset(1);
1911     out = out.offset(1);
1912 
1913     *out = (*in_buf) % (1u32 << 20);
1914     out = out.offset(1);
1915     *out = (*in_buf) >> 20;
1916     in_buf = in_buf.offset(1);
1917     *out |= ((*in_buf) % (1u32 << 8)) << (20 - 8);
1918     out = out.offset(1);
1919 
1920     *out = ((*in_buf) >> 8) % (1u32 << 20);
1921     out = out.offset(1);
1922     *out = (*in_buf) >> 28;
1923     in_buf = in_buf.offset(1);
1924     *out |= ((*in_buf) % (1u32 << 16)) << (20 - 16);
1925     out = out.offset(1);
1926 
1927     *out = (*in_buf) >> 16;
1928     in_buf = in_buf.offset(1);
1929     *out |= ((*in_buf) % (1u32 << 4)) << (20 - 4);
1930     out = out.offset(1);
1931 
1932     *out = ((*in_buf) >> 4) % (1u32 << 20);
1933     out = out.offset(1);
1934     *out = (*in_buf) >> 24;
1935     in_buf = in_buf.offset(1);
1936     *out |= ((*in_buf) % (1u32 << 12)) << (20 - 12);
1937     out = out.offset(1);
1938 
1939     *out = (*in_buf) >> 12;
1940     in_buf = in_buf.offset(1);
1941     out = out.offset(1);
1942 
1943     *out = (*in_buf) % (1u32 << 20);
1944     out = out.offset(1);
1945     *out = (*in_buf) >> 20;
1946     in_buf = in_buf.offset(1);
1947     *out |= ((*in_buf) % (1u32 << 8)) << (20 - 8);
1948     out = out.offset(1);
1949 
1950     *out = ((*in_buf) >> 8) % (1u32 << 20);
1951     out = out.offset(1);
1952     *out = (*in_buf) >> 28;
1953     in_buf = in_buf.offset(1);
1954     *out |= ((*in_buf) % (1u32 << 16)) << (20 - 16);
1955     out = out.offset(1);
1956 
1957     *out = (*in_buf) >> 16;
1958     in_buf = in_buf.offset(1);
1959     *out |= ((*in_buf) % (1u32 << 4)) << (20 - 4);
1960     out = out.offset(1);
1961 
1962     *out = ((*in_buf) >> 4) % (1u32 << 20);
1963     out = out.offset(1);
1964     *out = (*in_buf) >> 24;
1965     in_buf = in_buf.offset(1);
1966     *out |= ((*in_buf) % (1u32 << 12)) << (20 - 12);
1967     out = out.offset(1);
1968 
1969     *out = (*in_buf) >> 12;
1970 
1971     in_buf.offset(1)
1972 }
1973 
unpack21_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u321974 unsafe fn unpack21_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
1975     *out = (*in_buf) % (1u32 << 21);
1976     out = out.offset(1);
1977     *out = (*in_buf) >> 21;
1978     in_buf = in_buf.offset(1);
1979     *out |= ((*in_buf) % (1u32 << 10)) << (21 - 10);
1980     out = out.offset(1);
1981 
1982     *out = ((*in_buf) >> 10) % (1u32 << 21);
1983     out = out.offset(1);
1984     *out = (*in_buf) >> 31;
1985     in_buf = in_buf.offset(1);
1986     *out |= ((*in_buf) % (1u32 << 20)) << (21 - 20);
1987     out = out.offset(1);
1988 
1989     *out = (*in_buf) >> 20;
1990     in_buf = in_buf.offset(1);
1991     *out |= ((*in_buf) % (1u32 << 9)) << (21 - 9);
1992     out = out.offset(1);
1993 
1994     *out = ((*in_buf) >> 9) % (1u32 << 21);
1995     out = out.offset(1);
1996     *out = (*in_buf) >> 30;
1997     in_buf = in_buf.offset(1);
1998     *out |= ((*in_buf) % (1u32 << 19)) << (21 - 19);
1999     out = out.offset(1);
2000 
2001     *out = (*in_buf) >> 19;
2002     in_buf = in_buf.offset(1);
2003     *out |= ((*in_buf) % (1u32 << 8)) << (21 - 8);
2004     out = out.offset(1);
2005 
2006     *out = ((*in_buf) >> 8) % (1u32 << 21);
2007     out = out.offset(1);
2008     *out = (*in_buf) >> 29;
2009     in_buf = in_buf.offset(1);
2010     *out |= ((*in_buf) % (1u32 << 18)) << (21 - 18);
2011     out = out.offset(1);
2012 
2013     *out = (*in_buf) >> 18;
2014     in_buf = in_buf.offset(1);
2015     *out |= ((*in_buf) % (1u32 << 7)) << (21 - 7);
2016     out = out.offset(1);
2017 
2018     *out = ((*in_buf) >> 7) % (1u32 << 21);
2019     out = out.offset(1);
2020     *out = (*in_buf) >> 28;
2021     in_buf = in_buf.offset(1);
2022     *out |= ((*in_buf) % (1u32 << 17)) << (21 - 17);
2023     out = out.offset(1);
2024 
2025     *out = (*in_buf) >> 17;
2026     in_buf = in_buf.offset(1);
2027     *out |= ((*in_buf) % (1u32 << 6)) << (21 - 6);
2028     out = out.offset(1);
2029 
2030     *out = ((*in_buf) >> 6) % (1u32 << 21);
2031     out = out.offset(1);
2032     *out = (*in_buf) >> 27;
2033     in_buf = in_buf.offset(1);
2034     *out |= ((*in_buf) % (1u32 << 16)) << (21 - 16);
2035     out = out.offset(1);
2036 
2037     *out = (*in_buf) >> 16;
2038     in_buf = in_buf.offset(1);
2039     *out |= ((*in_buf) % (1u32 << 5)) << (21 - 5);
2040     out = out.offset(1);
2041 
2042     *out = ((*in_buf) >> 5) % (1u32 << 21);
2043     out = out.offset(1);
2044     *out = (*in_buf) >> 26;
2045     in_buf = in_buf.offset(1);
2046     *out |= ((*in_buf) % (1u32 << 15)) << (21 - 15);
2047     out = out.offset(1);
2048 
2049     *out = (*in_buf) >> 15;
2050     in_buf = in_buf.offset(1);
2051     *out |= ((*in_buf) % (1u32 << 4)) << (21 - 4);
2052     out = out.offset(1);
2053 
2054     *out = ((*in_buf) >> 4) % (1u32 << 21);
2055     out = out.offset(1);
2056     *out = (*in_buf) >> 25;
2057     in_buf = in_buf.offset(1);
2058     *out |= ((*in_buf) % (1u32 << 14)) << (21 - 14);
2059     out = out.offset(1);
2060 
2061     *out = (*in_buf) >> 14;
2062     in_buf = in_buf.offset(1);
2063     *out |= ((*in_buf) % (1u32 << 3)) << (21 - 3);
2064     out = out.offset(1);
2065 
2066     *out = ((*in_buf) >> 3) % (1u32 << 21);
2067     out = out.offset(1);
2068     *out = (*in_buf) >> 24;
2069     in_buf = in_buf.offset(1);
2070     *out |= ((*in_buf) % (1u32 << 13)) << (21 - 13);
2071     out = out.offset(1);
2072 
2073     *out = (*in_buf) >> 13;
2074     in_buf = in_buf.offset(1);
2075     *out |= ((*in_buf) % (1u32 << 2)) << (21 - 2);
2076     out = out.offset(1);
2077 
2078     *out = ((*in_buf) >> 2) % (1u32 << 21);
2079     out = out.offset(1);
2080     *out = (*in_buf) >> 23;
2081     in_buf = in_buf.offset(1);
2082     *out |= ((*in_buf) % (1u32 << 12)) << (21 - 12);
2083     out = out.offset(1);
2084 
2085     *out = (*in_buf) >> 12;
2086     in_buf = in_buf.offset(1);
2087     *out |= ((*in_buf) % (1u32 << 1)) << (21 - 1);
2088     out = out.offset(1);
2089 
2090     *out = ((*in_buf) >> 1) % (1u32 << 21);
2091     out = out.offset(1);
2092     *out = (*in_buf) >> 22;
2093     in_buf = in_buf.offset(1);
2094     *out |= ((*in_buf) % (1u32 << 11)) << (21 - 11);
2095     out = out.offset(1);
2096 
2097     *out = (*in_buf) >> 11;
2098 
2099     in_buf.offset(1)
2100 }
2101 
unpack22_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322102 unsafe fn unpack22_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2103     *out = (*in_buf) % (1u32 << 22);
2104     out = out.offset(1);
2105     *out = (*in_buf) >> 22;
2106     in_buf = in_buf.offset(1);
2107     *out |= ((*in_buf) % (1u32 << 12)) << (22 - 12);
2108     out = out.offset(1);
2109 
2110     *out = (*in_buf) >> 12;
2111     in_buf = in_buf.offset(1);
2112     *out |= ((*in_buf) % (1u32 << 2)) << (22 - 2);
2113     out = out.offset(1);
2114 
2115     *out = ((*in_buf) >> 2) % (1u32 << 22);
2116     out = out.offset(1);
2117     *out = (*in_buf) >> 24;
2118     in_buf = in_buf.offset(1);
2119     *out |= ((*in_buf) % (1u32 << 14)) << (22 - 14);
2120     out = out.offset(1);
2121 
2122     *out = (*in_buf) >> 14;
2123     in_buf = in_buf.offset(1);
2124     *out |= ((*in_buf) % (1u32 << 4)) << (22 - 4);
2125     out = out.offset(1);
2126 
2127     *out = ((*in_buf) >> 4) % (1u32 << 22);
2128     out = out.offset(1);
2129     *out = (*in_buf) >> 26;
2130     in_buf = in_buf.offset(1);
2131     *out |= ((*in_buf) % (1u32 << 16)) << (22 - 16);
2132     out = out.offset(1);
2133 
2134     *out = (*in_buf) >> 16;
2135     in_buf = in_buf.offset(1);
2136     *out |= ((*in_buf) % (1u32 << 6)) << (22 - 6);
2137     out = out.offset(1);
2138 
2139     *out = ((*in_buf) >> 6) % (1u32 << 22);
2140     out = out.offset(1);
2141     *out = (*in_buf) >> 28;
2142     in_buf = in_buf.offset(1);
2143     *out |= ((*in_buf) % (1u32 << 18)) << (22 - 18);
2144     out = out.offset(1);
2145 
2146     *out = (*in_buf) >> 18;
2147     in_buf = in_buf.offset(1);
2148     *out |= ((*in_buf) % (1u32 << 8)) << (22 - 8);
2149     out = out.offset(1);
2150 
2151     *out = ((*in_buf) >> 8) % (1u32 << 22);
2152     out = out.offset(1);
2153     *out = (*in_buf) >> 30;
2154     in_buf = in_buf.offset(1);
2155     *out |= ((*in_buf) % (1u32 << 20)) << (22 - 20);
2156     out = out.offset(1);
2157 
2158     *out = (*in_buf) >> 20;
2159     in_buf = in_buf.offset(1);
2160     *out |= ((*in_buf) % (1u32 << 10)) << (22 - 10);
2161     out = out.offset(1);
2162 
2163     *out = (*in_buf) >> 10;
2164     in_buf = in_buf.offset(1);
2165     out = out.offset(1);
2166 
2167     *out = (*in_buf) % (1u32 << 22);
2168     out = out.offset(1);
2169     *out = (*in_buf) >> 22;
2170     in_buf = in_buf.offset(1);
2171     *out |= ((*in_buf) % (1u32 << 12)) << (22 - 12);
2172     out = out.offset(1);
2173 
2174     *out = (*in_buf) >> 12;
2175     in_buf = in_buf.offset(1);
2176     *out |= ((*in_buf) % (1u32 << 2)) << (22 - 2);
2177     out = out.offset(1);
2178 
2179     *out = ((*in_buf) >> 2) % (1u32 << 22);
2180     out = out.offset(1);
2181     *out = (*in_buf) >> 24;
2182     in_buf = in_buf.offset(1);
2183     *out |= ((*in_buf) % (1u32 << 14)) << (22 - 14);
2184     out = out.offset(1);
2185 
2186     *out = (*in_buf) >> 14;
2187     in_buf = in_buf.offset(1);
2188     *out |= ((*in_buf) % (1u32 << 4)) << (22 - 4);
2189     out = out.offset(1);
2190 
2191     *out = ((*in_buf) >> 4) % (1u32 << 22);
2192     out = out.offset(1);
2193     *out = (*in_buf) >> 26;
2194     in_buf = in_buf.offset(1);
2195     *out |= ((*in_buf) % (1u32 << 16)) << (22 - 16);
2196     out = out.offset(1);
2197 
2198     *out = (*in_buf) >> 16;
2199     in_buf = in_buf.offset(1);
2200     *out |= ((*in_buf) % (1u32 << 6)) << (22 - 6);
2201     out = out.offset(1);
2202 
2203     *out = ((*in_buf) >> 6) % (1u32 << 22);
2204     out = out.offset(1);
2205     *out = (*in_buf) >> 28;
2206     in_buf = in_buf.offset(1);
2207     *out |= ((*in_buf) % (1u32 << 18)) << (22 - 18);
2208     out = out.offset(1);
2209 
2210     *out = (*in_buf) >> 18;
2211     in_buf = in_buf.offset(1);
2212     *out |= ((*in_buf) % (1u32 << 8)) << (22 - 8);
2213     out = out.offset(1);
2214 
2215     *out = ((*in_buf) >> 8) % (1u32 << 22);
2216     out = out.offset(1);
2217     *out = (*in_buf) >> 30;
2218     in_buf = in_buf.offset(1);
2219     *out |= ((*in_buf) % (1u32 << 20)) << (22 - 20);
2220     out = out.offset(1);
2221 
2222     *out = (*in_buf) >> 20;
2223     in_buf = in_buf.offset(1);
2224     *out |= ((*in_buf) % (1u32 << 10)) << (22 - 10);
2225     out = out.offset(1);
2226 
2227     *out = (*in_buf) >> 10;
2228 
2229     in_buf.offset(1)
2230 }
2231 
unpack23_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322232 unsafe fn unpack23_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2233     *out = (*in_buf) % (1u32 << 23);
2234     out = out.offset(1);
2235     *out = (*in_buf) >> 23;
2236     in_buf = in_buf.offset(1);
2237     *out |= ((*in_buf) % (1u32 << 14)) << (23 - 14);
2238     out = out.offset(1);
2239 
2240     *out = (*in_buf) >> 14;
2241     in_buf = in_buf.offset(1);
2242     *out |= ((*in_buf) % (1u32 << 5)) << (23 - 5);
2243     out = out.offset(1);
2244 
2245     *out = ((*in_buf) >> 5) % (1u32 << 23);
2246     out = out.offset(1);
2247     *out = (*in_buf) >> 28;
2248     in_buf = in_buf.offset(1);
2249     *out |= ((*in_buf) % (1u32 << 19)) << (23 - 19);
2250     out = out.offset(1);
2251 
2252     *out = (*in_buf) >> 19;
2253     in_buf = in_buf.offset(1);
2254     *out |= ((*in_buf) % (1u32 << 10)) << (23 - 10);
2255     out = out.offset(1);
2256 
2257     *out = (*in_buf) >> 10;
2258     in_buf = in_buf.offset(1);
2259     *out |= ((*in_buf) % (1u32 << 1)) << (23 - 1);
2260     out = out.offset(1);
2261 
2262     *out = ((*in_buf) >> 1) % (1u32 << 23);
2263     out = out.offset(1);
2264     *out = (*in_buf) >> 24;
2265     in_buf = in_buf.offset(1);
2266     *out |= ((*in_buf) % (1u32 << 15)) << (23 - 15);
2267     out = out.offset(1);
2268 
2269     *out = (*in_buf) >> 15;
2270     in_buf = in_buf.offset(1);
2271     *out |= ((*in_buf) % (1u32 << 6)) << (23 - 6);
2272     out = out.offset(1);
2273 
2274     *out = ((*in_buf) >> 6) % (1u32 << 23);
2275     out = out.offset(1);
2276     *out = (*in_buf) >> 29;
2277     in_buf = in_buf.offset(1);
2278     *out |= ((*in_buf) % (1u32 << 20)) << (23 - 20);
2279     out = out.offset(1);
2280 
2281     *out = (*in_buf) >> 20;
2282     in_buf = in_buf.offset(1);
2283     *out |= ((*in_buf) % (1u32 << 11)) << (23 - 11);
2284     out = out.offset(1);
2285 
2286     *out = (*in_buf) >> 11;
2287     in_buf = in_buf.offset(1);
2288     *out |= ((*in_buf) % (1u32 << 2)) << (23 - 2);
2289     out = out.offset(1);
2290 
2291     *out = ((*in_buf) >> 2) % (1u32 << 23);
2292     out = out.offset(1);
2293     *out = (*in_buf) >> 25;
2294     in_buf = in_buf.offset(1);
2295     *out |= ((*in_buf) % (1u32 << 16)) << (23 - 16);
2296     out = out.offset(1);
2297 
2298     *out = (*in_buf) >> 16;
2299     in_buf = in_buf.offset(1);
2300     *out |= ((*in_buf) % (1u32 << 7)) << (23 - 7);
2301     out = out.offset(1);
2302 
2303     *out = ((*in_buf) >> 7) % (1u32 << 23);
2304     out = out.offset(1);
2305     *out = (*in_buf) >> 30;
2306     in_buf = in_buf.offset(1);
2307     *out |= ((*in_buf) % (1u32 << 21)) << (23 - 21);
2308     out = out.offset(1);
2309 
2310     *out = (*in_buf) >> 21;
2311     in_buf = in_buf.offset(1);
2312     *out |= ((*in_buf) % (1u32 << 12)) << (23 - 12);
2313     out = out.offset(1);
2314 
2315     *out = (*in_buf) >> 12;
2316     in_buf = in_buf.offset(1);
2317     *out |= ((*in_buf) % (1u32 << 3)) << (23 - 3);
2318     out = out.offset(1);
2319 
2320     *out = ((*in_buf) >> 3) % (1u32 << 23);
2321     out = out.offset(1);
2322     *out = (*in_buf) >> 26;
2323     in_buf = in_buf.offset(1);
2324     *out |= ((*in_buf) % (1u32 << 17)) << (23 - 17);
2325     out = out.offset(1);
2326 
2327     *out = (*in_buf) >> 17;
2328     in_buf = in_buf.offset(1);
2329     *out |= ((*in_buf) % (1u32 << 8)) << (23 - 8);
2330     out = out.offset(1);
2331 
2332     *out = ((*in_buf) >> 8) % (1u32 << 23);
2333     out = out.offset(1);
2334     *out = (*in_buf) >> 31;
2335     in_buf = in_buf.offset(1);
2336     *out |= ((*in_buf) % (1u32 << 22)) << (23 - 22);
2337     out = out.offset(1);
2338 
2339     *out = (*in_buf) >> 22;
2340     in_buf = in_buf.offset(1);
2341     *out |= ((*in_buf) % (1u32 << 13)) << (23 - 13);
2342     out = out.offset(1);
2343 
2344     *out = (*in_buf) >> 13;
2345     in_buf = in_buf.offset(1);
2346     *out |= ((*in_buf) % (1u32 << 4)) << (23 - 4);
2347     out = out.offset(1);
2348 
2349     *out = ((*in_buf) >> 4) % (1u32 << 23);
2350     out = out.offset(1);
2351     *out = (*in_buf) >> 27;
2352     in_buf = in_buf.offset(1);
2353     *out |= ((*in_buf) % (1u32 << 18)) << (23 - 18);
2354     out = out.offset(1);
2355 
2356     *out = (*in_buf) >> 18;
2357     in_buf = in_buf.offset(1);
2358     *out |= ((*in_buf) % (1u32 << 9)) << (23 - 9);
2359     out = out.offset(1);
2360 
2361     *out = (*in_buf) >> 9;
2362 
2363     in_buf.offset(1)
2364 }
2365 
unpack24_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322366 unsafe fn unpack24_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2367     *out = (*in_buf) % (1u32 << 24);
2368     out = out.offset(1);
2369     *out = (*in_buf) >> 24;
2370     in_buf = in_buf.offset(1);
2371     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2372     out = out.offset(1);
2373 
2374     *out = (*in_buf) >> 16;
2375     in_buf = in_buf.offset(1);
2376     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2377     out = out.offset(1);
2378 
2379     *out = (*in_buf) >> 8;
2380     in_buf = in_buf.offset(1);
2381     out = out.offset(1);
2382 
2383     *out = (*in_buf) % (1u32 << 24);
2384     out = out.offset(1);
2385     *out = (*in_buf) >> 24;
2386     in_buf = in_buf.offset(1);
2387     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2388     out = out.offset(1);
2389 
2390     *out = (*in_buf) >> 16;
2391     in_buf = in_buf.offset(1);
2392     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2393     out = out.offset(1);
2394 
2395     *out = (*in_buf) >> 8;
2396     in_buf = in_buf.offset(1);
2397     out = out.offset(1);
2398 
2399     *out = (*in_buf) % (1u32 << 24);
2400     out = out.offset(1);
2401     *out = (*in_buf) >> 24;
2402     in_buf = in_buf.offset(1);
2403     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2404     out = out.offset(1);
2405 
2406     *out = (*in_buf) >> 16;
2407     in_buf = in_buf.offset(1);
2408     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2409     out = out.offset(1);
2410 
2411     *out = (*in_buf) >> 8;
2412     in_buf = in_buf.offset(1);
2413     out = out.offset(1);
2414 
2415     *out = (*in_buf) % (1u32 << 24);
2416     out = out.offset(1);
2417     *out = (*in_buf) >> 24;
2418     in_buf = in_buf.offset(1);
2419     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2420     out = out.offset(1);
2421 
2422     *out = (*in_buf) >> 16;
2423     in_buf = in_buf.offset(1);
2424     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2425     out = out.offset(1);
2426 
2427     *out = (*in_buf) >> 8;
2428     in_buf = in_buf.offset(1);
2429     out = out.offset(1);
2430 
2431     *out = (*in_buf) % (1u32 << 24);
2432     out = out.offset(1);
2433     *out = (*in_buf) >> 24;
2434     in_buf = in_buf.offset(1);
2435     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2436     out = out.offset(1);
2437 
2438     *out = (*in_buf) >> 16;
2439     in_buf = in_buf.offset(1);
2440     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2441     out = out.offset(1);
2442 
2443     *out = (*in_buf) >> 8;
2444     in_buf = in_buf.offset(1);
2445     out = out.offset(1);
2446 
2447     *out = (*in_buf) % (1u32 << 24);
2448     out = out.offset(1);
2449     *out = (*in_buf) >> 24;
2450     in_buf = in_buf.offset(1);
2451     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2452     out = out.offset(1);
2453 
2454     *out = (*in_buf) >> 16;
2455     in_buf = in_buf.offset(1);
2456     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2457     out = out.offset(1);
2458 
2459     *out = (*in_buf) >> 8;
2460     in_buf = in_buf.offset(1);
2461     out = out.offset(1);
2462 
2463     *out = (*in_buf) % (1u32 << 24);
2464     out = out.offset(1);
2465     *out = (*in_buf) >> 24;
2466     in_buf = in_buf.offset(1);
2467     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2468     out = out.offset(1);
2469 
2470     *out = (*in_buf) >> 16;
2471     in_buf = in_buf.offset(1);
2472     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2473     out = out.offset(1);
2474 
2475     *out = (*in_buf) >> 8;
2476     in_buf = in_buf.offset(1);
2477     out = out.offset(1);
2478 
2479     *out = (*in_buf) % (1u32 << 24);
2480     out = out.offset(1);
2481     *out = (*in_buf) >> 24;
2482     in_buf = in_buf.offset(1);
2483     *out |= ((*in_buf) % (1u32 << 16)) << (24 - 16);
2484     out = out.offset(1);
2485 
2486     *out = (*in_buf) >> 16;
2487     in_buf = in_buf.offset(1);
2488     *out |= ((*in_buf) % (1u32 << 8)) << (24 - 8);
2489     out = out.offset(1);
2490 
2491     *out = (*in_buf) >> 8;
2492 
2493     in_buf.offset(1)
2494 }
2495 
unpack25_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322496 unsafe fn unpack25_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2497     *out = (*in_buf) % (1u32 << 25);
2498     out = out.offset(1);
2499     *out = (*in_buf) >> 25;
2500     in_buf = in_buf.offset(1);
2501     *out |= ((*in_buf) % (1u32 << 18)) << (25 - 18);
2502     out = out.offset(1);
2503 
2504     *out = (*in_buf) >> 18;
2505     in_buf = in_buf.offset(1);
2506     *out |= ((*in_buf) % (1u32 << 11)) << (25 - 11);
2507     out = out.offset(1);
2508 
2509     *out = (*in_buf) >> 11;
2510     in_buf = in_buf.offset(1);
2511     *out |= ((*in_buf) % (1u32 << 4)) << (25 - 4);
2512     out = out.offset(1);
2513 
2514     *out = ((*in_buf) >> 4) % (1u32 << 25);
2515     out = out.offset(1);
2516     *out = (*in_buf) >> 29;
2517     in_buf = in_buf.offset(1);
2518     *out |= ((*in_buf) % (1u32 << 22)) << (25 - 22);
2519     out = out.offset(1);
2520 
2521     *out = (*in_buf) >> 22;
2522     in_buf = in_buf.offset(1);
2523     *out |= ((*in_buf) % (1u32 << 15)) << (25 - 15);
2524     out = out.offset(1);
2525 
2526     *out = (*in_buf) >> 15;
2527     in_buf = in_buf.offset(1);
2528     *out |= ((*in_buf) % (1u32 << 8)) << (25 - 8);
2529     out = out.offset(1);
2530 
2531     *out = (*in_buf) >> 8;
2532     in_buf = in_buf.offset(1);
2533     *out |= ((*in_buf) % (1u32 << 1)) << (25 - 1);
2534     out = out.offset(1);
2535 
2536     *out = ((*in_buf) >> 1) % (1u32 << 25);
2537     out = out.offset(1);
2538     *out = (*in_buf) >> 26;
2539     in_buf = in_buf.offset(1);
2540     *out |= ((*in_buf) % (1u32 << 19)) << (25 - 19);
2541     out = out.offset(1);
2542 
2543     *out = (*in_buf) >> 19;
2544     in_buf = in_buf.offset(1);
2545     *out |= ((*in_buf) % (1u32 << 12)) << (25 - 12);
2546     out = out.offset(1);
2547 
2548     *out = (*in_buf) >> 12;
2549     in_buf = in_buf.offset(1);
2550     *out |= ((*in_buf) % (1u32 << 5)) << (25 - 5);
2551     out = out.offset(1);
2552 
2553     *out = ((*in_buf) >> 5) % (1u32 << 25);
2554     out = out.offset(1);
2555     *out = (*in_buf) >> 30;
2556     in_buf = in_buf.offset(1);
2557     *out |= ((*in_buf) % (1u32 << 23)) << (25 - 23);
2558     out = out.offset(1);
2559 
2560     *out = (*in_buf) >> 23;
2561     in_buf = in_buf.offset(1);
2562     *out |= ((*in_buf) % (1u32 << 16)) << (25 - 16);
2563     out = out.offset(1);
2564 
2565     *out = (*in_buf) >> 16;
2566     in_buf = in_buf.offset(1);
2567     *out |= ((*in_buf) % (1u32 << 9)) << (25 - 9);
2568     out = out.offset(1);
2569 
2570     *out = (*in_buf) >> 9;
2571     in_buf = in_buf.offset(1);
2572     *out |= ((*in_buf) % (1u32 << 2)) << (25 - 2);
2573     out = out.offset(1);
2574 
2575     *out = ((*in_buf) >> 2) % (1u32 << 25);
2576     out = out.offset(1);
2577     *out = (*in_buf) >> 27;
2578     in_buf = in_buf.offset(1);
2579     *out |= ((*in_buf) % (1u32 << 20)) << (25 - 20);
2580     out = out.offset(1);
2581 
2582     *out = (*in_buf) >> 20;
2583     in_buf = in_buf.offset(1);
2584     *out |= ((*in_buf) % (1u32 << 13)) << (25 - 13);
2585     out = out.offset(1);
2586 
2587     *out = (*in_buf) >> 13;
2588     in_buf = in_buf.offset(1);
2589     *out |= ((*in_buf) % (1u32 << 6)) << (25 - 6);
2590     out = out.offset(1);
2591 
2592     *out = ((*in_buf) >> 6) % (1u32 << 25);
2593     out = out.offset(1);
2594     *out = (*in_buf) >> 31;
2595     in_buf = in_buf.offset(1);
2596     *out |= ((*in_buf) % (1u32 << 24)) << (25 - 24);
2597     out = out.offset(1);
2598 
2599     *out = (*in_buf) >> 24;
2600     in_buf = in_buf.offset(1);
2601     *out |= ((*in_buf) % (1u32 << 17)) << (25 - 17);
2602     out = out.offset(1);
2603 
2604     *out = (*in_buf) >> 17;
2605     in_buf = in_buf.offset(1);
2606     *out |= ((*in_buf) % (1u32 << 10)) << (25 - 10);
2607     out = out.offset(1);
2608 
2609     *out = (*in_buf) >> 10;
2610     in_buf = in_buf.offset(1);
2611     *out |= ((*in_buf) % (1u32 << 3)) << (25 - 3);
2612     out = out.offset(1);
2613 
2614     *out = ((*in_buf) >> 3) % (1u32 << 25);
2615     out = out.offset(1);
2616     *out = (*in_buf) >> 28;
2617     in_buf = in_buf.offset(1);
2618     *out |= ((*in_buf) % (1u32 << 21)) << (25 - 21);
2619     out = out.offset(1);
2620 
2621     *out = (*in_buf) >> 21;
2622     in_buf = in_buf.offset(1);
2623     *out |= ((*in_buf) % (1u32 << 14)) << (25 - 14);
2624     out = out.offset(1);
2625 
2626     *out = (*in_buf) >> 14;
2627     in_buf = in_buf.offset(1);
2628     *out |= ((*in_buf) % (1u32 << 7)) << (25 - 7);
2629     out = out.offset(1);
2630 
2631     *out = (*in_buf) >> 7;
2632 
2633     in_buf.offset(1)
2634 }
2635 
unpack26_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322636 unsafe fn unpack26_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2637     *out = (*in_buf) % (1u32 << 26);
2638     out = out.offset(1);
2639     *out = (*in_buf) >> 26;
2640     in_buf = in_buf.offset(1);
2641     *out |= ((*in_buf) % (1u32 << 20)) << (26 - 20);
2642     out = out.offset(1);
2643 
2644     *out = (*in_buf) >> 20;
2645     in_buf = in_buf.offset(1);
2646     *out |= ((*in_buf) % (1u32 << 14)) << (26 - 14);
2647     out = out.offset(1);
2648 
2649     *out = (*in_buf) >> 14;
2650     in_buf = in_buf.offset(1);
2651     *out |= ((*in_buf) % (1u32 << 8)) << (26 - 8);
2652     out = out.offset(1);
2653 
2654     *out = (*in_buf) >> 8;
2655     in_buf = in_buf.offset(1);
2656     *out |= ((*in_buf) % (1u32 << 2)) << (26 - 2);
2657     out = out.offset(1);
2658 
2659     *out = ((*in_buf) >> 2) % (1u32 << 26);
2660     out = out.offset(1);
2661     *out = (*in_buf) >> 28;
2662     in_buf = in_buf.offset(1);
2663     *out |= ((*in_buf) % (1u32 << 22)) << (26 - 22);
2664     out = out.offset(1);
2665 
2666     *out = (*in_buf) >> 22;
2667     in_buf = in_buf.offset(1);
2668     *out |= ((*in_buf) % (1u32 << 16)) << (26 - 16);
2669     out = out.offset(1);
2670 
2671     *out = (*in_buf) >> 16;
2672     in_buf = in_buf.offset(1);
2673     *out |= ((*in_buf) % (1u32 << 10)) << (26 - 10);
2674     out = out.offset(1);
2675 
2676     *out = (*in_buf) >> 10;
2677     in_buf = in_buf.offset(1);
2678     *out |= ((*in_buf) % (1u32 << 4)) << (26 - 4);
2679     out = out.offset(1);
2680 
2681     *out = ((*in_buf) >> 4) % (1u32 << 26);
2682     out = out.offset(1);
2683     *out = (*in_buf) >> 30;
2684     in_buf = in_buf.offset(1);
2685     *out |= ((*in_buf) % (1u32 << 24)) << (26 - 24);
2686     out = out.offset(1);
2687 
2688     *out = (*in_buf) >> 24;
2689     in_buf = in_buf.offset(1);
2690     *out |= ((*in_buf) % (1u32 << 18)) << (26 - 18);
2691     out = out.offset(1);
2692 
2693     *out = (*in_buf) >> 18;
2694     in_buf = in_buf.offset(1);
2695     *out |= ((*in_buf) % (1u32 << 12)) << (26 - 12);
2696     out = out.offset(1);
2697 
2698     *out = (*in_buf) >> 12;
2699     in_buf = in_buf.offset(1);
2700     *out |= ((*in_buf) % (1u32 << 6)) << (26 - 6);
2701     out = out.offset(1);
2702 
2703     *out = (*in_buf) >> 6;
2704     in_buf = in_buf.offset(1);
2705     out = out.offset(1);
2706 
2707     *out = (*in_buf) % (1u32 << 26);
2708     out = out.offset(1);
2709     *out = (*in_buf) >> 26;
2710     in_buf = in_buf.offset(1);
2711     *out |= ((*in_buf) % (1u32 << 20)) << (26 - 20);
2712     out = out.offset(1);
2713 
2714     *out = (*in_buf) >> 20;
2715     in_buf = in_buf.offset(1);
2716     *out |= ((*in_buf) % (1u32 << 14)) << (26 - 14);
2717     out = out.offset(1);
2718 
2719     *out = (*in_buf) >> 14;
2720     in_buf = in_buf.offset(1);
2721     *out |= ((*in_buf) % (1u32 << 8)) << (26 - 8);
2722     out = out.offset(1);
2723 
2724     *out = (*in_buf) >> 8;
2725     in_buf = in_buf.offset(1);
2726     *out |= ((*in_buf) % (1u32 << 2)) << (26 - 2);
2727     out = out.offset(1);
2728 
2729     *out = ((*in_buf) >> 2) % (1u32 << 26);
2730     out = out.offset(1);
2731     *out = (*in_buf) >> 28;
2732     in_buf = in_buf.offset(1);
2733     *out |= ((*in_buf) % (1u32 << 22)) << (26 - 22);
2734     out = out.offset(1);
2735 
2736     *out = (*in_buf) >> 22;
2737     in_buf = in_buf.offset(1);
2738     *out |= ((*in_buf) % (1u32 << 16)) << (26 - 16);
2739     out = out.offset(1);
2740 
2741     *out = (*in_buf) >> 16;
2742     in_buf = in_buf.offset(1);
2743     *out |= ((*in_buf) % (1u32 << 10)) << (26 - 10);
2744     out = out.offset(1);
2745 
2746     *out = (*in_buf) >> 10;
2747     in_buf = in_buf.offset(1);
2748     *out |= ((*in_buf) % (1u32 << 4)) << (26 - 4);
2749     out = out.offset(1);
2750 
2751     *out = ((*in_buf) >> 4) % (1u32 << 26);
2752     out = out.offset(1);
2753     *out = (*in_buf) >> 30;
2754     in_buf = in_buf.offset(1);
2755     *out |= ((*in_buf) % (1u32 << 24)) << (26 - 24);
2756     out = out.offset(1);
2757 
2758     *out = (*in_buf) >> 24;
2759     in_buf = in_buf.offset(1);
2760     *out |= ((*in_buf) % (1u32 << 18)) << (26 - 18);
2761     out = out.offset(1);
2762 
2763     *out = (*in_buf) >> 18;
2764     in_buf = in_buf.offset(1);
2765     *out |= ((*in_buf) % (1u32 << 12)) << (26 - 12);
2766     out = out.offset(1);
2767 
2768     *out = (*in_buf) >> 12;
2769     in_buf = in_buf.offset(1);
2770     *out |= ((*in_buf) % (1u32 << 6)) << (26 - 6);
2771     out = out.offset(1);
2772 
2773     *out = (*in_buf) >> 6;
2774 
2775     in_buf.offset(1)
2776 }
2777 
unpack27_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322778 unsafe fn unpack27_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2779     *out = (*in_buf) % (1u32 << 27);
2780     out = out.offset(1);
2781     *out = (*in_buf) >> 27;
2782     in_buf = in_buf.offset(1);
2783     *out |= ((*in_buf) % (1u32 << 22)) << (27 - 22);
2784     out = out.offset(1);
2785 
2786     *out = (*in_buf) >> 22;
2787     in_buf = in_buf.offset(1);
2788     *out |= ((*in_buf) % (1u32 << 17)) << (27 - 17);
2789     out = out.offset(1);
2790 
2791     *out = (*in_buf) >> 17;
2792     in_buf = in_buf.offset(1);
2793     *out |= ((*in_buf) % (1u32 << 12)) << (27 - 12);
2794     out = out.offset(1);
2795 
2796     *out = (*in_buf) >> 12;
2797     in_buf = in_buf.offset(1);
2798     *out |= ((*in_buf) % (1u32 << 7)) << (27 - 7);
2799     out = out.offset(1);
2800 
2801     *out = (*in_buf) >> 7;
2802     in_buf = in_buf.offset(1);
2803     *out |= ((*in_buf) % (1u32 << 2)) << (27 - 2);
2804     out = out.offset(1);
2805 
2806     *out = ((*in_buf) >> 2) % (1u32 << 27);
2807     out = out.offset(1);
2808     *out = (*in_buf) >> 29;
2809     in_buf = in_buf.offset(1);
2810     *out |= ((*in_buf) % (1u32 << 24)) << (27 - 24);
2811     out = out.offset(1);
2812 
2813     *out = (*in_buf) >> 24;
2814     in_buf = in_buf.offset(1);
2815     *out |= ((*in_buf) % (1u32 << 19)) << (27 - 19);
2816     out = out.offset(1);
2817 
2818     *out = (*in_buf) >> 19;
2819     in_buf = in_buf.offset(1);
2820     *out |= ((*in_buf) % (1u32 << 14)) << (27 - 14);
2821     out = out.offset(1);
2822 
2823     *out = (*in_buf) >> 14;
2824     in_buf = in_buf.offset(1);
2825     *out |= ((*in_buf) % (1u32 << 9)) << (27 - 9);
2826     out = out.offset(1);
2827 
2828     *out = (*in_buf) >> 9;
2829     in_buf = in_buf.offset(1);
2830     *out |= ((*in_buf) % (1u32 << 4)) << (27 - 4);
2831     out = out.offset(1);
2832 
2833     *out = ((*in_buf) >> 4) % (1u32 << 27);
2834     out = out.offset(1);
2835     *out = (*in_buf) >> 31;
2836     in_buf = in_buf.offset(1);
2837     *out |= ((*in_buf) % (1u32 << 26)) << (27 - 26);
2838     out = out.offset(1);
2839 
2840     *out = (*in_buf) >> 26;
2841     in_buf = in_buf.offset(1);
2842     *out |= ((*in_buf) % (1u32 << 21)) << (27 - 21);
2843     out = out.offset(1);
2844 
2845     *out = (*in_buf) >> 21;
2846     in_buf = in_buf.offset(1);
2847     *out |= ((*in_buf) % (1u32 << 16)) << (27 - 16);
2848     out = out.offset(1);
2849 
2850     *out = (*in_buf) >> 16;
2851     in_buf = in_buf.offset(1);
2852     *out |= ((*in_buf) % (1u32 << 11)) << (27 - 11);
2853     out = out.offset(1);
2854 
2855     *out = (*in_buf) >> 11;
2856     in_buf = in_buf.offset(1);
2857     *out |= ((*in_buf) % (1u32 << 6)) << (27 - 6);
2858     out = out.offset(1);
2859 
2860     *out = (*in_buf) >> 6;
2861     in_buf = in_buf.offset(1);
2862     *out |= ((*in_buf) % (1u32 << 1)) << (27 - 1);
2863     out = out.offset(1);
2864 
2865     *out = ((*in_buf) >> 1) % (1u32 << 27);
2866     out = out.offset(1);
2867     *out = (*in_buf) >> 28;
2868     in_buf = in_buf.offset(1);
2869     *out |= ((*in_buf) % (1u32 << 23)) << (27 - 23);
2870     out = out.offset(1);
2871 
2872     *out = (*in_buf) >> 23;
2873     in_buf = in_buf.offset(1);
2874     *out |= ((*in_buf) % (1u32 << 18)) << (27 - 18);
2875     out = out.offset(1);
2876 
2877     *out = (*in_buf) >> 18;
2878     in_buf = in_buf.offset(1);
2879     *out |= ((*in_buf) % (1u32 << 13)) << (27 - 13);
2880     out = out.offset(1);
2881 
2882     *out = (*in_buf) >> 13;
2883     in_buf = in_buf.offset(1);
2884     *out |= ((*in_buf) % (1u32 << 8)) << (27 - 8);
2885     out = out.offset(1);
2886 
2887     *out = (*in_buf) >> 8;
2888     in_buf = in_buf.offset(1);
2889     *out |= ((*in_buf) % (1u32 << 3)) << (27 - 3);
2890     out = out.offset(1);
2891 
2892     *out = ((*in_buf) >> 3) % (1u32 << 27);
2893     out = out.offset(1);
2894     *out = (*in_buf) >> 30;
2895     in_buf = in_buf.offset(1);
2896     *out |= ((*in_buf) % (1u32 << 25)) << (27 - 25);
2897     out = out.offset(1);
2898 
2899     *out = (*in_buf) >> 25;
2900     in_buf = in_buf.offset(1);
2901     *out |= ((*in_buf) % (1u32 << 20)) << (27 - 20);
2902     out = out.offset(1);
2903 
2904     *out = (*in_buf) >> 20;
2905     in_buf = in_buf.offset(1);
2906     *out |= ((*in_buf) % (1u32 << 15)) << (27 - 15);
2907     out = out.offset(1);
2908 
2909     *out = (*in_buf) >> 15;
2910     in_buf = in_buf.offset(1);
2911     *out |= ((*in_buf) % (1u32 << 10)) << (27 - 10);
2912     out = out.offset(1);
2913 
2914     *out = (*in_buf) >> 10;
2915     in_buf = in_buf.offset(1);
2916     *out |= ((*in_buf) % (1u32 << 5)) << (27 - 5);
2917     out = out.offset(1);
2918 
2919     *out = (*in_buf) >> 5;
2920 
2921     in_buf.offset(1)
2922 }
2923 
unpack28_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u322924 unsafe fn unpack28_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
2925     *out = (*in_buf) % (1u32 << 28);
2926     out = out.offset(1);
2927     *out = (*in_buf) >> 28;
2928     in_buf = in_buf.offset(1);
2929     *out |= ((*in_buf) % (1u32 << 24)) << (28 - 24);
2930     out = out.offset(1);
2931 
2932     *out = (*in_buf) >> 24;
2933     in_buf = in_buf.offset(1);
2934     *out |= ((*in_buf) % (1u32 << 20)) << (28 - 20);
2935     out = out.offset(1);
2936 
2937     *out = (*in_buf) >> 20;
2938     in_buf = in_buf.offset(1);
2939     *out |= ((*in_buf) % (1u32 << 16)) << (28 - 16);
2940     out = out.offset(1);
2941 
2942     *out = (*in_buf) >> 16;
2943     in_buf = in_buf.offset(1);
2944     *out |= ((*in_buf) % (1u32 << 12)) << (28 - 12);
2945     out = out.offset(1);
2946 
2947     *out = (*in_buf) >> 12;
2948     in_buf = in_buf.offset(1);
2949     *out |= ((*in_buf) % (1u32 << 8)) << (28 - 8);
2950     out = out.offset(1);
2951 
2952     *out = (*in_buf) >> 8;
2953     in_buf = in_buf.offset(1);
2954     *out |= ((*in_buf) % (1u32 << 4)) << (28 - 4);
2955     out = out.offset(1);
2956 
2957     *out = (*in_buf) >> 4;
2958     in_buf = in_buf.offset(1);
2959     out = out.offset(1);
2960 
2961     *out = (*in_buf) % (1u32 << 28);
2962     out = out.offset(1);
2963     *out = (*in_buf) >> 28;
2964     in_buf = in_buf.offset(1);
2965     *out |= ((*in_buf) % (1u32 << 24)) << (28 - 24);
2966     out = out.offset(1);
2967 
2968     *out = (*in_buf) >> 24;
2969     in_buf = in_buf.offset(1);
2970     *out |= ((*in_buf) % (1u32 << 20)) << (28 - 20);
2971     out = out.offset(1);
2972 
2973     *out = (*in_buf) >> 20;
2974     in_buf = in_buf.offset(1);
2975     *out |= ((*in_buf) % (1u32 << 16)) << (28 - 16);
2976     out = out.offset(1);
2977 
2978     *out = (*in_buf) >> 16;
2979     in_buf = in_buf.offset(1);
2980     *out |= ((*in_buf) % (1u32 << 12)) << (28 - 12);
2981     out = out.offset(1);
2982 
2983     *out = (*in_buf) >> 12;
2984     in_buf = in_buf.offset(1);
2985     *out |= ((*in_buf) % (1u32 << 8)) << (28 - 8);
2986     out = out.offset(1);
2987 
2988     *out = (*in_buf) >> 8;
2989     in_buf = in_buf.offset(1);
2990     *out |= ((*in_buf) % (1u32 << 4)) << (28 - 4);
2991     out = out.offset(1);
2992 
2993     *out = (*in_buf) >> 4;
2994     in_buf = in_buf.offset(1);
2995     out = out.offset(1);
2996 
2997     *out = (*in_buf) % (1u32 << 28);
2998     out = out.offset(1);
2999     *out = (*in_buf) >> 28;
3000     in_buf = in_buf.offset(1);
3001     *out |= ((*in_buf) % (1u32 << 24)) << (28 - 24);
3002     out = out.offset(1);
3003 
3004     *out = (*in_buf) >> 24;
3005     in_buf = in_buf.offset(1);
3006     *out |= ((*in_buf) % (1u32 << 20)) << (28 - 20);
3007     out = out.offset(1);
3008 
3009     *out = (*in_buf) >> 20;
3010     in_buf = in_buf.offset(1);
3011     *out |= ((*in_buf) % (1u32 << 16)) << (28 - 16);
3012     out = out.offset(1);
3013 
3014     *out = (*in_buf) >> 16;
3015     in_buf = in_buf.offset(1);
3016     *out |= ((*in_buf) % (1u32 << 12)) << (28 - 12);
3017     out = out.offset(1);
3018 
3019     *out = (*in_buf) >> 12;
3020     in_buf = in_buf.offset(1);
3021     *out |= ((*in_buf) % (1u32 << 8)) << (28 - 8);
3022     out = out.offset(1);
3023 
3024     *out = (*in_buf) >> 8;
3025     in_buf = in_buf.offset(1);
3026     *out |= ((*in_buf) % (1u32 << 4)) << (28 - 4);
3027     out = out.offset(1);
3028 
3029     *out = (*in_buf) >> 4;
3030     in_buf = in_buf.offset(1);
3031     out = out.offset(1);
3032 
3033     *out = (*in_buf) % (1u32 << 28);
3034     out = out.offset(1);
3035     *out = (*in_buf) >> 28;
3036     in_buf = in_buf.offset(1);
3037     *out |= ((*in_buf) % (1u32 << 24)) << (28 - 24);
3038     out = out.offset(1);
3039 
3040     *out = (*in_buf) >> 24;
3041     in_buf = in_buf.offset(1);
3042     *out |= ((*in_buf) % (1u32 << 20)) << (28 - 20);
3043     out = out.offset(1);
3044 
3045     *out = (*in_buf) >> 20;
3046     in_buf = in_buf.offset(1);
3047     *out |= ((*in_buf) % (1u32 << 16)) << (28 - 16);
3048     out = out.offset(1);
3049 
3050     *out = (*in_buf) >> 16;
3051     in_buf = in_buf.offset(1);
3052     *out |= ((*in_buf) % (1u32 << 12)) << (28 - 12);
3053     out = out.offset(1);
3054 
3055     *out = (*in_buf) >> 12;
3056     in_buf = in_buf.offset(1);
3057     *out |= ((*in_buf) % (1u32 << 8)) << (28 - 8);
3058     out = out.offset(1);
3059 
3060     *out = (*in_buf) >> 8;
3061     in_buf = in_buf.offset(1);
3062     *out |= ((*in_buf) % (1u32 << 4)) << (28 - 4);
3063     out = out.offset(1);
3064 
3065     *out = (*in_buf) >> 4;
3066 
3067     in_buf.offset(1)
3068 }
3069 
unpack29_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u323070 unsafe fn unpack29_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
3071     *out = (*in_buf) % (1u32 << 29);
3072     out = out.offset(1);
3073     *out = (*in_buf) >> 29;
3074     in_buf = in_buf.offset(1);
3075     *out |= ((*in_buf) % (1u32 << 26)) << (29 - 26);
3076     out = out.offset(1);
3077 
3078     *out = (*in_buf) >> 26;
3079     in_buf = in_buf.offset(1);
3080     *out |= ((*in_buf) % (1u32 << 23)) << (29 - 23);
3081     out = out.offset(1);
3082 
3083     *out = (*in_buf) >> 23;
3084     in_buf = in_buf.offset(1);
3085     *out |= ((*in_buf) % (1u32 << 20)) << (29 - 20);
3086     out = out.offset(1);
3087 
3088     *out = (*in_buf) >> 20;
3089     in_buf = in_buf.offset(1);
3090     *out |= ((*in_buf) % (1u32 << 17)) << (29 - 17);
3091     out = out.offset(1);
3092 
3093     *out = (*in_buf) >> 17;
3094     in_buf = in_buf.offset(1);
3095     *out |= ((*in_buf) % (1u32 << 14)) << (29 - 14);
3096     out = out.offset(1);
3097 
3098     *out = (*in_buf) >> 14;
3099     in_buf = in_buf.offset(1);
3100     *out |= ((*in_buf) % (1u32 << 11)) << (29 - 11);
3101     out = out.offset(1);
3102 
3103     *out = (*in_buf) >> 11;
3104     in_buf = in_buf.offset(1);
3105     *out |= ((*in_buf) % (1u32 << 8)) << (29 - 8);
3106     out = out.offset(1);
3107 
3108     *out = (*in_buf) >> 8;
3109     in_buf = in_buf.offset(1);
3110     *out |= ((*in_buf) % (1u32 << 5)) << (29 - 5);
3111     out = out.offset(1);
3112 
3113     *out = (*in_buf) >> 5;
3114     in_buf = in_buf.offset(1);
3115     *out |= ((*in_buf) % (1u32 << 2)) << (29 - 2);
3116     out = out.offset(1);
3117 
3118     *out = ((*in_buf) >> 2) % (1u32 << 29);
3119     out = out.offset(1);
3120     *out = (*in_buf) >> 31;
3121     in_buf = in_buf.offset(1);
3122     *out |= ((*in_buf) % (1u32 << 28)) << (29 - 28);
3123     out = out.offset(1);
3124 
3125     *out = (*in_buf) >> 28;
3126     in_buf = in_buf.offset(1);
3127     *out |= ((*in_buf) % (1u32 << 25)) << (29 - 25);
3128     out = out.offset(1);
3129 
3130     *out = (*in_buf) >> 25;
3131     in_buf = in_buf.offset(1);
3132     *out |= ((*in_buf) % (1u32 << 22)) << (29 - 22);
3133     out = out.offset(1);
3134 
3135     *out = (*in_buf) >> 22;
3136     in_buf = in_buf.offset(1);
3137     *out |= ((*in_buf) % (1u32 << 19)) << (29 - 19);
3138     out = out.offset(1);
3139 
3140     *out = (*in_buf) >> 19;
3141     in_buf = in_buf.offset(1);
3142     *out |= ((*in_buf) % (1u32 << 16)) << (29 - 16);
3143     out = out.offset(1);
3144 
3145     *out = (*in_buf) >> 16;
3146     in_buf = in_buf.offset(1);
3147     *out |= ((*in_buf) % (1u32 << 13)) << (29 - 13);
3148     out = out.offset(1);
3149 
3150     *out = (*in_buf) >> 13;
3151     in_buf = in_buf.offset(1);
3152     *out |= ((*in_buf) % (1u32 << 10)) << (29 - 10);
3153     out = out.offset(1);
3154 
3155     *out = (*in_buf) >> 10;
3156     in_buf = in_buf.offset(1);
3157     *out |= ((*in_buf) % (1u32 << 7)) << (29 - 7);
3158     out = out.offset(1);
3159 
3160     *out = (*in_buf) >> 7;
3161     in_buf = in_buf.offset(1);
3162     *out |= ((*in_buf) % (1u32 << 4)) << (29 - 4);
3163     out = out.offset(1);
3164 
3165     *out = (*in_buf) >> 4;
3166     in_buf = in_buf.offset(1);
3167     *out |= ((*in_buf) % (1u32 << 1)) << (29 - 1);
3168     out = out.offset(1);
3169 
3170     *out = ((*in_buf) >> 1) % (1u32 << 29);
3171     out = out.offset(1);
3172     *out = (*in_buf) >> 30;
3173     in_buf = in_buf.offset(1);
3174     *out |= ((*in_buf) % (1u32 << 27)) << (29 - 27);
3175     out = out.offset(1);
3176 
3177     *out = (*in_buf) >> 27;
3178     in_buf = in_buf.offset(1);
3179     *out |= ((*in_buf) % (1u32 << 24)) << (29 - 24);
3180     out = out.offset(1);
3181 
3182     *out = (*in_buf) >> 24;
3183     in_buf = in_buf.offset(1);
3184     *out |= ((*in_buf) % (1u32 << 21)) << (29 - 21);
3185     out = out.offset(1);
3186 
3187     *out = (*in_buf) >> 21;
3188     in_buf = in_buf.offset(1);
3189     *out |= ((*in_buf) % (1u32 << 18)) << (29 - 18);
3190     out = out.offset(1);
3191 
3192     *out = (*in_buf) >> 18;
3193     in_buf = in_buf.offset(1);
3194     *out |= ((*in_buf) % (1u32 << 15)) << (29 - 15);
3195     out = out.offset(1);
3196 
3197     *out = (*in_buf) >> 15;
3198     in_buf = in_buf.offset(1);
3199     *out |= ((*in_buf) % (1u32 << 12)) << (29 - 12);
3200     out = out.offset(1);
3201 
3202     *out = (*in_buf) >> 12;
3203     in_buf = in_buf.offset(1);
3204     *out |= ((*in_buf) % (1u32 << 9)) << (29 - 9);
3205     out = out.offset(1);
3206 
3207     *out = (*in_buf) >> 9;
3208     in_buf = in_buf.offset(1);
3209     *out |= ((*in_buf) % (1u32 << 6)) << (29 - 6);
3210     out = out.offset(1);
3211 
3212     *out = (*in_buf) >> 6;
3213     in_buf = in_buf.offset(1);
3214     *out |= ((*in_buf) % (1u32 << 3)) << (29 - 3);
3215     out = out.offset(1);
3216 
3217     *out = (*in_buf) >> 3;
3218 
3219     in_buf.offset(1)
3220 }
3221 
unpack30_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u323222 unsafe fn unpack30_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
3223     *out = (*in_buf) % (1u32 << 30);
3224     out = out.offset(1);
3225     *out = (*in_buf) >> 30;
3226     in_buf = in_buf.offset(1);
3227     *out |= ((*in_buf) % (1u32 << 28)) << (30 - 28);
3228     out = out.offset(1);
3229 
3230     *out = (*in_buf) >> 28;
3231     in_buf = in_buf.offset(1);
3232     *out |= ((*in_buf) % (1u32 << 26)) << (30 - 26);
3233     out = out.offset(1);
3234 
3235     *out = (*in_buf) >> 26;
3236     in_buf = in_buf.offset(1);
3237     *out |= ((*in_buf) % (1u32 << 24)) << (30 - 24);
3238     out = out.offset(1);
3239 
3240     *out = (*in_buf) >> 24;
3241     in_buf = in_buf.offset(1);
3242     *out |= ((*in_buf) % (1u32 << 22)) << (30 - 22);
3243     out = out.offset(1);
3244 
3245     *out = (*in_buf) >> 22;
3246     in_buf = in_buf.offset(1);
3247     *out |= ((*in_buf) % (1u32 << 20)) << (30 - 20);
3248     out = out.offset(1);
3249 
3250     *out = (*in_buf) >> 20;
3251     in_buf = in_buf.offset(1);
3252     *out |= ((*in_buf) % (1u32 << 18)) << (30 - 18);
3253     out = out.offset(1);
3254 
3255     *out = (*in_buf) >> 18;
3256     in_buf = in_buf.offset(1);
3257     *out |= ((*in_buf) % (1u32 << 16)) << (30 - 16);
3258     out = out.offset(1);
3259 
3260     *out = (*in_buf) >> 16;
3261     in_buf = in_buf.offset(1);
3262     *out |= ((*in_buf) % (1u32 << 14)) << (30 - 14);
3263     out = out.offset(1);
3264 
3265     *out = (*in_buf) >> 14;
3266     in_buf = in_buf.offset(1);
3267     *out |= ((*in_buf) % (1u32 << 12)) << (30 - 12);
3268     out = out.offset(1);
3269 
3270     *out = (*in_buf) >> 12;
3271     in_buf = in_buf.offset(1);
3272     *out |= ((*in_buf) % (1u32 << 10)) << (30 - 10);
3273     out = out.offset(1);
3274 
3275     *out = (*in_buf) >> 10;
3276     in_buf = in_buf.offset(1);
3277     *out |= ((*in_buf) % (1u32 << 8)) << (30 - 8);
3278     out = out.offset(1);
3279 
3280     *out = (*in_buf) >> 8;
3281     in_buf = in_buf.offset(1);
3282     *out |= ((*in_buf) % (1u32 << 6)) << (30 - 6);
3283     out = out.offset(1);
3284 
3285     *out = (*in_buf) >> 6;
3286     in_buf = in_buf.offset(1);
3287     *out |= ((*in_buf) % (1u32 << 4)) << (30 - 4);
3288     out = out.offset(1);
3289 
3290     *out = (*in_buf) >> 4;
3291     in_buf = in_buf.offset(1);
3292     *out |= ((*in_buf) % (1u32 << 2)) << (30 - 2);
3293     out = out.offset(1);
3294 
3295     *out = (*in_buf) >> 2;
3296     in_buf = in_buf.offset(1);
3297     out = out.offset(1);
3298 
3299     *out = (*in_buf) % (1u32 << 30);
3300     out = out.offset(1);
3301     *out = (*in_buf) >> 30;
3302     in_buf = in_buf.offset(1);
3303     *out |= ((*in_buf) % (1u32 << 28)) << (30 - 28);
3304     out = out.offset(1);
3305 
3306     *out = (*in_buf) >> 28;
3307     in_buf = in_buf.offset(1);
3308     *out |= ((*in_buf) % (1u32 << 26)) << (30 - 26);
3309     out = out.offset(1);
3310 
3311     *out = (*in_buf) >> 26;
3312     in_buf = in_buf.offset(1);
3313     *out |= ((*in_buf) % (1u32 << 24)) << (30 - 24);
3314     out = out.offset(1);
3315 
3316     *out = (*in_buf) >> 24;
3317     in_buf = in_buf.offset(1);
3318     *out |= ((*in_buf) % (1u32 << 22)) << (30 - 22);
3319     out = out.offset(1);
3320 
3321     *out = (*in_buf) >> 22;
3322     in_buf = in_buf.offset(1);
3323     *out |= ((*in_buf) % (1u32 << 20)) << (30 - 20);
3324     out = out.offset(1);
3325 
3326     *out = (*in_buf) >> 20;
3327     in_buf = in_buf.offset(1);
3328     *out |= ((*in_buf) % (1u32 << 18)) << (30 - 18);
3329     out = out.offset(1);
3330 
3331     *out = (*in_buf) >> 18;
3332     in_buf = in_buf.offset(1);
3333     *out |= ((*in_buf) % (1u32 << 16)) << (30 - 16);
3334     out = out.offset(1);
3335 
3336     *out = (*in_buf) >> 16;
3337     in_buf = in_buf.offset(1);
3338     *out |= ((*in_buf) % (1u32 << 14)) << (30 - 14);
3339     out = out.offset(1);
3340 
3341     *out = (*in_buf) >> 14;
3342     in_buf = in_buf.offset(1);
3343     *out |= ((*in_buf) % (1u32 << 12)) << (30 - 12);
3344     out = out.offset(1);
3345 
3346     *out = (*in_buf) >> 12;
3347     in_buf = in_buf.offset(1);
3348     *out |= ((*in_buf) % (1u32 << 10)) << (30 - 10);
3349     out = out.offset(1);
3350 
3351     *out = (*in_buf) >> 10;
3352     in_buf = in_buf.offset(1);
3353     *out |= ((*in_buf) % (1u32 << 8)) << (30 - 8);
3354     out = out.offset(1);
3355 
3356     *out = (*in_buf) >> 8;
3357     in_buf = in_buf.offset(1);
3358     *out |= ((*in_buf) % (1u32 << 6)) << (30 - 6);
3359     out = out.offset(1);
3360 
3361     *out = (*in_buf) >> 6;
3362     in_buf = in_buf.offset(1);
3363     *out |= ((*in_buf) % (1u32 << 4)) << (30 - 4);
3364     out = out.offset(1);
3365 
3366     *out = (*in_buf) >> 4;
3367     in_buf = in_buf.offset(1);
3368     *out |= ((*in_buf) % (1u32 << 2)) << (30 - 2);
3369     out = out.offset(1);
3370 
3371     *out = (*in_buf) >> 2;
3372 
3373     in_buf.offset(1)
3374 }
3375 
unpack31_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u323376 unsafe fn unpack31_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
3377     *out = (*in_buf) % (1u32 << 31);
3378     out = out.offset(1);
3379     *out = (*in_buf) >> 31;
3380     in_buf = in_buf.offset(1);
3381     *out |= ((*in_buf) % (1u32 << 30)) << (31 - 30);
3382     out = out.offset(1);
3383 
3384     *out = (*in_buf) >> 30;
3385     in_buf = in_buf.offset(1);
3386     *out |= ((*in_buf) % (1u32 << 29)) << (31 - 29);
3387     out = out.offset(1);
3388 
3389     *out = (*in_buf) >> 29;
3390     in_buf = in_buf.offset(1);
3391     *out |= ((*in_buf) % (1u32 << 28)) << (31 - 28);
3392     out = out.offset(1);
3393 
3394     *out = (*in_buf) >> 28;
3395     in_buf = in_buf.offset(1);
3396     *out |= ((*in_buf) % (1u32 << 27)) << (31 - 27);
3397     out = out.offset(1);
3398 
3399     *out = (*in_buf) >> 27;
3400     in_buf = in_buf.offset(1);
3401     *out |= ((*in_buf) % (1u32 << 26)) << (31 - 26);
3402     out = out.offset(1);
3403 
3404     *out = (*in_buf) >> 26;
3405     in_buf = in_buf.offset(1);
3406     *out |= ((*in_buf) % (1u32 << 25)) << (31 - 25);
3407     out = out.offset(1);
3408 
3409     *out = (*in_buf) >> 25;
3410     in_buf = in_buf.offset(1);
3411     *out |= ((*in_buf) % (1u32 << 24)) << (31 - 24);
3412     out = out.offset(1);
3413 
3414     *out = (*in_buf) >> 24;
3415     in_buf = in_buf.offset(1);
3416     *out |= ((*in_buf) % (1u32 << 23)) << (31 - 23);
3417     out = out.offset(1);
3418 
3419     *out = (*in_buf) >> 23;
3420     in_buf = in_buf.offset(1);
3421     *out |= ((*in_buf) % (1u32 << 22)) << (31 - 22);
3422     out = out.offset(1);
3423 
3424     *out = (*in_buf) >> 22;
3425     in_buf = in_buf.offset(1);
3426     *out |= ((*in_buf) % (1u32 << 21)) << (31 - 21);
3427     out = out.offset(1);
3428 
3429     *out = (*in_buf) >> 21;
3430     in_buf = in_buf.offset(1);
3431     *out |= ((*in_buf) % (1u32 << 20)) << (31 - 20);
3432     out = out.offset(1);
3433 
3434     *out = (*in_buf) >> 20;
3435     in_buf = in_buf.offset(1);
3436     *out |= ((*in_buf) % (1u32 << 19)) << (31 - 19);
3437     out = out.offset(1);
3438 
3439     *out = (*in_buf) >> 19;
3440     in_buf = in_buf.offset(1);
3441     *out |= ((*in_buf) % (1u32 << 18)) << (31 - 18);
3442     out = out.offset(1);
3443 
3444     *out = (*in_buf) >> 18;
3445     in_buf = in_buf.offset(1);
3446     *out |= ((*in_buf) % (1u32 << 17)) << (31 - 17);
3447     out = out.offset(1);
3448 
3449     *out = (*in_buf) >> 17;
3450     in_buf = in_buf.offset(1);
3451     *out |= ((*in_buf) % (1u32 << 16)) << (31 - 16);
3452     out = out.offset(1);
3453 
3454     *out = (*in_buf) >> 16;
3455     in_buf = in_buf.offset(1);
3456     *out |= ((*in_buf) % (1u32 << 15)) << (31 - 15);
3457     out = out.offset(1);
3458 
3459     *out = (*in_buf) >> 15;
3460     in_buf = in_buf.offset(1);
3461     *out |= ((*in_buf) % (1u32 << 14)) << (31 - 14);
3462     out = out.offset(1);
3463 
3464     *out = (*in_buf) >> 14;
3465     in_buf = in_buf.offset(1);
3466     *out |= ((*in_buf) % (1u32 << 13)) << (31 - 13);
3467     out = out.offset(1);
3468 
3469     *out = (*in_buf) >> 13;
3470     in_buf = in_buf.offset(1);
3471     *out |= ((*in_buf) % (1u32 << 12)) << (31 - 12);
3472     out = out.offset(1);
3473 
3474     *out = (*in_buf) >> 12;
3475     in_buf = in_buf.offset(1);
3476     *out |= ((*in_buf) % (1u32 << 11)) << (31 - 11);
3477     out = out.offset(1);
3478 
3479     *out = (*in_buf) >> 11;
3480     in_buf = in_buf.offset(1);
3481     *out |= ((*in_buf) % (1u32 << 10)) << (31 - 10);
3482     out = out.offset(1);
3483 
3484     *out = (*in_buf) >> 10;
3485     in_buf = in_buf.offset(1);
3486     *out |= ((*in_buf) % (1u32 << 9)) << (31 - 9);
3487     out = out.offset(1);
3488 
3489     *out = (*in_buf) >> 9;
3490     in_buf = in_buf.offset(1);
3491     *out |= ((*in_buf) % (1u32 << 8)) << (31 - 8);
3492     out = out.offset(1);
3493 
3494     *out = (*in_buf) >> 8;
3495     in_buf = in_buf.offset(1);
3496     *out |= ((*in_buf) % (1u32 << 7)) << (31 - 7);
3497     out = out.offset(1);
3498 
3499     *out = (*in_buf) >> 7;
3500     in_buf = in_buf.offset(1);
3501     *out |= ((*in_buf) % (1u32 << 6)) << (31 - 6);
3502     out = out.offset(1);
3503 
3504     *out = (*in_buf) >> 6;
3505     in_buf = in_buf.offset(1);
3506     *out |= ((*in_buf) % (1u32 << 5)) << (31 - 5);
3507     out = out.offset(1);
3508 
3509     *out = (*in_buf) >> 5;
3510     in_buf = in_buf.offset(1);
3511     *out |= ((*in_buf) % (1u32 << 4)) << (31 - 4);
3512     out = out.offset(1);
3513 
3514     *out = (*in_buf) >> 4;
3515     in_buf = in_buf.offset(1);
3516     *out |= ((*in_buf) % (1u32 << 3)) << (31 - 3);
3517     out = out.offset(1);
3518 
3519     *out = (*in_buf) >> 3;
3520     in_buf = in_buf.offset(1);
3521     *out |= ((*in_buf) % (1u32 << 2)) << (31 - 2);
3522     out = out.offset(1);
3523 
3524     *out = (*in_buf) >> 2;
3525     in_buf = in_buf.offset(1);
3526     *out |= ((*in_buf) % (1u32 << 1)) << (31 - 1);
3527     out = out.offset(1);
3528 
3529     *out = (*in_buf) >> 1;
3530 
3531     in_buf.offset(1)
3532 }
3533 
unpack32_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u323534 unsafe fn unpack32_32(mut in_buf: *const u32, mut out: *mut u32) -> *const u32 {
3535     *out = *in_buf;
3536     in_buf = in_buf.offset(1);
3537     out = out.offset(1);
3538 
3539     *out = *in_buf;
3540     in_buf = in_buf.offset(1);
3541     out = out.offset(1);
3542 
3543     *out = *in_buf;
3544     in_buf = in_buf.offset(1);
3545     out = out.offset(1);
3546 
3547     *out = *in_buf;
3548     in_buf = in_buf.offset(1);
3549     out = out.offset(1);
3550 
3551     *out = *in_buf;
3552     in_buf = in_buf.offset(1);
3553     out = out.offset(1);
3554 
3555     *out = *in_buf;
3556     in_buf = in_buf.offset(1);
3557     out = out.offset(1);
3558 
3559     *out = *in_buf;
3560     in_buf = in_buf.offset(1);
3561     out = out.offset(1);
3562 
3563     *out = *in_buf;
3564     in_buf = in_buf.offset(1);
3565     out = out.offset(1);
3566 
3567     *out = *in_buf;
3568     in_buf = in_buf.offset(1);
3569     out = out.offset(1);
3570 
3571     *out = *in_buf;
3572     in_buf = in_buf.offset(1);
3573     out = out.offset(1);
3574 
3575     *out = *in_buf;
3576     in_buf = in_buf.offset(1);
3577     out = out.offset(1);
3578 
3579     *out = *in_buf;
3580     in_buf = in_buf.offset(1);
3581     out = out.offset(1);
3582 
3583     *out = *in_buf;
3584     in_buf = in_buf.offset(1);
3585     out = out.offset(1);
3586 
3587     *out = *in_buf;
3588     in_buf = in_buf.offset(1);
3589     out = out.offset(1);
3590 
3591     *out = *in_buf;
3592     in_buf = in_buf.offset(1);
3593     out = out.offset(1);
3594 
3595     *out = *in_buf;
3596     in_buf = in_buf.offset(1);
3597     out = out.offset(1);
3598 
3599     *out = *in_buf;
3600     in_buf = in_buf.offset(1);
3601     out = out.offset(1);
3602 
3603     *out = *in_buf;
3604     in_buf = in_buf.offset(1);
3605     out = out.offset(1);
3606 
3607     *out = *in_buf;
3608     in_buf = in_buf.offset(1);
3609     out = out.offset(1);
3610 
3611     *out = *in_buf;
3612     in_buf = in_buf.offset(1);
3613     out = out.offset(1);
3614 
3615     *out = *in_buf;
3616     in_buf = in_buf.offset(1);
3617     out = out.offset(1);
3618 
3619     *out = *in_buf;
3620     in_buf = in_buf.offset(1);
3621     out = out.offset(1);
3622 
3623     *out = *in_buf;
3624     in_buf = in_buf.offset(1);
3625     out = out.offset(1);
3626 
3627     *out = *in_buf;
3628     in_buf = in_buf.offset(1);
3629     out = out.offset(1);
3630 
3631     *out = *in_buf;
3632     in_buf = in_buf.offset(1);
3633     out = out.offset(1);
3634 
3635     *out = *in_buf;
3636     in_buf = in_buf.offset(1);
3637     out = out.offset(1);
3638 
3639     *out = *in_buf;
3640     in_buf = in_buf.offset(1);
3641     out = out.offset(1);
3642 
3643     *out = *in_buf;
3644     in_buf = in_buf.offset(1);
3645     out = out.offset(1);
3646 
3647     *out = *in_buf;
3648     in_buf = in_buf.offset(1);
3649     out = out.offset(1);
3650 
3651     *out = *in_buf;
3652     in_buf = in_buf.offset(1);
3653     out = out.offset(1);
3654 
3655     *out = *in_buf;
3656     in_buf = in_buf.offset(1);
3657     out = out.offset(1);
3658 
3659     *out = *in_buf;
3660 
3661     in_buf.offset(1)
3662 }
3663