github.com/apache/arrow/go/v7@v7.0.1/parquet/internal/utils/bit_packing_default.go (about) 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, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 package utils 18 19 import ( 20 "encoding/binary" 21 "io" 22 ) 23 24 type unpackFunc func(in io.Reader, out []uint32) 25 26 func unpack1_32(in io.Reader, out []uint32) { 27 var inl uint32 28 binary.Read(in, binary.LittleEndian, &inl) 29 for idx := range out[:32] { 30 out[idx] = (inl >> idx) & 1 31 } 32 } 33 34 func unpack2_32(in io.Reader, out []uint32) { 35 var inl uint32 36 binary.Read(in, binary.LittleEndian, &inl) 37 out[0] = (inl >> 0) % (1 << 2) 38 out[1] = (inl >> 2) % (1 << 2) 39 out[2] = (inl >> 4) % (1 << 2) 40 out[3] = (inl >> 6) % (1 << 2) 41 out[4] = (inl >> 8) % (1 << 2) 42 out[5] = (inl >> 10) % (1 << 2) 43 out[6] = (inl >> 12) % (1 << 2) 44 out[7] = (inl >> 14) % (1 << 2) 45 out[8] = (inl >> 16) % (1 << 2) 46 out[9] = (inl >> 18) % (1 << 2) 47 out[10] = (inl >> 20) % (1 << 2) 48 out[11] = (inl >> 22) % (1 << 2) 49 out[12] = (inl >> 24) % (1 << 2) 50 out[13] = (inl >> 26) % (1 << 2) 51 out[14] = (inl >> 28) % (1 << 2) 52 out[15] = (inl >> 30) 53 binary.Read(in, binary.LittleEndian, &inl) 54 out[16] = (inl >> 0) % (1 << 2) 55 out[17] = (inl >> 2) % (1 << 2) 56 out[18] = (inl >> 4) % (1 << 2) 57 out[19] = (inl >> 6) % (1 << 2) 58 out[20] = (inl >> 8) % (1 << 2) 59 out[21] = (inl >> 10) % (1 << 2) 60 out[22] = (inl >> 12) % (1 << 2) 61 out[23] = (inl >> 14) % (1 << 2) 62 out[24] = (inl >> 16) % (1 << 2) 63 out[25] = (inl >> 18) % (1 << 2) 64 out[26] = (inl >> 20) % (1 << 2) 65 out[27] = (inl >> 22) % (1 << 2) 66 out[28] = (inl >> 24) % (1 << 2) 67 out[29] = (inl >> 26) % (1 << 2) 68 out[30] = (inl >> 28) % (1 << 2) 69 out[31] = (inl >> 30) 70 } 71 72 func unpack3_32(in io.Reader, out []uint32) { 73 var inl uint32 74 binary.Read(in, binary.LittleEndian, &inl) 75 out[0] = (inl >> 0) % (1 << 3) 76 out[1] = (inl >> 3) % (1 << 3) 77 out[2] = (inl >> 6) % (1 << 3) 78 out[3] = (inl >> 9) % (1 << 3) 79 out[4] = (inl >> 12) % (1 << 3) 80 out[5] = (inl >> 15) % (1 << 3) 81 out[6] = (inl >> 18) % (1 << 3) 82 out[7] = (inl >> 21) % (1 << 3) 83 out[8] = (inl >> 24) % (1 << 3) 84 out[9] = (inl >> 27) % (1 << 3) 85 out[10] = (inl >> 30) 86 binary.Read(in, binary.LittleEndian, &inl) 87 out[10] |= (inl % (1 << 1)) << (3 - 1) 88 out[11] = (inl >> 1) % (1 << 3) 89 out[12] = (inl >> 4) % (1 << 3) 90 out[13] = (inl >> 7) % (1 << 3) 91 out[14] = (inl >> 10) % (1 << 3) 92 out[15] = (inl >> 13) % (1 << 3) 93 out[16] = (inl >> 16) % (1 << 3) 94 out[17] = (inl >> 19) % (1 << 3) 95 out[18] = (inl >> 22) % (1 << 3) 96 out[19] = (inl >> 25) % (1 << 3) 97 out[20] = (inl >> 28) % (1 << 3) 98 out[21] = (inl >> 31) % (1 << 3) 99 binary.Read(in, binary.LittleEndian, &inl) 100 out[21] |= (inl % (1 << 2)) << (3 - 2) 101 out[22] = (inl >> 2) % (1 << 3) 102 out[23] = (inl >> 5) % (1 << 3) 103 out[24] = (inl >> 8) % (1 << 3) 104 out[25] = (inl >> 11) % (1 << 3) 105 out[26] = (inl >> 14) % (1 << 3) 106 out[27] = (inl >> 17) % (1 << 3) 107 out[28] = (inl >> 20) % (1 << 3) 108 out[29] = (inl >> 23) % (1 << 3) 109 out[30] = (inl >> 26) % (1 << 3) 110 out[31] = (inl >> 29) 111 } 112 113 func unpack4_32(in io.Reader, out []uint32) { 114 var inl uint32 115 binary.Read(in, binary.LittleEndian, &inl) 116 for i := 0; i < 28; i += 4 { 117 out[i/4] = (inl >> i) % (1 << 4) 118 } 119 out[7] = (inl >> 28) 120 binary.Read(in, binary.LittleEndian, &inl) 121 for i := 0; i < 28; i += 4 { 122 out[8+i/4] = (inl >> i) % (1 << 4) 123 } 124 out[15] = (inl >> 28) 125 binary.Read(in, binary.LittleEndian, &inl) 126 for i := 0; i < 28; i += 4 { 127 out[16+i/4] = (inl >> i) % (1 << 4) 128 } 129 out[23] = (inl >> 28) 130 binary.Read(in, binary.LittleEndian, &inl) 131 for i := 0; i < 28; i += 4 { 132 out[24+i/4] = (inl >> i) % (1 << 4) 133 } 134 out[31] = (inl >> 28) 135 } 136 137 func unpack5_32(in io.Reader, out []uint32) { 138 var inl uint32 139 binary.Read(in, binary.LittleEndian, &inl) 140 out[0] = (inl >> 0) % (1 << 5) 141 out[1] = (inl >> 5) % (1 << 5) 142 out[2] = (inl >> 10) % (1 << 5) 143 out[3] = (inl >> 15) % (1 << 5) 144 out[4] = (inl >> 20) % (1 << 5) 145 out[5] = (inl >> 25) % (1 << 5) 146 out[6] = (inl >> 30) 147 binary.Read(in, binary.LittleEndian, &inl) 148 out[6] |= (inl % (1 << 3)) << (5 - 3) 149 out[7] = (inl >> 3) % (1 << 5) 150 out[8] = (inl >> 8) % (1 << 5) 151 out[9] = (inl >> 13) % (1 << 5) 152 out[10] = (inl >> 18) % (1 << 5) 153 out[11] = (inl >> 23) % (1 << 5) 154 out[12] = (inl >> 28) 155 binary.Read(in, binary.LittleEndian, &inl) 156 out[12] |= (inl % (1 << 1)) << (5 - 1) 157 out[13] = (inl >> 1) % (1 << 5) 158 out[14] = (inl >> 6) % (1 << 5) 159 out[15] = (inl >> 11) % (1 << 5) 160 out[16] = (inl >> 16) % (1 << 5) 161 out[17] = (inl >> 21) % (1 << 5) 162 out[18] = (inl >> 26) % (1 << 5) 163 out[19] = (inl >> 31) 164 binary.Read(in, binary.LittleEndian, &inl) 165 out[19] |= (inl % (1 << 4)) << (5 - 4) 166 out[20] = (inl >> 4) % (1 << 5) 167 out[21] = (inl >> 9) % (1 << 5) 168 out[22] = (inl >> 14) % (1 << 5) 169 out[23] = (inl >> 19) % (1 << 5) 170 out[24] = (inl >> 24) % (1 << 5) 171 out[25] = (inl >> 29) 172 binary.Read(in, binary.LittleEndian, &inl) 173 out[25] |= (inl % (1 << 2)) << (5 - 2) 174 out[26] = (inl >> 2) % (1 << 5) 175 out[27] = (inl >> 7) % (1 << 5) 176 out[28] = (inl >> 12) % (1 << 5) 177 out[29] = (inl >> 17) % (1 << 5) 178 out[30] = (inl >> 22) % (1 << 5) 179 out[31] = (inl >> 27) 180 } 181 182 func unpack6_32(in io.Reader, out []uint32) { 183 var inl uint32 184 binary.Read(in, binary.LittleEndian, &inl) 185 out[0] = (inl >> 0) % (1 << 6) 186 out[1] = (inl >> 6) % (1 << 6) 187 out[2] = (inl >> 12) % (1 << 6) 188 out[3] = (inl >> 18) % (1 << 6) 189 out[4] = (inl >> 24) % (1 << 6) 190 out[5] = (inl >> 30) 191 binary.Read(in, binary.LittleEndian, &inl) 192 out[5] |= (inl % (1 << 4)) << (6 - 4) 193 out[6] = (inl >> 4) % (1 << 6) 194 out[7] = (inl >> 10) % (1 << 6) 195 out[8] = (inl >> 16) % (1 << 6) 196 out[9] = (inl >> 22) % (1 << 6) 197 out[10] = (inl >> 28) 198 binary.Read(in, binary.LittleEndian, &inl) 199 out[10] |= (inl % (1 << 2)) << (6 - 2) 200 out[11] = (inl >> 2) % (1 << 6) 201 out[12] = (inl >> 8) % (1 << 6) 202 out[13] = (inl >> 14) % (1 << 6) 203 out[14] = (inl >> 20) % (1 << 6) 204 out[15] = (inl >> 26) 205 binary.Read(in, binary.LittleEndian, &inl) 206 out[16] = (inl >> 0) % (1 << 6) 207 out[17] = (inl >> 6) % (1 << 6) 208 out[18] = (inl >> 12) % (1 << 6) 209 out[19] = (inl >> 18) % (1 << 6) 210 out[20] = (inl >> 24) % (1 << 6) 211 out[21] = (inl >> 30) 212 binary.Read(in, binary.LittleEndian, &inl) 213 out[21] |= (inl % (1 << 4)) << (6 - 4) 214 out[22] = (inl >> 4) % (1 << 6) 215 out[23] = (inl >> 10) % (1 << 6) 216 out[24] = (inl >> 16) % (1 << 6) 217 out[25] = (inl >> 22) % (1 << 6) 218 out[26] = (inl >> 28) 219 binary.Read(in, binary.LittleEndian, &inl) 220 out[26] |= (inl % (1 << 2)) << (6 - 2) 221 out[27] = (inl >> 2) % (1 << 6) 222 out[28] = (inl >> 8) % (1 << 6) 223 out[29] = (inl >> 14) % (1 << 6) 224 out[30] = (inl >> 20) % (1 << 6) 225 out[31] = (inl >> 26) 226 } 227 228 func unpack7_32(in io.Reader, out []uint32) { 229 var inl uint32 230 binary.Read(in, binary.LittleEndian, &inl) 231 out[0] = (inl >> 0) % (1 << 7) 232 out[1] = (inl >> 7) % (1 << 7) 233 out[2] = (inl >> 14) % (1 << 7) 234 out[3] = (inl >> 21) % (1 << 7) 235 out[4] = (inl >> 28) 236 binary.Read(in, binary.LittleEndian, &inl) 237 out[4] |= (inl % (1 << 3)) << (7 - 3) 238 out[5] = (inl >> 3) % (1 << 7) 239 out[6] = (inl >> 10) % (1 << 7) 240 out[7] = (inl >> 17) % (1 << 7) 241 out[8] = (inl >> 24) % (1 << 7) 242 out[9] = (inl >> 31) 243 binary.Read(in, binary.LittleEndian, &inl) 244 out[9] |= (inl % (1 << 6)) << (7 - 6) 245 out[10] = (inl >> 6) % (1 << 7) 246 out[11] = (inl >> 13) % (1 << 7) 247 out[12] = (inl >> 20) % (1 << 7) 248 out[13] = (inl >> 27) 249 binary.Read(in, binary.LittleEndian, &inl) 250 out[13] |= (inl % (1 << 2)) << (7 - 2) 251 out[14] = (inl >> 2) % (1 << 7) 252 out[15] = (inl >> 9) % (1 << 7) 253 out[16] = (inl >> 16) % (1 << 7) 254 out[17] = (inl >> 23) % (1 << 7) 255 out[18] = (inl >> 30) 256 binary.Read(in, binary.LittleEndian, &inl) 257 out[18] |= (inl % (1 << 5)) << (7 - 5) 258 out[19] = (inl >> 5) % (1 << 7) 259 out[20] = (inl >> 12) % (1 << 7) 260 out[21] = (inl >> 19) % (1 << 7) 261 out[22] = (inl >> 26) 262 binary.Read(in, binary.LittleEndian, &inl) 263 out[22] |= (inl % (1 << 1)) << (7 - 1) 264 out[23] = (inl >> 1) % (1 << 7) 265 out[24] = (inl >> 8) % (1 << 7) 266 out[25] = (inl >> 15) % (1 << 7) 267 out[26] = (inl >> 22) % (1 << 7) 268 out[27] = (inl >> 29) 269 binary.Read(in, binary.LittleEndian, &inl) 270 out[27] |= (inl % (1 << 4)) << (7 - 4) 271 out[28] = (inl >> 4) % (1 << 7) 272 out[29] = (inl >> 11) % (1 << 7) 273 out[30] = (inl >> 18) % (1 << 7) 274 out[31] = (inl >> 25) 275 } 276 277 func unpack8_32(in io.Reader, out []uint32) { 278 var inl uint32 279 binary.Read(in, binary.LittleEndian, &inl) 280 for i := 0; i < 24; i += 8 { 281 out[0+i/8] = (inl >> i) % (1 << 8) 282 } 283 out[3] = (inl >> 24) 284 binary.Read(in, binary.LittleEndian, &inl) 285 for i := 0; i < 24; i += 8 { 286 out[4+i/8] = (inl >> i) % (1 << 8) 287 } 288 out[7] = (inl >> 24) 289 binary.Read(in, binary.LittleEndian, &inl) 290 for i := 0; i < 24; i += 8 { 291 out[8+i/8] = (inl >> i) % (1 << 8) 292 } 293 out[11] = (inl >> 24) 294 binary.Read(in, binary.LittleEndian, &inl) 295 for i := 0; i < 24; i += 8 { 296 out[12+i/8] = (inl >> i) % (1 << 8) 297 } 298 out[15] = (inl >> 24) 299 binary.Read(in, binary.LittleEndian, &inl) 300 for i := 0; i < 24; i += 8 { 301 out[16+i/8] = (inl >> i) % (1 << 8) 302 } 303 out[19] = (inl >> 24) 304 binary.Read(in, binary.LittleEndian, &inl) 305 for i := 0; i < 24; i += 8 { 306 out[20+i/8] = (inl >> i) % (1 << 8) 307 } 308 out[23] = (inl >> 24) 309 binary.Read(in, binary.LittleEndian, &inl) 310 for i := 0; i < 24; i += 8 { 311 out[24+i/8] = (inl >> i) % (1 << 8) 312 } 313 out[27] = (inl >> 24) 314 binary.Read(in, binary.LittleEndian, &inl) 315 for i := 0; i < 24; i += 8 { 316 out[28+i/8] = (inl >> i) % (1 << 8) 317 } 318 out[31] = (inl >> 24) 319 } 320 321 func unpack9_32(in io.Reader, out []uint32) { 322 var inl uint32 323 binary.Read(in, binary.LittleEndian, &inl) 324 out[0] = (inl >> 0) % (1 << 9) 325 out[1] = (inl >> 9) % (1 << 9) 326 out[2] = (inl >> 18) % (1 << 9) 327 out[3] = (inl >> 27) 328 binary.Read(in, binary.LittleEndian, &inl) 329 out[3] |= (inl % (1 << 4)) << (9 - 4) 330 out[4] = (inl >> 4) % (1 << 9) 331 out[5] = (inl >> 13) % (1 << 9) 332 out[6] = (inl >> 22) % (1 << 9) 333 out[7] = (inl >> 31) 334 binary.Read(in, binary.LittleEndian, &inl) 335 out[7] |= (inl % (1 << 8)) << (9 - 8) 336 out[8] = (inl >> 8) % (1 << 9) 337 out[9] = (inl >> 17) % (1 << 9) 338 out[10] = (inl >> 26) 339 binary.Read(in, binary.LittleEndian, &inl) 340 out[10] |= (inl % (1 << 3)) << (9 - 3) 341 out[11] = (inl >> 3) % (1 << 9) 342 out[12] = (inl >> 12) % (1 << 9) 343 out[13] = (inl >> 21) % (1 << 9) 344 out[14] = (inl >> 30) 345 binary.Read(in, binary.LittleEndian, &inl) 346 out[14] |= (inl % (1 << 7)) << (9 - 7) 347 out[15] = (inl >> 7) % (1 << 9) 348 out[16] = (inl >> 16) % (1 << 9) 349 out[17] = (inl >> 25) 350 binary.Read(in, binary.LittleEndian, &inl) 351 out[17] |= (inl % (1 << 2)) << (9 - 2) 352 out[18] = (inl >> 2) % (1 << 9) 353 out[19] = (inl >> 11) % (1 << 9) 354 out[20] = (inl >> 20) % (1 << 9) 355 out[21] = (inl >> 29) 356 binary.Read(in, binary.LittleEndian, &inl) 357 out[21] |= (inl % (1 << 6)) << (9 - 6) 358 out[22] = (inl >> 6) % (1 << 9) 359 out[23] = (inl >> 15) % (1 << 9) 360 out[24] = (inl >> 24) 361 binary.Read(in, binary.LittleEndian, &inl) 362 out[24] |= (inl % (1 << 1)) << (9 - 1) 363 out[25] = (inl >> 1) % (1 << 9) 364 out[26] = (inl >> 10) % (1 << 9) 365 out[27] = (inl >> 19) % (1 << 9) 366 out[28] = (inl >> 28) 367 binary.Read(in, binary.LittleEndian, &inl) 368 out[28] |= (inl % (1 << 5)) << (9 - 5) 369 out[29] = (inl >> 5) % (1 << 9) 370 out[30] = (inl >> 14) % (1 << 9) 371 out[31] = (inl >> 23) 372 } 373 374 func unpack10_32(in io.Reader, out []uint32) { 375 var inl uint32 376 binary.Read(in, binary.LittleEndian, &inl) 377 out[0] = (inl >> 0) % (1 << 10) 378 out[1] = (inl >> 10) % (1 << 10) 379 out[2] = (inl >> 20) % (1 << 10) 380 out[3] = (inl >> 30) 381 binary.Read(in, binary.LittleEndian, &inl) 382 out[3] |= (inl % (1 << 8)) << (10 - 8) 383 out[4] = (inl >> 8) % (1 << 10) 384 out[5] = (inl >> 18) % (1 << 10) 385 out[6] = (inl >> 28) 386 binary.Read(in, binary.LittleEndian, &inl) 387 out[6] |= (inl % (1 << 6)) << (10 - 6) 388 out[7] = (inl >> 6) % (1 << 10) 389 out[8] = (inl >> 16) % (1 << 10) 390 out[9] = (inl >> 26) 391 binary.Read(in, binary.LittleEndian, &inl) 392 out[9] |= (inl % (1 << 4)) << (10 - 4) 393 out[10] = (inl >> 4) % (1 << 10) 394 out[11] = (inl >> 14) % (1 << 10) 395 out[12] = (inl >> 24) 396 binary.Read(in, binary.LittleEndian, &inl) 397 out[12] |= (inl % (1 << 2)) << (10 - 2) 398 out[13] = (inl >> 2) % (1 << 10) 399 out[14] = (inl >> 12) % (1 << 10) 400 out[15] = (inl >> 22) 401 binary.Read(in, binary.LittleEndian, &inl) 402 out[16] = (inl >> 0) % (1 << 10) 403 out[17] = (inl >> 10) % (1 << 10) 404 out[18] = (inl >> 20) % (1 << 10) 405 out[19] = (inl >> 30) 406 binary.Read(in, binary.LittleEndian, &inl) 407 out[19] |= (inl % (1 << 8)) << (10 - 8) 408 out[20] = (inl >> 8) % (1 << 10) 409 out[21] = (inl >> 18) % (1 << 10) 410 out[22] = (inl >> 28) 411 binary.Read(in, binary.LittleEndian, &inl) 412 out[22] |= (inl % (1 << 6)) << (10 - 6) 413 out[23] = (inl >> 6) % (1 << 10) 414 out[24] = (inl >> 16) % (1 << 10) 415 out[25] = (inl >> 26) 416 binary.Read(in, binary.LittleEndian, &inl) 417 out[25] |= (inl % (1 << 4)) << (10 - 4) 418 out[26] = (inl >> 4) % (1 << 10) 419 out[27] = (inl >> 14) % (1 << 10) 420 out[28] = (inl >> 24) 421 binary.Read(in, binary.LittleEndian, &inl) 422 out[28] |= (inl % (1 << 2)) << (10 - 2) 423 out[29] = (inl >> 2) % (1 << 10) 424 out[30] = (inl >> 12) % (1 << 10) 425 out[31] = (inl >> 22) 426 } 427 428 func unpack11_32(in io.Reader, out []uint32) { 429 var inl uint32 430 binary.Read(in, binary.LittleEndian, &inl) 431 out[0] = (inl >> 0) % (1 << 11) 432 out[1] = (inl >> 11) % (1 << 11) 433 out[2] = (inl >> 22) 434 binary.Read(in, binary.LittleEndian, &inl) 435 out[2] |= (inl % (1 << 1)) << (11 - 1) 436 out[3] = (inl >> 1) % (1 << 11) 437 out[4] = (inl >> 12) % (1 << 11) 438 out[5] = (inl >> 23) 439 binary.Read(in, binary.LittleEndian, &inl) 440 out[5] |= (inl % (1 << 2)) << (11 - 2) 441 out[6] = (inl >> 2) % (1 << 11) 442 out[7] = (inl >> 13) % (1 << 11) 443 out[8] = (inl >> 24) 444 binary.Read(in, binary.LittleEndian, &inl) 445 out[8] |= (inl % (1 << 3)) << (11 - 3) 446 out[9] = (inl >> 3) % (1 << 11) 447 out[10] = (inl >> 14) % (1 << 11) 448 out[11] = (inl >> 25) 449 binary.Read(in, binary.LittleEndian, &inl) 450 out[11] |= (inl % (1 << 4)) << (11 - 4) 451 out[12] = (inl >> 4) % (1 << 11) 452 out[13] = (inl >> 15) % (1 << 11) 453 out[14] = (inl >> 26) 454 binary.Read(in, binary.LittleEndian, &inl) 455 out[14] |= (inl % (1 << 5)) << (11 - 5) 456 out[15] = (inl >> 5) % (1 << 11) 457 out[16] = (inl >> 16) % (1 << 11) 458 out[17] = (inl >> 27) 459 binary.Read(in, binary.LittleEndian, &inl) 460 out[17] |= (inl % (1 << 6)) << (11 - 6) 461 out[18] = (inl >> 6) % (1 << 11) 462 out[19] = (inl >> 17) % (1 << 11) 463 out[20] = (inl >> 28) 464 binary.Read(in, binary.LittleEndian, &inl) 465 out[20] |= (inl % (1 << 7)) << (11 - 7) 466 out[21] = (inl >> 7) % (1 << 11) 467 out[22] = (inl >> 18) % (1 << 11) 468 out[23] = (inl >> 29) 469 binary.Read(in, binary.LittleEndian, &inl) 470 out[23] |= (inl % (1 << 8)) << (11 - 8) 471 out[24] = (inl >> 8) % (1 << 11) 472 out[25] = (inl >> 19) % (1 << 11) 473 out[26] = (inl >> 30) 474 binary.Read(in, binary.LittleEndian, &inl) 475 out[26] |= (inl % (1 << 9)) << (11 - 9) 476 out[27] = (inl >> 9) % (1 << 11) 477 out[28] = (inl >> 20) % (1 << 11) 478 out[29] = (inl >> 31) 479 binary.Read(in, binary.LittleEndian, &inl) 480 out[29] |= (inl % (1 << 10)) << (11 - 10) 481 out[30] = (inl >> 10) % (1 << 11) 482 out[31] = (inl >> 21) 483 } 484 485 func unpack12_32(in io.Reader, out []uint32) { 486 var inl uint32 487 binary.Read(in, binary.LittleEndian, &inl) 488 out[0] = (inl >> 0) % (1 << 12) 489 out[1] = (inl >> 12) % (1 << 12) 490 out[2] = (inl >> 24) 491 binary.Read(in, binary.LittleEndian, &inl) 492 out[2] |= (inl % (1 << 4)) << (12 - 4) 493 out[3] = (inl >> 4) % (1 << 12) 494 out[4] = (inl >> 16) % (1 << 12) 495 out[5] = (inl >> 28) 496 binary.Read(in, binary.LittleEndian, &inl) 497 out[5] |= (inl % (1 << 8)) << (12 - 8) 498 out[6] = (inl >> 8) % (1 << 12) 499 out[7] = (inl >> 20) 500 binary.Read(in, binary.LittleEndian, &inl) 501 out[8] = (inl >> 0) % (1 << 12) 502 out[9] = (inl >> 12) % (1 << 12) 503 out[10] = (inl >> 24) 504 binary.Read(in, binary.LittleEndian, &inl) 505 out[10] |= (inl % (1 << 4)) << (12 - 4) 506 out[11] = (inl >> 4) % (1 << 12) 507 out[12] = (inl >> 16) % (1 << 12) 508 out[13] = (inl >> 28) 509 binary.Read(in, binary.LittleEndian, &inl) 510 out[13] |= (inl % (1 << 8)) << (12 - 8) 511 out[14] = (inl >> 8) % (1 << 12) 512 out[15] = (inl >> 20) 513 binary.Read(in, binary.LittleEndian, &inl) 514 out[16] = (inl >> 0) % (1 << 12) 515 out[17] = (inl >> 12) % (1 << 12) 516 out[18] = (inl >> 24) 517 binary.Read(in, binary.LittleEndian, &inl) 518 out[18] |= (inl % (1 << 4)) << (12 - 4) 519 out[19] = (inl >> 4) % (1 << 12) 520 out[20] = (inl >> 16) % (1 << 12) 521 out[21] = (inl >> 28) 522 binary.Read(in, binary.LittleEndian, &inl) 523 out[21] |= (inl % (1 << 8)) << (12 - 8) 524 out[22] = (inl >> 8) % (1 << 12) 525 out[23] = (inl >> 20) 526 binary.Read(in, binary.LittleEndian, &inl) 527 out[24] = (inl >> 0) % (1 << 12) 528 out[25] = (inl >> 12) % (1 << 12) 529 out[26] = (inl >> 24) 530 binary.Read(in, binary.LittleEndian, &inl) 531 out[26] |= (inl % (1 << 4)) << (12 - 4) 532 out[27] = (inl >> 4) % (1 << 12) 533 out[28] = (inl >> 16) % (1 << 12) 534 out[29] = (inl >> 28) 535 binary.Read(in, binary.LittleEndian, &inl) 536 out[29] |= (inl % (1 << 8)) << (12 - 8) 537 out[30] = (inl >> 8) % (1 << 12) 538 out[31] = (inl >> 20) 539 } 540 541 func unpack13_32(in io.Reader, out []uint32) { 542 var inl uint32 543 binary.Read(in, binary.LittleEndian, &inl) 544 out[0] = (inl >> 0) % (1 << 13) 545 out[1] = (inl >> 13) % (1 << 13) 546 out[2] = (inl >> 26) 547 binary.Read(in, binary.LittleEndian, &inl) 548 out[2] |= (inl % (1 << 7)) << (13 - 7) 549 out[3] = (inl >> 7) % (1 << 13) 550 out[4] = (inl >> 20) 551 binary.Read(in, binary.LittleEndian, &inl) 552 out[4] |= (inl % (1 << 1)) << (13 - 1) 553 out[5] = (inl >> 1) % (1 << 13) 554 out[6] = (inl >> 14) % (1 << 13) 555 out[7] = (inl >> 27) 556 binary.Read(in, binary.LittleEndian, &inl) 557 out[7] |= (inl % (1 << 8)) << (13 - 8) 558 out[8] = (inl >> 8) % (1 << 13) 559 out[9] = (inl >> 21) 560 binary.Read(in, binary.LittleEndian, &inl) 561 out[9] |= (inl % (1 << 2)) << (13 - 2) 562 out[10] = (inl >> 2) % (1 << 13) 563 out[11] = (inl >> 15) % (1 << 13) 564 out[12] = (inl >> 28) 565 binary.Read(in, binary.LittleEndian, &inl) 566 out[12] |= (inl % (1 << 9)) << (13 - 9) 567 out[13] = (inl >> 9) % (1 << 13) 568 out[14] = (inl >> 22) 569 binary.Read(in, binary.LittleEndian, &inl) 570 out[14] |= (inl % (1 << 3)) << (13 - 3) 571 out[15] = (inl >> 3) % (1 << 13) 572 out[16] = (inl >> 16) % (1 << 13) 573 out[17] = (inl >> 29) 574 binary.Read(in, binary.LittleEndian, &inl) 575 out[17] |= (inl % (1 << 10)) << (13 - 10) 576 out[18] = (inl >> 10) % (1 << 13) 577 out[19] = (inl >> 23) 578 binary.Read(in, binary.LittleEndian, &inl) 579 out[19] |= (inl % (1 << 4)) << (13 - 4) 580 out[20] = (inl >> 4) % (1 << 13) 581 out[21] = (inl >> 17) % (1 << 13) 582 out[22] = (inl >> 30) 583 binary.Read(in, binary.LittleEndian, &inl) 584 out[22] |= (inl % (1 << 11)) << (13 - 11) 585 out[23] = (inl >> 11) % (1 << 13) 586 out[24] = (inl >> 24) 587 binary.Read(in, binary.LittleEndian, &inl) 588 out[24] |= (inl % (1 << 5)) << (13 - 5) 589 out[25] = (inl >> 5) % (1 << 13) 590 out[26] = (inl >> 18) % (1 << 13) 591 out[27] = (inl >> 31) 592 binary.Read(in, binary.LittleEndian, &inl) 593 out[27] |= (inl % (1 << 12)) << (13 - 12) 594 out[28] = (inl >> 12) % (1 << 13) 595 out[29] = (inl >> 25) 596 binary.Read(in, binary.LittleEndian, &inl) 597 out[29] |= (inl % (1 << 6)) << (13 - 6) 598 out[30] = (inl >> 6) % (1 << 13) 599 out[31] = (inl >> 19) 600 } 601 602 func unpack14_32(in io.Reader, out []uint32) { 603 var inl uint32 604 binary.Read(in, binary.LittleEndian, &inl) 605 out[0] = (inl >> 0) % (1 << 14) 606 out[1] = (inl >> 14) % (1 << 14) 607 out[2] = (inl >> 28) 608 binary.Read(in, binary.LittleEndian, &inl) 609 out[2] |= (inl % (1 << 10)) << (14 - 10) 610 out[3] = (inl >> 10) % (1 << 14) 611 out[4] = (inl >> 24) 612 binary.Read(in, binary.LittleEndian, &inl) 613 out[4] |= (inl % (1 << 6)) << (14 - 6) 614 out[5] = (inl >> 6) % (1 << 14) 615 out[6] = (inl >> 20) 616 binary.Read(in, binary.LittleEndian, &inl) 617 out[6] |= (inl % (1 << 2)) << (14 - 2) 618 out[7] = (inl >> 2) % (1 << 14) 619 out[8] = (inl >> 16) % (1 << 14) 620 out[9] = (inl >> 30) 621 binary.Read(in, binary.LittleEndian, &inl) 622 out[9] |= (inl % (1 << 12)) << (14 - 12) 623 out[10] = (inl >> 12) % (1 << 14) 624 out[11] = (inl >> 26) 625 binary.Read(in, binary.LittleEndian, &inl) 626 out[11] |= (inl % (1 << 8)) << (14 - 8) 627 out[12] = (inl >> 8) % (1 << 14) 628 out[13] = (inl >> 22) 629 binary.Read(in, binary.LittleEndian, &inl) 630 out[13] |= (inl % (1 << 4)) << (14 - 4) 631 out[14] = (inl >> 4) % (1 << 14) 632 out[15] = (inl >> 18) 633 binary.Read(in, binary.LittleEndian, &inl) 634 out[16] = (inl >> 0) % (1 << 14) 635 out[17] = (inl >> 14) % (1 << 14) 636 out[18] = (inl >> 28) 637 binary.Read(in, binary.LittleEndian, &inl) 638 out[18] |= (inl % (1 << 10)) << (14 - 10) 639 out[19] = (inl >> 10) % (1 << 14) 640 out[20] = (inl >> 24) 641 binary.Read(in, binary.LittleEndian, &inl) 642 out[20] |= (inl % (1 << 6)) << (14 - 6) 643 out[21] = (inl >> 6) % (1 << 14) 644 out[22] = (inl >> 20) 645 binary.Read(in, binary.LittleEndian, &inl) 646 out[22] |= (inl % (1 << 2)) << (14 - 2) 647 out[23] = (inl >> 2) % (1 << 14) 648 out[24] = (inl >> 16) % (1 << 14) 649 out[25] = (inl >> 30) 650 binary.Read(in, binary.LittleEndian, &inl) 651 out[25] |= (inl % (1 << 12)) << (14 - 12) 652 out[26] = (inl >> 12) % (1 << 14) 653 out[27] = (inl >> 26) 654 binary.Read(in, binary.LittleEndian, &inl) 655 out[27] |= (inl % (1 << 8)) << (14 - 8) 656 out[28] = (inl >> 8) % (1 << 14) 657 out[29] = (inl >> 22) 658 binary.Read(in, binary.LittleEndian, &inl) 659 out[29] |= (inl % (1 << 4)) << (14 - 4) 660 out[30] = (inl >> 4) % (1 << 14) 661 out[31] = (inl >> 18) 662 } 663 664 func unpack15_32(in io.Reader, out []uint32) { 665 var inl uint32 666 binary.Read(in, binary.LittleEndian, &inl) 667 out[0] = (inl >> 0) % (1 << 15) 668 out[1] = (inl >> 15) % (1 << 15) 669 out[2] = (inl >> 30) 670 binary.Read(in, binary.LittleEndian, &inl) 671 out[2] |= (inl % (1 << 13)) << (15 - 13) 672 out[3] = (inl >> 13) % (1 << 15) 673 out[4] = (inl >> 28) 674 binary.Read(in, binary.LittleEndian, &inl) 675 out[4] |= (inl % (1 << 11)) << (15 - 11) 676 out[5] = (inl >> 11) % (1 << 15) 677 out[6] = (inl >> 26) 678 binary.Read(in, binary.LittleEndian, &inl) 679 out[6] |= (inl % (1 << 9)) << (15 - 9) 680 out[7] = (inl >> 9) % (1 << 15) 681 out[8] = (inl >> 24) 682 binary.Read(in, binary.LittleEndian, &inl) 683 out[8] |= (inl % (1 << 7)) << (15 - 7) 684 out[9] = (inl >> 7) % (1 << 15) 685 out[10] = (inl >> 22) 686 binary.Read(in, binary.LittleEndian, &inl) 687 out[10] |= (inl % (1 << 5)) << (15 - 5) 688 out[11] = (inl >> 5) % (1 << 15) 689 out[12] = (inl >> 20) 690 binary.Read(in, binary.LittleEndian, &inl) 691 out[12] |= (inl % (1 << 3)) << (15 - 3) 692 out[13] = (inl >> 3) % (1 << 15) 693 out[14] = (inl >> 18) 694 binary.Read(in, binary.LittleEndian, &inl) 695 out[14] |= (inl % (1 << 1)) << (15 - 1) 696 out[15] = (inl >> 1) % (1 << 15) 697 out[16] = (inl >> 16) % (1 << 15) 698 out[17] = (inl >> 31) 699 binary.Read(in, binary.LittleEndian, &inl) 700 out[17] |= (inl % (1 << 14)) << (15 - 14) 701 out[18] = (inl >> 14) % (1 << 15) 702 out[19] = (inl >> 29) 703 binary.Read(in, binary.LittleEndian, &inl) 704 out[19] |= (inl % (1 << 12)) << (15 - 12) 705 out[20] = (inl >> 12) % (1 << 15) 706 out[21] = (inl >> 27) 707 binary.Read(in, binary.LittleEndian, &inl) 708 out[21] |= (inl % (1 << 10)) << (15 - 10) 709 out[22] = (inl >> 10) % (1 << 15) 710 out[23] = (inl >> 25) 711 binary.Read(in, binary.LittleEndian, &inl) 712 out[23] |= (inl % (1 << 8)) << (15 - 8) 713 out[24] = (inl >> 8) % (1 << 15) 714 out[25] = (inl >> 23) 715 binary.Read(in, binary.LittleEndian, &inl) 716 out[25] |= (inl % (1 << 6)) << (15 - 6) 717 out[26] = (inl >> 6) % (1 << 15) 718 out[27] = (inl >> 21) 719 binary.Read(in, binary.LittleEndian, &inl) 720 out[27] |= (inl % (1 << 4)) << (15 - 4) 721 out[28] = (inl >> 4) % (1 << 15) 722 out[29] = (inl >> 19) 723 binary.Read(in, binary.LittleEndian, &inl) 724 out[29] |= (inl % (1 << 2)) << (15 - 2) 725 out[30] = (inl >> 2) % (1 << 15) 726 out[31] = (inl >> 17) 727 } 728 729 func unpack16_32(in io.Reader, out []uint32) { 730 var inl uint32 731 for i := 0; i < 16; i++ { 732 binary.Read(in, binary.LittleEndian, &inl) 733 out[i*2] = (inl >> 0) % (1 << 16) 734 out[(i*2)+1] = (inl >> 16) 735 } 736 } 737 738 func unpack17_32(in io.Reader, out []uint32) { 739 var inl uint32 740 binary.Read(in, binary.LittleEndian, &inl) 741 out[0] = (inl >> 0) % (1 << 17) 742 out[1] = (inl >> 17) 743 binary.Read(in, binary.LittleEndian, &inl) 744 out[1] |= (inl % (1 << 2)) << (17 - 2) 745 out[2] = (inl >> 2) % (1 << 17) 746 out[3] = (inl >> 19) 747 binary.Read(in, binary.LittleEndian, &inl) 748 out[3] |= (inl % (1 << 4)) << (17 - 4) 749 out[4] = (inl >> 4) % (1 << 17) 750 out[5] = (inl >> 21) 751 binary.Read(in, binary.LittleEndian, &inl) 752 out[5] |= (inl % (1 << 6)) << (17 - 6) 753 out[6] = (inl >> 6) % (1 << 17) 754 out[7] = (inl >> 23) 755 binary.Read(in, binary.LittleEndian, &inl) 756 out[7] |= (inl % (1 << 8)) << (17 - 8) 757 out[8] = (inl >> 8) % (1 << 17) 758 out[9] = (inl >> 25) 759 binary.Read(in, binary.LittleEndian, &inl) 760 out[9] |= (inl % (1 << 10)) << (17 - 10) 761 out[10] = (inl >> 10) % (1 << 17) 762 out[11] = (inl >> 27) 763 binary.Read(in, binary.LittleEndian, &inl) 764 out[11] |= (inl % (1 << 12)) << (17 - 12) 765 out[12] = (inl >> 12) % (1 << 17) 766 out[13] = (inl >> 29) 767 binary.Read(in, binary.LittleEndian, &inl) 768 out[13] |= (inl % (1 << 14)) << (17 - 14) 769 out[14] = (inl >> 14) % (1 << 17) 770 out[15] = (inl >> 31) 771 binary.Read(in, binary.LittleEndian, &inl) 772 out[15] |= (inl % (1 << 16)) << (17 - 16) 773 out[16] = (inl >> 16) 774 binary.Read(in, binary.LittleEndian, &inl) 775 out[16] |= (inl % (1 << 1)) << (17 - 1) 776 out[17] = (inl >> 1) % (1 << 17) 777 out[18] = (inl >> 18) 778 binary.Read(in, binary.LittleEndian, &inl) 779 out[18] |= (inl % (1 << 3)) << (17 - 3) 780 out[19] = (inl >> 3) % (1 << 17) 781 out[20] = (inl >> 20) 782 binary.Read(in, binary.LittleEndian, &inl) 783 out[20] |= (inl % (1 << 5)) << (17 - 5) 784 out[21] = (inl >> 5) % (1 << 17) 785 out[22] = (inl >> 22) 786 binary.Read(in, binary.LittleEndian, &inl) 787 out[22] |= (inl % (1 << 7)) << (17 - 7) 788 out[23] = (inl >> 7) % (1 << 17) 789 out[24] = (inl >> 24) 790 binary.Read(in, binary.LittleEndian, &inl) 791 out[24] |= (inl % (1 << 9)) << (17 - 9) 792 out[25] = (inl >> 9) % (1 << 17) 793 out[26] = (inl >> 26) 794 binary.Read(in, binary.LittleEndian, &inl) 795 out[26] |= (inl % (1 << 11)) << (17 - 11) 796 out[27] = (inl >> 11) % (1 << 17) 797 out[28] = (inl >> 28) 798 binary.Read(in, binary.LittleEndian, &inl) 799 out[28] |= (inl % (1 << 13)) << (17 - 13) 800 out[29] = (inl >> 13) % (1 << 17) 801 out[30] = (inl >> 30) 802 binary.Read(in, binary.LittleEndian, &inl) 803 out[30] |= (inl % (1 << 15)) << (17 - 15) 804 out[31] = (inl >> 15) 805 } 806 807 func unpack18_32(in io.Reader, out []uint32) { 808 var inl uint32 809 binary.Read(in, binary.LittleEndian, &inl) 810 out[0] = (inl >> 0) % (1 << 18) 811 out[1] = (inl >> 18) 812 binary.Read(in, binary.LittleEndian, &inl) 813 out[1] |= (inl % (1 << 4)) << (18 - 4) 814 out[2] = (inl >> 4) % (1 << 18) 815 out[3] = (inl >> 22) 816 binary.Read(in, binary.LittleEndian, &inl) 817 out[3] |= (inl % (1 << 8)) << (18 - 8) 818 out[4] = (inl >> 8) % (1 << 18) 819 out[5] = (inl >> 26) 820 binary.Read(in, binary.LittleEndian, &inl) 821 out[5] |= (inl % (1 << 12)) << (18 - 12) 822 out[6] = (inl >> 12) % (1 << 18) 823 out[7] = (inl >> 30) 824 binary.Read(in, binary.LittleEndian, &inl) 825 out[7] |= (inl % (1 << 16)) << (18 - 16) 826 out[8] = (inl >> 16) 827 binary.Read(in, binary.LittleEndian, &inl) 828 out[8] |= (inl % (1 << 2)) << (18 - 2) 829 out[9] = (inl >> 2) % (1 << 18) 830 out[10] = (inl >> 20) 831 binary.Read(in, binary.LittleEndian, &inl) 832 out[10] |= (inl % (1 << 6)) << (18 - 6) 833 out[11] = (inl >> 6) % (1 << 18) 834 out[12] = (inl >> 24) 835 binary.Read(in, binary.LittleEndian, &inl) 836 out[12] |= (inl % (1 << 10)) << (18 - 10) 837 out[13] = (inl >> 10) % (1 << 18) 838 out[14] = (inl >> 28) 839 binary.Read(in, binary.LittleEndian, &inl) 840 out[14] |= (inl % (1 << 14)) << (18 - 14) 841 out[15] = (inl >> 14) 842 binary.Read(in, binary.LittleEndian, &inl) 843 out[16] = (inl >> 0) % (1 << 18) 844 out[17] = (inl >> 18) 845 binary.Read(in, binary.LittleEndian, &inl) 846 out[17] |= (inl % (1 << 4)) << (18 - 4) 847 out[18] = (inl >> 4) % (1 << 18) 848 out[19] = (inl >> 22) 849 binary.Read(in, binary.LittleEndian, &inl) 850 out[19] |= (inl % (1 << 8)) << (18 - 8) 851 out[20] = (inl >> 8) % (1 << 18) 852 out[21] = (inl >> 26) 853 binary.Read(in, binary.LittleEndian, &inl) 854 out[21] |= (inl % (1 << 12)) << (18 - 12) 855 out[22] = (inl >> 12) % (1 << 18) 856 out[23] = (inl >> 30) 857 binary.Read(in, binary.LittleEndian, &inl) 858 out[23] |= (inl % (1 << 16)) << (18 - 16) 859 out[24] = (inl >> 16) 860 binary.Read(in, binary.LittleEndian, &inl) 861 out[24] |= (inl % (1 << 2)) << (18 - 2) 862 out[25] = (inl >> 2) % (1 << 18) 863 out[26] = (inl >> 20) 864 binary.Read(in, binary.LittleEndian, &inl) 865 out[26] |= (inl % (1 << 6)) << (18 - 6) 866 out[27] = (inl >> 6) % (1 << 18) 867 out[28] = (inl >> 24) 868 binary.Read(in, binary.LittleEndian, &inl) 869 out[28] |= (inl % (1 << 10)) << (18 - 10) 870 out[29] = (inl >> 10) % (1 << 18) 871 out[30] = (inl >> 28) 872 binary.Read(in, binary.LittleEndian, &inl) 873 out[30] |= (inl % (1 << 14)) << (18 - 14) 874 out[31] = (inl >> 14) 875 } 876 877 func unpack19_32(in io.Reader, out []uint32) { 878 var inl uint32 879 binary.Read(in, binary.LittleEndian, &inl) 880 out[0] = (inl >> 0) % (1 << 19) 881 out[1] = (inl >> 19) 882 binary.Read(in, binary.LittleEndian, &inl) 883 out[1] |= (inl % (1 << 6)) << (19 - 6) 884 out[2] = (inl >> 6) % (1 << 19) 885 out[3] = (inl >> 25) 886 binary.Read(in, binary.LittleEndian, &inl) 887 out[3] |= (inl % (1 << 12)) << (19 - 12) 888 out[4] = (inl >> 12) % (1 << 19) 889 out[5] = (inl >> 31) 890 binary.Read(in, binary.LittleEndian, &inl) 891 out[5] |= (inl % (1 << 18)) << (19 - 18) 892 out[6] = (inl >> 18) 893 binary.Read(in, binary.LittleEndian, &inl) 894 out[6] |= (inl % (1 << 5)) << (19 - 5) 895 out[7] = (inl >> 5) % (1 << 19) 896 out[8] = (inl >> 24) 897 binary.Read(in, binary.LittleEndian, &inl) 898 out[8] |= (inl % (1 << 11)) << (19 - 11) 899 out[9] = (inl >> 11) % (1 << 19) 900 out[10] = (inl >> 30) 901 binary.Read(in, binary.LittleEndian, &inl) 902 out[10] |= (inl % (1 << 17)) << (19 - 17) 903 out[11] = (inl >> 17) 904 binary.Read(in, binary.LittleEndian, &inl) 905 out[11] |= (inl % (1 << 4)) << (19 - 4) 906 out[12] = (inl >> 4) % (1 << 19) 907 out[13] = (inl >> 23) 908 binary.Read(in, binary.LittleEndian, &inl) 909 out[13] |= (inl % (1 << 10)) << (19 - 10) 910 out[14] = (inl >> 10) % (1 << 19) 911 out[15] = (inl >> 29) 912 binary.Read(in, binary.LittleEndian, &inl) 913 out[15] |= (inl % (1 << 16)) << (19 - 16) 914 out[16] = (inl >> 16) 915 binary.Read(in, binary.LittleEndian, &inl) 916 out[16] |= (inl % (1 << 3)) << (19 - 3) 917 out[17] = (inl >> 3) % (1 << 19) 918 out[18] = (inl >> 22) 919 binary.Read(in, binary.LittleEndian, &inl) 920 out[18] |= (inl % (1 << 9)) << (19 - 9) 921 out[19] = (inl >> 9) % (1 << 19) 922 out[20] = (inl >> 28) 923 binary.Read(in, binary.LittleEndian, &inl) 924 out[20] |= (inl % (1 << 15)) << (19 - 15) 925 out[21] = (inl >> 15) 926 binary.Read(in, binary.LittleEndian, &inl) 927 out[21] |= (inl % (1 << 2)) << (19 - 2) 928 out[22] = (inl >> 2) % (1 << 19) 929 out[23] = (inl >> 21) 930 binary.Read(in, binary.LittleEndian, &inl) 931 out[23] |= (inl % (1 << 8)) << (19 - 8) 932 out[24] = (inl >> 8) % (1 << 19) 933 out[25] = (inl >> 27) 934 binary.Read(in, binary.LittleEndian, &inl) 935 out[25] |= (inl % (1 << 14)) << (19 - 14) 936 out[26] = (inl >> 14) 937 binary.Read(in, binary.LittleEndian, &inl) 938 out[26] |= (inl % (1 << 1)) << (19 - 1) 939 out[27] = (inl >> 1) % (1 << 19) 940 out[28] = (inl >> 20) 941 binary.Read(in, binary.LittleEndian, &inl) 942 out[28] |= (inl % (1 << 7)) << (19 - 7) 943 out[29] = (inl >> 7) % (1 << 19) 944 out[30] = (inl >> 26) 945 binary.Read(in, binary.LittleEndian, &inl) 946 out[30] |= (inl % (1 << 13)) << (19 - 13) 947 out[31] = (inl >> 13) 948 } 949 950 func unpack20_32(in io.Reader, out []uint32) { 951 var inl uint32 952 binary.Read(in, binary.LittleEndian, &inl) 953 out[0] = (inl >> 0) % (1 << 20) 954 out[1] = (inl >> 20) 955 binary.Read(in, binary.LittleEndian, &inl) 956 out[1] |= (inl % (1 << 8)) << (20 - 8) 957 out[2] = (inl >> 8) % (1 << 20) 958 out[3] = (inl >> 28) 959 binary.Read(in, binary.LittleEndian, &inl) 960 out[3] |= (inl % (1 << 16)) << (20 - 16) 961 out[4] = (inl >> 16) 962 binary.Read(in, binary.LittleEndian, &inl) 963 out[4] |= (inl % (1 << 4)) << (20 - 4) 964 out[5] = (inl >> 4) % (1 << 20) 965 out[6] = (inl >> 24) 966 binary.Read(in, binary.LittleEndian, &inl) 967 out[6] |= (inl % (1 << 12)) << (20 - 12) 968 out[7] = (inl >> 12) 969 binary.Read(in, binary.LittleEndian, &inl) 970 out[8] = (inl >> 0) % (1 << 20) 971 out[9] = (inl >> 20) 972 binary.Read(in, binary.LittleEndian, &inl) 973 out[9] |= (inl % (1 << 8)) << (20 - 8) 974 out[10] = (inl >> 8) % (1 << 20) 975 out[11] = (inl >> 28) 976 binary.Read(in, binary.LittleEndian, &inl) 977 out[11] |= (inl % (1 << 16)) << (20 - 16) 978 out[12] = (inl >> 16) 979 binary.Read(in, binary.LittleEndian, &inl) 980 out[12] |= (inl % (1 << 4)) << (20 - 4) 981 out[13] = (inl >> 4) % (1 << 20) 982 out[14] = (inl >> 24) 983 binary.Read(in, binary.LittleEndian, &inl) 984 out[14] |= (inl % (1 << 12)) << (20 - 12) 985 out[15] = (inl >> 12) 986 binary.Read(in, binary.LittleEndian, &inl) 987 out[16] = (inl >> 0) % (1 << 20) 988 out[17] = (inl >> 20) 989 binary.Read(in, binary.LittleEndian, &inl) 990 out[17] |= (inl % (1 << 8)) << (20 - 8) 991 out[18] = (inl >> 8) % (1 << 20) 992 out[19] = (inl >> 28) 993 binary.Read(in, binary.LittleEndian, &inl) 994 out[19] |= (inl % (1 << 16)) << (20 - 16) 995 out[20] = (inl >> 16) 996 binary.Read(in, binary.LittleEndian, &inl) 997 out[20] |= (inl % (1 << 4)) << (20 - 4) 998 out[21] = (inl >> 4) % (1 << 20) 999 out[22] = (inl >> 24) 1000 binary.Read(in, binary.LittleEndian, &inl) 1001 out[22] |= (inl % (1 << 12)) << (20 - 12) 1002 out[23] = (inl >> 12) 1003 binary.Read(in, binary.LittleEndian, &inl) 1004 out[24] = (inl >> 0) % (1 << 20) 1005 out[25] = (inl >> 20) 1006 binary.Read(in, binary.LittleEndian, &inl) 1007 out[25] |= (inl % (1 << 8)) << (20 - 8) 1008 out[26] = (inl >> 8) % (1 << 20) 1009 out[27] = (inl >> 28) 1010 binary.Read(in, binary.LittleEndian, &inl) 1011 out[27] |= (inl % (1 << 16)) << (20 - 16) 1012 out[28] = (inl >> 16) 1013 binary.Read(in, binary.LittleEndian, &inl) 1014 out[28] |= (inl % (1 << 4)) << (20 - 4) 1015 out[29] = (inl >> 4) % (1 << 20) 1016 out[30] = (inl >> 24) 1017 binary.Read(in, binary.LittleEndian, &inl) 1018 out[30] |= (inl % (1 << 12)) << (20 - 12) 1019 out[31] = (inl >> 12) 1020 } 1021 1022 func unpack21_32(in io.Reader, out []uint32) { 1023 var inl uint32 1024 binary.Read(in, binary.LittleEndian, &inl) 1025 out[0] = (inl >> 0) % (1 << 21) 1026 out[1] = (inl >> 21) 1027 binary.Read(in, binary.LittleEndian, &inl) 1028 out[1] |= (inl % (1 << 10)) << (21 - 10) 1029 out[2] = (inl >> 10) % (1 << 21) 1030 out[3] = (inl >> 31) 1031 binary.Read(in, binary.LittleEndian, &inl) 1032 out[3] |= (inl % (1 << 20)) << (21 - 20) 1033 out[4] = (inl >> 20) 1034 binary.Read(in, binary.LittleEndian, &inl) 1035 out[4] |= (inl % (1 << 9)) << (21 - 9) 1036 out[5] = (inl >> 9) % (1 << 21) 1037 out[6] = (inl >> 30) 1038 binary.Read(in, binary.LittleEndian, &inl) 1039 out[6] |= (inl % (1 << 19)) << (21 - 19) 1040 out[7] = (inl >> 19) 1041 binary.Read(in, binary.LittleEndian, &inl) 1042 out[7] |= (inl % (1 << 8)) << (21 - 8) 1043 out[8] = (inl >> 8) % (1 << 21) 1044 out[9] = (inl >> 29) 1045 binary.Read(in, binary.LittleEndian, &inl) 1046 out[9] |= (inl % (1 << 18)) << (21 - 18) 1047 out[10] = (inl >> 18) 1048 binary.Read(in, binary.LittleEndian, &inl) 1049 out[10] |= (inl % (1 << 7)) << (21 - 7) 1050 out[11] = (inl >> 7) % (1 << 21) 1051 out[12] = (inl >> 28) 1052 binary.Read(in, binary.LittleEndian, &inl) 1053 out[12] |= (inl % (1 << 17)) << (21 - 17) 1054 out[13] = (inl >> 17) 1055 binary.Read(in, binary.LittleEndian, &inl) 1056 out[13] |= (inl % (1 << 6)) << (21 - 6) 1057 out[14] = (inl >> 6) % (1 << 21) 1058 out[15] = (inl >> 27) 1059 binary.Read(in, binary.LittleEndian, &inl) 1060 out[15] |= (inl % (1 << 16)) << (21 - 16) 1061 out[16] = (inl >> 16) 1062 binary.Read(in, binary.LittleEndian, &inl) 1063 out[16] |= (inl % (1 << 5)) << (21 - 5) 1064 out[17] = (inl >> 5) % (1 << 21) 1065 out[18] = (inl >> 26) 1066 binary.Read(in, binary.LittleEndian, &inl) 1067 out[18] |= (inl % (1 << 15)) << (21 - 15) 1068 out[19] = (inl >> 15) 1069 binary.Read(in, binary.LittleEndian, &inl) 1070 out[19] |= (inl % (1 << 4)) << (21 - 4) 1071 out[20] = (inl >> 4) % (1 << 21) 1072 out[21] = (inl >> 25) 1073 binary.Read(in, binary.LittleEndian, &inl) 1074 out[21] |= (inl % (1 << 14)) << (21 - 14) 1075 out[22] = (inl >> 14) 1076 binary.Read(in, binary.LittleEndian, &inl) 1077 out[22] |= (inl % (1 << 3)) << (21 - 3) 1078 out[23] = (inl >> 3) % (1 << 21) 1079 out[24] = (inl >> 24) 1080 binary.Read(in, binary.LittleEndian, &inl) 1081 out[24] |= (inl % (1 << 13)) << (21 - 13) 1082 out[25] = (inl >> 13) 1083 binary.Read(in, binary.LittleEndian, &inl) 1084 out[25] |= (inl % (1 << 2)) << (21 - 2) 1085 out[26] = (inl >> 2) % (1 << 21) 1086 out[27] = (inl >> 23) 1087 binary.Read(in, binary.LittleEndian, &inl) 1088 out[27] |= (inl % (1 << 12)) << (21 - 12) 1089 out[28] = (inl >> 12) 1090 binary.Read(in, binary.LittleEndian, &inl) 1091 out[28] |= (inl % (1 << 1)) << (21 - 1) 1092 out[29] = (inl >> 1) % (1 << 21) 1093 out[30] = (inl >> 22) 1094 binary.Read(in, binary.LittleEndian, &inl) 1095 out[30] |= (inl % (1 << 11)) << (21 - 11) 1096 out[31] = (inl >> 11) 1097 } 1098 1099 func unpack22_32(in io.Reader, out []uint32) { 1100 var inl uint32 1101 binary.Read(in, binary.LittleEndian, &inl) 1102 out[0] = (inl >> 0) % (1 << 22) 1103 out[1] = (inl >> 22) 1104 binary.Read(in, binary.LittleEndian, &inl) 1105 out[1] |= (inl % (1 << 12)) << (22 - 12) 1106 out[2] = (inl >> 12) 1107 binary.Read(in, binary.LittleEndian, &inl) 1108 out[2] |= (inl % (1 << 2)) << (22 - 2) 1109 out[3] = (inl >> 2) % (1 << 22) 1110 out[4] = (inl >> 24) 1111 binary.Read(in, binary.LittleEndian, &inl) 1112 out[4] |= (inl % (1 << 14)) << (22 - 14) 1113 out[5] = (inl >> 14) 1114 binary.Read(in, binary.LittleEndian, &inl) 1115 out[5] |= (inl % (1 << 4)) << (22 - 4) 1116 out[6] = (inl >> 4) % (1 << 22) 1117 out[7] = (inl >> 26) 1118 binary.Read(in, binary.LittleEndian, &inl) 1119 out[7] |= (inl % (1 << 16)) << (22 - 16) 1120 out[8] = (inl >> 16) 1121 binary.Read(in, binary.LittleEndian, &inl) 1122 out[8] |= (inl % (1 << 6)) << (22 - 6) 1123 out[9] = (inl >> 6) % (1 << 22) 1124 out[10] = (inl >> 28) 1125 binary.Read(in, binary.LittleEndian, &inl) 1126 out[10] |= (inl % (1 << 18)) << (22 - 18) 1127 out[11] = (inl >> 18) 1128 binary.Read(in, binary.LittleEndian, &inl) 1129 out[11] |= (inl % (1 << 8)) << (22 - 8) 1130 out[12] = (inl >> 8) % (1 << 22) 1131 out[13] = (inl >> 30) 1132 binary.Read(in, binary.LittleEndian, &inl) 1133 out[13] |= (inl % (1 << 20)) << (22 - 20) 1134 out[14] = (inl >> 20) 1135 binary.Read(in, binary.LittleEndian, &inl) 1136 out[14] |= (inl % (1 << 10)) << (22 - 10) 1137 out[15] = (inl >> 10) 1138 binary.Read(in, binary.LittleEndian, &inl) 1139 out[16] = (inl >> 0) % (1 << 22) 1140 out[17] = (inl >> 22) 1141 binary.Read(in, binary.LittleEndian, &inl) 1142 out[17] |= (inl % (1 << 12)) << (22 - 12) 1143 out[18] = (inl >> 12) 1144 binary.Read(in, binary.LittleEndian, &inl) 1145 out[18] |= (inl % (1 << 2)) << (22 - 2) 1146 out[19] = (inl >> 2) % (1 << 22) 1147 out[20] = (inl >> 24) 1148 binary.Read(in, binary.LittleEndian, &inl) 1149 out[20] |= (inl % (1 << 14)) << (22 - 14) 1150 out[21] = (inl >> 14) 1151 binary.Read(in, binary.LittleEndian, &inl) 1152 out[21] |= (inl % (1 << 4)) << (22 - 4) 1153 out[22] = (inl >> 4) % (1 << 22) 1154 out[23] = (inl >> 26) 1155 binary.Read(in, binary.LittleEndian, &inl) 1156 out[23] |= (inl % (1 << 16)) << (22 - 16) 1157 out[24] = (inl >> 16) 1158 binary.Read(in, binary.LittleEndian, &inl) 1159 out[24] |= (inl % (1 << 6)) << (22 - 6) 1160 out[25] = (inl >> 6) % (1 << 22) 1161 out[26] = (inl >> 28) 1162 binary.Read(in, binary.LittleEndian, &inl) 1163 out[26] |= (inl % (1 << 18)) << (22 - 18) 1164 out[27] = (inl >> 18) 1165 binary.Read(in, binary.LittleEndian, &inl) 1166 out[27] |= (inl % (1 << 8)) << (22 - 8) 1167 out[28] = (inl >> 8) % (1 << 22) 1168 out[29] = (inl >> 30) 1169 binary.Read(in, binary.LittleEndian, &inl) 1170 out[29] |= (inl % (1 << 20)) << (22 - 20) 1171 out[30] = (inl >> 20) 1172 binary.Read(in, binary.LittleEndian, &inl) 1173 out[30] |= (inl % (1 << 10)) << (22 - 10) 1174 out[31] = (inl >> 10) 1175 } 1176 1177 func unpack23_32(in io.Reader, out []uint32) { 1178 var inl uint32 1179 binary.Read(in, binary.LittleEndian, &inl) 1180 out[0] = (inl >> 0) % (1 << 23) 1181 out[1] = (inl >> 23) 1182 binary.Read(in, binary.LittleEndian, &inl) 1183 out[1] |= (inl % (1 << 14)) << (23 - 14) 1184 out[2] = (inl >> 14) 1185 binary.Read(in, binary.LittleEndian, &inl) 1186 out[2] |= (inl % (1 << 5)) << (23 - 5) 1187 out[3] = (inl >> 5) % (1 << 23) 1188 out[4] = (inl >> 28) 1189 binary.Read(in, binary.LittleEndian, &inl) 1190 out[4] |= (inl % (1 << 19)) << (23 - 19) 1191 out[5] = (inl >> 19) 1192 binary.Read(in, binary.LittleEndian, &inl) 1193 out[5] |= (inl % (1 << 10)) << (23 - 10) 1194 out[6] = (inl >> 10) 1195 binary.Read(in, binary.LittleEndian, &inl) 1196 out[6] |= (inl % (1 << 1)) << (23 - 1) 1197 out[7] = (inl >> 1) % (1 << 23) 1198 out[8] = (inl >> 24) 1199 binary.Read(in, binary.LittleEndian, &inl) 1200 out[8] |= (inl % (1 << 15)) << (23 - 15) 1201 out[9] = (inl >> 15) 1202 binary.Read(in, binary.LittleEndian, &inl) 1203 out[9] |= (inl % (1 << 6)) << (23 - 6) 1204 out[10] = (inl >> 6) % (1 << 23) 1205 out[11] = (inl >> 29) 1206 binary.Read(in, binary.LittleEndian, &inl) 1207 out[11] |= (inl % (1 << 20)) << (23 - 20) 1208 out[12] = (inl >> 20) 1209 binary.Read(in, binary.LittleEndian, &inl) 1210 out[12] |= (inl % (1 << 11)) << (23 - 11) 1211 out[13] = (inl >> 11) 1212 binary.Read(in, binary.LittleEndian, &inl) 1213 out[13] |= (inl % (1 << 2)) << (23 - 2) 1214 out[14] = (inl >> 2) % (1 << 23) 1215 out[15] = (inl >> 25) 1216 binary.Read(in, binary.LittleEndian, &inl) 1217 out[15] |= (inl % (1 << 16)) << (23 - 16) 1218 out[16] = (inl >> 16) 1219 binary.Read(in, binary.LittleEndian, &inl) 1220 out[16] |= (inl % (1 << 7)) << (23 - 7) 1221 out[17] = (inl >> 7) % (1 << 23) 1222 out[18] = (inl >> 30) 1223 binary.Read(in, binary.LittleEndian, &inl) 1224 out[18] |= (inl % (1 << 21)) << (23 - 21) 1225 out[19] = (inl >> 21) 1226 binary.Read(in, binary.LittleEndian, &inl) 1227 out[19] |= (inl % (1 << 12)) << (23 - 12) 1228 out[20] = (inl >> 12) 1229 binary.Read(in, binary.LittleEndian, &inl) 1230 out[20] |= (inl % (1 << 3)) << (23 - 3) 1231 out[21] = (inl >> 3) % (1 << 23) 1232 out[22] = (inl >> 26) 1233 binary.Read(in, binary.LittleEndian, &inl) 1234 out[22] |= (inl % (1 << 17)) << (23 - 17) 1235 out[23] = (inl >> 17) 1236 binary.Read(in, binary.LittleEndian, &inl) 1237 out[23] |= (inl % (1 << 8)) << (23 - 8) 1238 out[24] = (inl >> 8) % (1 << 23) 1239 out[25] = (inl >> 31) 1240 binary.Read(in, binary.LittleEndian, &inl) 1241 out[25] |= (inl % (1 << 22)) << (23 - 22) 1242 out[26] = (inl >> 22) 1243 binary.Read(in, binary.LittleEndian, &inl) 1244 out[26] |= (inl % (1 << 13)) << (23 - 13) 1245 out[27] = (inl >> 13) 1246 binary.Read(in, binary.LittleEndian, &inl) 1247 out[27] |= (inl % (1 << 4)) << (23 - 4) 1248 out[28] = (inl >> 4) % (1 << 23) 1249 out[29] = (inl >> 27) 1250 binary.Read(in, binary.LittleEndian, &inl) 1251 out[29] |= (inl % (1 << 18)) << (23 - 18) 1252 out[30] = (inl >> 18) 1253 binary.Read(in, binary.LittleEndian, &inl) 1254 out[30] |= (inl % (1 << 9)) << (23 - 9) 1255 out[31] = (inl >> 9) 1256 } 1257 1258 func unpack24_32(in io.Reader, out []uint32) { 1259 var inl uint32 1260 for i := 0; i < 8; i++ { 1261 base := i * 4 1262 1263 binary.Read(in, binary.LittleEndian, &inl) 1264 out[base] = (inl >> 0) % (1 << 24) 1265 out[base+1] = (inl >> 24) 1266 binary.Read(in, binary.LittleEndian, &inl) 1267 out[base+1] |= (inl % (1 << 16)) << (24 - 16) 1268 out[base+2] = (inl >> 16) 1269 binary.Read(in, binary.LittleEndian, &inl) 1270 out[base+2] |= (inl % (1 << 8)) << (24 - 8) 1271 out[base+3] = (inl >> 8) 1272 } 1273 } 1274 1275 func unpack25_32(in io.Reader, out []uint32) { 1276 var inl uint32 1277 binary.Read(in, binary.LittleEndian, &inl) 1278 out[0] = (inl >> 0) % (1 << 25) 1279 out[1] = (inl >> 25) 1280 binary.Read(in, binary.LittleEndian, &inl) 1281 out[1] |= (inl % (1 << 18)) << (25 - 18) 1282 out[2] = (inl >> 18) 1283 binary.Read(in, binary.LittleEndian, &inl) 1284 out[2] |= (inl % (1 << 11)) << (25 - 11) 1285 out[3] = (inl >> 11) 1286 binary.Read(in, binary.LittleEndian, &inl) 1287 out[3] |= (inl % (1 << 4)) << (25 - 4) 1288 out[4] = (inl >> 4) % (1 << 25) 1289 out[5] = (inl >> 29) 1290 binary.Read(in, binary.LittleEndian, &inl) 1291 out[5] |= (inl % (1 << 22)) << (25 - 22) 1292 out[6] = (inl >> 22) 1293 binary.Read(in, binary.LittleEndian, &inl) 1294 out[6] |= (inl % (1 << 15)) << (25 - 15) 1295 out[7] = (inl >> 15) 1296 binary.Read(in, binary.LittleEndian, &inl) 1297 out[7] |= (inl % (1 << 8)) << (25 - 8) 1298 out[8] = (inl >> 8) 1299 binary.Read(in, binary.LittleEndian, &inl) 1300 out[8] |= (inl % (1 << 1)) << (25 - 1) 1301 out[9] = (inl >> 1) % (1 << 25) 1302 out[10] = (inl >> 26) 1303 binary.Read(in, binary.LittleEndian, &inl) 1304 out[10] |= (inl % (1 << 19)) << (25 - 19) 1305 out[11] = (inl >> 19) 1306 binary.Read(in, binary.LittleEndian, &inl) 1307 out[11] |= (inl % (1 << 12)) << (25 - 12) 1308 out[12] = (inl >> 12) 1309 binary.Read(in, binary.LittleEndian, &inl) 1310 out[12] |= (inl % (1 << 5)) << (25 - 5) 1311 out[13] = (inl >> 5) % (1 << 25) 1312 out[14] = (inl >> 30) 1313 binary.Read(in, binary.LittleEndian, &inl) 1314 out[14] |= (inl % (1 << 23)) << (25 - 23) 1315 out[15] = (inl >> 23) 1316 binary.Read(in, binary.LittleEndian, &inl) 1317 out[15] |= (inl % (1 << 16)) << (25 - 16) 1318 out[16] = (inl >> 16) 1319 binary.Read(in, binary.LittleEndian, &inl) 1320 out[16] |= (inl % (1 << 9)) << (25 - 9) 1321 out[17] = (inl >> 9) 1322 binary.Read(in, binary.LittleEndian, &inl) 1323 out[17] |= (inl % (1 << 2)) << (25 - 2) 1324 out[18] = (inl >> 2) % (1 << 25) 1325 out[19] = (inl >> 27) 1326 binary.Read(in, binary.LittleEndian, &inl) 1327 out[19] |= (inl % (1 << 20)) << (25 - 20) 1328 out[20] = (inl >> 20) 1329 binary.Read(in, binary.LittleEndian, &inl) 1330 out[20] |= (inl % (1 << 13)) << (25 - 13) 1331 out[21] = (inl >> 13) 1332 binary.Read(in, binary.LittleEndian, &inl) 1333 out[21] |= (inl % (1 << 6)) << (25 - 6) 1334 out[22] = (inl >> 6) % (1 << 25) 1335 out[23] = (inl >> 31) 1336 binary.Read(in, binary.LittleEndian, &inl) 1337 out[23] |= (inl % (1 << 24)) << (25 - 24) 1338 out[24] = (inl >> 24) 1339 binary.Read(in, binary.LittleEndian, &inl) 1340 out[24] |= (inl % (1 << 17)) << (25 - 17) 1341 out[25] = (inl >> 17) 1342 binary.Read(in, binary.LittleEndian, &inl) 1343 out[25] |= (inl % (1 << 10)) << (25 - 10) 1344 out[26] = (inl >> 10) 1345 binary.Read(in, binary.LittleEndian, &inl) 1346 out[26] |= (inl % (1 << 3)) << (25 - 3) 1347 out[27] = (inl >> 3) % (1 << 25) 1348 out[28] = (inl >> 28) 1349 binary.Read(in, binary.LittleEndian, &inl) 1350 out[28] |= (inl % (1 << 21)) << (25 - 21) 1351 out[29] = (inl >> 21) 1352 binary.Read(in, binary.LittleEndian, &inl) 1353 out[29] |= (inl % (1 << 14)) << (25 - 14) 1354 out[30] = (inl >> 14) 1355 binary.Read(in, binary.LittleEndian, &inl) 1356 out[30] |= (inl % (1 << 7)) << (25 - 7) 1357 out[31] = (inl >> 7) 1358 } 1359 1360 func unpack26_32(in io.Reader, out []uint32) { 1361 var inl uint32 1362 binary.Read(in, binary.LittleEndian, &inl) 1363 out[0] = (inl >> 0) % (1 << 26) 1364 out[1] = (inl >> 26) 1365 binary.Read(in, binary.LittleEndian, &inl) 1366 out[1] |= (inl % (1 << 20)) << (26 - 20) 1367 out[2] = (inl >> 20) 1368 binary.Read(in, binary.LittleEndian, &inl) 1369 out[2] |= (inl % (1 << 14)) << (26 - 14) 1370 out[3] = (inl >> 14) 1371 binary.Read(in, binary.LittleEndian, &inl) 1372 out[3] |= (inl % (1 << 8)) << (26 - 8) 1373 out[4] = (inl >> 8) 1374 binary.Read(in, binary.LittleEndian, &inl) 1375 out[4] |= (inl % (1 << 2)) << (26 - 2) 1376 out[5] = (inl >> 2) % (1 << 26) 1377 out[6] = (inl >> 28) 1378 binary.Read(in, binary.LittleEndian, &inl) 1379 out[6] |= (inl % (1 << 22)) << (26 - 22) 1380 out[7] = (inl >> 22) 1381 binary.Read(in, binary.LittleEndian, &inl) 1382 out[7] |= (inl % (1 << 16)) << (26 - 16) 1383 out[8] = (inl >> 16) 1384 binary.Read(in, binary.LittleEndian, &inl) 1385 out[8] |= (inl % (1 << 10)) << (26 - 10) 1386 out[9] = (inl >> 10) 1387 binary.Read(in, binary.LittleEndian, &inl) 1388 out[9] |= (inl % (1 << 4)) << (26 - 4) 1389 out[10] = (inl >> 4) % (1 << 26) 1390 out[11] = (inl >> 30) 1391 binary.Read(in, binary.LittleEndian, &inl) 1392 out[11] |= (inl % (1 << 24)) << (26 - 24) 1393 out[12] = (inl >> 24) 1394 binary.Read(in, binary.LittleEndian, &inl) 1395 out[12] |= (inl % (1 << 18)) << (26 - 18) 1396 out[13] = (inl >> 18) 1397 binary.Read(in, binary.LittleEndian, &inl) 1398 out[13] |= (inl % (1 << 12)) << (26 - 12) 1399 out[14] = (inl >> 12) 1400 binary.Read(in, binary.LittleEndian, &inl) 1401 out[14] |= (inl % (1 << 6)) << (26 - 6) 1402 out[15] = (inl >> 6) 1403 binary.Read(in, binary.LittleEndian, &inl) 1404 out[16] = (inl >> 0) % (1 << 26) 1405 out[17] = (inl >> 26) 1406 binary.Read(in, binary.LittleEndian, &inl) 1407 out[17] |= (inl % (1 << 20)) << (26 - 20) 1408 out[18] = (inl >> 20) 1409 binary.Read(in, binary.LittleEndian, &inl) 1410 out[18] |= (inl % (1 << 14)) << (26 - 14) 1411 out[19] = (inl >> 14) 1412 binary.Read(in, binary.LittleEndian, &inl) 1413 out[19] |= (inl % (1 << 8)) << (26 - 8) 1414 out[20] = (inl >> 8) 1415 binary.Read(in, binary.LittleEndian, &inl) 1416 out[20] |= (inl % (1 << 2)) << (26 - 2) 1417 out[21] = (inl >> 2) % (1 << 26) 1418 out[22] = (inl >> 28) 1419 binary.Read(in, binary.LittleEndian, &inl) 1420 out[22] |= (inl % (1 << 22)) << (26 - 22) 1421 out[23] = (inl >> 22) 1422 binary.Read(in, binary.LittleEndian, &inl) 1423 out[23] |= (inl % (1 << 16)) << (26 - 16) 1424 out[24] = (inl >> 16) 1425 binary.Read(in, binary.LittleEndian, &inl) 1426 out[24] |= (inl % (1 << 10)) << (26 - 10) 1427 out[25] = (inl >> 10) 1428 binary.Read(in, binary.LittleEndian, &inl) 1429 out[25] |= (inl % (1 << 4)) << (26 - 4) 1430 out[26] = (inl >> 4) % (1 << 26) 1431 out[27] = (inl >> 30) 1432 binary.Read(in, binary.LittleEndian, &inl) 1433 out[27] |= (inl % (1 << 24)) << (26 - 24) 1434 out[28] = (inl >> 24) 1435 binary.Read(in, binary.LittleEndian, &inl) 1436 out[28] |= (inl % (1 << 18)) << (26 - 18) 1437 out[29] = (inl >> 18) 1438 binary.Read(in, binary.LittleEndian, &inl) 1439 out[29] |= (inl % (1 << 12)) << (26 - 12) 1440 out[30] = (inl >> 12) 1441 binary.Read(in, binary.LittleEndian, &inl) 1442 out[30] |= (inl % (1 << 6)) << (26 - 6) 1443 out[31] = (inl >> 6) 1444 } 1445 1446 func unpack27_32(in io.Reader, out []uint32) { 1447 var inl uint32 1448 binary.Read(in, binary.LittleEndian, &inl) 1449 out[0] = (inl >> 0) % (1 << 27) 1450 out[1] = (inl >> 27) 1451 binary.Read(in, binary.LittleEndian, &inl) 1452 out[1] |= (inl % (1 << 22)) << (27 - 22) 1453 out[2] = (inl >> 22) 1454 binary.Read(in, binary.LittleEndian, &inl) 1455 out[2] |= (inl % (1 << 17)) << (27 - 17) 1456 out[3] = (inl >> 17) 1457 binary.Read(in, binary.LittleEndian, &inl) 1458 out[3] |= (inl % (1 << 12)) << (27 - 12) 1459 out[4] = (inl >> 12) 1460 binary.Read(in, binary.LittleEndian, &inl) 1461 out[4] |= (inl % (1 << 7)) << (27 - 7) 1462 out[5] = (inl >> 7) 1463 binary.Read(in, binary.LittleEndian, &inl) 1464 out[5] |= (inl % (1 << 2)) << (27 - 2) 1465 out[6] = (inl >> 2) % (1 << 27) 1466 out[7] = (inl >> 29) 1467 binary.Read(in, binary.LittleEndian, &inl) 1468 out[7] |= (inl % (1 << 24)) << (27 - 24) 1469 out[8] = (inl >> 24) 1470 binary.Read(in, binary.LittleEndian, &inl) 1471 out[8] |= (inl % (1 << 19)) << (27 - 19) 1472 out[9] = (inl >> 19) 1473 binary.Read(in, binary.LittleEndian, &inl) 1474 out[9] |= (inl % (1 << 14)) << (27 - 14) 1475 out[10] = (inl >> 14) 1476 binary.Read(in, binary.LittleEndian, &inl) 1477 out[10] |= (inl % (1 << 9)) << (27 - 9) 1478 out[11] = (inl >> 9) 1479 binary.Read(in, binary.LittleEndian, &inl) 1480 out[11] |= (inl % (1 << 4)) << (27 - 4) 1481 out[12] = (inl >> 4) % (1 << 27) 1482 out[13] = (inl >> 31) 1483 binary.Read(in, binary.LittleEndian, &inl) 1484 out[13] |= (inl % (1 << 26)) << (27 - 26) 1485 out[14] = (inl >> 26) 1486 binary.Read(in, binary.LittleEndian, &inl) 1487 out[14] |= (inl % (1 << 21)) << (27 - 21) 1488 out[15] = (inl >> 21) 1489 binary.Read(in, binary.LittleEndian, &inl) 1490 out[15] |= (inl % (1 << 16)) << (27 - 16) 1491 out[16] = (inl >> 16) 1492 binary.Read(in, binary.LittleEndian, &inl) 1493 out[16] |= (inl % (1 << 11)) << (27 - 11) 1494 out[17] = (inl >> 11) 1495 binary.Read(in, binary.LittleEndian, &inl) 1496 out[17] |= (inl % (1 << 6)) << (27 - 6) 1497 out[18] = (inl >> 6) 1498 binary.Read(in, binary.LittleEndian, &inl) 1499 out[18] |= (inl % (1 << 1)) << (27 - 1) 1500 out[19] = (inl >> 1) % (1 << 27) 1501 out[20] = (inl >> 28) 1502 binary.Read(in, binary.LittleEndian, &inl) 1503 out[20] |= (inl % (1 << 23)) << (27 - 23) 1504 out[21] = (inl >> 23) 1505 binary.Read(in, binary.LittleEndian, &inl) 1506 out[21] |= (inl % (1 << 18)) << (27 - 18) 1507 out[22] = (inl >> 18) 1508 binary.Read(in, binary.LittleEndian, &inl) 1509 out[22] |= (inl % (1 << 13)) << (27 - 13) 1510 out[23] = (inl >> 13) 1511 binary.Read(in, binary.LittleEndian, &inl) 1512 out[23] |= (inl % (1 << 8)) << (27 - 8) 1513 out[24] = (inl >> 8) 1514 binary.Read(in, binary.LittleEndian, &inl) 1515 out[24] |= (inl % (1 << 3)) << (27 - 3) 1516 out[25] = (inl >> 3) % (1 << 27) 1517 out[26] = (inl >> 30) 1518 binary.Read(in, binary.LittleEndian, &inl) 1519 out[26] |= (inl % (1 << 25)) << (27 - 25) 1520 out[27] = (inl >> 25) 1521 binary.Read(in, binary.LittleEndian, &inl) 1522 out[27] |= (inl % (1 << 20)) << (27 - 20) 1523 out[28] = (inl >> 20) 1524 binary.Read(in, binary.LittleEndian, &inl) 1525 out[28] |= (inl % (1 << 15)) << (27 - 15) 1526 out[29] = (inl >> 15) 1527 binary.Read(in, binary.LittleEndian, &inl) 1528 out[29] |= (inl % (1 << 10)) << (27 - 10) 1529 out[30] = (inl >> 10) 1530 binary.Read(in, binary.LittleEndian, &inl) 1531 out[30] |= (inl % (1 << 5)) << (27 - 5) 1532 out[31] = (inl >> 5) 1533 } 1534 1535 func unpack28_32(in io.Reader, out []uint32) { 1536 var inl uint32 1537 for i := 0; i < 4; i++ { 1538 base := i * 8 1539 1540 binary.Read(in, binary.LittleEndian, &inl) 1541 out[base] = (inl >> 0) % (1 << 28) 1542 out[base+1] = (inl >> 28) 1543 binary.Read(in, binary.LittleEndian, &inl) 1544 out[base+1] |= (inl % (1 << 24)) << (28 - 24) 1545 out[base+2] = (inl >> 24) 1546 binary.Read(in, binary.LittleEndian, &inl) 1547 out[base+2] |= (inl % (1 << 20)) << (28 - 20) 1548 out[base+3] = (inl >> 20) 1549 binary.Read(in, binary.LittleEndian, &inl) 1550 out[base+3] |= (inl % (1 << 16)) << (28 - 16) 1551 out[base+4] = (inl >> 16) 1552 binary.Read(in, binary.LittleEndian, &inl) 1553 out[base+4] |= (inl % (1 << 12)) << (28 - 12) 1554 out[base+5] = (inl >> 12) 1555 binary.Read(in, binary.LittleEndian, &inl) 1556 out[base+5] |= (inl % (1 << 8)) << (28 - 8) 1557 out[base+6] = (inl >> 8) 1558 binary.Read(in, binary.LittleEndian, &inl) 1559 out[base+6] |= (inl % (1 << 4)) << (28 - 4) 1560 out[base+7] = (inl >> 4) 1561 } 1562 } 1563 1564 func unpack29_32(in io.Reader, out []uint32) { 1565 var inl uint32 1566 binary.Read(in, binary.LittleEndian, &inl) 1567 out[0] = (inl >> 0) % (1 << 29) 1568 out[1] = (inl >> 29) 1569 binary.Read(in, binary.LittleEndian, &inl) 1570 out[1] |= (inl % (1 << 26)) << (29 - 26) 1571 out[2] = (inl >> 26) 1572 binary.Read(in, binary.LittleEndian, &inl) 1573 out[2] |= (inl % (1 << 23)) << (29 - 23) 1574 out[3] = (inl >> 23) 1575 binary.Read(in, binary.LittleEndian, &inl) 1576 out[3] |= (inl % (1 << 20)) << (29 - 20) 1577 out[4] = (inl >> 20) 1578 binary.Read(in, binary.LittleEndian, &inl) 1579 out[4] |= (inl % (1 << 17)) << (29 - 17) 1580 out[5] = (inl >> 17) 1581 binary.Read(in, binary.LittleEndian, &inl) 1582 out[5] |= (inl % (1 << 14)) << (29 - 14) 1583 out[6] = (inl >> 14) 1584 binary.Read(in, binary.LittleEndian, &inl) 1585 out[6] |= (inl % (1 << 11)) << (29 - 11) 1586 out[7] = (inl >> 11) 1587 binary.Read(in, binary.LittleEndian, &inl) 1588 out[7] |= (inl % (1 << 8)) << (29 - 8) 1589 out[8] = (inl >> 8) 1590 binary.Read(in, binary.LittleEndian, &inl) 1591 out[8] |= (inl % (1 << 5)) << (29 - 5) 1592 out[9] = (inl >> 5) 1593 binary.Read(in, binary.LittleEndian, &inl) 1594 out[9] |= (inl % (1 << 2)) << (29 - 2) 1595 out[10] = (inl >> 2) % (1 << 29) 1596 out[11] = (inl >> 31) 1597 binary.Read(in, binary.LittleEndian, &inl) 1598 out[11] |= (inl % (1 << 28)) << (29 - 28) 1599 out[12] = (inl >> 28) 1600 binary.Read(in, binary.LittleEndian, &inl) 1601 out[12] |= (inl % (1 << 25)) << (29 - 25) 1602 out[13] = (inl >> 25) 1603 binary.Read(in, binary.LittleEndian, &inl) 1604 out[13] |= (inl % (1 << 22)) << (29 - 22) 1605 out[14] = (inl >> 22) 1606 binary.Read(in, binary.LittleEndian, &inl) 1607 out[14] |= (inl % (1 << 19)) << (29 - 19) 1608 out[15] = (inl >> 19) 1609 binary.Read(in, binary.LittleEndian, &inl) 1610 out[15] |= (inl % (1 << 16)) << (29 - 16) 1611 out[16] = (inl >> 16) 1612 binary.Read(in, binary.LittleEndian, &inl) 1613 out[16] |= (inl % (1 << 13)) << (29 - 13) 1614 out[17] = (inl >> 13) 1615 binary.Read(in, binary.LittleEndian, &inl) 1616 out[17] |= (inl % (1 << 10)) << (29 - 10) 1617 out[18] = (inl >> 10) 1618 binary.Read(in, binary.LittleEndian, &inl) 1619 out[18] |= (inl % (1 << 7)) << (29 - 7) 1620 out[19] = (inl >> 7) 1621 binary.Read(in, binary.LittleEndian, &inl) 1622 out[19] |= (inl % (1 << 4)) << (29 - 4) 1623 out[20] = (inl >> 4) 1624 binary.Read(in, binary.LittleEndian, &inl) 1625 out[20] |= (inl % (1 << 1)) << (29 - 1) 1626 out[21] = (inl >> 1) % (1 << 29) 1627 out[22] = (inl >> 30) 1628 binary.Read(in, binary.LittleEndian, &inl) 1629 out[22] |= (inl % (1 << 27)) << (29 - 27) 1630 out[23] = (inl >> 27) 1631 binary.Read(in, binary.LittleEndian, &inl) 1632 out[23] |= (inl % (1 << 24)) << (29 - 24) 1633 out[24] = (inl >> 24) 1634 binary.Read(in, binary.LittleEndian, &inl) 1635 out[24] |= (inl % (1 << 21)) << (29 - 21) 1636 out[25] = (inl >> 21) 1637 binary.Read(in, binary.LittleEndian, &inl) 1638 out[25] |= (inl % (1 << 18)) << (29 - 18) 1639 out[26] = (inl >> 18) 1640 binary.Read(in, binary.LittleEndian, &inl) 1641 out[26] |= (inl % (1 << 15)) << (29 - 15) 1642 out[27] = (inl >> 15) 1643 binary.Read(in, binary.LittleEndian, &inl) 1644 out[27] |= (inl % (1 << 12)) << (29 - 12) 1645 out[28] = (inl >> 12) 1646 binary.Read(in, binary.LittleEndian, &inl) 1647 out[28] |= (inl % (1 << 9)) << (29 - 9) 1648 out[29] = (inl >> 9) 1649 binary.Read(in, binary.LittleEndian, &inl) 1650 out[29] |= (inl % (1 << 6)) << (29 - 6) 1651 out[30] = (inl >> 6) 1652 binary.Read(in, binary.LittleEndian, &inl) 1653 out[30] |= (inl % (1 << 3)) << (29 - 3) 1654 out[31] = (inl >> 3) 1655 } 1656 1657 func unpack30_32(in io.Reader, out []uint32) { 1658 var inl uint32 1659 binary.Read(in, binary.LittleEndian, &inl) 1660 out[0] = (inl >> 0) % (1 << 30) 1661 out[1] = (inl >> 30) 1662 binary.Read(in, binary.LittleEndian, &inl) 1663 out[1] |= (inl % (1 << 28)) << (30 - 28) 1664 out[2] = (inl >> 28) 1665 binary.Read(in, binary.LittleEndian, &inl) 1666 out[2] |= (inl % (1 << 26)) << (30 - 26) 1667 out[3] = (inl >> 26) 1668 binary.Read(in, binary.LittleEndian, &inl) 1669 out[3] |= (inl % (1 << 24)) << (30 - 24) 1670 out[4] = (inl >> 24) 1671 binary.Read(in, binary.LittleEndian, &inl) 1672 out[4] |= (inl % (1 << 22)) << (30 - 22) 1673 out[5] = (inl >> 22) 1674 binary.Read(in, binary.LittleEndian, &inl) 1675 out[5] |= (inl % (1 << 20)) << (30 - 20) 1676 out[6] = (inl >> 20) 1677 binary.Read(in, binary.LittleEndian, &inl) 1678 out[6] |= (inl % (1 << 18)) << (30 - 18) 1679 out[7] = (inl >> 18) 1680 binary.Read(in, binary.LittleEndian, &inl) 1681 out[7] |= (inl % (1 << 16)) << (30 - 16) 1682 out[8] = (inl >> 16) 1683 binary.Read(in, binary.LittleEndian, &inl) 1684 out[8] |= (inl % (1 << 14)) << (30 - 14) 1685 out[9] = (inl >> 14) 1686 binary.Read(in, binary.LittleEndian, &inl) 1687 out[9] |= (inl % (1 << 12)) << (30 - 12) 1688 out[10] = (inl >> 12) 1689 binary.Read(in, binary.LittleEndian, &inl) 1690 out[10] |= (inl % (1 << 10)) << (30 - 10) 1691 out[11] = (inl >> 10) 1692 binary.Read(in, binary.LittleEndian, &inl) 1693 out[11] |= (inl % (1 << 8)) << (30 - 8) 1694 out[12] = (inl >> 8) 1695 binary.Read(in, binary.LittleEndian, &inl) 1696 out[12] |= (inl % (1 << 6)) << (30 - 6) 1697 out[13] = (inl >> 6) 1698 binary.Read(in, binary.LittleEndian, &inl) 1699 out[13] |= (inl % (1 << 4)) << (30 - 4) 1700 out[14] = (inl >> 4) 1701 binary.Read(in, binary.LittleEndian, &inl) 1702 out[14] |= (inl % (1 << 2)) << (30 - 2) 1703 out[15] = (inl >> 2) 1704 binary.Read(in, binary.LittleEndian, &inl) 1705 out[16] = (inl >> 0) % (1 << 30) 1706 out[17] = (inl >> 30) 1707 binary.Read(in, binary.LittleEndian, &inl) 1708 out[17] |= (inl % (1 << 28)) << (30 - 28) 1709 out[18] = (inl >> 28) 1710 binary.Read(in, binary.LittleEndian, &inl) 1711 out[18] |= (inl % (1 << 26)) << (30 - 26) 1712 out[19] = (inl >> 26) 1713 binary.Read(in, binary.LittleEndian, &inl) 1714 out[19] |= (inl % (1 << 24)) << (30 - 24) 1715 out[20] = (inl >> 24) 1716 binary.Read(in, binary.LittleEndian, &inl) 1717 out[20] |= (inl % (1 << 22)) << (30 - 22) 1718 out[21] = (inl >> 22) 1719 binary.Read(in, binary.LittleEndian, &inl) 1720 out[21] |= (inl % (1 << 20)) << (30 - 20) 1721 out[22] = (inl >> 20) 1722 binary.Read(in, binary.LittleEndian, &inl) 1723 out[22] |= (inl % (1 << 18)) << (30 - 18) 1724 out[23] = (inl >> 18) 1725 binary.Read(in, binary.LittleEndian, &inl) 1726 out[23] |= (inl % (1 << 16)) << (30 - 16) 1727 out[24] = (inl >> 16) 1728 binary.Read(in, binary.LittleEndian, &inl) 1729 out[24] |= (inl % (1 << 14)) << (30 - 14) 1730 out[25] = (inl >> 14) 1731 binary.Read(in, binary.LittleEndian, &inl) 1732 out[25] |= (inl % (1 << 12)) << (30 - 12) 1733 out[26] = (inl >> 12) 1734 binary.Read(in, binary.LittleEndian, &inl) 1735 out[26] |= (inl % (1 << 10)) << (30 - 10) 1736 out[27] = (inl >> 10) 1737 binary.Read(in, binary.LittleEndian, &inl) 1738 out[27] |= (inl % (1 << 8)) << (30 - 8) 1739 out[28] = (inl >> 8) 1740 binary.Read(in, binary.LittleEndian, &inl) 1741 out[28] |= (inl % (1 << 6)) << (30 - 6) 1742 out[29] = (inl >> 6) 1743 binary.Read(in, binary.LittleEndian, &inl) 1744 out[29] |= (inl % (1 << 4)) << (30 - 4) 1745 out[30] = (inl >> 4) 1746 binary.Read(in, binary.LittleEndian, &inl) 1747 out[30] |= (inl % (1 << 2)) << (30 - 2) 1748 out[31] = (inl >> 2) 1749 } 1750 1751 func unpack31_32(in io.Reader, out []uint32) { 1752 var inl uint32 1753 binary.Read(in, binary.LittleEndian, &inl) 1754 out[0] = (inl >> 0) % (1 << 31) 1755 out[1] = (inl >> 31) 1756 binary.Read(in, binary.LittleEndian, &inl) 1757 out[1] |= (inl % (1 << 30)) << (31 - 30) 1758 out[2] = (inl >> 30) 1759 binary.Read(in, binary.LittleEndian, &inl) 1760 out[2] |= (inl % (1 << 29)) << (31 - 29) 1761 out[3] = (inl >> 29) 1762 binary.Read(in, binary.LittleEndian, &inl) 1763 out[3] |= (inl % (1 << 28)) << (31 - 28) 1764 out[4] = (inl >> 28) 1765 binary.Read(in, binary.LittleEndian, &inl) 1766 out[4] |= (inl % (1 << 27)) << (31 - 27) 1767 out[5] = (inl >> 27) 1768 binary.Read(in, binary.LittleEndian, &inl) 1769 out[5] |= (inl % (1 << 26)) << (31 - 26) 1770 out[6] = (inl >> 26) 1771 binary.Read(in, binary.LittleEndian, &inl) 1772 out[6] |= (inl % (1 << 25)) << (31 - 25) 1773 out[7] = (inl >> 25) 1774 binary.Read(in, binary.LittleEndian, &inl) 1775 out[7] |= (inl % (1 << 24)) << (31 - 24) 1776 out[8] = (inl >> 24) 1777 binary.Read(in, binary.LittleEndian, &inl) 1778 out[8] |= (inl % (1 << 23)) << (31 - 23) 1779 out[9] = (inl >> 23) 1780 binary.Read(in, binary.LittleEndian, &inl) 1781 out[9] |= (inl % (1 << 22)) << (31 - 22) 1782 out[10] = (inl >> 22) 1783 binary.Read(in, binary.LittleEndian, &inl) 1784 out[10] |= (inl % (1 << 21)) << (31 - 21) 1785 out[11] = (inl >> 21) 1786 binary.Read(in, binary.LittleEndian, &inl) 1787 out[11] |= (inl % (1 << 20)) << (31 - 20) 1788 out[12] = (inl >> 20) 1789 binary.Read(in, binary.LittleEndian, &inl) 1790 out[12] |= (inl % (1 << 19)) << (31 - 19) 1791 out[13] = (inl >> 19) 1792 binary.Read(in, binary.LittleEndian, &inl) 1793 out[13] |= (inl % (1 << 18)) << (31 - 18) 1794 out[14] = (inl >> 18) 1795 binary.Read(in, binary.LittleEndian, &inl) 1796 out[14] |= (inl % (1 << 17)) << (31 - 17) 1797 out[15] = (inl >> 17) 1798 binary.Read(in, binary.LittleEndian, &inl) 1799 out[15] |= (inl % (1 << 16)) << (31 - 16) 1800 out[16] = (inl >> 16) 1801 binary.Read(in, binary.LittleEndian, &inl) 1802 out[16] |= (inl % (1 << 15)) << (31 - 15) 1803 out[17] = (inl >> 15) 1804 binary.Read(in, binary.LittleEndian, &inl) 1805 out[17] |= (inl % (1 << 14)) << (31 - 14) 1806 out[18] = (inl >> 14) 1807 binary.Read(in, binary.LittleEndian, &inl) 1808 out[18] |= (inl % (1 << 13)) << (31 - 13) 1809 out[19] = (inl >> 13) 1810 binary.Read(in, binary.LittleEndian, &inl) 1811 out[19] |= (inl % (1 << 12)) << (31 - 12) 1812 out[20] = (inl >> 12) 1813 binary.Read(in, binary.LittleEndian, &inl) 1814 out[20] |= (inl % (1 << 11)) << (31 - 11) 1815 out[21] = (inl >> 11) 1816 binary.Read(in, binary.LittleEndian, &inl) 1817 out[21] |= (inl % (1 << 10)) << (31 - 10) 1818 out[22] = (inl >> 10) 1819 binary.Read(in, binary.LittleEndian, &inl) 1820 out[22] |= (inl % (1 << 9)) << (31 - 9) 1821 out[23] = (inl >> 9) 1822 binary.Read(in, binary.LittleEndian, &inl) 1823 out[23] |= (inl % (1 << 8)) << (31 - 8) 1824 out[24] = (inl >> 8) 1825 binary.Read(in, binary.LittleEndian, &inl) 1826 out[24] |= (inl % (1 << 7)) << (31 - 7) 1827 out[25] = (inl >> 7) 1828 binary.Read(in, binary.LittleEndian, &inl) 1829 out[25] |= (inl % (1 << 6)) << (31 - 6) 1830 out[26] = (inl >> 6) 1831 binary.Read(in, binary.LittleEndian, &inl) 1832 out[26] |= (inl % (1 << 5)) << (31 - 5) 1833 out[27] = (inl >> 5) 1834 binary.Read(in, binary.LittleEndian, &inl) 1835 out[27] |= (inl % (1 << 4)) << (31 - 4) 1836 out[28] = (inl >> 4) 1837 binary.Read(in, binary.LittleEndian, &inl) 1838 out[28] |= (inl % (1 << 3)) << (31 - 3) 1839 out[29] = (inl >> 3) 1840 binary.Read(in, binary.LittleEndian, &inl) 1841 out[29] |= (inl % (1 << 2)) << (31 - 2) 1842 out[30] = (inl >> 2) 1843 binary.Read(in, binary.LittleEndian, &inl) 1844 out[30] |= (inl % (1 << 1)) << (31 - 1) 1845 out[31] = (inl >> 1) 1846 } 1847 1848 func unpack32_32(in io.Reader, out []uint32) { 1849 for idx := range out[:32] { 1850 binary.Read(in, binary.LittleEndian, &out[idx]) 1851 } 1852 } 1853 1854 func nullunpack32(_ io.Reader, out []uint32) { 1855 out[0] = 0 1856 for i := 1; i < 32; i *= 2 { 1857 copy(out[i:], out[:i]) 1858 } 1859 } 1860 1861 func unpack32Default(in io.Reader, out []uint32, nbits int) int { 1862 batch := len(out) / 32 * 32 1863 nloops := batch / 32 1864 1865 var f unpackFunc 1866 switch nbits { 1867 case 0: 1868 f = nullunpack32 1869 case 1: 1870 f = unpack1_32 1871 case 2: 1872 f = unpack2_32 1873 case 3: 1874 f = unpack3_32 1875 case 4: 1876 f = unpack4_32 1877 case 5: 1878 f = unpack5_32 1879 case 6: 1880 f = unpack6_32 1881 case 7: 1882 f = unpack7_32 1883 case 8: 1884 f = unpack8_32 1885 case 9: 1886 f = unpack9_32 1887 case 10: 1888 f = unpack10_32 1889 case 11: 1890 f = unpack11_32 1891 case 12: 1892 f = unpack12_32 1893 case 13: 1894 f = unpack13_32 1895 case 14: 1896 f = unpack14_32 1897 case 15: 1898 f = unpack15_32 1899 case 16: 1900 f = unpack16_32 1901 case 17: 1902 f = unpack17_32 1903 case 18: 1904 f = unpack18_32 1905 case 19: 1906 f = unpack19_32 1907 case 20: 1908 f = unpack20_32 1909 case 21: 1910 f = unpack21_32 1911 case 22: 1912 f = unpack22_32 1913 case 23: 1914 f = unpack23_32 1915 case 24: 1916 f = unpack24_32 1917 case 25: 1918 f = unpack25_32 1919 case 26: 1920 f = unpack26_32 1921 case 27: 1922 f = unpack27_32 1923 case 28: 1924 f = unpack28_32 1925 case 29: 1926 f = unpack29_32 1927 case 30: 1928 f = unpack30_32 1929 case 31: 1930 f = unpack31_32 1931 case 32: 1932 f = unpack32_32 1933 default: 1934 return 0 1935 } 1936 1937 for i := 0; i < nloops; i++ { 1938 f(in, out[i*32:]) 1939 } 1940 return batch 1941 }