1 // Copyright 2023 gRPC authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // This file is autogenerated: see 16 // tools/codegen/core/gen_huffman_decompressor.cc 17 18 #ifndef GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_12_16_H 19 #define GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_12_16_H 20 #include <cstddef> 21 #include <cstdint> 22 23 #include <grpc/support/port_platform.h> 24 namespace grpc_core { 25 namespace geometry_12_16 { 26 class HuffDecoderCommon { 27 protected: GetOp2(size_t i)28 static inline uint64_t GetOp2(size_t i) { return table2_0_ops_[i]; } GetEmit2(size_t,size_t emit)29 static inline uint64_t GetEmit2(size_t, size_t emit) { 30 return table2_0_emit_[emit]; 31 } GetOp3(size_t i)32 static inline uint64_t GetOp3(size_t i) { return table3_0_ops_[i]; } GetEmit3(size_t,size_t emit)33 static inline uint64_t GetEmit3(size_t, size_t emit) { 34 return table3_0_emit_[emit]; 35 } GetOp4(size_t i)36 static inline uint64_t GetOp4(size_t i) { 37 return table4_ops_[i >> 6][i & 0x3f]; 38 } GetEmit4(size_t i,size_t emit)39 static inline uint64_t GetEmit4(size_t i, size_t emit) { 40 return table4_emit_[i >> 6][emit]; 41 } GetOp5(size_t i)42 static inline uint64_t GetOp5(size_t i) { 43 return table5_ops_[i >> 7][i & 0x7f]; 44 } GetEmit5(size_t i,size_t emit)45 static inline uint64_t GetEmit5(size_t i, size_t emit) { 46 return table5_emit_[i >> 7][emit]; 47 } GetOp6(size_t i)48 static inline uint64_t GetOp6(size_t i) { 49 return table6_ops_[i >> 5][i & 0x1f]; 50 } GetEmit6(size_t i,size_t emit)51 static inline uint64_t GetEmit6(size_t i, size_t emit) { 52 return table6_emit_[i >> 5][emit]; 53 } GetOp7(size_t i)54 static inline uint64_t GetOp7(size_t i) { 55 return table7_ops_[i >> 6][i & 0x3f]; 56 } GetEmit7(size_t i,size_t emit)57 static inline uint64_t GetEmit7(size_t i, size_t emit) { 58 return table7_emit_[i >> 6][emit]; 59 } GetOp8(size_t i)60 static inline uint64_t GetOp8(size_t i) { 61 return table8_inner_[i >> 6][table8_outer_[i >> 6][i & 0x3f]]; 62 } GetEmit8(size_t i,size_t emit)63 static inline uint64_t GetEmit8(size_t i, size_t emit) { 64 return table8_emit_[i >> 6][emit]; 65 } GetOp1(size_t i)66 static inline uint64_t GetOp1(size_t i) { 67 return table1_inner_[i >> 7][table1_outer_[i >> 7][i & 0x7f]]; 68 } GetEmit1(size_t i,size_t emit)69 static inline uint64_t GetEmit1(size_t i, size_t emit) { 70 return table1_emit_[i >> 7][emit]; 71 } GetOp9(size_t i)72 static inline uint64_t GetOp9(size_t i) { return i ? 3 : 1; } GetEmit9(size_t,size_t emit)73 static inline uint64_t GetEmit9(size_t, size_t emit) { return emit ? 36 : 0; } GetOp10(size_t i)74 static inline uint64_t GetOp10(size_t i) { return i ? 3 : 1; } GetEmit10(size_t,size_t emit)75 static inline uint64_t GetEmit10(size_t, size_t emit) { 76 return emit ? 91 : 64; 77 } GetOp11(size_t i)78 static inline uint64_t GetOp11(size_t i) { return i ? 3 : 1; } GetEmit11(size_t,size_t emit)79 static inline uint64_t GetEmit11(size_t, size_t emit) { 80 return emit ? 126 : 93; 81 } GetOp13(size_t i)82 static inline uint64_t GetOp13(size_t i) { 83 return (i < 2 ? (i ? 4 : 0) : ((i - 2) + 1)); 84 } GetEmit13(size_t,size_t emit)85 static inline uint64_t GetEmit13(size_t, size_t emit) { 86 return emit ? 125 : 94; 87 } GetOp14(size_t i)88 static inline uint64_t GetOp14(size_t i) { 89 return table14_0_inner_[table14_0_outer_[i]]; 90 } GetEmit14(size_t,size_t emit)91 static inline uint64_t GetEmit14(size_t, size_t emit) { 92 return table14_0_emit_[emit]; 93 } GetOp15(size_t i)94 static inline uint64_t GetOp15(size_t i) { 95 return table14_0_inner_[table15_0_outer_[i]]; 96 } GetEmit15(size_t,size_t emit)97 static inline uint64_t GetEmit15(size_t, size_t emit) { 98 return table14_0_emit_[emit]; 99 } GetOp16(size_t i)100 static inline uint64_t GetOp16(size_t i) { return table16_0_ops_[i]; } GetEmit16(size_t,size_t emit)101 static inline uint64_t GetEmit16(size_t, size_t emit) { 102 return table14_0_emit_[emit]; 103 } GetOp17(size_t i)104 static inline uint64_t GetOp17(size_t i) { return table17_0_ops_[i]; } GetEmit17(size_t,size_t emit)105 static inline uint64_t GetEmit17(size_t, size_t emit) { 106 return table14_0_emit_[emit]; 107 } GetOp18(size_t i)108 static inline uint64_t GetOp18(size_t i) { return table18_0_ops_[i]; } GetEmit18(size_t,size_t emit)109 static inline uint64_t GetEmit18(size_t, size_t emit) { 110 return table18_0_emit_[emit]; 111 } GetOp19(size_t i)112 static inline uint64_t GetOp19(size_t i) { 113 return table19_ops_[i >> 5][i & 0x1f]; 114 } GetEmit19(size_t i,size_t emit)115 static inline uint64_t GetEmit19(size_t i, size_t emit) { 116 return table19_emit_[i >> 5][emit]; 117 } GetOp20(size_t i)118 static inline uint64_t GetOp20(size_t i) { 119 return table20_ops_[i >> 6][i & 0x3f]; 120 } GetEmit20(size_t i,size_t emit)121 static inline uint64_t GetEmit20(size_t i, size_t emit) { 122 return table20_emit_[i >> 6][emit]; 123 } GetOp21(size_t i)124 static inline uint64_t GetOp21(size_t i) { 125 return table21_ops_[i >> 7][i & 0x7f]; 126 } GetEmit21(size_t i,size_t emit)127 static inline uint64_t GetEmit21(size_t i, size_t emit) { 128 return table21_emit_[i >> 7][emit]; 129 } GetOp22(size_t i)130 static inline uint64_t GetOp22(size_t i) { 131 return table22_ops_[i >> 7][i & 0x7f]; 132 } GetEmit22(size_t i,size_t emit)133 static inline uint64_t GetEmit22(size_t i, size_t emit) { 134 return table22_emit_[i >> 7][emit]; 135 } GetOp23(size_t i)136 static inline uint64_t GetOp23(size_t i) { 137 return table23_ops_[i >> 6][i & 0x3f]; 138 } GetEmit23(size_t i,size_t emit)139 static inline uint64_t GetEmit23(size_t i, size_t emit) { 140 return table23_emit_[i >> 6][emit]; 141 } GetOp24(size_t i)142 static inline uint64_t GetOp24(size_t i) { 143 return table24_ops_[i >> 6][i & 0x3f]; 144 } GetEmit24(size_t i,size_t emit)145 static inline uint64_t GetEmit24(size_t i, size_t emit) { 146 return table24_emit_[i >> 6][emit]; 147 } GetOp25(size_t i)148 static inline uint64_t GetOp25(size_t i) { 149 return table25_ops_[i >> 7][i & 0x7f]; 150 } GetEmit25(size_t i,size_t emit)151 static inline uint64_t GetEmit25(size_t i, size_t emit) { 152 return table25_emit_[i >> 7][emit]; 153 } GetOp26(size_t i)154 static inline uint64_t GetOp26(size_t i) { 155 return table26_inner_[i >> 7][table26_outer_[i >> 7][i & 0x7f]]; 156 } GetEmit26(size_t i,size_t emit)157 static inline uint64_t GetEmit26(size_t i, size_t emit) { 158 return table26_emit_[i >> 7][emit]; 159 } GetOp12(size_t i)160 static inline uint64_t GetOp12(size_t i) { 161 return table12_ops_[i >> 8][i & 0xff]; 162 } GetEmit12(size_t i,size_t emit)163 static inline uint64_t GetEmit12(size_t i, size_t emit) { 164 return table12_emit_[i >> 8][emit]; 165 } GetOp27(size_t i)166 static inline uint64_t GetOp27(size_t i) { 167 return (i < 2 ? (i ? 10 : 2) : ((i - 2) ? 6 : 18)); 168 } GetEmit27(size_t,size_t emit)169 static inline uint64_t GetEmit27(size_t, size_t emit) { 170 return (emit < 1 ? (((void)emit, 10)) : ((emit - 1) ? 22 : 13)); 171 } 172 173 private: 174 static const uint8_t table2_0_emit_[10]; 175 static const uint8_t table2_0_ops_[32]; 176 static const uint8_t table3_0_emit_[36]; 177 static const uint8_t table3_0_ops_[64]; 178 static const uint8_t table4_0_emit_[22]; 179 static const uint8_t table4_0_ops_[64]; 180 static const uint8_t table4_1_emit_[46]; 181 static const uint8_t table4_1_ops_[64]; 182 static const uint8_t* const table4_emit_[2]; 183 static const uint8_t* const table4_ops_[2]; 184 static const uint8_t table5_0_ops_[128]; 185 static const uint8_t table5_1_emit_[52]; 186 static const uint8_t table5_1_ops_[128]; 187 static const uint8_t* const table5_emit_[2]; 188 static const uint8_t* const table5_ops_[2]; 189 static const uint8_t table6_0_emit_[2]; 190 static const uint8_t table6_0_ops_[32]; 191 static const uint8_t table6_1_emit_[2]; 192 static const uint8_t table6_2_emit_[2]; 193 static const uint8_t table6_3_emit_[2]; 194 static const uint8_t table6_4_emit_[2]; 195 static const uint8_t table6_5_emit_[4]; 196 static const uint8_t table6_5_ops_[32]; 197 static const uint8_t table6_6_emit_[4]; 198 static const uint8_t table6_7_emit_[4]; 199 static const uint8_t table6_8_emit_[4]; 200 static const uint8_t table6_9_emit_[4]; 201 static const uint8_t table6_10_emit_[4]; 202 static const uint8_t table6_11_emit_[6]; 203 static const uint8_t table6_11_ops_[32]; 204 static const uint8_t table6_12_emit_[8]; 205 static const uint8_t table6_12_ops_[32]; 206 static const uint8_t table6_13_emit_[8]; 207 static const uint8_t table6_14_emit_[8]; 208 static const uint8_t table6_15_emit_[10]; 209 static const uint8_t table6_15_ops_[32]; 210 static const uint8_t* const table6_emit_[16]; 211 static const uint8_t* const table6_ops_[16]; 212 static const uint8_t table7_0_emit_[36]; 213 static const uint8_t table7_0_ops_[64]; 214 static const uint8_t table7_1_emit_[36]; 215 static const uint8_t table7_1_ops_[64]; 216 static const uint8_t table7_2_emit_[36]; 217 static const uint8_t table7_2_ops_[64]; 218 static const uint8_t table7_3_emit_[36]; 219 static const uint8_t table7_3_ops_[64]; 220 static const uint8_t table7_4_emit_[38]; 221 static const uint8_t table7_4_ops_[64]; 222 static const uint8_t table7_5_ops_[64]; 223 static const uint8_t table7_11_ops_[64]; 224 static const uint8_t table7_12_ops_[64]; 225 static const uint8_t table7_15_emit_[15]; 226 static const uint8_t table7_15_ops_[64]; 227 static const uint8_t* const table7_emit_[16]; 228 static const uint8_t* const table7_ops_[16]; 229 static const uint8_t table8_0_emit_[71]; 230 static const uint16_t table8_0_inner_[38]; 231 static const uint8_t table8_0_outer_[64]; 232 static const uint8_t table8_1_emit_[71]; 233 static const uint16_t table8_1_inner_[38]; 234 static const uint8_t table8_2_emit_[71]; 235 static const uint16_t table8_2_inner_[38]; 236 static const uint8_t table8_3_emit_[71]; 237 static const uint16_t table8_3_inner_[38]; 238 static const uint8_t table8_4_emit_[71]; 239 static const uint16_t table8_4_inner_[38]; 240 static const uint8_t table8_5_emit_[71]; 241 static const uint16_t table8_5_inner_[38]; 242 static const uint8_t table8_6_emit_[71]; 243 static const uint16_t table8_6_inner_[38]; 244 static const uint8_t table8_7_emit_[71]; 245 static const uint16_t table8_7_inner_[38]; 246 static const uint8_t table8_8_emit_[71]; 247 static const uint16_t table8_8_inner_[38]; 248 static const uint8_t table8_9_emit_[71]; 249 static const uint16_t table8_9_inner_[38]; 250 static const uint8_t table8_10_emit_[40]; 251 static const uint16_t table8_10_inner_[23]; 252 static const uint8_t table8_10_outer_[64]; 253 static const uint8_t table8_11_emit_[40]; 254 static const uint8_t table8_12_emit_[40]; 255 static const uint8_t table8_13_emit_[40]; 256 static const uint8_t table8_14_emit_[40]; 257 static const uint8_t table8_15_emit_[40]; 258 static const uint8_t table8_16_emit_[40]; 259 static const uint8_t table8_17_emit_[40]; 260 static const uint8_t table8_18_emit_[40]; 261 static const uint8_t table8_19_emit_[40]; 262 static const uint8_t table8_20_emit_[40]; 263 static const uint8_t table8_21_emit_[40]; 264 static const uint8_t table8_22_emit_[40]; 265 static const uint8_t table8_23_emit_[4]; 266 static const uint16_t table8_23_inner_[5]; 267 static const uint8_t table8_23_outer_[64]; 268 static const uint8_t table8_24_emit_[4]; 269 static const uint8_t table8_25_emit_[4]; 270 static const uint8_t table8_26_emit_[4]; 271 static const uint8_t table8_27_emit_[4]; 272 static const uint8_t table8_28_emit_[4]; 273 static const uint8_t table8_29_emit_[4]; 274 static const uint8_t table8_30_emit_[4]; 275 static const uint8_t table8_31_emit_[14]; 276 static const uint16_t table8_31_inner_[16]; 277 static const uint8_t table8_31_outer_[64]; 278 static const uint8_t* const table8_emit_[32]; 279 static const uint16_t* const table8_inner_[32]; 280 static const uint8_t* const table8_outer_[32]; 281 static const uint8_t table1_0_emit_[135]; 282 static const uint16_t table1_0_inner_[69]; 283 static const uint8_t table1_0_outer_[128]; 284 static const uint8_t table1_1_emit_[135]; 285 static const uint16_t table1_1_inner_[69]; 286 static const uint8_t table1_2_emit_[135]; 287 static const uint16_t table1_2_inner_[69]; 288 static const uint8_t table1_3_emit_[135]; 289 static const uint16_t table1_3_inner_[69]; 290 static const uint8_t table1_4_emit_[135]; 291 static const uint16_t table1_4_inner_[69]; 292 static const uint8_t table1_5_emit_[135]; 293 static const uint16_t table1_5_inner_[69]; 294 static const uint8_t table1_6_emit_[135]; 295 static const uint16_t table1_6_inner_[69]; 296 static const uint8_t table1_7_emit_[135]; 297 static const uint16_t table1_7_inner_[69]; 298 static const uint8_t table1_8_emit_[135]; 299 static const uint16_t table1_8_inner_[69]; 300 static const uint8_t table1_9_emit_[135]; 301 static const uint16_t table1_9_inner_[69]; 302 static const uint8_t table1_10_emit_[140]; 303 static const uint16_t table1_10_inner_[74]; 304 static const uint8_t table1_10_outer_[128]; 305 static const uint8_t table1_11_emit_[140]; 306 static const uint16_t table1_11_inner_[74]; 307 static const uint8_t table1_12_emit_[140]; 308 static const uint16_t table1_12_inner_[74]; 309 static const uint8_t table1_13_emit_[140]; 310 static const uint16_t table1_13_inner_[74]; 311 static const uint8_t table1_14_emit_[140]; 312 static const uint16_t table1_14_inner_[74]; 313 static const uint8_t table1_15_emit_[140]; 314 static const uint16_t table1_15_inner_[74]; 315 static const uint8_t table1_16_emit_[140]; 316 static const uint16_t table1_16_inner_[74]; 317 static const uint8_t table1_17_emit_[140]; 318 static const uint16_t table1_17_inner_[74]; 319 static const uint8_t table1_18_emit_[140]; 320 static const uint16_t table1_18_inner_[74]; 321 static const uint8_t table1_19_emit_[140]; 322 static const uint16_t table1_19_inner_[74]; 323 static const uint8_t table1_20_emit_[140]; 324 static const uint16_t table1_20_inner_[74]; 325 static const uint8_t table1_21_emit_[140]; 326 static const uint16_t table1_21_inner_[74]; 327 static const uint8_t table1_22_emit_[142]; 328 static const uint16_t table1_22_inner_[74]; 329 static const uint8_t table1_23_emit_[80]; 330 static const uint16_t table1_23_inner_[44]; 331 static const uint8_t table1_23_outer_[128]; 332 static const uint8_t table1_24_emit_[80]; 333 static const uint8_t table1_25_emit_[80]; 334 static const uint8_t table1_26_emit_[80]; 335 static const uint8_t table1_27_emit_[80]; 336 static const uint8_t table1_28_emit_[80]; 337 static const uint8_t table1_29_emit_[80]; 338 static const uint8_t table1_30_emit_[80]; 339 static const uint8_t table1_31_emit_[16]; 340 static const uint16_t table1_31_inner_[20]; 341 static const uint8_t table1_31_outer_[128]; 342 static const uint8_t* const table1_emit_[32]; 343 static const uint16_t* const table1_inner_[32]; 344 static const uint8_t* const table1_outer_[32]; 345 static const uint8_t table14_0_emit_[5]; 346 static const uint8_t table14_0_inner_[7]; 347 static const uint8_t table14_0_outer_[8]; 348 static const uint8_t table15_0_outer_[16]; 349 static const uint8_t table16_0_ops_[32]; 350 static const uint8_t table17_0_ops_[64]; 351 static const uint8_t table18_0_emit_[46]; 352 static const uint8_t table18_0_ops_[128]; 353 static const uint8_t table19_0_emit_[44]; 354 static const uint8_t table19_0_ops_[32]; 355 static const uint8_t table19_1_emit_[28]; 356 static const uint8_t table19_1_ops_[32]; 357 static const uint8_t table19_2_emit_[44]; 358 static const uint8_t table19_3_emit_[28]; 359 static const uint8_t table19_4_emit_[20]; 360 static const uint8_t table19_4_ops_[32]; 361 static const uint8_t table19_5_emit_[20]; 362 static const uint8_t table19_6_emit_[20]; 363 static const uint8_t table19_7_emit_[11]; 364 static const uint8_t table19_7_ops_[32]; 365 static const uint8_t* const table19_emit_[8]; 366 static const uint8_t* const table19_ops_[8]; 367 static const uint16_t table20_0_ops_[64]; 368 static const uint8_t table20_1_emit_[92]; 369 static const uint16_t table20_1_ops_[64]; 370 static const uint8_t table20_3_emit_[92]; 371 static const uint8_t table20_4_emit_[72]; 372 static const uint16_t table20_4_ops_[64]; 373 static const uint8_t table20_5_emit_[72]; 374 static const uint8_t table20_6_emit_[72]; 375 static const uint8_t table20_7_emit_[24]; 376 static const uint16_t table20_7_ops_[64]; 377 static const uint8_t* const table20_emit_[8]; 378 static const uint16_t* const table20_ops_[8]; 379 static const uint16_t table21_0_ops_[128]; 380 static const uint8_t table21_1_emit_[104]; 381 static const uint16_t table21_1_ops_[128]; 382 static const uint8_t table21_3_emit_[104]; 383 static const uint8_t table21_4_emit_[136]; 384 static const uint16_t table21_4_ops_[128]; 385 static const uint8_t table21_5_emit_[136]; 386 static const uint8_t table21_6_emit_[136]; 387 static const uint8_t table21_7_emit_[50]; 388 static const uint16_t table21_7_ops_[128]; 389 static const uint8_t* const table21_emit_[8]; 390 static const uint16_t* const table21_ops_[8]; 391 static const uint8_t table22_0_emit_[16]; 392 static const uint16_t table22_0_ops_[128]; 393 static const uint8_t table22_1_emit_[28]; 394 static const uint16_t table22_1_ops_[128]; 395 static const uint8_t table22_2_emit_[36]; 396 static const uint16_t table22_2_ops_[128]; 397 static const uint8_t table22_3_emit_[68]; 398 static const uint16_t table22_3_ops_[128]; 399 static const uint8_t table22_4_emit_[16]; 400 static const uint8_t table22_5_emit_[28]; 401 static const uint8_t table22_6_emit_[36]; 402 static const uint8_t table22_7_emit_[68]; 403 static const uint8_t table22_8_emit_[44]; 404 static const uint8_t table22_9_emit_[104]; 405 static const uint8_t table22_10_emit_[44]; 406 static const uint8_t table22_11_emit_[104]; 407 static const uint8_t table22_12_emit_[44]; 408 static const uint8_t table22_13_emit_[104]; 409 static const uint8_t table22_14_emit_[15]; 410 static const uint16_t table22_14_ops_[128]; 411 static const uint8_t table22_15_emit_[64]; 412 static const uint16_t table22_15_ops_[128]; 413 static const uint8_t* const table22_emit_[16]; 414 static const uint16_t* const table22_ops_[16]; 415 static const uint8_t table23_0_emit_[60]; 416 static const uint16_t table23_0_ops_[64]; 417 static const uint8_t table23_1_emit_[60]; 418 static const uint8_t table23_2_emit_[60]; 419 static const uint8_t table23_3_emit_[60]; 420 static const uint8_t table23_4_emit_[60]; 421 static const uint8_t table23_5_emit_[8]; 422 static const uint16_t table23_5_ops_[64]; 423 static const uint8_t table23_6_emit_[8]; 424 static const uint8_t table23_7_emit_[8]; 425 static const uint8_t table23_8_emit_[8]; 426 static const uint8_t table23_9_emit_[8]; 427 static const uint8_t table23_10_emit_[8]; 428 static const uint8_t table23_11_emit_[12]; 429 static const uint16_t table23_11_ops_[64]; 430 static const uint8_t table23_12_emit_[16]; 431 static const uint16_t table23_12_ops_[64]; 432 static const uint8_t table23_13_emit_[16]; 433 static const uint8_t table23_14_emit_[16]; 434 static const uint8_t table23_15_emit_[30]; 435 static const uint16_t table23_15_ops_[64]; 436 static const uint8_t table23_16_emit_[60]; 437 static const uint8_t table23_17_emit_[60]; 438 static const uint8_t table23_18_emit_[60]; 439 static const uint8_t table23_19_emit_[60]; 440 static const uint8_t table23_20_emit_[60]; 441 static const uint8_t table23_21_emit_[8]; 442 static const uint8_t table23_22_emit_[8]; 443 static const uint8_t table23_23_emit_[8]; 444 static const uint8_t table23_24_emit_[8]; 445 static const uint8_t table23_25_emit_[8]; 446 static const uint8_t table23_26_emit_[8]; 447 static const uint8_t table23_27_emit_[12]; 448 static const uint8_t table23_28_emit_[16]; 449 static const uint8_t table23_29_emit_[16]; 450 static const uint8_t table23_30_emit_[16]; 451 static const uint8_t table23_31_emit_[30]; 452 static const uint8_t table23_32_emit_[8]; 453 static const uint8_t table23_33_emit_[8]; 454 static const uint8_t table23_34_emit_[12]; 455 static const uint8_t table23_35_emit_[16]; 456 static const uint8_t table23_36_emit_[16]; 457 static const uint8_t table23_37_emit_[20]; 458 static const uint16_t table23_37_ops_[64]; 459 static const uint8_t table23_38_emit_[32]; 460 static const uint16_t table23_38_ops_[64]; 461 static const uint8_t table23_39_emit_[36]; 462 static const uint16_t table23_39_ops_[64]; 463 static const uint8_t table23_40_emit_[8]; 464 static const uint8_t table23_41_emit_[8]; 465 static const uint8_t table23_42_emit_[12]; 466 static const uint8_t table23_43_emit_[16]; 467 static const uint8_t table23_44_emit_[16]; 468 static const uint8_t table23_45_emit_[20]; 469 static const uint8_t table23_46_emit_[32]; 470 static const uint8_t table23_47_emit_[36]; 471 static const uint8_t table23_48_emit_[8]; 472 static const uint8_t table23_49_emit_[8]; 473 static const uint8_t table23_50_emit_[12]; 474 static const uint8_t table23_51_emit_[16]; 475 static const uint8_t table23_52_emit_[16]; 476 static const uint8_t table23_53_emit_[20]; 477 static const uint8_t table23_54_emit_[32]; 478 static const uint8_t table23_55_emit_[36]; 479 static const uint8_t table23_56_emit_[40]; 480 static const uint16_t table23_56_ops_[64]; 481 static const uint8_t table23_57_emit_[22]; 482 static const uint16_t table23_57_ops_[64]; 483 static const uint8_t table23_58_emit_[4]; 484 static const uint16_t table23_58_ops_[64]; 485 static const uint8_t table23_59_emit_[6]; 486 static const uint16_t table23_59_ops_[64]; 487 static const uint8_t table23_60_emit_[8]; 488 static const uint16_t table23_60_ops_[64]; 489 static const uint8_t table23_61_emit_[15]; 490 static const uint16_t table23_61_ops_[64]; 491 static const uint8_t table23_62_emit_[20]; 492 static const uint16_t table23_62_ops_[64]; 493 static const uint8_t table23_63_emit_[33]; 494 static const uint16_t table23_63_ops_[64]; 495 static const uint8_t* const table23_emit_[64]; 496 static const uint16_t* const table23_ops_[64]; 497 static const uint8_t table24_0_emit_[108]; 498 static const uint16_t table24_0_ops_[64]; 499 static const uint8_t table24_1_emit_[108]; 500 static const uint8_t table24_2_emit_[108]; 501 static const uint8_t table24_3_emit_[108]; 502 static const uint8_t table24_4_emit_[108]; 503 static const uint8_t table24_5_emit_[108]; 504 static const uint8_t table24_6_emit_[108]; 505 static const uint8_t table24_7_emit_[108]; 506 static const uint8_t table24_8_emit_[108]; 507 static const uint8_t table24_9_emit_[108]; 508 static const uint8_t table24_10_emit_[60]; 509 static const uint16_t table24_10_ops_[64]; 510 static const uint8_t table24_11_emit_[60]; 511 static const uint8_t table24_12_emit_[60]; 512 static const uint8_t table24_13_emit_[60]; 513 static const uint8_t table24_14_emit_[60]; 514 static const uint8_t table24_15_emit_[60]; 515 static const uint8_t table24_16_emit_[60]; 516 static const uint8_t table24_17_emit_[60]; 517 static const uint8_t table24_18_emit_[60]; 518 static const uint8_t table24_19_emit_[60]; 519 static const uint8_t table24_20_emit_[60]; 520 static const uint8_t table24_21_emit_[60]; 521 static const uint8_t table24_22_emit_[60]; 522 static const uint8_t table24_23_emit_[8]; 523 static const uint16_t table24_23_ops_[64]; 524 static const uint8_t table24_24_emit_[8]; 525 static const uint8_t table24_25_emit_[8]; 526 static const uint8_t table24_26_emit_[8]; 527 static const uint8_t table24_27_emit_[8]; 528 static const uint8_t table24_28_emit_[8]; 529 static const uint8_t table24_29_emit_[8]; 530 static const uint8_t table24_30_emit_[8]; 531 static const uint8_t table24_31_emit_[28]; 532 static const uint16_t table24_31_ops_[64]; 533 static const uint8_t table24_32_emit_[108]; 534 static const uint8_t table24_33_emit_[108]; 535 static const uint8_t table24_34_emit_[108]; 536 static const uint8_t table24_35_emit_[108]; 537 static const uint8_t table24_36_emit_[108]; 538 static const uint8_t table24_37_emit_[108]; 539 static const uint8_t table24_38_emit_[108]; 540 static const uint8_t table24_39_emit_[108]; 541 static const uint8_t table24_40_emit_[108]; 542 static const uint8_t table24_41_emit_[108]; 543 static const uint8_t table24_42_emit_[60]; 544 static const uint8_t table24_43_emit_[60]; 545 static const uint8_t table24_44_emit_[60]; 546 static const uint8_t table24_45_emit_[60]; 547 static const uint8_t table24_46_emit_[60]; 548 static const uint8_t table24_47_emit_[60]; 549 static const uint8_t table24_48_emit_[60]; 550 static const uint8_t table24_49_emit_[60]; 551 static const uint8_t table24_50_emit_[60]; 552 static const uint8_t table24_51_emit_[60]; 553 static const uint8_t table24_52_emit_[60]; 554 static const uint8_t table24_53_emit_[60]; 555 static const uint8_t table24_54_emit_[60]; 556 static const uint8_t table24_55_emit_[8]; 557 static const uint8_t table24_56_emit_[8]; 558 static const uint8_t table24_57_emit_[8]; 559 static const uint8_t table24_58_emit_[8]; 560 static const uint8_t table24_59_emit_[8]; 561 static const uint8_t table24_60_emit_[8]; 562 static const uint8_t table24_61_emit_[8]; 563 static const uint8_t table24_62_emit_[8]; 564 static const uint8_t table24_63_emit_[28]; 565 static const uint8_t table24_64_emit_[60]; 566 static const uint8_t table24_65_emit_[60]; 567 static const uint8_t table24_66_emit_[60]; 568 static const uint8_t table24_67_emit_[60]; 569 static const uint8_t table24_68_emit_[60]; 570 static const uint8_t table24_69_emit_[8]; 571 static const uint8_t table24_70_emit_[8]; 572 static const uint8_t table24_71_emit_[8]; 573 static const uint8_t table24_72_emit_[8]; 574 static const uint8_t table24_73_emit_[8]; 575 static const uint8_t table24_74_emit_[8]; 576 static const uint8_t table24_75_emit_[12]; 577 static const uint16_t table24_75_ops_[64]; 578 static const uint8_t table24_76_emit_[16]; 579 static const uint16_t table24_76_ops_[64]; 580 static const uint8_t table24_77_emit_[16]; 581 static const uint8_t table24_78_emit_[16]; 582 static const uint8_t table24_79_emit_[30]; 583 static const uint16_t table24_79_ops_[64]; 584 static const uint8_t table24_80_emit_[60]; 585 static const uint8_t table24_81_emit_[60]; 586 static const uint8_t table24_82_emit_[60]; 587 static const uint8_t table24_83_emit_[60]; 588 static const uint8_t table24_84_emit_[60]; 589 static const uint8_t table24_85_emit_[8]; 590 static const uint8_t table24_86_emit_[8]; 591 static const uint8_t table24_87_emit_[8]; 592 static const uint8_t table24_88_emit_[8]; 593 static const uint8_t table24_89_emit_[8]; 594 static const uint8_t table24_90_emit_[8]; 595 static const uint8_t table24_91_emit_[12]; 596 static const uint8_t table24_92_emit_[16]; 597 static const uint8_t table24_93_emit_[16]; 598 static const uint8_t table24_94_emit_[16]; 599 static const uint8_t table24_95_emit_[30]; 600 static const uint8_t table24_96_emit_[60]; 601 static const uint8_t table24_97_emit_[60]; 602 static const uint8_t table24_98_emit_[60]; 603 static const uint8_t table24_99_emit_[60]; 604 static const uint8_t table24_100_emit_[60]; 605 static const uint8_t table24_101_emit_[8]; 606 static const uint8_t table24_102_emit_[8]; 607 static const uint8_t table24_103_emit_[8]; 608 static const uint8_t table24_104_emit_[8]; 609 static const uint8_t table24_105_emit_[8]; 610 static const uint8_t table24_106_emit_[8]; 611 static const uint8_t table24_107_emit_[12]; 612 static const uint8_t table24_108_emit_[16]; 613 static const uint8_t table24_109_emit_[16]; 614 static const uint8_t table24_110_emit_[16]; 615 static const uint8_t table24_111_emit_[30]; 616 static const uint8_t table24_112_emit_[72]; 617 static const uint16_t table24_112_ops_[64]; 618 static const uint8_t table24_113_emit_[72]; 619 static const uint8_t table24_114_emit_[72]; 620 static const uint8_t table24_115_emit_[40]; 621 static const uint16_t table24_115_ops_[64]; 622 static const uint8_t table24_116_emit_[40]; 623 static const uint8_t table24_117_emit_[40]; 624 static const uint8_t table24_118_emit_[40]; 625 static const uint8_t table24_119_emit_[4]; 626 static const uint16_t table24_119_ops_[64]; 627 static const uint8_t table24_120_emit_[4]; 628 static const uint8_t table24_121_emit_[4]; 629 static const uint8_t table24_122_emit_[7]; 630 static const uint16_t table24_122_ops_[64]; 631 static const uint8_t table24_123_emit_[8]; 632 static const uint16_t table24_123_ops_[64]; 633 static const uint8_t table24_124_emit_[8]; 634 static const uint8_t table24_125_emit_[12]; 635 static const uint16_t table24_125_ops_[64]; 636 static const uint8_t table24_126_emit_[16]; 637 static const uint16_t table24_126_ops_[64]; 638 static const uint8_t table24_127_emit_[21]; 639 static const uint16_t table24_127_ops_[64]; 640 static const uint8_t* const table24_emit_[128]; 641 static const uint16_t* const table24_ops_[128]; 642 static const uint8_t table25_0_emit_[204]; 643 static const uint16_t table25_0_ops_[128]; 644 static const uint8_t table25_1_emit_[204]; 645 static const uint8_t table25_2_emit_[204]; 646 static const uint8_t table25_3_emit_[204]; 647 static const uint8_t table25_4_emit_[204]; 648 static const uint8_t table25_5_emit_[204]; 649 static const uint8_t table25_6_emit_[204]; 650 static const uint8_t table25_7_emit_[204]; 651 static const uint8_t table25_8_emit_[204]; 652 static const uint8_t table25_9_emit_[204]; 653 static const uint8_t table25_10_emit_[216]; 654 static const uint16_t table25_10_ops_[128]; 655 static const uint8_t table25_11_emit_[216]; 656 static const uint8_t table25_12_emit_[216]; 657 static const uint8_t table25_13_emit_[216]; 658 static const uint8_t table25_14_emit_[216]; 659 static const uint8_t table25_15_emit_[216]; 660 static const uint8_t table25_16_emit_[216]; 661 static const uint8_t table25_17_emit_[216]; 662 static const uint8_t table25_18_emit_[216]; 663 static const uint8_t table25_19_emit_[216]; 664 static const uint8_t table25_20_emit_[216]; 665 static const uint8_t table25_21_emit_[216]; 666 static const uint8_t table25_22_emit_[216]; 667 static const uint8_t table25_23_emit_[120]; 668 static const uint16_t table25_23_ops_[128]; 669 static const uint8_t table25_24_emit_[120]; 670 static const uint8_t table25_25_emit_[120]; 671 static const uint8_t table25_26_emit_[120]; 672 static const uint8_t table25_27_emit_[120]; 673 static const uint8_t table25_28_emit_[120]; 674 static const uint8_t table25_29_emit_[120]; 675 static const uint8_t table25_30_emit_[120]; 676 static const uint8_t table25_31_emit_[32]; 677 static const uint16_t table25_31_ops_[128]; 678 static const uint8_t table25_32_emit_[204]; 679 static const uint8_t table25_33_emit_[204]; 680 static const uint8_t table25_34_emit_[204]; 681 static const uint8_t table25_35_emit_[204]; 682 static const uint8_t table25_36_emit_[204]; 683 static const uint8_t table25_37_emit_[204]; 684 static const uint8_t table25_38_emit_[204]; 685 static const uint8_t table25_39_emit_[204]; 686 static const uint8_t table25_40_emit_[204]; 687 static const uint8_t table25_41_emit_[204]; 688 static const uint8_t table25_42_emit_[216]; 689 static const uint8_t table25_43_emit_[216]; 690 static const uint8_t table25_44_emit_[216]; 691 static const uint8_t table25_45_emit_[216]; 692 static const uint8_t table25_46_emit_[216]; 693 static const uint8_t table25_47_emit_[216]; 694 static const uint8_t table25_48_emit_[216]; 695 static const uint8_t table25_49_emit_[216]; 696 static const uint8_t table25_50_emit_[216]; 697 static const uint8_t table25_51_emit_[216]; 698 static const uint8_t table25_52_emit_[216]; 699 static const uint8_t table25_53_emit_[216]; 700 static const uint8_t table25_54_emit_[216]; 701 static const uint8_t table25_55_emit_[120]; 702 static const uint8_t table25_56_emit_[120]; 703 static const uint8_t table25_57_emit_[120]; 704 static const uint8_t table25_58_emit_[120]; 705 static const uint8_t table25_59_emit_[120]; 706 static const uint8_t table25_60_emit_[120]; 707 static const uint8_t table25_61_emit_[120]; 708 static const uint8_t table25_62_emit_[120]; 709 static const uint8_t table25_63_emit_[32]; 710 static const uint8_t table25_64_emit_[216]; 711 static const uint8_t table25_65_emit_[216]; 712 static const uint8_t table25_66_emit_[216]; 713 static const uint8_t table25_67_emit_[216]; 714 static const uint8_t table25_68_emit_[216]; 715 static const uint8_t table25_69_emit_[120]; 716 static const uint8_t table25_70_emit_[120]; 717 static const uint8_t table25_71_emit_[120]; 718 static const uint8_t table25_72_emit_[120]; 719 static const uint8_t table25_73_emit_[120]; 720 static const uint8_t table25_74_emit_[120]; 721 static const uint8_t table25_75_emit_[68]; 722 static const uint16_t table25_75_ops_[128]; 723 static const uint16_t table25_76_ops_[128]; 724 static const uint8_t table25_79_emit_[36]; 725 static const uint16_t table25_79_ops_[128]; 726 static const uint8_t table25_80_emit_[216]; 727 static const uint8_t table25_81_emit_[216]; 728 static const uint8_t table25_82_emit_[216]; 729 static const uint8_t table25_83_emit_[216]; 730 static const uint8_t table25_84_emit_[216]; 731 static const uint8_t table25_85_emit_[120]; 732 static const uint8_t table25_86_emit_[120]; 733 static const uint8_t table25_87_emit_[120]; 734 static const uint8_t table25_88_emit_[120]; 735 static const uint8_t table25_89_emit_[120]; 736 static const uint8_t table25_90_emit_[120]; 737 static const uint8_t table25_91_emit_[68]; 738 static const uint8_t table25_95_emit_[36]; 739 static const uint8_t table25_96_emit_[216]; 740 static const uint8_t table25_97_emit_[216]; 741 static const uint8_t table25_98_emit_[216]; 742 static const uint8_t table25_99_emit_[216]; 743 static const uint8_t table25_100_emit_[216]; 744 static const uint8_t table25_101_emit_[120]; 745 static const uint8_t table25_102_emit_[120]; 746 static const uint8_t table25_103_emit_[120]; 747 static const uint8_t table25_104_emit_[120]; 748 static const uint8_t table25_105_emit_[120]; 749 static const uint8_t table25_106_emit_[120]; 750 static const uint8_t table25_107_emit_[68]; 751 static const uint8_t table25_111_emit_[36]; 752 static const uint8_t table25_112_emit_[136]; 753 static const uint16_t table25_112_ops_[128]; 754 static const uint8_t table25_113_emit_[136]; 755 static const uint8_t table25_114_emit_[136]; 756 static const uint8_t table25_115_emit_[144]; 757 static const uint16_t table25_115_ops_[128]; 758 static const uint8_t table25_116_emit_[144]; 759 static const uint8_t table25_117_emit_[144]; 760 static const uint8_t table25_118_emit_[144]; 761 static const uint8_t table25_119_emit_[80]; 762 static const uint16_t table25_119_ops_[128]; 763 static const uint8_t table25_120_emit_[80]; 764 static const uint8_t table25_121_emit_[80]; 765 static const uint8_t table25_122_emit_[26]; 766 static const uint16_t table25_122_ops_[128]; 767 static const uint16_t table25_123_ops_[128]; 768 static const uint16_t table25_125_ops_[128]; 769 static const uint16_t table25_126_ops_[128]; 770 static const uint8_t table25_127_emit_[36]; 771 static const uint16_t table25_127_ops_[128]; 772 static const uint8_t* const table25_emit_[128]; 773 static const uint16_t* const table25_ops_[128]; 774 static const uint8_t table26_0_emit_[66]; 775 static const uint16_t table26_0_inner_[23]; 776 static const uint8_t table26_0_outer_[128]; 777 static const uint8_t table26_1_emit_[156]; 778 static const uint16_t table26_1_inner_[54]; 779 static const uint8_t table26_1_outer_[128]; 780 static const uint8_t table26_2_emit_[66]; 781 static const uint8_t table26_3_emit_[156]; 782 static const uint8_t table26_4_emit_[66]; 783 static const uint8_t table26_5_emit_[156]; 784 static const uint8_t table26_6_emit_[66]; 785 static const uint8_t table26_7_emit_[156]; 786 static const uint8_t table26_8_emit_[66]; 787 static const uint8_t table26_9_emit_[156]; 788 static const uint8_t table26_10_emit_[66]; 789 static const uint8_t table26_11_emit_[156]; 790 static const uint8_t table26_12_emit_[66]; 791 static const uint8_t table26_13_emit_[156]; 792 static const uint8_t table26_14_emit_[66]; 793 static const uint8_t table26_15_emit_[156]; 794 static const uint8_t table26_16_emit_[66]; 795 static const uint8_t table26_17_emit_[156]; 796 static const uint8_t table26_18_emit_[66]; 797 static const uint8_t table26_19_emit_[156]; 798 static const uint8_t table26_20_emit_[204]; 799 static const uint16_t table26_20_inner_[70]; 800 static const uint8_t table26_20_outer_[128]; 801 static const uint8_t table26_21_emit_[204]; 802 static const uint8_t table26_22_emit_[204]; 803 static const uint8_t table26_23_emit_[204]; 804 static const uint8_t table26_24_emit_[204]; 805 static const uint8_t table26_25_emit_[204]; 806 static const uint8_t table26_26_emit_[204]; 807 static const uint8_t table26_27_emit_[204]; 808 static const uint8_t table26_28_emit_[204]; 809 static const uint8_t table26_29_emit_[204]; 810 static const uint8_t table26_30_emit_[204]; 811 static const uint8_t table26_31_emit_[204]; 812 static const uint8_t table26_32_emit_[204]; 813 static const uint8_t table26_33_emit_[204]; 814 static const uint8_t table26_34_emit_[204]; 815 static const uint8_t table26_35_emit_[204]; 816 static const uint8_t table26_36_emit_[204]; 817 static const uint8_t table26_37_emit_[204]; 818 static const uint8_t table26_38_emit_[204]; 819 static const uint8_t table26_39_emit_[204]; 820 static const uint8_t table26_40_emit_[204]; 821 static const uint8_t table26_41_emit_[204]; 822 static const uint8_t table26_42_emit_[204]; 823 static const uint8_t table26_43_emit_[204]; 824 static const uint8_t table26_44_emit_[204]; 825 static const uint8_t table26_45_emit_[204]; 826 static const uint8_t table26_46_emit_[216]; 827 static const uint16_t table26_46_inner_[75]; 828 static const uint8_t table26_46_outer_[128]; 829 static const uint8_t table26_47_emit_[216]; 830 static const uint8_t table26_48_emit_[216]; 831 static const uint8_t table26_49_emit_[216]; 832 static const uint8_t table26_50_emit_[216]; 833 static const uint8_t table26_51_emit_[216]; 834 static const uint8_t table26_52_emit_[216]; 835 static const uint8_t table26_53_emit_[216]; 836 static const uint8_t table26_54_emit_[216]; 837 static const uint8_t table26_55_emit_[216]; 838 static const uint8_t table26_56_emit_[216]; 839 static const uint8_t table26_57_emit_[216]; 840 static const uint8_t table26_58_emit_[216]; 841 static const uint8_t table26_59_emit_[216]; 842 static const uint8_t table26_60_emit_[216]; 843 static const uint8_t table26_61_emit_[216]; 844 static const uint8_t table26_62_emit_[120]; 845 static const uint16_t table26_62_inner_[45]; 846 static const uint8_t table26_62_outer_[128]; 847 static const uint8_t table26_63_emit_[92]; 848 static const uint16_t table26_63_inner_[40]; 849 static const uint8_t table26_63_outer_[128]; 850 static const uint8_t table26_64_emit_[66]; 851 static const uint8_t table26_65_emit_[156]; 852 static const uint8_t table26_66_emit_[66]; 853 static const uint8_t table26_67_emit_[156]; 854 static const uint8_t table26_68_emit_[66]; 855 static const uint8_t table26_69_emit_[156]; 856 static const uint8_t table26_70_emit_[66]; 857 static const uint8_t table26_71_emit_[156]; 858 static const uint8_t table26_72_emit_[66]; 859 static const uint8_t table26_73_emit_[156]; 860 static const uint8_t table26_74_emit_[66]; 861 static const uint8_t table26_75_emit_[156]; 862 static const uint8_t table26_76_emit_[66]; 863 static const uint8_t table26_77_emit_[156]; 864 static const uint8_t table26_78_emit_[66]; 865 static const uint8_t table26_79_emit_[156]; 866 static const uint8_t table26_80_emit_[66]; 867 static const uint8_t table26_81_emit_[156]; 868 static const uint8_t table26_82_emit_[66]; 869 static const uint8_t table26_83_emit_[156]; 870 static const uint8_t table26_84_emit_[204]; 871 static const uint8_t table26_85_emit_[204]; 872 static const uint8_t table26_86_emit_[204]; 873 static const uint8_t table26_87_emit_[204]; 874 static const uint8_t table26_88_emit_[204]; 875 static const uint8_t table26_89_emit_[204]; 876 static const uint8_t table26_90_emit_[204]; 877 static const uint8_t table26_91_emit_[204]; 878 static const uint8_t table26_92_emit_[204]; 879 static const uint8_t table26_93_emit_[204]; 880 static const uint8_t table26_94_emit_[204]; 881 static const uint8_t table26_95_emit_[204]; 882 static const uint8_t table26_96_emit_[204]; 883 static const uint8_t table26_97_emit_[204]; 884 static const uint8_t table26_98_emit_[204]; 885 static const uint8_t table26_99_emit_[204]; 886 static const uint8_t table26_100_emit_[204]; 887 static const uint8_t table26_101_emit_[204]; 888 static const uint8_t table26_102_emit_[204]; 889 static const uint8_t table26_103_emit_[204]; 890 static const uint8_t table26_104_emit_[204]; 891 static const uint8_t table26_105_emit_[204]; 892 static const uint8_t table26_106_emit_[204]; 893 static const uint8_t table26_107_emit_[204]; 894 static const uint8_t table26_108_emit_[204]; 895 static const uint8_t table26_109_emit_[204]; 896 static const uint8_t table26_110_emit_[216]; 897 static const uint8_t table26_111_emit_[216]; 898 static const uint8_t table26_112_emit_[216]; 899 static const uint8_t table26_113_emit_[216]; 900 static const uint8_t table26_114_emit_[216]; 901 static const uint8_t table26_115_emit_[216]; 902 static const uint8_t table26_116_emit_[216]; 903 static const uint8_t table26_117_emit_[216]; 904 static const uint8_t table26_118_emit_[216]; 905 static const uint8_t table26_119_emit_[216]; 906 static const uint8_t table26_120_emit_[216]; 907 static const uint8_t table26_121_emit_[216]; 908 static const uint8_t table26_122_emit_[216]; 909 static const uint8_t table26_123_emit_[216]; 910 static const uint8_t table26_124_emit_[216]; 911 static const uint8_t table26_125_emit_[216]; 912 static const uint8_t table26_126_emit_[120]; 913 static const uint8_t table26_127_emit_[92]; 914 static const uint8_t table26_128_emit_[204]; 915 static const uint8_t table26_129_emit_[204]; 916 static const uint8_t table26_130_emit_[204]; 917 static const uint8_t table26_131_emit_[204]; 918 static const uint8_t table26_132_emit_[204]; 919 static const uint8_t table26_133_emit_[204]; 920 static const uint8_t table26_134_emit_[204]; 921 static const uint8_t table26_135_emit_[204]; 922 static const uint8_t table26_136_emit_[204]; 923 static const uint8_t table26_137_emit_[204]; 924 static const uint8_t table26_138_emit_[216]; 925 static const uint8_t table26_139_emit_[216]; 926 static const uint8_t table26_140_emit_[216]; 927 static const uint8_t table26_141_emit_[216]; 928 static const uint8_t table26_142_emit_[216]; 929 static const uint8_t table26_143_emit_[216]; 930 static const uint8_t table26_144_emit_[216]; 931 static const uint8_t table26_145_emit_[216]; 932 static const uint8_t table26_146_emit_[216]; 933 static const uint8_t table26_147_emit_[216]; 934 static const uint8_t table26_148_emit_[216]; 935 static const uint8_t table26_149_emit_[216]; 936 static const uint8_t table26_150_emit_[216]; 937 static const uint8_t table26_151_emit_[120]; 938 static const uint8_t table26_152_emit_[120]; 939 static const uint8_t table26_153_emit_[120]; 940 static const uint8_t table26_154_emit_[120]; 941 static const uint8_t table26_155_emit_[120]; 942 static const uint8_t table26_156_emit_[120]; 943 static const uint8_t table26_157_emit_[120]; 944 static const uint8_t table26_158_emit_[120]; 945 static const uint8_t table26_159_emit_[32]; 946 static const uint16_t table26_159_inner_[18]; 947 static const uint8_t table26_159_outer_[128]; 948 static const uint8_t table26_160_emit_[204]; 949 static const uint8_t table26_161_emit_[204]; 950 static const uint8_t table26_162_emit_[204]; 951 static const uint8_t table26_163_emit_[204]; 952 static const uint8_t table26_164_emit_[204]; 953 static const uint8_t table26_165_emit_[204]; 954 static const uint8_t table26_166_emit_[204]; 955 static const uint8_t table26_167_emit_[204]; 956 static const uint8_t table26_168_emit_[204]; 957 static const uint8_t table26_169_emit_[204]; 958 static const uint8_t table26_170_emit_[216]; 959 static const uint8_t table26_171_emit_[216]; 960 static const uint8_t table26_172_emit_[216]; 961 static const uint8_t table26_173_emit_[216]; 962 static const uint8_t table26_174_emit_[216]; 963 static const uint8_t table26_175_emit_[216]; 964 static const uint8_t table26_176_emit_[216]; 965 static const uint8_t table26_177_emit_[216]; 966 static const uint8_t table26_178_emit_[216]; 967 static const uint8_t table26_179_emit_[216]; 968 static const uint8_t table26_180_emit_[216]; 969 static const uint8_t table26_181_emit_[216]; 970 static const uint8_t table26_182_emit_[216]; 971 static const uint8_t table26_183_emit_[120]; 972 static const uint8_t table26_184_emit_[120]; 973 static const uint8_t table26_185_emit_[120]; 974 static const uint8_t table26_186_emit_[120]; 975 static const uint8_t table26_187_emit_[120]; 976 static const uint8_t table26_188_emit_[120]; 977 static const uint8_t table26_189_emit_[120]; 978 static const uint8_t table26_190_emit_[120]; 979 static const uint8_t table26_191_emit_[32]; 980 static const uint8_t table26_192_emit_[204]; 981 static const uint8_t table26_193_emit_[204]; 982 static const uint8_t table26_194_emit_[204]; 983 static const uint8_t table26_195_emit_[204]; 984 static const uint8_t table26_196_emit_[204]; 985 static const uint8_t table26_197_emit_[204]; 986 static const uint8_t table26_198_emit_[204]; 987 static const uint8_t table26_199_emit_[204]; 988 static const uint8_t table26_200_emit_[204]; 989 static const uint8_t table26_201_emit_[204]; 990 static const uint8_t table26_202_emit_[216]; 991 static const uint8_t table26_203_emit_[216]; 992 static const uint8_t table26_204_emit_[216]; 993 static const uint8_t table26_205_emit_[216]; 994 static const uint8_t table26_206_emit_[216]; 995 static const uint8_t table26_207_emit_[216]; 996 static const uint8_t table26_208_emit_[216]; 997 static const uint8_t table26_209_emit_[216]; 998 static const uint8_t table26_210_emit_[216]; 999 static const uint8_t table26_211_emit_[216]; 1000 static const uint8_t table26_212_emit_[216]; 1001 static const uint8_t table26_213_emit_[216]; 1002 static const uint8_t table26_214_emit_[216]; 1003 static const uint8_t table26_215_emit_[120]; 1004 static const uint8_t table26_216_emit_[120]; 1005 static const uint8_t table26_217_emit_[120]; 1006 static const uint8_t table26_218_emit_[120]; 1007 static const uint8_t table26_219_emit_[120]; 1008 static const uint8_t table26_220_emit_[120]; 1009 static const uint8_t table26_221_emit_[120]; 1010 static const uint8_t table26_222_emit_[120]; 1011 static const uint8_t table26_223_emit_[32]; 1012 static const uint8_t table26_224_emit_[44]; 1013 static const uint16_t table26_224_inner_[23]; 1014 static const uint8_t table26_225_emit_[104]; 1015 static const uint16_t table26_225_inner_[54]; 1016 static const uint8_t table26_226_emit_[44]; 1017 static const uint8_t table26_227_emit_[104]; 1018 static const uint8_t table26_228_emit_[44]; 1019 static const uint8_t table26_229_emit_[104]; 1020 static const uint8_t table26_230_emit_[136]; 1021 static const uint16_t table26_230_inner_[70]; 1022 static const uint8_t table26_231_emit_[136]; 1023 static const uint8_t table26_232_emit_[136]; 1024 static const uint8_t table26_233_emit_[136]; 1025 static const uint8_t table26_234_emit_[136]; 1026 static const uint8_t table26_235_emit_[136]; 1027 static const uint8_t table26_236_emit_[136]; 1028 static const uint8_t table26_237_emit_[136]; 1029 static const uint8_t table26_238_emit_[144]; 1030 static const uint16_t table26_238_inner_[75]; 1031 static const uint8_t table26_239_emit_[144]; 1032 static const uint8_t table26_240_emit_[144]; 1033 static const uint8_t table26_241_emit_[144]; 1034 static const uint8_t table26_242_emit_[144]; 1035 static const uint8_t table26_243_emit_[144]; 1036 static const uint8_t table26_244_emit_[112]; 1037 static const uint16_t table26_244_inner_[60]; 1038 static const uint8_t table26_244_outer_[128]; 1039 static const uint8_t table26_245_emit_[80]; 1040 static const uint16_t table26_245_inner_[45]; 1041 static const uint8_t table26_246_emit_[80]; 1042 static const uint8_t table26_247_emit_[80]; 1043 static const uint8_t table26_248_emit_[80]; 1044 static const uint8_t table26_249_emit_[80]; 1045 static const uint8_t table26_250_emit_[80]; 1046 static const uint8_t table26_251_emit_[8]; 1047 static const uint16_t table26_251_inner_[9]; 1048 static const uint8_t table26_251_outer_[128]; 1049 static const uint8_t table26_252_emit_[8]; 1050 static const uint8_t table26_253_emit_[8]; 1051 static const uint8_t table26_254_emit_[11]; 1052 static const uint16_t table26_254_inner_[12]; 1053 static const uint8_t table26_254_outer_[128]; 1054 static const uint8_t table26_255_emit_[44]; 1055 static const uint16_t table26_255_inner_[46]; 1056 static const uint8_t table26_255_outer_[128]; 1057 static const uint8_t* const table26_emit_[256]; 1058 static const uint16_t* const table26_inner_[256]; 1059 static const uint8_t* const table26_outer_[256]; 1060 static const uint8_t table12_0_emit_[1]; 1061 static const uint16_t table12_0_ops_[256]; 1062 static const uint8_t table12_64_emit_[1]; 1063 static const uint8_t table12_128_emit_[1]; 1064 static const uint16_t table12_128_ops_[256]; 1065 static const uint8_t table12_160_emit_[1]; 1066 static const uint8_t table12_192_emit_[1]; 1067 static const uint8_t table12_224_emit_[1]; 1068 static const uint16_t table12_224_ops_[256]; 1069 static const uint8_t table12_226_emit_[1]; 1070 static const uint8_t table12_228_emit_[1]; 1071 static const uint8_t table12_230_emit_[1]; 1072 static const uint16_t table12_230_ops_[256]; 1073 static const uint8_t table12_231_emit_[1]; 1074 static const uint8_t table12_232_emit_[1]; 1075 static const uint8_t table12_233_emit_[1]; 1076 static const uint8_t table12_234_emit_[1]; 1077 static const uint8_t table12_235_emit_[1]; 1078 static const uint8_t table12_236_emit_[1]; 1079 static const uint8_t table12_237_emit_[1]; 1080 static const uint8_t table12_238_emit_[2]; 1081 static const uint16_t table12_238_ops_[256]; 1082 static const uint8_t table12_239_emit_[2]; 1083 static const uint8_t table12_240_emit_[2]; 1084 static const uint8_t table12_241_emit_[2]; 1085 static const uint8_t table12_242_emit_[2]; 1086 static const uint8_t table12_243_emit_[2]; 1087 static const uint8_t table12_244_emit_[3]; 1088 static const uint16_t table12_244_ops_[256]; 1089 static const uint8_t table12_245_emit_[4]; 1090 static const uint16_t table12_245_ops_[256]; 1091 static const uint8_t table12_246_emit_[4]; 1092 static const uint8_t table12_247_emit_[4]; 1093 static const uint8_t table12_248_emit_[4]; 1094 static const uint8_t table12_249_emit_[4]; 1095 static const uint8_t table12_250_emit_[4]; 1096 static const uint16_t table12_251_ops_[256]; 1097 static const uint16_t table12_254_ops_[256]; 1098 static const uint8_t table12_255_emit_[73]; 1099 static const uint16_t table12_255_ops_[256]; 1100 static const uint8_t* const table12_emit_[256]; 1101 static const uint16_t* const table12_ops_[256]; 1102 }; 1103 template <typename F> 1104 class HuffDecoder : public HuffDecoderCommon { 1105 public: HuffDecoder(F sink,const uint8_t * begin,const uint8_t * end)1106 HuffDecoder(F sink, const uint8_t* begin, const uint8_t* end) 1107 : sink_(sink), begin_(begin), end_(end) {} Run()1108 bool Run() { 1109 while (!done_) { 1110 if (!RefillTo12()) { 1111 Done0(); 1112 break; 1113 } 1114 const auto index = (buffer_ >> (buffer_len_ - 12)) & 0xfff; 1115 const auto op = GetOp1(index); 1116 const int consumed = op & 15; 1117 buffer_len_ -= consumed; 1118 const auto emit_ofs = op >> 7; 1119 switch ((op >> 4) & 7) { 1120 case 0: { 1121 sink_(GetEmit1(index, emit_ofs + 0)); 1122 sink_(GetEmit1(index, emit_ofs + 1)); 1123 break; 1124 } 1125 case 1: { 1126 sink_(GetEmit1(index, emit_ofs + 0)); 1127 break; 1128 } 1129 case 2: { 1130 DecodeStep0(); 1131 break; 1132 } 1133 case 3: { 1134 DecodeStep1(); 1135 break; 1136 } 1137 case 4: { 1138 DecodeStep2(); 1139 break; 1140 } 1141 case 5: { 1142 DecodeStep3(); 1143 break; 1144 } 1145 } 1146 } 1147 return ok_; 1148 } 1149 1150 private: RefillTo12()1151 bool RefillTo12() { 1152 switch (buffer_len_) { 1153 case 0: { 1154 return Read2to8Bytes(); 1155 } 1156 case 1: 1157 case 2: 1158 case 3: { 1159 return Read2to7Bytes(); 1160 } 1161 case 4: 1162 case 5: 1163 case 6: 1164 case 7: 1165 case 8: { 1166 return Read1to7Bytes(); 1167 } 1168 case 9: 1169 case 10: 1170 case 11: { 1171 return Read1to6Bytes(); 1172 } 1173 } 1174 return true; 1175 } Read2to8Bytes()1176 bool Read2to8Bytes() { 1177 switch (end_ - begin_) { 1178 case 0: 1179 case 1: { 1180 return false; 1181 } 1182 case 2: { 1183 Fill2(); 1184 return true; 1185 } 1186 case 3: { 1187 Fill3(); 1188 return true; 1189 } 1190 case 4: { 1191 Fill4(); 1192 return true; 1193 } 1194 case 5: { 1195 Fill5(); 1196 return true; 1197 } 1198 case 6: { 1199 Fill6(); 1200 return true; 1201 } 1202 case 7: { 1203 Fill7(); 1204 return true; 1205 } 1206 default: { 1207 Fill8(); 1208 return true; 1209 } 1210 } 1211 } Fill2()1212 void Fill2() { 1213 buffer_ = (buffer_ << 16) | (static_cast<uint64_t>(begin_[0]) << 8) | 1214 (static_cast<uint64_t>(begin_[1]) << 0); 1215 begin_ += 2; 1216 buffer_len_ += 16; 1217 } Fill3()1218 void Fill3() { 1219 buffer_ = (buffer_ << 24) | (static_cast<uint64_t>(begin_[0]) << 16) | 1220 (static_cast<uint64_t>(begin_[1]) << 8) | 1221 (static_cast<uint64_t>(begin_[2]) << 0); 1222 begin_ += 3; 1223 buffer_len_ += 24; 1224 } Fill4()1225 void Fill4() { 1226 buffer_ = (buffer_ << 32) | (static_cast<uint64_t>(begin_[0]) << 24) | 1227 (static_cast<uint64_t>(begin_[1]) << 16) | 1228 (static_cast<uint64_t>(begin_[2]) << 8) | 1229 (static_cast<uint64_t>(begin_[3]) << 0); 1230 begin_ += 4; 1231 buffer_len_ += 32; 1232 } Fill5()1233 void Fill5() { 1234 buffer_ = (buffer_ << 40) | (static_cast<uint64_t>(begin_[0]) << 32) | 1235 (static_cast<uint64_t>(begin_[1]) << 24) | 1236 (static_cast<uint64_t>(begin_[2]) << 16) | 1237 (static_cast<uint64_t>(begin_[3]) << 8) | 1238 (static_cast<uint64_t>(begin_[4]) << 0); 1239 begin_ += 5; 1240 buffer_len_ += 40; 1241 } Fill6()1242 void Fill6() { 1243 buffer_ = (buffer_ << 48) | (static_cast<uint64_t>(begin_[0]) << 40) | 1244 (static_cast<uint64_t>(begin_[1]) << 32) | 1245 (static_cast<uint64_t>(begin_[2]) << 24) | 1246 (static_cast<uint64_t>(begin_[3]) << 16) | 1247 (static_cast<uint64_t>(begin_[4]) << 8) | 1248 (static_cast<uint64_t>(begin_[5]) << 0); 1249 begin_ += 6; 1250 buffer_len_ += 48; 1251 } Fill7()1252 void Fill7() { 1253 buffer_ = (buffer_ << 56) | (static_cast<uint64_t>(begin_[0]) << 48) | 1254 (static_cast<uint64_t>(begin_[1]) << 40) | 1255 (static_cast<uint64_t>(begin_[2]) << 32) | 1256 (static_cast<uint64_t>(begin_[3]) << 24) | 1257 (static_cast<uint64_t>(begin_[4]) << 16) | 1258 (static_cast<uint64_t>(begin_[5]) << 8) | 1259 (static_cast<uint64_t>(begin_[6]) << 0); 1260 begin_ += 7; 1261 buffer_len_ += 56; 1262 } Fill8()1263 void Fill8() { 1264 buffer_ = 0 | (static_cast<uint64_t>(begin_[0]) << 56) | 1265 (static_cast<uint64_t>(begin_[1]) << 48) | 1266 (static_cast<uint64_t>(begin_[2]) << 40) | 1267 (static_cast<uint64_t>(begin_[3]) << 32) | 1268 (static_cast<uint64_t>(begin_[4]) << 24) | 1269 (static_cast<uint64_t>(begin_[5]) << 16) | 1270 (static_cast<uint64_t>(begin_[6]) << 8) | 1271 (static_cast<uint64_t>(begin_[7]) << 0); 1272 begin_ += 8; 1273 buffer_len_ += 64; 1274 } Read2to7Bytes()1275 bool Read2to7Bytes() { 1276 switch (end_ - begin_) { 1277 case 0: 1278 case 1: { 1279 return false; 1280 } 1281 case 2: { 1282 Fill2(); 1283 return true; 1284 } 1285 case 3: { 1286 Fill3(); 1287 return true; 1288 } 1289 case 4: { 1290 Fill4(); 1291 return true; 1292 } 1293 case 5: { 1294 Fill5(); 1295 return true; 1296 } 1297 case 6: { 1298 Fill6(); 1299 return true; 1300 } 1301 default: { 1302 Fill7(); 1303 return true; 1304 } 1305 } 1306 } Read1to7Bytes()1307 bool Read1to7Bytes() { 1308 switch (end_ - begin_) { 1309 case 0: { 1310 return false; 1311 } 1312 case 1: { 1313 Fill1(); 1314 return true; 1315 } 1316 case 2: { 1317 Fill2(); 1318 return true; 1319 } 1320 case 3: { 1321 Fill3(); 1322 return true; 1323 } 1324 case 4: { 1325 Fill4(); 1326 return true; 1327 } 1328 case 5: { 1329 Fill5(); 1330 return true; 1331 } 1332 case 6: { 1333 Fill6(); 1334 return true; 1335 } 1336 default: { 1337 Fill7(); 1338 return true; 1339 } 1340 } 1341 } Fill1()1342 void Fill1() { 1343 buffer_ = (buffer_ << 8) | (static_cast<uint64_t>(begin_[0]) << 0); 1344 begin_ += 1; 1345 buffer_len_ += 8; 1346 } Read1to6Bytes()1347 bool Read1to6Bytes() { 1348 switch (end_ - begin_) { 1349 case 0: { 1350 return false; 1351 } 1352 case 1: { 1353 Fill1(); 1354 return true; 1355 } 1356 case 2: { 1357 Fill2(); 1358 return true; 1359 } 1360 case 3: { 1361 Fill3(); 1362 return true; 1363 } 1364 case 4: { 1365 Fill4(); 1366 return true; 1367 } 1368 case 5: { 1369 Fill5(); 1370 return true; 1371 } 1372 default: { 1373 Fill6(); 1374 return true; 1375 } 1376 } 1377 } Done0()1378 void Done0() { 1379 done_ = true; 1380 switch (end_ - begin_) { 1381 case 1: { 1382 Fill1(); 1383 break; 1384 } 1385 } 1386 switch (buffer_len_) { 1387 case 1: 1388 case 2: 1389 case 3: 1390 case 4: { 1391 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1392 return; 1393 } 1394 case 5: { 1395 const auto index = buffer_ & 31; 1396 const auto op = GetOp2(index); 1397 switch (op & 3) { 1398 case 0: { 1399 sink_(GetEmit2(index, (op >> 2) + 0)); 1400 break; 1401 } 1402 case 1: { 1403 ok_ = false; 1404 break; 1405 } 1406 } 1407 return; 1408 } 1409 case 6: { 1410 const auto index = buffer_ & 63; 1411 const auto op = GetOp3(index); 1412 switch (op & 3) { 1413 case 0: { 1414 ok_ = false; 1415 break; 1416 } 1417 case 1: { 1418 sink_(GetEmit3(index, (op >> 2) + 0)); 1419 break; 1420 } 1421 } 1422 return; 1423 } 1424 case 7: { 1425 const auto index = buffer_ & 127; 1426 const auto op = GetOp4(index); 1427 switch (op & 3) { 1428 case 0: { 1429 ok_ = false; 1430 break; 1431 } 1432 case 1: { 1433 sink_(GetEmit4(index, (op >> 2) + 0)); 1434 break; 1435 } 1436 } 1437 return; 1438 } 1439 case 8: { 1440 const auto index = buffer_ & 255; 1441 const auto op = GetOp5(index); 1442 switch (op & 3) { 1443 case 0: { 1444 ok_ = false; 1445 break; 1446 } 1447 case 1: { 1448 sink_(GetEmit5(index, (op >> 2) + 0)); 1449 break; 1450 } 1451 } 1452 return; 1453 } 1454 case 9: { 1455 const auto index = buffer_ & 511; 1456 const auto op = GetOp6(index); 1457 switch (op & 3) { 1458 case 0: { 1459 ok_ = false; 1460 break; 1461 } 1462 case 1: { 1463 sink_(GetEmit6(index, (op >> 2) + 0)); 1464 break; 1465 } 1466 } 1467 return; 1468 } 1469 case 10: { 1470 const auto index = buffer_ & 1023; 1471 const auto op = GetOp7(index); 1472 switch (op & 3) { 1473 case 0: { 1474 sink_(GetEmit7(index, (op >> 2) + 0)); 1475 sink_(GetEmit7(index, (op >> 2) + 1)); 1476 break; 1477 } 1478 case 1: { 1479 ok_ = false; 1480 break; 1481 } 1482 case 2: { 1483 sink_(GetEmit7(index, (op >> 2) + 0)); 1484 break; 1485 } 1486 } 1487 return; 1488 } 1489 case 11: { 1490 const auto index = buffer_ & 2047; 1491 const auto op = GetOp8(index); 1492 switch (op & 3) { 1493 case 0: { 1494 ok_ = false; 1495 break; 1496 } 1497 case 1: { 1498 sink_(GetEmit8(index, (op >> 2) + 0)); 1499 sink_(GetEmit8(index, (op >> 2) + 1)); 1500 break; 1501 } 1502 case 2: { 1503 sink_(GetEmit8(index, (op >> 2) + 0)); 1504 break; 1505 } 1506 } 1507 return; 1508 } 1509 case 0: { 1510 return; 1511 } 1512 } 1513 } DecodeStep0()1514 void DecodeStep0() { 1515 if (!RefillTo1()) { 1516 Done1(); 1517 return; 1518 } 1519 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1520 const auto op = GetOp9(index); 1521 const int consumed = op & 1; 1522 buffer_len_ -= consumed; 1523 const auto emit_ofs = op >> 1; 1524 sink_(GetEmit9(index, emit_ofs + 0)); 1525 } RefillTo1()1526 bool RefillTo1() { 1527 switch (buffer_len_) { 1528 case 0: { 1529 return Read1to8Bytes(); 1530 } 1531 } 1532 return true; 1533 } Read1to8Bytes()1534 bool Read1to8Bytes() { 1535 switch (end_ - begin_) { 1536 case 0: { 1537 return false; 1538 } 1539 case 1: { 1540 Fill1(); 1541 return true; 1542 } 1543 case 2: { 1544 Fill2(); 1545 return true; 1546 } 1547 case 3: { 1548 Fill3(); 1549 return true; 1550 } 1551 case 4: { 1552 Fill4(); 1553 return true; 1554 } 1555 case 5: { 1556 Fill5(); 1557 return true; 1558 } 1559 case 6: { 1560 Fill6(); 1561 return true; 1562 } 1563 case 7: { 1564 Fill7(); 1565 return true; 1566 } 1567 default: { 1568 Fill8(); 1569 return true; 1570 } 1571 } 1572 } Done1()1573 void Done1() { 1574 done_ = true; 1575 ok_ = false; 1576 } DecodeStep1()1577 void DecodeStep1() { 1578 if (!RefillTo1()) { 1579 Done2(); 1580 return; 1581 } 1582 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1583 const auto op = GetOp10(index); 1584 const int consumed = op & 1; 1585 buffer_len_ -= consumed; 1586 const auto emit_ofs = op >> 1; 1587 sink_(GetEmit10(index, emit_ofs + 0)); 1588 } Done2()1589 void Done2() { 1590 done_ = true; 1591 ok_ = false; 1592 } DecodeStep2()1593 void DecodeStep2() { 1594 if (!RefillTo1()) { 1595 Done3(); 1596 return; 1597 } 1598 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1599 const auto op = GetOp11(index); 1600 const int consumed = op & 1; 1601 buffer_len_ -= consumed; 1602 const auto emit_ofs = op >> 1; 1603 sink_(GetEmit11(index, emit_ofs + 0)); 1604 } Done3()1605 void Done3() { 1606 done_ = true; 1607 ok_ = false; 1608 } DecodeStep3()1609 void DecodeStep3() { 1610 if (!RefillTo16()) { 1611 Done4(); 1612 return; 1613 } 1614 const auto index = (buffer_ >> (buffer_len_ - 16)) & 0xffff; 1615 const auto op = GetOp12(index); 1616 const int consumed = op & 31; 1617 buffer_len_ -= consumed; 1618 const auto emit_ofs = op >> 6; 1619 switch ((op >> 5) & 1) { 1620 case 0: { 1621 sink_(GetEmit12(index, emit_ofs + 0)); 1622 break; 1623 } 1624 case 1: { 1625 DecodeStep4(); 1626 break; 1627 } 1628 } 1629 } RefillTo16()1630 bool RefillTo16() { 1631 switch (buffer_len_) { 1632 case 0: { 1633 return Read2to8Bytes(); 1634 } 1635 case 1: 1636 case 2: 1637 case 3: 1638 case 4: 1639 case 5: 1640 case 6: 1641 case 7: { 1642 return Read2to7Bytes(); 1643 } 1644 case 8: { 1645 return Read1to7Bytes(); 1646 } 1647 case 9: 1648 case 10: 1649 case 11: 1650 case 12: 1651 case 13: 1652 case 14: 1653 case 15: { 1654 return Read1to6Bytes(); 1655 } 1656 } 1657 return true; 1658 } Done4()1659 void Done4() { 1660 done_ = true; 1661 switch (end_ - begin_) { 1662 case 1: { 1663 Fill1(); 1664 break; 1665 } 1666 } 1667 switch (buffer_len_) { 1668 case 1: { 1669 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1670 return; 1671 } 1672 case 2: { 1673 const auto index = buffer_ & 3; 1674 const auto op = GetOp13(index); 1675 switch (op & 3) { 1676 case 0: { 1677 sink_(GetEmit13(index, (op >> 2) + 0)); 1678 break; 1679 } 1680 case 1: { 1681 ok_ = false; 1682 break; 1683 } 1684 } 1685 return; 1686 } 1687 case 3: { 1688 const auto index = buffer_ & 7; 1689 const auto op = GetOp14(index); 1690 switch (op & 3) { 1691 case 0: { 1692 ok_ = false; 1693 break; 1694 } 1695 case 1: { 1696 sink_(GetEmit14(index, (op >> 2) + 0)); 1697 break; 1698 } 1699 } 1700 return; 1701 } 1702 case 4: { 1703 const auto index = buffer_ & 15; 1704 const auto op = GetOp15(index); 1705 switch (op & 3) { 1706 case 0: { 1707 ok_ = false; 1708 break; 1709 } 1710 case 1: { 1711 sink_(GetEmit15(index, (op >> 2) + 0)); 1712 break; 1713 } 1714 } 1715 return; 1716 } 1717 case 5: { 1718 const auto index = buffer_ & 31; 1719 const auto op = GetOp16(index); 1720 switch (op & 3) { 1721 case 0: { 1722 ok_ = false; 1723 break; 1724 } 1725 case 1: { 1726 sink_(GetEmit16(index, (op >> 2) + 0)); 1727 break; 1728 } 1729 } 1730 return; 1731 } 1732 case 6: { 1733 const auto index = buffer_ & 63; 1734 const auto op = GetOp17(index); 1735 switch (op & 3) { 1736 case 0: { 1737 ok_ = false; 1738 break; 1739 } 1740 case 1: { 1741 sink_(GetEmit17(index, (op >> 2) + 0)); 1742 break; 1743 } 1744 } 1745 return; 1746 } 1747 case 7: { 1748 const auto index = buffer_ & 127; 1749 const auto op = GetOp18(index); 1750 switch (op & 3) { 1751 case 0: { 1752 sink_(GetEmit18(index, (op >> 2) + 0)); 1753 sink_(GetEmit18(index, (op >> 2) + 1)); 1754 break; 1755 } 1756 case 1: { 1757 ok_ = false; 1758 break; 1759 } 1760 case 2: { 1761 sink_(GetEmit18(index, (op >> 2) + 0)); 1762 break; 1763 } 1764 } 1765 return; 1766 } 1767 case 8: { 1768 const auto index = buffer_ & 255; 1769 const auto op = GetOp19(index); 1770 switch (op & 3) { 1771 case 0: { 1772 ok_ = false; 1773 break; 1774 } 1775 case 1: { 1776 sink_(GetEmit19(index, (op >> 2) + 0)); 1777 sink_(GetEmit19(index, (op >> 2) + 1)); 1778 break; 1779 } 1780 case 2: { 1781 sink_(GetEmit19(index, (op >> 2) + 0)); 1782 break; 1783 } 1784 } 1785 return; 1786 } 1787 case 9: { 1788 const auto index = buffer_ & 511; 1789 const auto op = GetOp20(index); 1790 switch (op & 3) { 1791 case 0: { 1792 ok_ = false; 1793 break; 1794 } 1795 case 1: { 1796 sink_(GetEmit20(index, (op >> 2) + 0)); 1797 sink_(GetEmit20(index, (op >> 2) + 1)); 1798 break; 1799 } 1800 case 2: { 1801 sink_(GetEmit20(index, (op >> 2) + 0)); 1802 break; 1803 } 1804 } 1805 return; 1806 } 1807 case 10: { 1808 const auto index = buffer_ & 1023; 1809 const auto op = GetOp21(index); 1810 switch (op & 3) { 1811 case 0: { 1812 ok_ = false; 1813 break; 1814 } 1815 case 1: { 1816 sink_(GetEmit21(index, (op >> 2) + 0)); 1817 sink_(GetEmit21(index, (op >> 2) + 1)); 1818 break; 1819 } 1820 case 2: { 1821 sink_(GetEmit21(index, (op >> 2) + 0)); 1822 break; 1823 } 1824 } 1825 return; 1826 } 1827 case 11: { 1828 const auto index = buffer_ & 2047; 1829 const auto op = GetOp22(index); 1830 switch (op & 3) { 1831 case 0: { 1832 ok_ = false; 1833 break; 1834 } 1835 case 1: { 1836 sink_(GetEmit22(index, (op >> 2) + 0)); 1837 sink_(GetEmit22(index, (op >> 2) + 1)); 1838 break; 1839 } 1840 case 2: { 1841 sink_(GetEmit22(index, (op >> 2) + 0)); 1842 break; 1843 } 1844 } 1845 return; 1846 } 1847 case 12: { 1848 const auto index = buffer_ & 4095; 1849 const auto op = GetOp23(index); 1850 switch (op & 7) { 1851 case 0: { 1852 sink_(GetEmit23(index, (op >> 3) + 0)); 1853 sink_(GetEmit23(index, (op >> 3) + 1)); 1854 sink_(GetEmit23(index, (op >> 3) + 2)); 1855 break; 1856 } 1857 case 1: { 1858 ok_ = false; 1859 break; 1860 } 1861 case 2: { 1862 sink_(GetEmit23(index, (op >> 3) + 0)); 1863 sink_(GetEmit23(index, (op >> 3) + 1)); 1864 break; 1865 } 1866 case 3: { 1867 sink_(GetEmit23(index, (op >> 3) + 0)); 1868 break; 1869 } 1870 } 1871 return; 1872 } 1873 case 13: { 1874 const auto index = buffer_ & 8191; 1875 const auto op = GetOp24(index); 1876 switch (op & 7) { 1877 case 0: { 1878 ok_ = false; 1879 break; 1880 } 1881 case 1: { 1882 sink_(GetEmit24(index, (op >> 3) + 0)); 1883 sink_(GetEmit24(index, (op >> 3) + 1)); 1884 sink_(GetEmit24(index, (op >> 3) + 2)); 1885 break; 1886 } 1887 case 2: { 1888 sink_(GetEmit24(index, (op >> 3) + 0)); 1889 sink_(GetEmit24(index, (op >> 3) + 1)); 1890 break; 1891 } 1892 case 3: { 1893 sink_(GetEmit24(index, (op >> 3) + 0)); 1894 break; 1895 } 1896 } 1897 return; 1898 } 1899 case 14: { 1900 const auto index = buffer_ & 16383; 1901 const auto op = GetOp25(index); 1902 switch (op & 7) { 1903 case 0: { 1904 ok_ = false; 1905 break; 1906 } 1907 case 1: { 1908 sink_(GetEmit25(index, (op >> 3) + 0)); 1909 sink_(GetEmit25(index, (op >> 3) + 1)); 1910 sink_(GetEmit25(index, (op >> 3) + 2)); 1911 break; 1912 } 1913 case 2: { 1914 sink_(GetEmit25(index, (op >> 3) + 0)); 1915 sink_(GetEmit25(index, (op >> 3) + 1)); 1916 break; 1917 } 1918 case 3: { 1919 sink_(GetEmit25(index, (op >> 3) + 0)); 1920 break; 1921 } 1922 } 1923 return; 1924 } 1925 case 15: { 1926 const auto index = buffer_ & 32767; 1927 const auto op = GetOp26(index); 1928 switch (op & 7) { 1929 case 0: { 1930 ok_ = false; 1931 break; 1932 } 1933 case 1: { 1934 sink_(GetEmit26(index, (op >> 3) + 0)); 1935 sink_(GetEmit26(index, (op >> 3) + 1)); 1936 sink_(GetEmit26(index, (op >> 3) + 2)); 1937 break; 1938 } 1939 case 2: { 1940 sink_(GetEmit26(index, (op >> 3) + 0)); 1941 sink_(GetEmit26(index, (op >> 3) + 1)); 1942 break; 1943 } 1944 case 3: { 1945 sink_(GetEmit26(index, (op >> 3) + 0)); 1946 break; 1947 } 1948 } 1949 return; 1950 } 1951 case 0: { 1952 return; 1953 } 1954 } 1955 } DecodeStep4()1956 void DecodeStep4() { 1957 if (!RefillTo2()) { 1958 Done5(); 1959 return; 1960 } 1961 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1962 const auto op = GetOp27(index); 1963 const int consumed = op & 3; 1964 buffer_len_ -= consumed; 1965 const auto emit_ofs = op >> 3; 1966 switch ((op >> 2) & 1) { 1967 case 0: { 1968 sink_(GetEmit27(index, emit_ofs + 0)); 1969 break; 1970 } 1971 case 1: { 1972 begin_ = end_; 1973 buffer_len_ = 0; 1974 break; 1975 } 1976 } 1977 } RefillTo2()1978 bool RefillTo2() { 1979 switch (buffer_len_) { 1980 case 0: { 1981 return Read1to8Bytes(); 1982 } 1983 case 1: { 1984 return Read1to7Bytes(); 1985 } 1986 } 1987 return true; 1988 } Done5()1989 void Done5() { 1990 done_ = true; 1991 switch (buffer_len_) { 1992 case 1: { 1993 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1994 return; 1995 } 1996 case 0: { 1997 return; 1998 } 1999 } 2000 } 2001 F sink_; 2002 const uint8_t* begin_; 2003 const uint8_t* const end_; 2004 uint64_t buffer_ = 0; 2005 int buffer_len_ = 0; 2006 bool ok_ = true; 2007 bool done_ = false; 2008 }; 2009 } // namespace geometry_12_16 2010 } // namespace grpc_core 2011 #endif // GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_12_16_H 2012