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