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_11_16_H 19 #define GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_11_16_H 20 #include <cstddef> 21 #include <cstdint> 22 23 #include <grpc/support/port_platform.h> 24 namespace grpc_core { 25 namespace geometry_11_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 } GetOp1(size_t i)60 static inline uint64_t GetOp1(size_t i) { 61 return table1_inner_[i >> 6][table1_outer_[i >> 6][i & 0x3f]]; 62 } GetEmit1(size_t i,size_t emit)63 static inline uint64_t GetEmit1(size_t i, size_t emit) { 64 return table1_emit_[i >> 6][emit]; 65 } GetOp8(size_t i)66 static inline uint64_t GetOp8(size_t i) { return i ? 3 : 1; } GetEmit8(size_t,size_t emit)67 static inline uint64_t GetEmit8(size_t, size_t emit) { 68 return emit ? 62 : 35; 69 } GetOp9(size_t i)70 static inline uint64_t GetOp9(size_t i) { 71 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 72 } GetEmit9(size_t,size_t emit)73 static inline uint64_t GetEmit9(size_t, size_t emit) { 74 return (emit < 2 ? (emit ? 36 : 0) : ((emit - 2) ? 91 : 64)); 75 } GetOp11(size_t i)76 static inline uint64_t GetOp11(size_t i) { 77 return (i < 2 ? (i ? 4 : 0) : ((i - 2) + 1)); 78 } GetEmit11(size_t,size_t emit)79 static inline uint64_t GetEmit11(size_t, size_t emit) { 80 return emit ? 126 : 93; 81 } GetOp12(size_t i)82 static inline uint64_t GetOp12(size_t i) { 83 return table12_0_inner_[table12_0_outer_[i]]; 84 } GetEmit12(size_t,size_t emit)85 static inline uint64_t GetEmit12(size_t, size_t emit) { 86 return (emit < 2 ? (emit ? 126 : 93) : ((emit - 2) ? 125 : 94)); 87 } GetOp13(size_t i)88 static inline uint64_t GetOp13(size_t i) { 89 return table13_0_inner_[table13_0_outer_[i]]; 90 } GetEmit13(size_t,size_t emit)91 static inline uint64_t GetEmit13(size_t, size_t emit) { 92 return table13_0_emit_[emit]; 93 } GetOp14(size_t i)94 static inline uint64_t GetOp14(size_t i) { return table14_0_ops_[i]; } GetEmit14(size_t,size_t emit)95 static inline uint64_t GetEmit14(size_t, size_t emit) { 96 return table13_0_emit_[emit]; 97 } GetOp15(size_t i)98 static inline uint64_t GetOp15(size_t i) { return table15_0_ops_[i]; } GetEmit15(size_t,size_t emit)99 static inline uint64_t GetEmit15(size_t, size_t emit) { 100 return table13_0_emit_[emit]; 101 } GetOp16(size_t i)102 static inline uint64_t GetOp16(size_t i) { return table16_0_ops_[i]; } GetEmit16(size_t,size_t emit)103 static inline uint64_t GetEmit16(size_t, size_t emit) { 104 return table16_0_emit_[emit]; 105 } GetOp17(size_t i)106 static inline uint64_t GetOp17(size_t i) { 107 return table17_ops_[i >> 6][i & 0x3f]; 108 } GetEmit17(size_t i,size_t emit)109 static inline uint64_t GetEmit17(size_t i, size_t emit) { 110 return table17_emit_[i >> 6][emit]; 111 } GetOp18(size_t i)112 static inline uint64_t GetOp18(size_t i) { 113 return table18_ops_[i >> 6][i & 0x3f]; 114 } GetEmit18(size_t i,size_t emit)115 static inline uint64_t GetEmit18(size_t i, size_t emit) { 116 return table18_emit_[i >> 6][emit]; 117 } GetOp19(size_t i)118 static inline uint64_t GetOp19(size_t i) { 119 return table19_ops_[i >> 6][i & 0x3f]; 120 } GetEmit19(size_t i,size_t emit)121 static inline uint64_t GetEmit19(size_t i, size_t emit) { 122 return table19_emit_[i >> 6][emit]; 123 } GetOp20(size_t i)124 static inline uint64_t GetOp20(size_t i) { 125 return table20_ops_[i >> 6][i & 0x3f]; 126 } GetEmit20(size_t i,size_t emit)127 static inline uint64_t GetEmit20(size_t i, size_t emit) { 128 return table20_emit_[i >> 6][emit]; 129 } GetOp21(size_t i)130 static inline uint64_t GetOp21(size_t i) { 131 return table21_ops_[i >> 6][i & 0x3f]; 132 } GetEmit21(size_t i,size_t emit)133 static inline uint64_t GetEmit21(size_t i, size_t emit) { 134 return table21_emit_[i >> 6][emit]; 135 } GetOp22(size_t i)136 static inline uint64_t GetOp22(size_t i) { 137 return table22_ops_[i >> 6][i & 0x3f]; 138 } GetEmit22(size_t i,size_t emit)139 static inline uint64_t GetEmit22(size_t i, size_t emit) { 140 return table22_emit_[i >> 6][emit]; 141 } GetOp23(size_t i)142 static inline uint64_t GetOp23(size_t i) { 143 return table23_ops_[i >> 7][i & 0x7f]; 144 } GetEmit23(size_t i,size_t emit)145 static inline uint64_t GetEmit23(size_t i, size_t emit) { 146 return table23_emit_[i >> 7][emit]; 147 } GetOp24(size_t i)148 static inline uint64_t GetOp24(size_t i) { 149 return table24_ops_[i >> 7][i & 0x7f]; 150 } GetEmit24(size_t i,size_t emit)151 static inline uint64_t GetEmit24(size_t i, size_t emit) { 152 return table24_emit_[i >> 7][emit]; 153 } GetOp10(size_t i)154 static inline uint64_t GetOp10(size_t i) { 155 return table10_ops_[i >> 8][i & 0xff]; 156 } GetEmit10(size_t i,size_t emit)157 static inline uint64_t GetEmit10(size_t i, size_t emit) { 158 return table10_emit_[i >> 8][emit]; 159 } GetOp25(size_t i)160 static inline uint64_t GetOp25(size_t i) { return i ? 3 : 1; } GetEmit25(size_t,size_t emit)161 static inline uint64_t GetEmit25(size_t, size_t emit) { return emit + 2; } GetOp26(size_t i)162 static inline uint64_t GetOp26(size_t i) { return i ? 3 : 1; } GetEmit26(size_t,size_t emit)163 static inline uint64_t GetEmit26(size_t, size_t emit) { return emit + 4; } GetOp27(size_t i)164 static inline uint64_t GetOp27(size_t i) { return i ? 3 : 1; } GetEmit27(size_t,size_t emit)165 static inline uint64_t GetEmit27(size_t, size_t emit) { return emit + 6; } GetOp28(size_t i)166 static inline uint64_t GetOp28(size_t i) { return i ? 3 : 1; } GetEmit28(size_t,size_t emit)167 static inline uint64_t GetEmit28(size_t, size_t emit) { 168 return emit ? 11 : 8; 169 } GetOp29(size_t i)170 static inline uint64_t GetOp29(size_t i) { return i ? 3 : 1; } GetEmit29(size_t,size_t emit)171 static inline uint64_t GetEmit29(size_t, size_t emit) { 172 return emit ? 14 : 12; 173 } GetOp30(size_t i)174 static inline uint64_t GetOp30(size_t i) { return i ? 3 : 1; } GetEmit30(size_t,size_t emit)175 static inline uint64_t GetEmit30(size_t, size_t emit) { return emit + 15; } GetOp31(size_t i)176 static inline uint64_t GetOp31(size_t i) { return i ? 3 : 1; } GetEmit31(size_t,size_t emit)177 static inline uint64_t GetEmit31(size_t, size_t emit) { return emit + 17; } GetOp32(size_t i)178 static inline uint64_t GetOp32(size_t i) { return i ? 3 : 1; } GetEmit32(size_t,size_t emit)179 static inline uint64_t GetEmit32(size_t, size_t emit) { return emit + 19; } GetOp33(size_t i)180 static inline uint64_t GetOp33(size_t i) { return i ? 3 : 1; } GetEmit33(size_t,size_t emit)181 static inline uint64_t GetEmit33(size_t, size_t emit) { 182 return emit ? 23 : 21; 183 } GetOp34(size_t i)184 static inline uint64_t GetOp34(size_t i) { return i ? 3 : 1; } GetEmit34(size_t,size_t emit)185 static inline uint64_t GetEmit34(size_t, size_t emit) { return emit + 24; } GetOp35(size_t i)186 static inline uint64_t GetOp35(size_t i) { return i ? 3 : 1; } GetEmit35(size_t,size_t emit)187 static inline uint64_t GetEmit35(size_t, size_t emit) { return emit + 26; } GetOp36(size_t i)188 static inline uint64_t GetOp36(size_t i) { return i ? 3 : 1; } GetEmit36(size_t,size_t emit)189 static inline uint64_t GetEmit36(size_t, size_t emit) { return emit + 28; } GetOp37(size_t i)190 static inline uint64_t GetOp37(size_t i) { return i ? 3 : 1; } GetEmit37(size_t,size_t emit)191 static inline uint64_t GetEmit37(size_t, size_t emit) { return emit + 30; } GetOp38(size_t i)192 static inline uint64_t GetOp38(size_t i) { return i ? 3 : 1; } GetEmit38(size_t,size_t emit)193 static inline uint64_t GetEmit38(size_t, size_t emit) { 194 return emit ? 220 : 127; 195 } GetOp40(size_t i)196 static inline uint64_t GetOp40(size_t i) { return i; } GetEmit40(size_t,size_t emit)197 static inline uint64_t GetEmit40(size_t, size_t emit) { 198 return ((void)emit, 249); 199 } GetOp41(size_t i)200 static inline uint64_t GetOp41(size_t i) { 201 return (i < 2 ? (i) : ((i - 2) ? 2 : 0)); 202 } GetEmit41(size_t,size_t emit)203 static inline uint64_t GetEmit41(size_t, size_t emit) { 204 return ((void)emit, 249); 205 } GetOp39(size_t i)206 static inline uint64_t GetOp39(size_t i) { 207 return table39_0_inner_[(i < 3 ? (((void)i, 0)) : ((i - 3)))]; 208 } GetEmit39(size_t,size_t emit)209 static inline uint64_t GetEmit39(size_t, size_t emit) { 210 return (emit < 2 ? (emit ? 10 : 249) : ((emit - 2) ? 22 : 13)); 211 } 212 213 private: 214 static const uint8_t table2_0_emit_[10]; 215 static const uint8_t table2_0_ops_[32]; 216 static const uint8_t table3_0_emit_[36]; 217 static const uint8_t table3_0_ops_[64]; 218 static const uint8_t table4_0_emit_[22]; 219 static const uint8_t table4_0_ops_[64]; 220 static const uint8_t table4_1_emit_[46]; 221 static const uint8_t table4_1_ops_[64]; 222 static const uint8_t* const table4_emit_[2]; 223 static const uint8_t* const table4_ops_[2]; 224 static const uint8_t table5_0_ops_[128]; 225 static const uint8_t table5_1_emit_[52]; 226 static const uint8_t table5_1_ops_[128]; 227 static const uint8_t* const table5_emit_[2]; 228 static const uint8_t* const table5_ops_[2]; 229 static const uint8_t table6_0_emit_[2]; 230 static const uint8_t table6_0_ops_[32]; 231 static const uint8_t table6_1_emit_[2]; 232 static const uint8_t table6_2_emit_[2]; 233 static const uint8_t table6_3_emit_[2]; 234 static const uint8_t table6_4_emit_[2]; 235 static const uint8_t table6_5_emit_[4]; 236 static const uint8_t table6_5_ops_[32]; 237 static const uint8_t table6_6_emit_[4]; 238 static const uint8_t table6_7_emit_[4]; 239 static const uint8_t table6_8_emit_[4]; 240 static const uint8_t table6_9_emit_[4]; 241 static const uint8_t table6_10_emit_[4]; 242 static const uint8_t table6_11_emit_[6]; 243 static const uint8_t table6_11_ops_[32]; 244 static const uint8_t table6_12_emit_[8]; 245 static const uint8_t table6_12_ops_[32]; 246 static const uint8_t table6_13_emit_[8]; 247 static const uint8_t table6_14_emit_[8]; 248 static const uint8_t table6_15_emit_[10]; 249 static const uint8_t table6_15_ops_[32]; 250 static const uint8_t* const table6_emit_[16]; 251 static const uint8_t* const table6_ops_[16]; 252 static const uint8_t table7_0_emit_[36]; 253 static const uint8_t table7_0_ops_[64]; 254 static const uint8_t table7_1_emit_[36]; 255 static const uint8_t table7_1_ops_[64]; 256 static const uint8_t table7_2_emit_[36]; 257 static const uint8_t table7_2_ops_[64]; 258 static const uint8_t table7_3_emit_[36]; 259 static const uint8_t table7_3_ops_[64]; 260 static const uint8_t table7_4_emit_[38]; 261 static const uint8_t table7_4_ops_[64]; 262 static const uint8_t table7_5_ops_[64]; 263 static const uint8_t table7_11_ops_[64]; 264 static const uint8_t table7_12_ops_[64]; 265 static const uint8_t table7_15_emit_[15]; 266 static const uint8_t table7_15_ops_[64]; 267 static const uint8_t* const table7_emit_[16]; 268 static const uint8_t* const table7_ops_[16]; 269 static const uint8_t table1_0_emit_[71]; 270 static const uint16_t table1_0_inner_[37]; 271 static const uint8_t table1_0_outer_[64]; 272 static const uint8_t table1_1_emit_[71]; 273 static const uint16_t table1_1_inner_[37]; 274 static const uint8_t table1_2_emit_[71]; 275 static const uint16_t table1_2_inner_[37]; 276 static const uint8_t table1_3_emit_[71]; 277 static const uint16_t table1_3_inner_[37]; 278 static const uint8_t table1_4_emit_[71]; 279 static const uint16_t table1_4_inner_[37]; 280 static const uint8_t table1_5_emit_[71]; 281 static const uint16_t table1_5_inner_[37]; 282 static const uint8_t table1_6_emit_[71]; 283 static const uint16_t table1_6_inner_[37]; 284 static const uint8_t table1_7_emit_[71]; 285 static const uint16_t table1_7_inner_[37]; 286 static const uint8_t table1_8_emit_[71]; 287 static const uint16_t table1_8_inner_[37]; 288 static const uint8_t table1_9_emit_[71]; 289 static const uint16_t table1_9_inner_[37]; 290 static const uint8_t table1_10_emit_[40]; 291 static const uint16_t table1_10_inner_[22]; 292 static const uint8_t table1_10_outer_[64]; 293 static const uint8_t table1_11_emit_[40]; 294 static const uint8_t table1_12_emit_[40]; 295 static const uint8_t table1_13_emit_[40]; 296 static const uint8_t table1_14_emit_[40]; 297 static const uint8_t table1_15_emit_[40]; 298 static const uint8_t table1_16_emit_[40]; 299 static const uint8_t table1_17_emit_[40]; 300 static const uint8_t table1_18_emit_[40]; 301 static const uint8_t table1_19_emit_[40]; 302 static const uint8_t table1_20_emit_[40]; 303 static const uint8_t table1_21_emit_[40]; 304 static const uint8_t table1_22_emit_[40]; 305 static const uint8_t table1_23_emit_[4]; 306 static const uint16_t table1_23_inner_[4]; 307 static const uint8_t table1_23_outer_[64]; 308 static const uint8_t table1_24_emit_[4]; 309 static const uint8_t table1_25_emit_[4]; 310 static const uint8_t table1_26_emit_[4]; 311 static const uint8_t table1_27_emit_[4]; 312 static const uint8_t table1_28_emit_[4]; 313 static const uint8_t table1_29_emit_[4]; 314 static const uint8_t table1_30_emit_[4]; 315 static const uint8_t table1_31_emit_[14]; 316 static const uint16_t table1_31_inner_[17]; 317 static const uint8_t table1_31_outer_[64]; 318 static const uint8_t* const table1_emit_[32]; 319 static const uint16_t* const table1_inner_[32]; 320 static const uint8_t* const table1_outer_[32]; 321 static const uint8_t table12_0_inner_[6]; 322 static const uint8_t table12_0_outer_[8]; 323 static const uint8_t table13_0_emit_[7]; 324 static const uint8_t table13_0_inner_[9]; 325 static const uint8_t table13_0_outer_[16]; 326 static const uint8_t table14_0_ops_[32]; 327 static const uint8_t table15_0_ops_[64]; 328 static const uint8_t table16_0_emit_[45]; 329 static const uint8_t table16_0_ops_[128]; 330 static const uint8_t table17_0_emit_[72]; 331 static const uint16_t table17_0_ops_[64]; 332 static const uint8_t table17_1_emit_[72]; 333 static const uint8_t table17_2_emit_[40]; 334 static const uint16_t table17_2_ops_[64]; 335 static const uint8_t table17_3_emit_[6]; 336 static const uint16_t table17_3_ops_[64]; 337 static const uint8_t* const table17_emit_[4]; 338 static const uint16_t* const table17_ops_[4]; 339 static const uint8_t table18_0_emit_[44]; 340 static const uint16_t table18_0_ops_[64]; 341 static const uint8_t table18_1_emit_[92]; 342 static const uint16_t table18_1_ops_[64]; 343 static const uint8_t table18_2_emit_[44]; 344 static const uint8_t table18_3_emit_[92]; 345 static const uint8_t table18_4_emit_[72]; 346 static const uint8_t table18_5_emit_[72]; 347 static const uint8_t table18_6_emit_[40]; 348 static const uint8_t table18_7_emit_[31]; 349 static const uint16_t table18_7_ops_[64]; 350 static const uint8_t* const table18_emit_[8]; 351 static const uint16_t* const table18_ops_[8]; 352 static const uint8_t table19_0_emit_[16]; 353 static const uint16_t table19_0_ops_[64]; 354 static const uint8_t table19_1_emit_[28]; 355 static const uint16_t table19_1_ops_[64]; 356 static const uint8_t table19_2_emit_[36]; 357 static const uint16_t table19_2_ops_[64]; 358 static const uint8_t table19_3_emit_[68]; 359 static const uint16_t table19_3_ops_[64]; 360 static const uint8_t table19_4_emit_[16]; 361 static const uint8_t table19_5_emit_[28]; 362 static const uint8_t table19_6_emit_[36]; 363 static const uint8_t table19_7_emit_[68]; 364 static const uint8_t table19_8_emit_[44]; 365 static const uint8_t table19_9_emit_[92]; 366 static const uint8_t table19_10_emit_[44]; 367 static const uint8_t table19_11_emit_[92]; 368 static const uint8_t table19_12_emit_[72]; 369 static const uint8_t table19_13_emit_[72]; 370 static const uint8_t table19_14_emit_[72]; 371 static const uint8_t table19_15_emit_[24]; 372 static const uint16_t table19_15_ops_[64]; 373 static const uint8_t* const table19_emit_[16]; 374 static const uint16_t* const table19_ops_[16]; 375 static const uint8_t table20_0_emit_[8]; 376 static const uint16_t table20_0_ops_[64]; 377 static const uint8_t table20_1_emit_[8]; 378 static const uint8_t table20_2_emit_[12]; 379 static const uint16_t table20_2_ops_[64]; 380 static const uint8_t table20_3_emit_[16]; 381 static const uint8_t table20_4_emit_[16]; 382 static const uint8_t table20_5_emit_[20]; 383 static const uint16_t table20_5_ops_[64]; 384 static const uint8_t table20_6_emit_[32]; 385 static const uint16_t table20_6_ops_[64]; 386 static const uint8_t table20_7_emit_[36]; 387 static const uint16_t table20_7_ops_[64]; 388 static const uint8_t table20_8_emit_[8]; 389 static const uint8_t table20_9_emit_[8]; 390 static const uint8_t table20_10_emit_[12]; 391 static const uint8_t table20_11_emit_[16]; 392 static const uint8_t table20_12_emit_[16]; 393 static const uint8_t table20_13_emit_[20]; 394 static const uint8_t table20_14_emit_[32]; 395 static const uint8_t table20_15_emit_[36]; 396 static const uint8_t table20_16_emit_[16]; 397 static const uint8_t table20_17_emit_[28]; 398 static const uint8_t table20_18_emit_[36]; 399 static const uint8_t table20_19_emit_[68]; 400 static const uint8_t table20_20_emit_[16]; 401 static const uint8_t table20_21_emit_[28]; 402 static const uint8_t table20_22_emit_[36]; 403 static const uint8_t table20_23_emit_[68]; 404 static const uint8_t table20_24_emit_[44]; 405 static const uint8_t table20_25_emit_[92]; 406 static const uint8_t table20_26_emit_[44]; 407 static const uint8_t table20_27_emit_[92]; 408 static const uint8_t table20_28_emit_[44]; 409 static const uint8_t table20_29_emit_[92]; 410 static const uint8_t table20_30_emit_[15]; 411 static const uint16_t table20_30_ops_[64]; 412 static const uint8_t table20_31_emit_[35]; 413 static const uint16_t table20_31_ops_[64]; 414 static const uint8_t* const table20_emit_[32]; 415 static const uint16_t* const table20_ops_[32]; 416 static const uint8_t table21_0_emit_[60]; 417 static const uint16_t table21_0_ops_[64]; 418 static const uint8_t table21_1_emit_[60]; 419 static const uint8_t table21_2_emit_[60]; 420 static const uint8_t table21_3_emit_[60]; 421 static const uint8_t table21_4_emit_[60]; 422 static const uint8_t table21_5_emit_[8]; 423 static const uint16_t table21_5_ops_[64]; 424 static const uint8_t table21_6_emit_[8]; 425 static const uint8_t table21_7_emit_[8]; 426 static const uint8_t table21_8_emit_[8]; 427 static const uint8_t table21_9_emit_[8]; 428 static const uint8_t table21_10_emit_[8]; 429 static const uint8_t table21_11_emit_[12]; 430 static const uint16_t table21_11_ops_[64]; 431 static const uint8_t table21_12_emit_[16]; 432 static const uint16_t table21_12_ops_[64]; 433 static const uint8_t table21_13_emit_[16]; 434 static const uint8_t table21_14_emit_[16]; 435 static const uint8_t table21_15_emit_[30]; 436 static const uint16_t table21_15_ops_[64]; 437 static const uint8_t table21_16_emit_[60]; 438 static const uint8_t table21_17_emit_[60]; 439 static const uint8_t table21_18_emit_[60]; 440 static const uint8_t table21_19_emit_[60]; 441 static const uint8_t table21_20_emit_[60]; 442 static const uint8_t table21_21_emit_[8]; 443 static const uint8_t table21_22_emit_[8]; 444 static const uint8_t table21_23_emit_[8]; 445 static const uint8_t table21_24_emit_[8]; 446 static const uint8_t table21_25_emit_[8]; 447 static const uint8_t table21_26_emit_[8]; 448 static const uint8_t table21_27_emit_[12]; 449 static const uint8_t table21_28_emit_[16]; 450 static const uint8_t table21_29_emit_[16]; 451 static const uint8_t table21_30_emit_[16]; 452 static const uint8_t table21_31_emit_[30]; 453 static const uint8_t table21_32_emit_[8]; 454 static const uint8_t table21_33_emit_[8]; 455 static const uint8_t table21_34_emit_[12]; 456 static const uint8_t table21_35_emit_[16]; 457 static const uint8_t table21_36_emit_[16]; 458 static const uint8_t table21_37_emit_[20]; 459 static const uint16_t table21_37_ops_[64]; 460 static const uint8_t table21_38_emit_[32]; 461 static const uint16_t table21_38_ops_[64]; 462 static const uint8_t table21_39_emit_[36]; 463 static const uint16_t table21_39_ops_[64]; 464 static const uint8_t table21_40_emit_[8]; 465 static const uint8_t table21_41_emit_[8]; 466 static const uint8_t table21_42_emit_[12]; 467 static const uint8_t table21_43_emit_[16]; 468 static const uint8_t table21_44_emit_[16]; 469 static const uint8_t table21_45_emit_[20]; 470 static const uint8_t table21_46_emit_[32]; 471 static const uint8_t table21_47_emit_[36]; 472 static const uint8_t table21_48_emit_[16]; 473 static const uint8_t table21_49_emit_[28]; 474 static const uint16_t table21_49_ops_[64]; 475 static const uint8_t table21_50_emit_[36]; 476 static const uint16_t table21_50_ops_[64]; 477 static const uint8_t table21_51_emit_[68]; 478 static const uint16_t table21_51_ops_[64]; 479 static const uint8_t table21_52_emit_[16]; 480 static const uint8_t table21_53_emit_[28]; 481 static const uint8_t table21_54_emit_[36]; 482 static const uint8_t table21_55_emit_[68]; 483 static const uint8_t table21_56_emit_[16]; 484 static const uint8_t table21_57_emit_[28]; 485 static const uint8_t table21_58_emit_[36]; 486 static const uint8_t table21_59_emit_[68]; 487 static const uint8_t table21_60_emit_[5]; 488 static const uint16_t table21_60_ops_[64]; 489 static const uint8_t table21_61_emit_[10]; 490 static const uint16_t table21_61_ops_[64]; 491 static const uint8_t table21_62_emit_[23]; 492 static const uint16_t table21_62_ops_[64]; 493 static const uint8_t table21_63_emit_[41]; 494 static const uint16_t table21_63_ops_[64]; 495 static const uint8_t* const table21_emit_[64]; 496 static const uint16_t* const table21_ops_[64]; 497 static const uint8_t table22_0_emit_[108]; 498 static const uint16_t table22_0_ops_[64]; 499 static const uint8_t table22_1_emit_[108]; 500 static const uint8_t table22_2_emit_[108]; 501 static const uint8_t table22_3_emit_[108]; 502 static const uint8_t table22_4_emit_[108]; 503 static const uint8_t table22_5_emit_[108]; 504 static const uint8_t table22_6_emit_[108]; 505 static const uint8_t table22_7_emit_[108]; 506 static const uint8_t table22_8_emit_[108]; 507 static const uint8_t table22_9_emit_[108]; 508 static const uint8_t table22_10_emit_[60]; 509 static const uint16_t table22_10_ops_[64]; 510 static const uint8_t table22_11_emit_[60]; 511 static const uint8_t table22_12_emit_[60]; 512 static const uint8_t table22_13_emit_[60]; 513 static const uint8_t table22_14_emit_[60]; 514 static const uint8_t table22_15_emit_[60]; 515 static const uint8_t table22_16_emit_[60]; 516 static const uint8_t table22_17_emit_[60]; 517 static const uint8_t table22_18_emit_[60]; 518 static const uint8_t table22_19_emit_[60]; 519 static const uint8_t table22_20_emit_[60]; 520 static const uint8_t table22_21_emit_[60]; 521 static const uint8_t table22_22_emit_[60]; 522 static const uint8_t table22_23_emit_[8]; 523 static const uint16_t table22_23_ops_[64]; 524 static const uint8_t table22_24_emit_[8]; 525 static const uint8_t table22_25_emit_[8]; 526 static const uint8_t table22_26_emit_[8]; 527 static const uint8_t table22_27_emit_[8]; 528 static const uint8_t table22_28_emit_[8]; 529 static const uint8_t table22_29_emit_[8]; 530 static const uint8_t table22_30_emit_[8]; 531 static const uint8_t table22_31_emit_[28]; 532 static const uint16_t table22_31_ops_[64]; 533 static const uint8_t table22_32_emit_[108]; 534 static const uint8_t table22_33_emit_[108]; 535 static const uint8_t table22_34_emit_[108]; 536 static const uint8_t table22_35_emit_[108]; 537 static const uint8_t table22_36_emit_[108]; 538 static const uint8_t table22_37_emit_[108]; 539 static const uint8_t table22_38_emit_[108]; 540 static const uint8_t table22_39_emit_[108]; 541 static const uint8_t table22_40_emit_[108]; 542 static const uint8_t table22_41_emit_[108]; 543 static const uint8_t table22_42_emit_[60]; 544 static const uint8_t table22_43_emit_[60]; 545 static const uint8_t table22_44_emit_[60]; 546 static const uint8_t table22_45_emit_[60]; 547 static const uint8_t table22_46_emit_[60]; 548 static const uint8_t table22_47_emit_[60]; 549 static const uint8_t table22_48_emit_[60]; 550 static const uint8_t table22_49_emit_[60]; 551 static const uint8_t table22_50_emit_[60]; 552 static const uint8_t table22_51_emit_[60]; 553 static const uint8_t table22_52_emit_[60]; 554 static const uint8_t table22_53_emit_[60]; 555 static const uint8_t table22_54_emit_[60]; 556 static const uint8_t table22_55_emit_[8]; 557 static const uint8_t table22_56_emit_[8]; 558 static const uint8_t table22_57_emit_[8]; 559 static const uint8_t table22_58_emit_[8]; 560 static const uint8_t table22_59_emit_[8]; 561 static const uint8_t table22_60_emit_[8]; 562 static const uint8_t table22_61_emit_[8]; 563 static const uint8_t table22_62_emit_[8]; 564 static const uint8_t table22_63_emit_[28]; 565 static const uint8_t table22_64_emit_[60]; 566 static const uint8_t table22_65_emit_[60]; 567 static const uint8_t table22_66_emit_[60]; 568 static const uint8_t table22_67_emit_[60]; 569 static const uint8_t table22_68_emit_[60]; 570 static const uint8_t table22_69_emit_[8]; 571 static const uint8_t table22_70_emit_[8]; 572 static const uint8_t table22_71_emit_[8]; 573 static const uint8_t table22_72_emit_[8]; 574 static const uint8_t table22_73_emit_[8]; 575 static const uint8_t table22_74_emit_[8]; 576 static const uint8_t table22_75_emit_[12]; 577 static const uint16_t table22_75_ops_[64]; 578 static const uint8_t table22_76_emit_[16]; 579 static const uint16_t table22_76_ops_[64]; 580 static const uint8_t table22_77_emit_[16]; 581 static const uint8_t table22_78_emit_[16]; 582 static const uint8_t table22_79_emit_[30]; 583 static const uint16_t table22_79_ops_[64]; 584 static const uint8_t table22_80_emit_[60]; 585 static const uint8_t table22_81_emit_[60]; 586 static const uint8_t table22_82_emit_[60]; 587 static const uint8_t table22_83_emit_[60]; 588 static const uint8_t table22_84_emit_[60]; 589 static const uint8_t table22_85_emit_[8]; 590 static const uint8_t table22_86_emit_[8]; 591 static const uint8_t table22_87_emit_[8]; 592 static const uint8_t table22_88_emit_[8]; 593 static const uint8_t table22_89_emit_[8]; 594 static const uint8_t table22_90_emit_[8]; 595 static const uint8_t table22_91_emit_[12]; 596 static const uint8_t table22_92_emit_[16]; 597 static const uint8_t table22_93_emit_[16]; 598 static const uint8_t table22_94_emit_[16]; 599 static const uint8_t table22_95_emit_[30]; 600 static const uint8_t table22_96_emit_[8]; 601 static const uint8_t table22_97_emit_[8]; 602 static const uint8_t table22_98_emit_[12]; 603 static const uint8_t table22_99_emit_[16]; 604 static const uint8_t table22_100_emit_[16]; 605 static const uint8_t table22_101_emit_[20]; 606 static const uint16_t table22_101_ops_[64]; 607 static const uint8_t table22_102_emit_[32]; 608 static const uint16_t table22_102_ops_[64]; 609 static const uint8_t table22_103_emit_[36]; 610 static const uint16_t table22_103_ops_[64]; 611 static const uint8_t table22_104_emit_[8]; 612 static const uint8_t table22_105_emit_[8]; 613 static const uint8_t table22_106_emit_[12]; 614 static const uint8_t table22_107_emit_[16]; 615 static const uint8_t table22_108_emit_[16]; 616 static const uint8_t table22_109_emit_[20]; 617 static const uint8_t table22_110_emit_[32]; 618 static const uint8_t table22_111_emit_[36]; 619 static const uint8_t table22_112_emit_[8]; 620 static const uint8_t table22_113_emit_[8]; 621 static const uint8_t table22_114_emit_[12]; 622 static const uint8_t table22_115_emit_[16]; 623 static const uint8_t table22_116_emit_[16]; 624 static const uint8_t table22_117_emit_[20]; 625 static const uint8_t table22_118_emit_[32]; 626 static const uint8_t table22_119_emit_[36]; 627 static const uint8_t table22_120_emit_[40]; 628 static const uint16_t table22_120_ops_[64]; 629 static const uint8_t table22_121_emit_[22]; 630 static const uint16_t table22_121_ops_[64]; 631 static const uint8_t table22_122_emit_[4]; 632 static const uint16_t table22_122_ops_[64]; 633 static const uint8_t table22_123_emit_[6]; 634 static const uint16_t table22_123_ops_[64]; 635 static const uint8_t table22_124_emit_[8]; 636 static const uint16_t table22_124_ops_[64]; 637 static const uint8_t table22_125_emit_[15]; 638 static const uint16_t table22_125_ops_[64]; 639 static const uint8_t table22_126_emit_[20]; 640 static const uint16_t table22_126_ops_[64]; 641 static const uint8_t table22_127_emit_[33]; 642 static const uint16_t table22_127_ops_[64]; 643 static const uint8_t* const table22_emit_[128]; 644 static const uint16_t* const table22_ops_[128]; 645 static const uint8_t table23_0_emit_[204]; 646 static const uint16_t table23_0_ops_[128]; 647 static const uint8_t table23_1_emit_[204]; 648 static const uint8_t table23_2_emit_[204]; 649 static const uint8_t table23_3_emit_[204]; 650 static const uint8_t table23_4_emit_[204]; 651 static const uint8_t table23_5_emit_[204]; 652 static const uint8_t table23_6_emit_[204]; 653 static const uint8_t table23_7_emit_[204]; 654 static const uint8_t table23_8_emit_[204]; 655 static const uint8_t table23_9_emit_[204]; 656 static const uint8_t table23_10_emit_[216]; 657 static const uint16_t table23_10_ops_[128]; 658 static const uint8_t table23_11_emit_[216]; 659 static const uint8_t table23_12_emit_[216]; 660 static const uint8_t table23_13_emit_[216]; 661 static const uint8_t table23_14_emit_[216]; 662 static const uint8_t table23_15_emit_[216]; 663 static const uint8_t table23_16_emit_[216]; 664 static const uint8_t table23_17_emit_[216]; 665 static const uint8_t table23_18_emit_[216]; 666 static const uint8_t table23_19_emit_[216]; 667 static const uint8_t table23_20_emit_[216]; 668 static const uint8_t table23_21_emit_[216]; 669 static const uint8_t table23_22_emit_[216]; 670 static const uint8_t table23_23_emit_[120]; 671 static const uint16_t table23_23_ops_[128]; 672 static const uint8_t table23_24_emit_[120]; 673 static const uint8_t table23_25_emit_[120]; 674 static const uint8_t table23_26_emit_[120]; 675 static const uint8_t table23_27_emit_[120]; 676 static const uint8_t table23_28_emit_[120]; 677 static const uint8_t table23_29_emit_[120]; 678 static const uint8_t table23_30_emit_[120]; 679 static const uint8_t table23_31_emit_[32]; 680 static const uint16_t table23_31_ops_[128]; 681 static const uint8_t table23_32_emit_[204]; 682 static const uint8_t table23_33_emit_[204]; 683 static const uint8_t table23_34_emit_[204]; 684 static const uint8_t table23_35_emit_[204]; 685 static const uint8_t table23_36_emit_[204]; 686 static const uint8_t table23_37_emit_[204]; 687 static const uint8_t table23_38_emit_[204]; 688 static const uint8_t table23_39_emit_[204]; 689 static const uint8_t table23_40_emit_[204]; 690 static const uint8_t table23_41_emit_[204]; 691 static const uint8_t table23_42_emit_[216]; 692 static const uint8_t table23_43_emit_[216]; 693 static const uint8_t table23_44_emit_[216]; 694 static const uint8_t table23_45_emit_[216]; 695 static const uint8_t table23_46_emit_[216]; 696 static const uint8_t table23_47_emit_[216]; 697 static const uint8_t table23_48_emit_[216]; 698 static const uint8_t table23_49_emit_[216]; 699 static const uint8_t table23_50_emit_[216]; 700 static const uint8_t table23_51_emit_[216]; 701 static const uint8_t table23_52_emit_[216]; 702 static const uint8_t table23_53_emit_[216]; 703 static const uint8_t table23_54_emit_[216]; 704 static const uint8_t table23_55_emit_[120]; 705 static const uint8_t table23_56_emit_[120]; 706 static const uint8_t table23_57_emit_[120]; 707 static const uint8_t table23_58_emit_[120]; 708 static const uint8_t table23_59_emit_[120]; 709 static const uint8_t table23_60_emit_[120]; 710 static const uint8_t table23_61_emit_[120]; 711 static const uint8_t table23_62_emit_[120]; 712 static const uint8_t table23_63_emit_[32]; 713 static const uint8_t table23_64_emit_[216]; 714 static const uint8_t table23_65_emit_[216]; 715 static const uint8_t table23_66_emit_[216]; 716 static const uint8_t table23_67_emit_[216]; 717 static const uint8_t table23_68_emit_[216]; 718 static const uint8_t table23_69_emit_[120]; 719 static const uint8_t table23_70_emit_[120]; 720 static const uint8_t table23_71_emit_[120]; 721 static const uint8_t table23_72_emit_[120]; 722 static const uint8_t table23_73_emit_[120]; 723 static const uint8_t table23_74_emit_[120]; 724 static const uint8_t table23_75_emit_[68]; 725 static const uint16_t table23_75_ops_[128]; 726 static const uint16_t table23_76_ops_[128]; 727 static const uint8_t table23_79_emit_[36]; 728 static const uint16_t table23_79_ops_[128]; 729 static const uint8_t table23_80_emit_[216]; 730 static const uint8_t table23_81_emit_[216]; 731 static const uint8_t table23_82_emit_[216]; 732 static const uint8_t table23_83_emit_[216]; 733 static const uint8_t table23_84_emit_[216]; 734 static const uint8_t table23_85_emit_[120]; 735 static const uint8_t table23_86_emit_[120]; 736 static const uint8_t table23_87_emit_[120]; 737 static const uint8_t table23_88_emit_[120]; 738 static const uint8_t table23_89_emit_[120]; 739 static const uint8_t table23_90_emit_[120]; 740 static const uint8_t table23_91_emit_[68]; 741 static const uint8_t table23_95_emit_[36]; 742 static const uint8_t table23_96_emit_[120]; 743 static const uint8_t table23_97_emit_[120]; 744 static const uint8_t table23_98_emit_[68]; 745 static const uint16_t table23_101_ops_[128]; 746 static const uint16_t table23_102_ops_[128]; 747 static const uint8_t table23_103_emit_[46]; 748 static const uint16_t table23_103_ops_[128]; 749 static const uint8_t table23_104_emit_[120]; 750 static const uint8_t table23_105_emit_[120]; 751 static const uint8_t table23_106_emit_[68]; 752 static const uint8_t table23_111_emit_[46]; 753 static const uint8_t table23_112_emit_[120]; 754 static const uint8_t table23_113_emit_[120]; 755 static const uint8_t table23_114_emit_[68]; 756 static const uint8_t table23_119_emit_[46]; 757 static const uint8_t table23_120_emit_[144]; 758 static const uint16_t table23_120_ops_[128]; 759 static const uint8_t table23_121_emit_[112]; 760 static const uint16_t table23_121_ops_[128]; 761 static const uint8_t table23_122_emit_[80]; 762 static const uint16_t table23_122_ops_[128]; 763 static const uint8_t table23_123_emit_[44]; 764 static const uint16_t table23_123_ops_[128]; 765 static const uint16_t table23_124_ops_[128]; 766 static const uint16_t table23_125_ops_[128]; 767 static const uint16_t table23_126_ops_[128]; 768 static const uint8_t table23_127_emit_[37]; 769 static const uint16_t table23_127_ops_[128]; 770 static const uint8_t* const table23_emit_[128]; 771 static const uint16_t* const table23_ops_[128]; 772 static const uint8_t table24_0_emit_[66]; 773 static const uint16_t table24_0_ops_[128]; 774 static const uint8_t table24_1_emit_[156]; 775 static const uint16_t table24_1_ops_[128]; 776 static const uint8_t table24_2_emit_[66]; 777 static const uint8_t table24_3_emit_[156]; 778 static const uint8_t table24_4_emit_[66]; 779 static const uint8_t table24_5_emit_[156]; 780 static const uint8_t table24_6_emit_[66]; 781 static const uint8_t table24_7_emit_[156]; 782 static const uint8_t table24_8_emit_[66]; 783 static const uint8_t table24_9_emit_[156]; 784 static const uint8_t table24_10_emit_[66]; 785 static const uint8_t table24_11_emit_[156]; 786 static const uint8_t table24_12_emit_[66]; 787 static const uint8_t table24_13_emit_[156]; 788 static const uint8_t table24_14_emit_[66]; 789 static const uint8_t table24_15_emit_[156]; 790 static const uint8_t table24_16_emit_[66]; 791 static const uint8_t table24_17_emit_[156]; 792 static const uint8_t table24_18_emit_[66]; 793 static const uint8_t table24_19_emit_[156]; 794 static const uint8_t table24_20_emit_[204]; 795 static const uint8_t table24_21_emit_[204]; 796 static const uint8_t table24_22_emit_[204]; 797 static const uint8_t table24_23_emit_[204]; 798 static const uint8_t table24_24_emit_[204]; 799 static const uint8_t table24_25_emit_[204]; 800 static const uint8_t table24_26_emit_[204]; 801 static const uint8_t table24_27_emit_[204]; 802 static const uint8_t table24_28_emit_[204]; 803 static const uint8_t table24_29_emit_[204]; 804 static const uint8_t table24_30_emit_[204]; 805 static const uint8_t table24_31_emit_[204]; 806 static const uint8_t table24_32_emit_[204]; 807 static const uint8_t table24_33_emit_[204]; 808 static const uint8_t table24_34_emit_[204]; 809 static const uint8_t table24_35_emit_[204]; 810 static const uint8_t table24_36_emit_[204]; 811 static const uint8_t table24_37_emit_[204]; 812 static const uint8_t table24_38_emit_[204]; 813 static const uint8_t table24_39_emit_[204]; 814 static const uint8_t table24_40_emit_[204]; 815 static const uint8_t table24_41_emit_[204]; 816 static const uint8_t table24_42_emit_[204]; 817 static const uint8_t table24_43_emit_[204]; 818 static const uint8_t table24_44_emit_[204]; 819 static const uint8_t table24_45_emit_[204]; 820 static const uint8_t table24_46_emit_[216]; 821 static const uint8_t table24_47_emit_[216]; 822 static const uint8_t table24_48_emit_[216]; 823 static const uint8_t table24_49_emit_[216]; 824 static const uint8_t table24_50_emit_[216]; 825 static const uint8_t table24_51_emit_[216]; 826 static const uint8_t table24_52_emit_[216]; 827 static const uint8_t table24_53_emit_[216]; 828 static const uint8_t table24_54_emit_[216]; 829 static const uint8_t table24_55_emit_[216]; 830 static const uint8_t table24_56_emit_[216]; 831 static const uint8_t table24_57_emit_[216]; 832 static const uint8_t table24_58_emit_[216]; 833 static const uint8_t table24_59_emit_[216]; 834 static const uint8_t table24_60_emit_[216]; 835 static const uint8_t table24_61_emit_[216]; 836 static const uint8_t table24_62_emit_[120]; 837 static const uint8_t table24_63_emit_[91]; 838 static const uint16_t table24_63_ops_[128]; 839 static const uint8_t table24_64_emit_[66]; 840 static const uint8_t table24_65_emit_[156]; 841 static const uint8_t table24_66_emit_[66]; 842 static const uint8_t table24_67_emit_[156]; 843 static const uint8_t table24_68_emit_[66]; 844 static const uint8_t table24_69_emit_[156]; 845 static const uint8_t table24_70_emit_[66]; 846 static const uint8_t table24_71_emit_[156]; 847 static const uint8_t table24_72_emit_[66]; 848 static const uint8_t table24_73_emit_[156]; 849 static const uint8_t table24_74_emit_[66]; 850 static const uint8_t table24_75_emit_[156]; 851 static const uint8_t table24_76_emit_[66]; 852 static const uint8_t table24_77_emit_[156]; 853 static const uint8_t table24_78_emit_[66]; 854 static const uint8_t table24_79_emit_[156]; 855 static const uint8_t table24_80_emit_[66]; 856 static const uint8_t table24_81_emit_[156]; 857 static const uint8_t table24_82_emit_[66]; 858 static const uint8_t table24_83_emit_[156]; 859 static const uint8_t table24_84_emit_[204]; 860 static const uint8_t table24_85_emit_[204]; 861 static const uint8_t table24_86_emit_[204]; 862 static const uint8_t table24_87_emit_[204]; 863 static const uint8_t table24_88_emit_[204]; 864 static const uint8_t table24_89_emit_[204]; 865 static const uint8_t table24_90_emit_[204]; 866 static const uint8_t table24_91_emit_[204]; 867 static const uint8_t table24_92_emit_[204]; 868 static const uint8_t table24_93_emit_[204]; 869 static const uint8_t table24_94_emit_[204]; 870 static const uint8_t table24_95_emit_[204]; 871 static const uint8_t table24_96_emit_[204]; 872 static const uint8_t table24_97_emit_[204]; 873 static const uint8_t table24_98_emit_[204]; 874 static const uint8_t table24_99_emit_[204]; 875 static const uint8_t table24_100_emit_[204]; 876 static const uint8_t table24_101_emit_[204]; 877 static const uint8_t table24_102_emit_[204]; 878 static const uint8_t table24_103_emit_[204]; 879 static const uint8_t table24_104_emit_[204]; 880 static const uint8_t table24_105_emit_[204]; 881 static const uint8_t table24_106_emit_[204]; 882 static const uint8_t table24_107_emit_[204]; 883 static const uint8_t table24_108_emit_[204]; 884 static const uint8_t table24_109_emit_[204]; 885 static const uint8_t table24_110_emit_[216]; 886 static const uint8_t table24_111_emit_[216]; 887 static const uint8_t table24_112_emit_[216]; 888 static const uint8_t table24_113_emit_[216]; 889 static const uint8_t table24_114_emit_[216]; 890 static const uint8_t table24_115_emit_[216]; 891 static const uint8_t table24_116_emit_[216]; 892 static const uint8_t table24_117_emit_[216]; 893 static const uint8_t table24_118_emit_[216]; 894 static const uint8_t table24_119_emit_[216]; 895 static const uint8_t table24_120_emit_[216]; 896 static const uint8_t table24_121_emit_[216]; 897 static const uint8_t table24_122_emit_[216]; 898 static const uint8_t table24_123_emit_[216]; 899 static const uint8_t table24_124_emit_[216]; 900 static const uint8_t table24_125_emit_[216]; 901 static const uint8_t table24_126_emit_[120]; 902 static const uint8_t table24_127_emit_[92]; 903 static const uint16_t table24_127_ops_[128]; 904 static const uint8_t table24_128_emit_[204]; 905 static const uint8_t table24_129_emit_[204]; 906 static const uint8_t table24_130_emit_[204]; 907 static const uint8_t table24_131_emit_[204]; 908 static const uint8_t table24_132_emit_[204]; 909 static const uint8_t table24_133_emit_[204]; 910 static const uint8_t table24_134_emit_[204]; 911 static const uint8_t table24_135_emit_[204]; 912 static const uint8_t table24_136_emit_[204]; 913 static const uint8_t table24_137_emit_[204]; 914 static const uint8_t table24_138_emit_[216]; 915 static const uint8_t table24_139_emit_[216]; 916 static const uint8_t table24_140_emit_[216]; 917 static const uint8_t table24_141_emit_[216]; 918 static const uint8_t table24_142_emit_[216]; 919 static const uint8_t table24_143_emit_[216]; 920 static const uint8_t table24_144_emit_[216]; 921 static const uint8_t table24_145_emit_[216]; 922 static const uint8_t table24_146_emit_[216]; 923 static const uint8_t table24_147_emit_[216]; 924 static const uint8_t table24_148_emit_[216]; 925 static const uint8_t table24_149_emit_[216]; 926 static const uint8_t table24_150_emit_[216]; 927 static const uint8_t table24_151_emit_[120]; 928 static const uint8_t table24_152_emit_[120]; 929 static const uint8_t table24_153_emit_[120]; 930 static const uint8_t table24_154_emit_[120]; 931 static const uint8_t table24_155_emit_[120]; 932 static const uint8_t table24_156_emit_[120]; 933 static const uint8_t table24_157_emit_[120]; 934 static const uint8_t table24_158_emit_[120]; 935 static const uint8_t table24_159_emit_[32]; 936 static const uint8_t table24_160_emit_[204]; 937 static const uint8_t table24_161_emit_[204]; 938 static const uint8_t table24_162_emit_[204]; 939 static const uint8_t table24_163_emit_[204]; 940 static const uint8_t table24_164_emit_[204]; 941 static const uint8_t table24_165_emit_[204]; 942 static const uint8_t table24_166_emit_[204]; 943 static const uint8_t table24_167_emit_[204]; 944 static const uint8_t table24_168_emit_[204]; 945 static const uint8_t table24_169_emit_[204]; 946 static const uint8_t table24_170_emit_[216]; 947 static const uint8_t table24_171_emit_[216]; 948 static const uint8_t table24_172_emit_[216]; 949 static const uint8_t table24_173_emit_[216]; 950 static const uint8_t table24_174_emit_[216]; 951 static const uint8_t table24_175_emit_[216]; 952 static const uint8_t table24_176_emit_[216]; 953 static const uint8_t table24_177_emit_[216]; 954 static const uint8_t table24_178_emit_[216]; 955 static const uint8_t table24_179_emit_[216]; 956 static const uint8_t table24_180_emit_[216]; 957 static const uint8_t table24_181_emit_[216]; 958 static const uint8_t table24_182_emit_[216]; 959 static const uint8_t table24_183_emit_[120]; 960 static const uint8_t table24_184_emit_[120]; 961 static const uint8_t table24_185_emit_[120]; 962 static const uint8_t table24_186_emit_[120]; 963 static const uint8_t table24_187_emit_[120]; 964 static const uint8_t table24_188_emit_[120]; 965 static const uint8_t table24_189_emit_[120]; 966 static const uint8_t table24_190_emit_[120]; 967 static const uint8_t table24_191_emit_[32]; 968 static const uint8_t table24_192_emit_[216]; 969 static const uint8_t table24_193_emit_[216]; 970 static const uint8_t table24_194_emit_[216]; 971 static const uint8_t table24_195_emit_[216]; 972 static const uint8_t table24_196_emit_[216]; 973 static const uint8_t table24_197_emit_[120]; 974 static const uint8_t table24_198_emit_[120]; 975 static const uint8_t table24_199_emit_[120]; 976 static const uint8_t table24_200_emit_[120]; 977 static const uint8_t table24_201_emit_[120]; 978 static const uint8_t table24_202_emit_[120]; 979 static const uint8_t table24_203_emit_[68]; 980 static const uint8_t table24_204_emit_[16]; 981 static const uint8_t table24_205_emit_[16]; 982 static const uint8_t table24_206_emit_[16]; 983 static const uint8_t table24_207_emit_[36]; 984 static const uint8_t table24_208_emit_[216]; 985 static const uint8_t table24_209_emit_[216]; 986 static const uint8_t table24_210_emit_[216]; 987 static const uint8_t table24_211_emit_[216]; 988 static const uint8_t table24_212_emit_[216]; 989 static const uint8_t table24_213_emit_[120]; 990 static const uint8_t table24_214_emit_[120]; 991 static const uint8_t table24_215_emit_[120]; 992 static const uint8_t table24_216_emit_[120]; 993 static const uint8_t table24_217_emit_[120]; 994 static const uint8_t table24_218_emit_[120]; 995 static const uint8_t table24_219_emit_[68]; 996 static const uint8_t table24_220_emit_[16]; 997 static const uint8_t table24_221_emit_[16]; 998 static const uint8_t table24_222_emit_[16]; 999 static const uint8_t table24_223_emit_[36]; 1000 static const uint8_t table24_224_emit_[216]; 1001 static const uint8_t table24_225_emit_[216]; 1002 static const uint8_t table24_226_emit_[216]; 1003 static const uint8_t table24_227_emit_[216]; 1004 static const uint8_t table24_228_emit_[216]; 1005 static const uint8_t table24_229_emit_[120]; 1006 static const uint8_t table24_230_emit_[120]; 1007 static const uint8_t table24_231_emit_[120]; 1008 static const uint8_t table24_232_emit_[120]; 1009 static const uint8_t table24_233_emit_[120]; 1010 static const uint8_t table24_234_emit_[120]; 1011 static const uint8_t table24_235_emit_[68]; 1012 static const uint8_t table24_236_emit_[16]; 1013 static const uint8_t table24_237_emit_[16]; 1014 static const uint8_t table24_238_emit_[16]; 1015 static const uint8_t table24_239_emit_[36]; 1016 static const uint8_t table24_240_emit_[136]; 1017 static const uint16_t table24_240_ops_[128]; 1018 static const uint8_t table24_241_emit_[136]; 1019 static const uint8_t table24_242_emit_[136]; 1020 static const uint8_t table24_243_emit_[144]; 1021 static const uint8_t table24_244_emit_[144]; 1022 static const uint8_t table24_245_emit_[144]; 1023 static const uint8_t table24_246_emit_[144]; 1024 static const uint8_t table24_247_emit_[80]; 1025 static const uint8_t table24_248_emit_[80]; 1026 static const uint8_t table24_249_emit_[80]; 1027 static const uint8_t table24_250_emit_[26]; 1028 static const uint16_t table24_250_ops_[128]; 1029 static const uint8_t table24_251_emit_[8]; 1030 static const uint8_t table24_252_emit_[8]; 1031 static const uint8_t table24_253_emit_[12]; 1032 static const uint16_t table24_253_ops_[128]; 1033 static const uint8_t table24_254_emit_[16]; 1034 static const uint16_t table24_254_ops_[128]; 1035 static const uint8_t table24_255_emit_[36]; 1036 static const uint16_t table24_255_ops_[128]; 1037 static const uint8_t* const table24_emit_[256]; 1038 static const uint16_t* const table24_ops_[256]; 1039 static const uint8_t table10_0_emit_[1]; 1040 static const uint16_t table10_0_ops_[256]; 1041 static const uint8_t table10_64_emit_[1]; 1042 static const uint8_t table10_128_emit_[1]; 1043 static const uint16_t table10_128_ops_[256]; 1044 static const uint8_t table10_160_emit_[1]; 1045 static const uint8_t table10_192_emit_[1]; 1046 static const uint16_t table10_192_ops_[256]; 1047 static const uint8_t table10_208_emit_[1]; 1048 static const uint8_t table10_224_emit_[1]; 1049 static const uint8_t table10_240_emit_[1]; 1050 static const uint16_t table10_240_ops_[256]; 1051 static const uint8_t table10_241_emit_[1]; 1052 static const uint8_t table10_242_emit_[1]; 1053 static const uint8_t table10_243_emit_[2]; 1054 static const uint16_t table10_243_ops_[256]; 1055 static const uint8_t table10_244_emit_[2]; 1056 static const uint8_t table10_245_emit_[2]; 1057 static const uint8_t table10_246_emit_[2]; 1058 static const uint8_t table10_247_emit_[4]; 1059 static const uint16_t table10_247_ops_[256]; 1060 static const uint8_t table10_248_emit_[4]; 1061 static const uint8_t table10_249_emit_[4]; 1062 static const uint8_t table10_250_emit_[7]; 1063 static const uint16_t table10_250_ops_[256]; 1064 static const uint16_t table10_251_ops_[256]; 1065 static const uint16_t table10_253_ops_[256]; 1066 static const uint16_t table10_254_ops_[256]; 1067 static const uint8_t table10_255_emit_[55]; 1068 static const uint16_t table10_255_ops_[256]; 1069 static const uint8_t* const table10_emit_[256]; 1070 static const uint16_t* const table10_ops_[256]; 1071 static const uint8_t table39_0_inner_[5]; 1072 }; 1073 template <typename F> 1074 class HuffDecoder : public HuffDecoderCommon { 1075 public: HuffDecoder(F sink,const uint8_t * begin,const uint8_t * end)1076 HuffDecoder(F sink, const uint8_t* begin, const uint8_t* end) 1077 : sink_(sink), begin_(begin), end_(end) {} Run()1078 bool Run() { 1079 while (!done_) { 1080 if (!RefillTo11()) { 1081 Done0(); 1082 break; 1083 } 1084 const auto index = (buffer_ >> (buffer_len_ - 11)) & 0x7ff; 1085 const auto op = GetOp1(index); 1086 const int consumed = op & 15; 1087 buffer_len_ -= consumed; 1088 const auto emit_ofs = op >> 7; 1089 switch ((op >> 4) & 7) { 1090 case 0: { 1091 sink_(GetEmit1(index, emit_ofs + 0)); 1092 sink_(GetEmit1(index, emit_ofs + 1)); 1093 break; 1094 } 1095 case 1: { 1096 sink_(GetEmit1(index, emit_ofs + 0)); 1097 break; 1098 } 1099 case 2: { 1100 DecodeStep0(); 1101 break; 1102 } 1103 case 3: { 1104 DecodeStep1(); 1105 break; 1106 } 1107 case 4: { 1108 DecodeStep2(); 1109 break; 1110 } 1111 } 1112 } 1113 return ok_; 1114 } 1115 1116 private: RefillTo11()1117 bool RefillTo11() { 1118 switch (buffer_len_) { 1119 case 0: { 1120 return Read2to8Bytes(); 1121 } 1122 case 1: 1123 case 2: { 1124 return Read2to7Bytes(); 1125 } 1126 case 3: 1127 case 4: 1128 case 5: 1129 case 6: 1130 case 7: 1131 case 8: { 1132 return Read1to7Bytes(); 1133 } 1134 case 9: 1135 case 10: { 1136 return Read1to6Bytes(); 1137 } 1138 } 1139 return true; 1140 } Read2to8Bytes()1141 bool Read2to8Bytes() { 1142 switch (end_ - begin_) { 1143 case 0: 1144 case 1: { 1145 return false; 1146 } 1147 case 2: { 1148 Fill2(); 1149 return true; 1150 } 1151 case 3: { 1152 Fill3(); 1153 return true; 1154 } 1155 case 4: { 1156 Fill4(); 1157 return true; 1158 } 1159 case 5: { 1160 Fill5(); 1161 return true; 1162 } 1163 case 6: { 1164 Fill6(); 1165 return true; 1166 } 1167 case 7: { 1168 Fill7(); 1169 return true; 1170 } 1171 default: { 1172 Fill8(); 1173 return true; 1174 } 1175 } 1176 } Fill2()1177 void Fill2() { 1178 buffer_ = (buffer_ << 16) | (static_cast<uint64_t>(begin_[0]) << 8) | 1179 (static_cast<uint64_t>(begin_[1]) << 0); 1180 begin_ += 2; 1181 buffer_len_ += 16; 1182 } Fill3()1183 void Fill3() { 1184 buffer_ = (buffer_ << 24) | (static_cast<uint64_t>(begin_[0]) << 16) | 1185 (static_cast<uint64_t>(begin_[1]) << 8) | 1186 (static_cast<uint64_t>(begin_[2]) << 0); 1187 begin_ += 3; 1188 buffer_len_ += 24; 1189 } Fill4()1190 void Fill4() { 1191 buffer_ = (buffer_ << 32) | (static_cast<uint64_t>(begin_[0]) << 24) | 1192 (static_cast<uint64_t>(begin_[1]) << 16) | 1193 (static_cast<uint64_t>(begin_[2]) << 8) | 1194 (static_cast<uint64_t>(begin_[3]) << 0); 1195 begin_ += 4; 1196 buffer_len_ += 32; 1197 } Fill5()1198 void Fill5() { 1199 buffer_ = (buffer_ << 40) | (static_cast<uint64_t>(begin_[0]) << 32) | 1200 (static_cast<uint64_t>(begin_[1]) << 24) | 1201 (static_cast<uint64_t>(begin_[2]) << 16) | 1202 (static_cast<uint64_t>(begin_[3]) << 8) | 1203 (static_cast<uint64_t>(begin_[4]) << 0); 1204 begin_ += 5; 1205 buffer_len_ += 40; 1206 } Fill6()1207 void Fill6() { 1208 buffer_ = (buffer_ << 48) | (static_cast<uint64_t>(begin_[0]) << 40) | 1209 (static_cast<uint64_t>(begin_[1]) << 32) | 1210 (static_cast<uint64_t>(begin_[2]) << 24) | 1211 (static_cast<uint64_t>(begin_[3]) << 16) | 1212 (static_cast<uint64_t>(begin_[4]) << 8) | 1213 (static_cast<uint64_t>(begin_[5]) << 0); 1214 begin_ += 6; 1215 buffer_len_ += 48; 1216 } Fill7()1217 void Fill7() { 1218 buffer_ = (buffer_ << 56) | (static_cast<uint64_t>(begin_[0]) << 48) | 1219 (static_cast<uint64_t>(begin_[1]) << 40) | 1220 (static_cast<uint64_t>(begin_[2]) << 32) | 1221 (static_cast<uint64_t>(begin_[3]) << 24) | 1222 (static_cast<uint64_t>(begin_[4]) << 16) | 1223 (static_cast<uint64_t>(begin_[5]) << 8) | 1224 (static_cast<uint64_t>(begin_[6]) << 0); 1225 begin_ += 7; 1226 buffer_len_ += 56; 1227 } Fill8()1228 void Fill8() { 1229 buffer_ = 0 | (static_cast<uint64_t>(begin_[0]) << 56) | 1230 (static_cast<uint64_t>(begin_[1]) << 48) | 1231 (static_cast<uint64_t>(begin_[2]) << 40) | 1232 (static_cast<uint64_t>(begin_[3]) << 32) | 1233 (static_cast<uint64_t>(begin_[4]) << 24) | 1234 (static_cast<uint64_t>(begin_[5]) << 16) | 1235 (static_cast<uint64_t>(begin_[6]) << 8) | 1236 (static_cast<uint64_t>(begin_[7]) << 0); 1237 begin_ += 8; 1238 buffer_len_ += 64; 1239 } Read2to7Bytes()1240 bool Read2to7Bytes() { 1241 switch (end_ - begin_) { 1242 case 0: 1243 case 1: { 1244 return false; 1245 } 1246 case 2: { 1247 Fill2(); 1248 return true; 1249 } 1250 case 3: { 1251 Fill3(); 1252 return true; 1253 } 1254 case 4: { 1255 Fill4(); 1256 return true; 1257 } 1258 case 5: { 1259 Fill5(); 1260 return true; 1261 } 1262 case 6: { 1263 Fill6(); 1264 return true; 1265 } 1266 default: { 1267 Fill7(); 1268 return true; 1269 } 1270 } 1271 } Read1to7Bytes()1272 bool Read1to7Bytes() { 1273 switch (end_ - begin_) { 1274 case 0: { 1275 return false; 1276 } 1277 case 1: { 1278 Fill1(); 1279 return true; 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 } Fill1()1307 void Fill1() { 1308 buffer_ = (buffer_ << 8) | (static_cast<uint64_t>(begin_[0]) << 0); 1309 begin_ += 1; 1310 buffer_len_ += 8; 1311 } Read1to6Bytes()1312 bool Read1to6Bytes() { 1313 switch (end_ - begin_) { 1314 case 0: { 1315 return false; 1316 } 1317 case 1: { 1318 Fill1(); 1319 return true; 1320 } 1321 case 2: { 1322 Fill2(); 1323 return true; 1324 } 1325 case 3: { 1326 Fill3(); 1327 return true; 1328 } 1329 case 4: { 1330 Fill4(); 1331 return true; 1332 } 1333 case 5: { 1334 Fill5(); 1335 return true; 1336 } 1337 default: { 1338 Fill6(); 1339 return true; 1340 } 1341 } 1342 } Done0()1343 void Done0() { 1344 done_ = true; 1345 switch (end_ - begin_) { 1346 case 1: { 1347 Fill1(); 1348 break; 1349 } 1350 } 1351 switch (buffer_len_) { 1352 case 1: 1353 case 2: 1354 case 3: 1355 case 4: { 1356 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1357 return; 1358 } 1359 case 5: { 1360 const auto index = buffer_ & 31; 1361 const auto op = GetOp2(index); 1362 switch (op & 3) { 1363 case 0: { 1364 sink_(GetEmit2(index, (op >> 2) + 0)); 1365 break; 1366 } 1367 case 1: { 1368 ok_ = false; 1369 break; 1370 } 1371 } 1372 return; 1373 } 1374 case 6: { 1375 const auto index = buffer_ & 63; 1376 const auto op = GetOp3(index); 1377 switch (op & 3) { 1378 case 0: { 1379 ok_ = false; 1380 break; 1381 } 1382 case 1: { 1383 sink_(GetEmit3(index, (op >> 2) + 0)); 1384 break; 1385 } 1386 } 1387 return; 1388 } 1389 case 7: { 1390 const auto index = buffer_ & 127; 1391 const auto op = GetOp4(index); 1392 switch (op & 3) { 1393 case 0: { 1394 ok_ = false; 1395 break; 1396 } 1397 case 1: { 1398 sink_(GetEmit4(index, (op >> 2) + 0)); 1399 break; 1400 } 1401 } 1402 return; 1403 } 1404 case 8: { 1405 const auto index = buffer_ & 255; 1406 const auto op = GetOp5(index); 1407 switch (op & 3) { 1408 case 0: { 1409 ok_ = false; 1410 break; 1411 } 1412 case 1: { 1413 sink_(GetEmit5(index, (op >> 2) + 0)); 1414 break; 1415 } 1416 } 1417 return; 1418 } 1419 case 9: { 1420 const auto index = buffer_ & 511; 1421 const auto op = GetOp6(index); 1422 switch (op & 3) { 1423 case 0: { 1424 ok_ = false; 1425 break; 1426 } 1427 case 1: { 1428 sink_(GetEmit6(index, (op >> 2) + 0)); 1429 break; 1430 } 1431 } 1432 return; 1433 } 1434 case 10: { 1435 const auto index = buffer_ & 1023; 1436 const auto op = GetOp7(index); 1437 switch (op & 3) { 1438 case 0: { 1439 sink_(GetEmit7(index, (op >> 2) + 0)); 1440 sink_(GetEmit7(index, (op >> 2) + 1)); 1441 break; 1442 } 1443 case 1: { 1444 ok_ = false; 1445 break; 1446 } 1447 case 2: { 1448 sink_(GetEmit7(index, (op >> 2) + 0)); 1449 break; 1450 } 1451 } 1452 return; 1453 } 1454 case 0: { 1455 return; 1456 } 1457 } 1458 } DecodeStep0()1459 void DecodeStep0() { 1460 if (!RefillTo1()) { 1461 Done1(); 1462 return; 1463 } 1464 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1465 const auto op = GetOp8(index); 1466 const int consumed = op & 1; 1467 buffer_len_ -= consumed; 1468 const auto emit_ofs = op >> 1; 1469 sink_(GetEmit8(index, emit_ofs + 0)); 1470 } RefillTo1()1471 bool RefillTo1() { 1472 switch (buffer_len_) { 1473 case 0: { 1474 return Read1to8Bytes(); 1475 } 1476 } 1477 return true; 1478 } Read1to8Bytes()1479 bool Read1to8Bytes() { 1480 switch (end_ - begin_) { 1481 case 0: { 1482 return false; 1483 } 1484 case 1: { 1485 Fill1(); 1486 return true; 1487 } 1488 case 2: { 1489 Fill2(); 1490 return true; 1491 } 1492 case 3: { 1493 Fill3(); 1494 return true; 1495 } 1496 case 4: { 1497 Fill4(); 1498 return true; 1499 } 1500 case 5: { 1501 Fill5(); 1502 return true; 1503 } 1504 case 6: { 1505 Fill6(); 1506 return true; 1507 } 1508 case 7: { 1509 Fill7(); 1510 return true; 1511 } 1512 default: { 1513 Fill8(); 1514 return true; 1515 } 1516 } 1517 } Done1()1518 void Done1() { 1519 done_ = true; 1520 ok_ = false; 1521 } DecodeStep1()1522 void DecodeStep1() { 1523 if (!RefillTo2()) { 1524 Done2(); 1525 return; 1526 } 1527 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1528 const auto op = GetOp9(index); 1529 const int consumed = op & 3; 1530 buffer_len_ -= consumed; 1531 const auto emit_ofs = op >> 2; 1532 sink_(GetEmit9(index, emit_ofs + 0)); 1533 } RefillTo2()1534 bool RefillTo2() { 1535 switch (buffer_len_) { 1536 case 0: { 1537 return Read1to8Bytes(); 1538 } 1539 case 1: { 1540 return Read1to7Bytes(); 1541 } 1542 } 1543 return true; 1544 } Done2()1545 void Done2() { 1546 done_ = true; 1547 switch (buffer_len_) { 1548 case 1: 1549 case 0: { 1550 ok_ = false; 1551 return; 1552 } 1553 } 1554 } DecodeStep2()1555 void DecodeStep2() { 1556 if (!RefillTo16()) { 1557 Done3(); 1558 return; 1559 } 1560 const auto index = (buffer_ >> (buffer_len_ - 16)) & 0xffff; 1561 const auto op = GetOp10(index); 1562 const int consumed = op & 31; 1563 buffer_len_ -= consumed; 1564 const auto emit_ofs = op >> 9; 1565 switch ((op >> 5) & 15) { 1566 case 0: { 1567 sink_(GetEmit10(index, emit_ofs + 0)); 1568 break; 1569 } 1570 case 1: { 1571 DecodeStep3(); 1572 break; 1573 } 1574 case 2: { 1575 DecodeStep4(); 1576 break; 1577 } 1578 case 3: { 1579 DecodeStep5(); 1580 break; 1581 } 1582 case 4: { 1583 DecodeStep6(); 1584 break; 1585 } 1586 case 5: { 1587 DecodeStep7(); 1588 break; 1589 } 1590 case 6: { 1591 DecodeStep8(); 1592 break; 1593 } 1594 case 7: { 1595 DecodeStep9(); 1596 break; 1597 } 1598 case 8: { 1599 DecodeStep10(); 1600 break; 1601 } 1602 case 9: { 1603 DecodeStep11(); 1604 break; 1605 } 1606 case 10: { 1607 DecodeStep12(); 1608 break; 1609 } 1610 case 11: { 1611 DecodeStep13(); 1612 break; 1613 } 1614 case 12: { 1615 DecodeStep14(); 1616 break; 1617 } 1618 case 13: { 1619 DecodeStep15(); 1620 break; 1621 } 1622 case 14: { 1623 DecodeStep16(); 1624 break; 1625 } 1626 case 15: { 1627 DecodeStep17(); 1628 break; 1629 } 1630 } 1631 } RefillTo16()1632 bool RefillTo16() { 1633 switch (buffer_len_) { 1634 case 0: { 1635 return Read2to8Bytes(); 1636 } 1637 case 1: 1638 case 2: 1639 case 3: 1640 case 4: 1641 case 5: 1642 case 6: 1643 case 7: { 1644 return Read2to7Bytes(); 1645 } 1646 case 8: { 1647 return Read1to7Bytes(); 1648 } 1649 case 9: 1650 case 10: 1651 case 11: 1652 case 12: 1653 case 13: 1654 case 14: 1655 case 15: { 1656 return Read1to6Bytes(); 1657 } 1658 } 1659 return true; 1660 } Done3()1661 void Done3() { 1662 done_ = true; 1663 switch (end_ - begin_) { 1664 case 1: { 1665 Fill1(); 1666 break; 1667 } 1668 } 1669 switch (buffer_len_) { 1670 case 1: { 1671 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1672 return; 1673 } 1674 case 2: { 1675 const auto index = buffer_ & 3; 1676 const auto op = GetOp11(index); 1677 switch (op & 3) { 1678 case 0: { 1679 sink_(GetEmit11(index, (op >> 2) + 0)); 1680 break; 1681 } 1682 case 1: { 1683 ok_ = false; 1684 break; 1685 } 1686 } 1687 return; 1688 } 1689 case 3: { 1690 const auto index = buffer_ & 7; 1691 const auto op = GetOp12(index); 1692 switch (op & 3) { 1693 case 0: { 1694 ok_ = false; 1695 break; 1696 } 1697 case 1: { 1698 sink_(GetEmit12(index, (op >> 2) + 0)); 1699 break; 1700 } 1701 } 1702 return; 1703 } 1704 case 4: { 1705 const auto index = buffer_ & 15; 1706 const auto op = GetOp13(index); 1707 switch (op & 3) { 1708 case 0: { 1709 ok_ = false; 1710 break; 1711 } 1712 case 1: { 1713 sink_(GetEmit13(index, (op >> 2) + 0)); 1714 break; 1715 } 1716 } 1717 return; 1718 } 1719 case 5: { 1720 const auto index = buffer_ & 31; 1721 const auto op = GetOp14(index); 1722 switch (op & 3) { 1723 case 0: { 1724 ok_ = false; 1725 break; 1726 } 1727 case 1: { 1728 sink_(GetEmit14(index, (op >> 2) + 0)); 1729 break; 1730 } 1731 } 1732 return; 1733 } 1734 case 6: { 1735 const auto index = buffer_ & 63; 1736 const auto op = GetOp15(index); 1737 switch (op & 3) { 1738 case 0: { 1739 ok_ = false; 1740 break; 1741 } 1742 case 1: { 1743 sink_(GetEmit15(index, (op >> 2) + 0)); 1744 break; 1745 } 1746 } 1747 return; 1748 } 1749 case 7: { 1750 const auto index = buffer_ & 127; 1751 const auto op = GetOp16(index); 1752 switch (op & 3) { 1753 case 0: { 1754 sink_(GetEmit16(index, (op >> 2) + 0)); 1755 sink_(GetEmit16(index, (op >> 2) + 1)); 1756 break; 1757 } 1758 case 1: { 1759 ok_ = false; 1760 break; 1761 } 1762 case 2: { 1763 sink_(GetEmit16(index, (op >> 2) + 0)); 1764 break; 1765 } 1766 } 1767 return; 1768 } 1769 case 8: { 1770 const auto index = buffer_ & 255; 1771 const auto op = GetOp17(index); 1772 switch (op & 3) { 1773 case 0: { 1774 ok_ = false; 1775 break; 1776 } 1777 case 1: { 1778 sink_(GetEmit17(index, (op >> 2) + 0)); 1779 sink_(GetEmit17(index, (op >> 2) + 1)); 1780 break; 1781 } 1782 case 2: { 1783 sink_(GetEmit17(index, (op >> 2) + 0)); 1784 break; 1785 } 1786 } 1787 return; 1788 } 1789 case 9: { 1790 const auto index = buffer_ & 511; 1791 const auto op = GetOp18(index); 1792 switch (op & 3) { 1793 case 0: { 1794 ok_ = false; 1795 break; 1796 } 1797 case 1: { 1798 sink_(GetEmit18(index, (op >> 2) + 0)); 1799 sink_(GetEmit18(index, (op >> 2) + 1)); 1800 break; 1801 } 1802 case 2: { 1803 sink_(GetEmit18(index, (op >> 2) + 0)); 1804 break; 1805 } 1806 } 1807 return; 1808 } 1809 case 10: { 1810 const auto index = buffer_ & 1023; 1811 const auto op = GetOp19(index); 1812 switch (op & 3) { 1813 case 0: { 1814 ok_ = false; 1815 break; 1816 } 1817 case 1: { 1818 sink_(GetEmit19(index, (op >> 2) + 0)); 1819 sink_(GetEmit19(index, (op >> 2) + 1)); 1820 break; 1821 } 1822 case 2: { 1823 sink_(GetEmit19(index, (op >> 2) + 0)); 1824 break; 1825 } 1826 } 1827 return; 1828 } 1829 case 11: { 1830 const auto index = buffer_ & 2047; 1831 const auto op = GetOp20(index); 1832 switch (op & 3) { 1833 case 0: { 1834 ok_ = false; 1835 break; 1836 } 1837 case 1: { 1838 sink_(GetEmit20(index, (op >> 2) + 0)); 1839 sink_(GetEmit20(index, (op >> 2) + 1)); 1840 break; 1841 } 1842 case 2: { 1843 sink_(GetEmit20(index, (op >> 2) + 0)); 1844 break; 1845 } 1846 } 1847 return; 1848 } 1849 case 12: { 1850 const auto index = buffer_ & 4095; 1851 const auto op = GetOp21(index); 1852 switch (op & 7) { 1853 case 0: { 1854 sink_(GetEmit21(index, (op >> 3) + 0)); 1855 sink_(GetEmit21(index, (op >> 3) + 1)); 1856 sink_(GetEmit21(index, (op >> 3) + 2)); 1857 break; 1858 } 1859 case 1: { 1860 ok_ = false; 1861 break; 1862 } 1863 case 2: { 1864 sink_(GetEmit21(index, (op >> 3) + 0)); 1865 sink_(GetEmit21(index, (op >> 3) + 1)); 1866 break; 1867 } 1868 case 3: { 1869 sink_(GetEmit21(index, (op >> 3) + 0)); 1870 break; 1871 } 1872 } 1873 return; 1874 } 1875 case 13: { 1876 const auto index = buffer_ & 8191; 1877 const auto op = GetOp22(index); 1878 switch (op & 7) { 1879 case 0: { 1880 ok_ = false; 1881 break; 1882 } 1883 case 1: { 1884 sink_(GetEmit22(index, (op >> 3) + 0)); 1885 sink_(GetEmit22(index, (op >> 3) + 1)); 1886 sink_(GetEmit22(index, (op >> 3) + 2)); 1887 break; 1888 } 1889 case 2: { 1890 sink_(GetEmit22(index, (op >> 3) + 0)); 1891 sink_(GetEmit22(index, (op >> 3) + 1)); 1892 break; 1893 } 1894 case 3: { 1895 sink_(GetEmit22(index, (op >> 3) + 0)); 1896 break; 1897 } 1898 } 1899 return; 1900 } 1901 case 14: { 1902 const auto index = buffer_ & 16383; 1903 const auto op = GetOp23(index); 1904 switch (op & 7) { 1905 case 0: { 1906 ok_ = false; 1907 break; 1908 } 1909 case 1: { 1910 sink_(GetEmit23(index, (op >> 3) + 0)); 1911 sink_(GetEmit23(index, (op >> 3) + 1)); 1912 sink_(GetEmit23(index, (op >> 3) + 2)); 1913 break; 1914 } 1915 case 2: { 1916 sink_(GetEmit23(index, (op >> 3) + 0)); 1917 sink_(GetEmit23(index, (op >> 3) + 1)); 1918 break; 1919 } 1920 case 3: { 1921 sink_(GetEmit23(index, (op >> 3) + 0)); 1922 break; 1923 } 1924 } 1925 return; 1926 } 1927 case 15: { 1928 const auto index = buffer_ & 32767; 1929 const auto op = GetOp24(index); 1930 switch (op & 7) { 1931 case 0: { 1932 ok_ = false; 1933 break; 1934 } 1935 case 1: { 1936 sink_(GetEmit24(index, (op >> 3) + 0)); 1937 sink_(GetEmit24(index, (op >> 3) + 1)); 1938 sink_(GetEmit24(index, (op >> 3) + 2)); 1939 break; 1940 } 1941 case 2: { 1942 sink_(GetEmit24(index, (op >> 3) + 0)); 1943 sink_(GetEmit24(index, (op >> 3) + 1)); 1944 break; 1945 } 1946 case 3: { 1947 sink_(GetEmit24(index, (op >> 3) + 0)); 1948 break; 1949 } 1950 } 1951 return; 1952 } 1953 case 0: { 1954 return; 1955 } 1956 } 1957 } DecodeStep3()1958 void DecodeStep3() { 1959 if (!RefillTo1()) { 1960 Done4(); 1961 return; 1962 } 1963 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1964 const auto op = GetOp25(index); 1965 const int consumed = op & 1; 1966 buffer_len_ -= consumed; 1967 const auto emit_ofs = op >> 1; 1968 sink_(GetEmit25(index, emit_ofs + 0)); 1969 } Done4()1970 void Done4() { 1971 done_ = true; 1972 ok_ = false; 1973 } DecodeStep4()1974 void DecodeStep4() { 1975 if (!RefillTo1()) { 1976 Done5(); 1977 return; 1978 } 1979 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1980 const auto op = GetOp26(index); 1981 const int consumed = op & 1; 1982 buffer_len_ -= consumed; 1983 const auto emit_ofs = op >> 1; 1984 sink_(GetEmit26(index, emit_ofs + 0)); 1985 } Done5()1986 void Done5() { 1987 done_ = true; 1988 ok_ = false; 1989 } DecodeStep5()1990 void DecodeStep5() { 1991 if (!RefillTo1()) { 1992 Done6(); 1993 return; 1994 } 1995 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1996 const auto op = GetOp27(index); 1997 const int consumed = op & 1; 1998 buffer_len_ -= consumed; 1999 const auto emit_ofs = op >> 1; 2000 sink_(GetEmit27(index, emit_ofs + 0)); 2001 } Done6()2002 void Done6() { 2003 done_ = true; 2004 ok_ = false; 2005 } DecodeStep6()2006 void DecodeStep6() { 2007 if (!RefillTo1()) { 2008 Done7(); 2009 return; 2010 } 2011 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2012 const auto op = GetOp28(index); 2013 const int consumed = op & 1; 2014 buffer_len_ -= consumed; 2015 const auto emit_ofs = op >> 1; 2016 sink_(GetEmit28(index, emit_ofs + 0)); 2017 } Done7()2018 void Done7() { 2019 done_ = true; 2020 ok_ = false; 2021 } DecodeStep7()2022 void DecodeStep7() { 2023 if (!RefillTo1()) { 2024 Done8(); 2025 return; 2026 } 2027 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2028 const auto op = GetOp29(index); 2029 const int consumed = op & 1; 2030 buffer_len_ -= consumed; 2031 const auto emit_ofs = op >> 1; 2032 sink_(GetEmit29(index, emit_ofs + 0)); 2033 } Done8()2034 void Done8() { 2035 done_ = true; 2036 ok_ = false; 2037 } DecodeStep8()2038 void DecodeStep8() { 2039 if (!RefillTo1()) { 2040 Done9(); 2041 return; 2042 } 2043 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2044 const auto op = GetOp30(index); 2045 const int consumed = op & 1; 2046 buffer_len_ -= consumed; 2047 const auto emit_ofs = op >> 1; 2048 sink_(GetEmit30(index, emit_ofs + 0)); 2049 } Done9()2050 void Done9() { 2051 done_ = true; 2052 ok_ = false; 2053 } DecodeStep9()2054 void DecodeStep9() { 2055 if (!RefillTo1()) { 2056 Done10(); 2057 return; 2058 } 2059 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2060 const auto op = GetOp31(index); 2061 const int consumed = op & 1; 2062 buffer_len_ -= consumed; 2063 const auto emit_ofs = op >> 1; 2064 sink_(GetEmit31(index, emit_ofs + 0)); 2065 } Done10()2066 void Done10() { 2067 done_ = true; 2068 ok_ = false; 2069 } DecodeStep10()2070 void DecodeStep10() { 2071 if (!RefillTo1()) { 2072 Done11(); 2073 return; 2074 } 2075 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2076 const auto op = GetOp32(index); 2077 const int consumed = op & 1; 2078 buffer_len_ -= consumed; 2079 const auto emit_ofs = op >> 1; 2080 sink_(GetEmit32(index, emit_ofs + 0)); 2081 } Done11()2082 void Done11() { 2083 done_ = true; 2084 ok_ = false; 2085 } DecodeStep11()2086 void DecodeStep11() { 2087 if (!RefillTo1()) { 2088 Done12(); 2089 return; 2090 } 2091 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2092 const auto op = GetOp33(index); 2093 const int consumed = op & 1; 2094 buffer_len_ -= consumed; 2095 const auto emit_ofs = op >> 1; 2096 sink_(GetEmit33(index, emit_ofs + 0)); 2097 } Done12()2098 void Done12() { 2099 done_ = true; 2100 ok_ = false; 2101 } DecodeStep12()2102 void DecodeStep12() { 2103 if (!RefillTo1()) { 2104 Done13(); 2105 return; 2106 } 2107 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2108 const auto op = GetOp34(index); 2109 const int consumed = op & 1; 2110 buffer_len_ -= consumed; 2111 const auto emit_ofs = op >> 1; 2112 sink_(GetEmit34(index, emit_ofs + 0)); 2113 } Done13()2114 void Done13() { 2115 done_ = true; 2116 ok_ = false; 2117 } DecodeStep13()2118 void DecodeStep13() { 2119 if (!RefillTo1()) { 2120 Done14(); 2121 return; 2122 } 2123 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2124 const auto op = GetOp35(index); 2125 const int consumed = op & 1; 2126 buffer_len_ -= consumed; 2127 const auto emit_ofs = op >> 1; 2128 sink_(GetEmit35(index, emit_ofs + 0)); 2129 } Done14()2130 void Done14() { 2131 done_ = true; 2132 ok_ = false; 2133 } DecodeStep14()2134 void DecodeStep14() { 2135 if (!RefillTo1()) { 2136 Done15(); 2137 return; 2138 } 2139 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2140 const auto op = GetOp36(index); 2141 const int consumed = op & 1; 2142 buffer_len_ -= consumed; 2143 const auto emit_ofs = op >> 1; 2144 sink_(GetEmit36(index, emit_ofs + 0)); 2145 } Done15()2146 void Done15() { 2147 done_ = true; 2148 ok_ = false; 2149 } DecodeStep15()2150 void DecodeStep15() { 2151 if (!RefillTo1()) { 2152 Done16(); 2153 return; 2154 } 2155 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2156 const auto op = GetOp37(index); 2157 const int consumed = op & 1; 2158 buffer_len_ -= consumed; 2159 const auto emit_ofs = op >> 1; 2160 sink_(GetEmit37(index, emit_ofs + 0)); 2161 } Done16()2162 void Done16() { 2163 done_ = true; 2164 ok_ = false; 2165 } DecodeStep16()2166 void DecodeStep16() { 2167 if (!RefillTo1()) { 2168 Done17(); 2169 return; 2170 } 2171 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 2172 const auto op = GetOp38(index); 2173 const int consumed = op & 1; 2174 buffer_len_ -= consumed; 2175 const auto emit_ofs = op >> 1; 2176 sink_(GetEmit38(index, emit_ofs + 0)); 2177 } Done17()2178 void Done17() { 2179 done_ = true; 2180 ok_ = false; 2181 } DecodeStep17()2182 void DecodeStep17() { 2183 if (!RefillTo3()) { 2184 Done18(); 2185 return; 2186 } 2187 const auto index = (buffer_ >> (buffer_len_ - 3)) & 0x7; 2188 const auto op = GetOp39(index); 2189 const int consumed = op & 3; 2190 buffer_len_ -= consumed; 2191 const auto emit_ofs = op >> 3; 2192 switch ((op >> 2) & 1) { 2193 case 0: { 2194 sink_(GetEmit39(index, emit_ofs + 0)); 2195 break; 2196 } 2197 case 1: { 2198 begin_ = end_; 2199 buffer_len_ = 0; 2200 break; 2201 } 2202 } 2203 } RefillTo3()2204 bool RefillTo3() { 2205 switch (buffer_len_) { 2206 case 0: { 2207 return Read1to8Bytes(); 2208 } 2209 case 1: 2210 case 2: { 2211 return Read1to7Bytes(); 2212 } 2213 } 2214 return true; 2215 } Done18()2216 void Done18() { 2217 done_ = true; 2218 switch (buffer_len_) { 2219 case 1: { 2220 const auto index = buffer_ & 1; 2221 const auto op = GetOp40(index); 2222 switch (op & 1) { 2223 case 0: { 2224 sink_(GetEmit40(index, (op >> 1) + 0)); 2225 break; 2226 } 2227 } 2228 return; 2229 } 2230 case 2: { 2231 const auto index = buffer_ & 3; 2232 const auto op = GetOp41(index); 2233 switch (op & 3) { 2234 case 0: { 2235 ok_ = false; 2236 break; 2237 } 2238 case 1: { 2239 sink_(GetEmit41(index, (op >> 2) + 0)); 2240 break; 2241 } 2242 } 2243 return; 2244 } 2245 case 0: { 2246 return; 2247 } 2248 } 2249 } 2250 F sink_; 2251 const uint8_t* begin_; 2252 const uint8_t* const end_; 2253 uint64_t buffer_ = 0; 2254 int buffer_len_ = 0; 2255 bool ok_ = true; 2256 bool done_ = false; 2257 }; 2258 } // namespace geometry_11_16 2259 } // namespace grpc_core 2260 #endif // GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_11_16_H 2261