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_10_16_H 19 #define GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_10_16_H 20 #include <cstddef> 21 #include <cstdint> 22 23 #include <grpc/support/port_platform.h> 24 namespace grpc_core { 25 namespace geometry_10_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 } GetOp1(size_t i)54 static inline uint64_t GetOp1(size_t i) { 55 return table1_inner_[i >> 6][table1_outer_[i >> 6][i & 0x3f]]; 56 } GetEmit1(size_t i,size_t emit)57 static inline uint64_t GetEmit1(size_t i, size_t emit) { 58 return table1_emit_[i >> 6][emit]; 59 } GetOp7(size_t i)60 static inline uint64_t GetOp7(size_t i) { return i ? 3 : 1; } GetEmit7(size_t,size_t emit)61 static inline uint64_t GetEmit7(size_t, size_t emit) { 62 return emit ? 43 : 39; 63 } GetOp9(size_t i)64 static inline uint64_t GetOp9(size_t i) { return table9_0_inner_[i]; } GetEmit9(size_t,size_t emit)65 static inline uint64_t GetEmit9(size_t, size_t emit) { 66 return table9_0_emit_[emit]; 67 } GetOp10(size_t i)68 static inline uint64_t GetOp10(size_t i) { 69 return table10_0_inner_[table10_0_outer_[i]]; 70 } GetEmit10(size_t,size_t emit)71 static inline uint64_t GetEmit10(size_t, size_t emit) { 72 return table10_0_emit_[emit]; 73 } GetOp11(size_t i)74 static inline uint64_t GetOp11(size_t i) { return table11_0_ops_[i]; } GetEmit11(size_t,size_t emit)75 static inline uint64_t GetEmit11(size_t, size_t emit) { 76 return table11_0_emit_[emit]; 77 } GetOp12(size_t i)78 static inline uint64_t GetOp12(size_t i) { return table12_0_ops_[i]; } GetEmit12(size_t,size_t emit)79 static inline uint64_t GetEmit12(size_t, size_t emit) { 80 return table11_0_emit_[emit]; 81 } GetOp13(size_t i)82 static inline uint64_t GetOp13(size_t i) { return table13_0_ops_[i]; } GetEmit13(size_t,size_t emit)83 static inline uint64_t GetEmit13(size_t, size_t emit) { 84 return table11_0_emit_[emit]; 85 } GetOp14(size_t i)86 static inline uint64_t GetOp14(size_t i) { 87 return table14_ops_[i >> 6][i & 0x3f]; 88 } GetEmit14(size_t i,size_t emit)89 static inline uint64_t GetEmit14(size_t i, size_t emit) { 90 return table14_emit_[i >> 6][emit]; 91 } GetOp15(size_t i)92 static inline uint64_t GetOp15(size_t i) { 93 return table15_ops_[i >> 6][i & 0x3f]; 94 } GetEmit15(size_t i,size_t emit)95 static inline uint64_t GetEmit15(size_t i, size_t emit) { 96 return table15_emit_[i >> 6][emit]; 97 } GetOp16(size_t i)98 static inline uint64_t GetOp16(size_t i) { 99 return table16_ops_[i >> 6][i & 0x3f]; 100 } GetEmit16(size_t i,size_t emit)101 static inline uint64_t GetEmit16(size_t i, size_t emit) { 102 return table16_emit_[i >> 6][emit]; 103 } GetOp17(size_t i)104 static inline uint64_t GetOp17(size_t i) { 105 return table17_ops_[i >> 6][i & 0x3f]; 106 } GetEmit17(size_t i,size_t emit)107 static inline uint64_t GetEmit17(size_t i, size_t emit) { 108 return table17_emit_[i >> 6][emit]; 109 } GetOp18(size_t i)110 static inline uint64_t GetOp18(size_t i) { 111 return table18_ops_[i >> 7][i & 0x7f]; 112 } GetEmit18(size_t i,size_t emit)113 static inline uint64_t GetEmit18(size_t i, size_t emit) { 114 return table18_emit_[i >> 7][emit]; 115 } GetOp19(size_t i)116 static inline uint64_t GetOp19(size_t i) { 117 return table19_ops_[i >> 7][i & 0x7f]; 118 } GetEmit19(size_t i,size_t emit)119 static inline uint64_t GetEmit19(size_t i, size_t emit) { 120 return table19_emit_[i >> 7][emit]; 121 } GetOp20(size_t i)122 static inline uint64_t GetOp20(size_t i) { 123 return table20_ops_[i >> 7][i & 0x7f]; 124 } GetEmit20(size_t i,size_t emit)125 static inline uint64_t GetEmit20(size_t i, size_t emit) { 126 return table20_emit_[i >> 7][emit]; 127 } GetOp21(size_t i)128 static inline uint64_t GetOp21(size_t i) { 129 return table21_ops_[i >> 7][i & 0x7f]; 130 } GetEmit21(size_t i,size_t emit)131 static inline uint64_t GetEmit21(size_t i, size_t emit) { 132 return table21_emit_[i >> 7][emit]; 133 } GetOp8(size_t i)134 static inline uint64_t GetOp8(size_t i) { 135 return table8_inner_[i >> 9][table8_outer_[i >> 9][i & 0x1ff]]; 136 } GetEmit8(size_t i,size_t emit)137 static inline uint64_t GetEmit8(size_t i, size_t emit) { 138 return table8_emit_[i >> 9][emit]; 139 } GetOp22(size_t i)140 static inline uint64_t GetOp22(size_t i) { return i ? 3 : 1; } GetEmit22(size_t,size_t emit)141 static inline uint64_t GetEmit22(size_t, size_t emit) { return emit + 203; } GetOp23(size_t i)142 static inline uint64_t GetOp23(size_t i) { return i ? 3 : 1; } GetEmit23(size_t,size_t emit)143 static inline uint64_t GetEmit23(size_t, size_t emit) { return emit + 211; } GetOp24(size_t i)144 static inline uint64_t GetOp24(size_t i) { return i ? 3 : 1; } GetEmit24(size_t,size_t emit)145 static inline uint64_t GetEmit24(size_t, size_t emit) { 146 return emit ? 221 : 214; 147 } GetOp25(size_t i)148 static inline uint64_t GetOp25(size_t i) { return i ? 3 : 1; } GetEmit25(size_t,size_t emit)149 static inline uint64_t GetEmit25(size_t, size_t emit) { return emit + 222; } GetOp26(size_t i)150 static inline uint64_t GetOp26(size_t i) { return i ? 3 : 1; } GetEmit26(size_t,size_t emit)151 static inline uint64_t GetEmit26(size_t, size_t emit) { 152 return emit ? 244 : 241; 153 } GetOp27(size_t i)154 static inline uint64_t GetOp27(size_t i) { return i ? 3 : 1; } GetEmit27(size_t,size_t emit)155 static inline uint64_t GetEmit27(size_t, size_t emit) { return emit + 245; } GetOp28(size_t i)156 static inline uint64_t GetOp28(size_t i) { return i ? 3 : 1; } GetEmit28(size_t,size_t emit)157 static inline uint64_t GetEmit28(size_t, size_t emit) { return emit + 247; } GetOp29(size_t i)158 static inline uint64_t GetOp29(size_t i) { return i ? 3 : 1; } GetEmit29(size_t,size_t emit)159 static inline uint64_t GetEmit29(size_t, size_t emit) { return emit + 250; } GetOp30(size_t i)160 static inline uint64_t GetOp30(size_t i) { return i ? 3 : 1; } GetEmit30(size_t,size_t emit)161 static inline uint64_t GetEmit30(size_t, size_t emit) { return emit + 252; } GetOp31(size_t i)162 static inline uint64_t GetOp31(size_t i) { 163 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 164 } GetEmit31(size_t,size_t emit)165 static inline uint64_t GetEmit31(size_t, size_t emit) { return emit + 4; } GetOp32(size_t i)166 static inline uint64_t GetOp32(size_t i) { 167 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 168 } GetEmit32(size_t,size_t emit)169 static inline uint64_t GetEmit32(size_t, size_t emit) { 170 return (emit < 2 ? (emit ? 11 : 8) : ((emit - 2) ? 14 : 12)); 171 } GetOp33(size_t i)172 static inline uint64_t GetOp33(size_t i) { 173 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 174 } GetEmit33(size_t,size_t emit)175 static inline uint64_t GetEmit33(size_t, size_t emit) { return emit + 15; } GetOp34(size_t i)176 static inline uint64_t GetOp34(size_t i) { 177 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 178 } GetEmit34(size_t,size_t emit)179 static inline uint64_t GetEmit34(size_t, size_t emit) { 180 return (emit < 2 ? (emit + 19) : ((emit - 2) ? 23 : 21)); 181 } GetOp35(size_t i)182 static inline uint64_t GetOp35(size_t i) { 183 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 184 } GetEmit35(size_t,size_t emit)185 static inline uint64_t GetEmit35(size_t, size_t emit) { return emit + 24; } GetOp36(size_t i)186 static inline uint64_t GetOp36(size_t i) { 187 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 188 } GetEmit36(size_t,size_t emit)189 static inline uint64_t GetEmit36(size_t, size_t emit) { return emit + 28; } GetOp38(size_t i)190 static inline uint64_t GetOp38(size_t i) { return i; } GetEmit38(size_t,size_t emit)191 static inline uint64_t GetEmit38(size_t, size_t emit) { 192 return ((void)emit, 254); 193 } GetOp37(size_t i)194 static inline uint64_t GetOp37(size_t i) { 195 return ((i < 1 ? (((void)i, 0)) : ((i - 1))) < 1 196 ? (((void)(i < 1 ? (((void)i, 0)) : ((i - 1))), 1)) 197 : (((i < 1 ? (((void)i, 0)) : ((i - 1))) - 1) ? 10 : 6)); 198 } GetEmit37(size_t,size_t emit)199 static inline uint64_t GetEmit37(size_t, size_t emit) { 200 return (emit < 1 ? (((void)emit, 254)) : ((emit - 1) + 2)); 201 } GetOp40(size_t i)202 static inline uint64_t GetOp40(size_t i) { 203 return (i < 2 ? (i ? 2 : 0) : ((i - 2) ? 1 : 4)); 204 } GetEmit40(size_t,size_t emit)205 static inline uint64_t GetEmit40(size_t, size_t emit) { 206 return (emit < 1 ? (((void)emit, 127)) : ((emit - 1) ? 249 : 220)); 207 } GetOp41(size_t i)208 static inline uint64_t GetOp41(size_t i) { 209 return table41_0_inner_[table41_0_outer_[i]]; 210 } GetEmit41(size_t,size_t emit)211 static inline uint64_t GetEmit41(size_t, size_t emit) { 212 return (emit < 1 ? (((void)emit, 127)) : ((emit - 1) ? 249 : 220)); 213 } GetOp39(size_t i)214 static inline uint64_t GetOp39(size_t i) { 215 return table39_0_inner_[(i < 11 ? (i / 4 + 0) : ((i - 11) + 2))]; 216 } GetEmit39(size_t,size_t emit)217 static inline uint64_t GetEmit39(size_t, size_t emit) { 218 return table39_0_emit_[emit]; 219 } GetOp43(size_t i)220 static inline uint64_t GetOp43(size_t i) { return i; } GetEmit43(size_t,size_t emit)221 static inline uint64_t GetEmit43(size_t, size_t emit) { 222 return ((void)emit, 124); 223 } GetOp42(size_t i)224 static inline uint64_t GetOp42(size_t i) { 225 return ((i < 1 ? (((void)i, 0)) : ((i - 1))) < 1 226 ? (((void)(i < 1 ? (((void)i, 0)) : ((i - 1))), 1)) 227 : (((i < 1 ? (((void)i, 0)) : ((i - 1))) - 1) ? 10 : 6)); 228 } GetEmit42(size_t,size_t emit)229 static inline uint64_t GetEmit42(size_t, size_t emit) { 230 return (emit < 1 ? (((void)emit, 124)) : ((emit - 1) ? 62 : 35)); 231 } 232 233 private: 234 static const uint8_t table2_0_emit_[10]; 235 static const uint8_t table2_0_ops_[32]; 236 static const uint8_t table3_0_emit_[36]; 237 static const uint8_t table3_0_ops_[64]; 238 static const uint8_t table4_0_emit_[22]; 239 static const uint8_t table4_0_ops_[64]; 240 static const uint8_t table4_1_emit_[46]; 241 static const uint8_t table4_1_ops_[64]; 242 static const uint8_t* const table4_emit_[2]; 243 static const uint8_t* const table4_ops_[2]; 244 static const uint8_t table5_0_ops_[128]; 245 static const uint8_t table5_1_emit_[52]; 246 static const uint8_t table5_1_ops_[128]; 247 static const uint8_t* const table5_emit_[2]; 248 static const uint8_t* const table5_ops_[2]; 249 static const uint8_t table6_0_emit_[2]; 250 static const uint8_t table6_0_ops_[32]; 251 static const uint8_t table6_1_emit_[2]; 252 static const uint8_t table6_2_emit_[2]; 253 static const uint8_t table6_3_emit_[2]; 254 static const uint8_t table6_4_emit_[2]; 255 static const uint8_t table6_5_emit_[4]; 256 static const uint8_t table6_5_ops_[32]; 257 static const uint8_t table6_6_emit_[4]; 258 static const uint8_t table6_7_emit_[4]; 259 static const uint8_t table6_8_emit_[4]; 260 static const uint8_t table6_9_emit_[4]; 261 static const uint8_t table6_10_emit_[4]; 262 static const uint8_t table6_11_emit_[6]; 263 static const uint8_t table6_11_ops_[32]; 264 static const uint8_t table6_12_emit_[8]; 265 static const uint8_t table6_12_ops_[32]; 266 static const uint8_t table6_13_emit_[8]; 267 static const uint8_t table6_14_emit_[8]; 268 static const uint8_t table6_15_emit_[10]; 269 static const uint8_t table6_15_ops_[32]; 270 static const uint8_t* const table6_emit_[16]; 271 static const uint8_t* const table6_ops_[16]; 272 static const uint8_t table1_0_emit_[36]; 273 static const uint16_t table1_0_inner_[22]; 274 static const uint8_t table1_0_outer_[64]; 275 static const uint8_t table1_1_emit_[36]; 276 static const uint16_t table1_1_inner_[22]; 277 static const uint8_t table1_2_emit_[36]; 278 static const uint16_t table1_2_inner_[22]; 279 static const uint8_t table1_3_emit_[36]; 280 static const uint16_t table1_3_inner_[22]; 281 static const uint8_t table1_4_emit_[38]; 282 static const uint16_t table1_4_inner_[22]; 283 static const uint16_t table1_5_inner_[4]; 284 static const uint8_t table1_5_outer_[64]; 285 static const uint16_t table1_11_inner_[6]; 286 static const uint8_t table1_11_outer_[64]; 287 static const uint16_t table1_12_inner_[8]; 288 static const uint8_t table1_12_outer_[64]; 289 static const uint8_t table1_15_emit_[15]; 290 static const uint16_t table1_15_inner_[18]; 291 static const uint8_t table1_15_outer_[64]; 292 static const uint8_t* const table1_emit_[16]; 293 static const uint16_t* const table1_inner_[16]; 294 static const uint8_t* const table1_outer_[16]; 295 static const uint8_t table9_0_emit_[6]; 296 static const uint8_t table9_0_inner_[8]; 297 static const uint8_t table10_0_emit_[8]; 298 static const uint8_t table10_0_inner_[10]; 299 static const uint8_t table10_0_outer_[16]; 300 static const uint8_t table11_0_emit_[11]; 301 static const uint8_t table11_0_ops_[32]; 302 static const uint8_t table12_0_ops_[64]; 303 static const uint8_t table13_0_ops_[128]; 304 static const uint8_t table14_0_emit_[40]; 305 static const uint8_t table14_0_ops_[64]; 306 static const uint8_t table14_1_emit_[40]; 307 static const uint8_t table14_2_emit_[40]; 308 static const uint8_t table14_3_emit_[5]; 309 static const uint8_t table14_3_ops_[64]; 310 static const uint8_t* const table14_emit_[4]; 311 static const uint8_t* const table14_ops_[4]; 312 static const uint8_t table15_0_emit_[72]; 313 static const uint16_t table15_0_ops_[64]; 314 static const uint8_t table15_1_emit_[72]; 315 static const uint8_t table15_2_emit_[72]; 316 static const uint8_t table15_3_emit_[72]; 317 static const uint8_t table15_4_emit_[72]; 318 static const uint8_t table15_5_emit_[72]; 319 static const uint8_t table15_6_emit_[40]; 320 static const uint16_t table15_6_ops_[64]; 321 static const uint8_t table15_7_emit_[6]; 322 static const uint16_t table15_7_ops_[64]; 323 static const uint8_t* const table15_emit_[8]; 324 static const uint16_t* const table15_ops_[8]; 325 static const uint8_t table16_0_emit_[44]; 326 static const uint16_t table16_0_ops_[64]; 327 static const uint8_t table16_1_emit_[92]; 328 static const uint16_t table16_1_ops_[64]; 329 static const uint8_t table16_2_emit_[44]; 330 static const uint8_t table16_3_emit_[92]; 331 static const uint8_t table16_4_emit_[44]; 332 static const uint8_t table16_5_emit_[92]; 333 static const uint8_t table16_6_emit_[44]; 334 static const uint8_t table16_7_emit_[92]; 335 static const uint8_t table16_8_emit_[44]; 336 static const uint8_t table16_9_emit_[92]; 337 static const uint8_t table16_10_emit_[44]; 338 static const uint8_t table16_11_emit_[92]; 339 static const uint8_t table16_12_emit_[72]; 340 static const uint8_t table16_13_emit_[72]; 341 static const uint8_t table16_14_emit_[40]; 342 static const uint8_t table16_15_emit_[31]; 343 static const uint16_t table16_15_ops_[64]; 344 static const uint8_t* const table16_emit_[16]; 345 static const uint16_t* const table16_ops_[16]; 346 static const uint8_t table17_0_emit_[16]; 347 static const uint16_t table17_0_ops_[64]; 348 static const uint8_t table17_1_emit_[28]; 349 static const uint16_t table17_1_ops_[64]; 350 static const uint8_t table17_2_emit_[36]; 351 static const uint16_t table17_2_ops_[64]; 352 static const uint8_t table17_3_emit_[68]; 353 static const uint16_t table17_3_ops_[64]; 354 static const uint8_t table17_4_emit_[16]; 355 static const uint8_t table17_5_emit_[28]; 356 static const uint8_t table17_6_emit_[36]; 357 static const uint8_t table17_7_emit_[68]; 358 static const uint8_t table17_8_emit_[16]; 359 static const uint8_t table17_9_emit_[28]; 360 static const uint8_t table17_10_emit_[36]; 361 static const uint8_t table17_11_emit_[68]; 362 static const uint8_t table17_12_emit_[16]; 363 static const uint8_t table17_13_emit_[28]; 364 static const uint8_t table17_14_emit_[36]; 365 static const uint8_t table17_15_emit_[68]; 366 static const uint8_t table17_16_emit_[16]; 367 static const uint8_t table17_17_emit_[28]; 368 static const uint8_t table17_18_emit_[36]; 369 static const uint8_t table17_19_emit_[68]; 370 static const uint8_t table17_20_emit_[16]; 371 static const uint8_t table17_21_emit_[28]; 372 static const uint8_t table17_22_emit_[36]; 373 static const uint8_t table17_23_emit_[68]; 374 static const uint8_t table17_24_emit_[44]; 375 static const uint8_t table17_25_emit_[92]; 376 static const uint8_t table17_26_emit_[44]; 377 static const uint8_t table17_27_emit_[92]; 378 static const uint8_t table17_28_emit_[72]; 379 static const uint8_t table17_29_emit_[72]; 380 static const uint8_t table17_30_emit_[72]; 381 static const uint8_t table17_31_emit_[24]; 382 static const uint16_t table17_31_ops_[64]; 383 static const uint8_t* const table17_emit_[32]; 384 static const uint16_t* const table17_ops_[32]; 385 static const uint16_t table18_0_ops_[128]; 386 static const uint16_t table18_1_ops_[128]; 387 static const uint16_t table18_2_ops_[128]; 388 static const uint16_t table18_3_ops_[128]; 389 static const uint16_t table18_24_ops_[128]; 390 static const uint8_t table18_25_emit_[104]; 391 static const uint16_t table18_25_ops_[128]; 392 static const uint8_t table18_27_emit_[104]; 393 static const uint8_t table18_28_emit_[136]; 394 static const uint16_t table18_28_ops_[128]; 395 static const uint8_t table18_29_emit_[136]; 396 static const uint8_t table18_30_emit_[136]; 397 static const uint8_t table18_31_emit_[50]; 398 static const uint16_t table18_31_ops_[128]; 399 static const uint8_t* const table18_emit_[32]; 400 static const uint16_t* const table18_ops_[32]; 401 static const uint8_t table19_0_emit_[120]; 402 static const uint16_t table19_0_ops_[128]; 403 static const uint8_t table19_1_emit_[120]; 404 static const uint8_t table19_2_emit_[68]; 405 static const uint16_t table19_2_ops_[128]; 406 static const uint8_t table19_3_emit_[16]; 407 static const uint16_t table19_3_ops_[128]; 408 static const uint8_t table19_4_emit_[16]; 409 static const uint8_t table19_5_emit_[20]; 410 static const uint16_t table19_5_ops_[128]; 411 static const uint8_t table19_6_emit_[32]; 412 static const uint16_t table19_6_ops_[128]; 413 static const uint8_t table19_7_emit_[46]; 414 static const uint16_t table19_7_ops_[128]; 415 static const uint8_t table19_8_emit_[120]; 416 static const uint8_t table19_9_emit_[120]; 417 static const uint8_t table19_10_emit_[68]; 418 static const uint8_t table19_11_emit_[16]; 419 static const uint8_t table19_12_emit_[16]; 420 static const uint8_t table19_13_emit_[20]; 421 static const uint8_t table19_14_emit_[32]; 422 static const uint8_t table19_15_emit_[46]; 423 static const uint8_t table19_16_emit_[120]; 424 static const uint8_t table19_17_emit_[120]; 425 static const uint8_t table19_18_emit_[68]; 426 static const uint8_t table19_19_emit_[16]; 427 static const uint8_t table19_20_emit_[16]; 428 static const uint8_t table19_21_emit_[20]; 429 static const uint8_t table19_22_emit_[32]; 430 static const uint8_t table19_23_emit_[46]; 431 static const uint8_t table19_24_emit_[120]; 432 static const uint8_t table19_25_emit_[120]; 433 static const uint8_t table19_26_emit_[68]; 434 static const uint8_t table19_27_emit_[16]; 435 static const uint8_t table19_28_emit_[16]; 436 static const uint8_t table19_29_emit_[20]; 437 static const uint8_t table19_30_emit_[32]; 438 static const uint8_t table19_31_emit_[46]; 439 static const uint8_t table19_32_emit_[120]; 440 static const uint8_t table19_33_emit_[120]; 441 static const uint8_t table19_34_emit_[68]; 442 static const uint8_t table19_35_emit_[16]; 443 static const uint8_t table19_36_emit_[16]; 444 static const uint8_t table19_37_emit_[20]; 445 static const uint8_t table19_38_emit_[32]; 446 static const uint8_t table19_39_emit_[46]; 447 static const uint8_t table19_40_emit_[120]; 448 static const uint8_t table19_41_emit_[120]; 449 static const uint8_t table19_42_emit_[68]; 450 static const uint8_t table19_43_emit_[16]; 451 static const uint8_t table19_44_emit_[16]; 452 static const uint8_t table19_45_emit_[20]; 453 static const uint8_t table19_46_emit_[32]; 454 static const uint8_t table19_47_emit_[46]; 455 static const uint8_t table19_48_emit_[16]; 456 static const uint8_t table19_49_emit_[28]; 457 static const uint16_t table19_49_ops_[128]; 458 static const uint8_t table19_50_emit_[36]; 459 static const uint16_t table19_50_ops_[128]; 460 static const uint8_t table19_51_emit_[68]; 461 static const uint16_t table19_51_ops_[128]; 462 static const uint8_t table19_52_emit_[16]; 463 static const uint8_t table19_53_emit_[28]; 464 static const uint8_t table19_54_emit_[36]; 465 static const uint8_t table19_55_emit_[68]; 466 static const uint8_t table19_56_emit_[44]; 467 static const uint16_t table19_56_ops_[128]; 468 static const uint8_t table19_57_emit_[104]; 469 static const uint16_t table19_57_ops_[128]; 470 static const uint8_t table19_58_emit_[44]; 471 static const uint8_t table19_59_emit_[104]; 472 static const uint8_t table19_60_emit_[44]; 473 static const uint8_t table19_61_emit_[104]; 474 static const uint8_t table19_62_emit_[15]; 475 static const uint16_t table19_62_ops_[128]; 476 static const uint8_t table19_63_emit_[64]; 477 static const uint16_t table19_63_ops_[128]; 478 static const uint8_t* const table19_emit_[64]; 479 static const uint16_t* const table19_ops_[64]; 480 static const uint8_t table20_0_emit_[216]; 481 static const uint16_t table20_0_ops_[128]; 482 static const uint8_t table20_1_emit_[216]; 483 static const uint8_t table20_2_emit_[216]; 484 static const uint8_t table20_3_emit_[216]; 485 static const uint8_t table20_4_emit_[216]; 486 static const uint8_t table20_5_emit_[120]; 487 static const uint16_t table20_5_ops_[128]; 488 static const uint8_t table20_6_emit_[120]; 489 static const uint8_t table20_7_emit_[120]; 490 static const uint8_t table20_8_emit_[120]; 491 static const uint8_t table20_9_emit_[120]; 492 static const uint8_t table20_10_emit_[120]; 493 static const uint8_t table20_11_emit_[68]; 494 static const uint16_t table20_11_ops_[128]; 495 static const uint8_t table20_12_emit_[16]; 496 static const uint16_t table20_12_ops_[128]; 497 static const uint8_t table20_13_emit_[16]; 498 static const uint8_t table20_14_emit_[16]; 499 static const uint8_t table20_15_emit_[36]; 500 static const uint16_t table20_15_ops_[128]; 501 static const uint8_t table20_16_emit_[216]; 502 static const uint8_t table20_17_emit_[216]; 503 static const uint8_t table20_18_emit_[216]; 504 static const uint8_t table20_19_emit_[216]; 505 static const uint8_t table20_20_emit_[216]; 506 static const uint8_t table20_21_emit_[120]; 507 static const uint8_t table20_22_emit_[120]; 508 static const uint8_t table20_23_emit_[120]; 509 static const uint8_t table20_24_emit_[120]; 510 static const uint8_t table20_25_emit_[120]; 511 static const uint8_t table20_26_emit_[120]; 512 static const uint8_t table20_27_emit_[68]; 513 static const uint8_t table20_28_emit_[16]; 514 static const uint8_t table20_29_emit_[16]; 515 static const uint8_t table20_30_emit_[16]; 516 static const uint8_t table20_31_emit_[36]; 517 static const uint8_t table20_32_emit_[216]; 518 static const uint8_t table20_33_emit_[216]; 519 static const uint8_t table20_34_emit_[216]; 520 static const uint8_t table20_35_emit_[216]; 521 static const uint8_t table20_36_emit_[216]; 522 static const uint8_t table20_37_emit_[120]; 523 static const uint8_t table20_38_emit_[120]; 524 static const uint8_t table20_39_emit_[120]; 525 static const uint8_t table20_40_emit_[120]; 526 static const uint8_t table20_41_emit_[120]; 527 static const uint8_t table20_42_emit_[120]; 528 static const uint8_t table20_43_emit_[68]; 529 static const uint8_t table20_44_emit_[16]; 530 static const uint8_t table20_45_emit_[16]; 531 static const uint8_t table20_46_emit_[16]; 532 static const uint8_t table20_47_emit_[36]; 533 static const uint8_t table20_48_emit_[216]; 534 static const uint8_t table20_49_emit_[216]; 535 static const uint8_t table20_50_emit_[216]; 536 static const uint8_t table20_51_emit_[216]; 537 static const uint8_t table20_52_emit_[216]; 538 static const uint8_t table20_53_emit_[120]; 539 static const uint8_t table20_54_emit_[120]; 540 static const uint8_t table20_55_emit_[120]; 541 static const uint8_t table20_56_emit_[120]; 542 static const uint8_t table20_57_emit_[120]; 543 static const uint8_t table20_58_emit_[120]; 544 static const uint8_t table20_59_emit_[68]; 545 static const uint8_t table20_60_emit_[16]; 546 static const uint8_t table20_61_emit_[16]; 547 static const uint8_t table20_62_emit_[16]; 548 static const uint8_t table20_63_emit_[36]; 549 static const uint8_t table20_64_emit_[216]; 550 static const uint8_t table20_65_emit_[216]; 551 static const uint8_t table20_66_emit_[216]; 552 static const uint8_t table20_67_emit_[216]; 553 static const uint8_t table20_68_emit_[216]; 554 static const uint8_t table20_69_emit_[120]; 555 static const uint8_t table20_70_emit_[120]; 556 static const uint8_t table20_71_emit_[120]; 557 static const uint8_t table20_72_emit_[120]; 558 static const uint8_t table20_73_emit_[120]; 559 static const uint8_t table20_74_emit_[120]; 560 static const uint8_t table20_75_emit_[68]; 561 static const uint8_t table20_76_emit_[16]; 562 static const uint8_t table20_77_emit_[16]; 563 static const uint8_t table20_78_emit_[16]; 564 static const uint8_t table20_79_emit_[36]; 565 static const uint8_t table20_80_emit_[216]; 566 static const uint8_t table20_81_emit_[216]; 567 static const uint8_t table20_82_emit_[216]; 568 static const uint8_t table20_83_emit_[216]; 569 static const uint8_t table20_84_emit_[216]; 570 static const uint8_t table20_85_emit_[120]; 571 static const uint8_t table20_86_emit_[120]; 572 static const uint8_t table20_87_emit_[120]; 573 static const uint8_t table20_88_emit_[120]; 574 static const uint8_t table20_89_emit_[120]; 575 static const uint8_t table20_90_emit_[120]; 576 static const uint8_t table20_91_emit_[68]; 577 static const uint8_t table20_92_emit_[16]; 578 static const uint8_t table20_93_emit_[16]; 579 static const uint8_t table20_94_emit_[16]; 580 static const uint8_t table20_95_emit_[36]; 581 static const uint8_t table20_96_emit_[120]; 582 static const uint8_t table20_97_emit_[120]; 583 static const uint8_t table20_98_emit_[68]; 584 static const uint8_t table20_99_emit_[16]; 585 static const uint8_t table20_100_emit_[16]; 586 static const uint8_t table20_101_emit_[20]; 587 static const uint16_t table20_101_ops_[128]; 588 static const uint8_t table20_102_emit_[32]; 589 static const uint16_t table20_102_ops_[128]; 590 static const uint8_t table20_103_emit_[46]; 591 static const uint16_t table20_103_ops_[128]; 592 static const uint8_t table20_104_emit_[120]; 593 static const uint8_t table20_105_emit_[120]; 594 static const uint8_t table20_106_emit_[68]; 595 static const uint8_t table20_107_emit_[16]; 596 static const uint8_t table20_108_emit_[16]; 597 static const uint8_t table20_109_emit_[20]; 598 static const uint8_t table20_110_emit_[32]; 599 static const uint8_t table20_111_emit_[46]; 600 static const uint8_t table20_112_emit_[16]; 601 static const uint8_t table20_113_emit_[28]; 602 static const uint16_t table20_113_ops_[128]; 603 static const uint8_t table20_114_emit_[36]; 604 static const uint16_t table20_114_ops_[128]; 605 static const uint8_t table20_115_emit_[68]; 606 static const uint16_t table20_115_ops_[128]; 607 static const uint8_t table20_116_emit_[16]; 608 static const uint8_t table20_117_emit_[28]; 609 static const uint8_t table20_118_emit_[36]; 610 static const uint8_t table20_119_emit_[68]; 611 static const uint8_t table20_120_emit_[16]; 612 static const uint8_t table20_121_emit_[28]; 613 static const uint8_t table20_122_emit_[36]; 614 static const uint8_t table20_123_emit_[68]; 615 static const uint8_t table20_124_emit_[62]; 616 static const uint16_t table20_124_ops_[128]; 617 static const uint8_t table20_125_emit_[10]; 618 static const uint16_t table20_125_ops_[128]; 619 static const uint8_t table20_126_emit_[23]; 620 static const uint16_t table20_126_ops_[128]; 621 static const uint8_t table20_127_emit_[53]; 622 static const uint16_t table20_127_ops_[128]; 623 static const uint8_t* const table20_emit_[128]; 624 static const uint16_t* const table20_ops_[128]; 625 static const uint8_t table21_0_emit_[204]; 626 static const uint16_t table21_0_ops_[128]; 627 static const uint8_t table21_1_emit_[204]; 628 static const uint8_t table21_2_emit_[204]; 629 static const uint8_t table21_3_emit_[204]; 630 static const uint8_t table21_4_emit_[204]; 631 static const uint8_t table21_5_emit_[204]; 632 static const uint8_t table21_6_emit_[204]; 633 static const uint8_t table21_7_emit_[204]; 634 static const uint8_t table21_8_emit_[204]; 635 static const uint8_t table21_9_emit_[204]; 636 static const uint8_t table21_10_emit_[216]; 637 static const uint8_t table21_11_emit_[216]; 638 static const uint8_t table21_12_emit_[216]; 639 static const uint8_t table21_13_emit_[216]; 640 static const uint8_t table21_14_emit_[216]; 641 static const uint8_t table21_15_emit_[216]; 642 static const uint8_t table21_16_emit_[216]; 643 static const uint8_t table21_17_emit_[216]; 644 static const uint8_t table21_18_emit_[216]; 645 static const uint8_t table21_19_emit_[216]; 646 static const uint8_t table21_20_emit_[216]; 647 static const uint8_t table21_21_emit_[216]; 648 static const uint8_t table21_22_emit_[216]; 649 static const uint8_t table21_23_emit_[120]; 650 static const uint8_t table21_24_emit_[120]; 651 static const uint8_t table21_25_emit_[120]; 652 static const uint8_t table21_26_emit_[120]; 653 static const uint8_t table21_27_emit_[120]; 654 static const uint8_t table21_28_emit_[120]; 655 static const uint8_t table21_29_emit_[120]; 656 static const uint8_t table21_30_emit_[120]; 657 static const uint8_t table21_31_emit_[32]; 658 static const uint16_t table21_31_ops_[128]; 659 static const uint8_t table21_32_emit_[204]; 660 static const uint8_t table21_33_emit_[204]; 661 static const uint8_t table21_34_emit_[204]; 662 static const uint8_t table21_35_emit_[204]; 663 static const uint8_t table21_36_emit_[204]; 664 static const uint8_t table21_37_emit_[204]; 665 static const uint8_t table21_38_emit_[204]; 666 static const uint8_t table21_39_emit_[204]; 667 static const uint8_t table21_40_emit_[204]; 668 static const uint8_t table21_41_emit_[204]; 669 static const uint8_t table21_42_emit_[216]; 670 static const uint8_t table21_43_emit_[216]; 671 static const uint8_t table21_44_emit_[216]; 672 static const uint8_t table21_45_emit_[216]; 673 static const uint8_t table21_46_emit_[216]; 674 static const uint8_t table21_47_emit_[216]; 675 static const uint8_t table21_48_emit_[216]; 676 static const uint8_t table21_49_emit_[216]; 677 static const uint8_t table21_50_emit_[216]; 678 static const uint8_t table21_51_emit_[216]; 679 static const uint8_t table21_52_emit_[216]; 680 static const uint8_t table21_53_emit_[216]; 681 static const uint8_t table21_54_emit_[216]; 682 static const uint8_t table21_55_emit_[120]; 683 static const uint8_t table21_56_emit_[120]; 684 static const uint8_t table21_57_emit_[120]; 685 static const uint8_t table21_58_emit_[120]; 686 static const uint8_t table21_59_emit_[120]; 687 static const uint8_t table21_60_emit_[120]; 688 static const uint8_t table21_61_emit_[120]; 689 static const uint8_t table21_62_emit_[120]; 690 static const uint8_t table21_63_emit_[32]; 691 static const uint8_t table21_64_emit_[204]; 692 static const uint8_t table21_65_emit_[204]; 693 static const uint8_t table21_66_emit_[204]; 694 static const uint8_t table21_67_emit_[204]; 695 static const uint8_t table21_68_emit_[204]; 696 static const uint8_t table21_69_emit_[204]; 697 static const uint8_t table21_70_emit_[204]; 698 static const uint8_t table21_71_emit_[204]; 699 static const uint8_t table21_72_emit_[204]; 700 static const uint8_t table21_73_emit_[204]; 701 static const uint8_t table21_74_emit_[216]; 702 static const uint8_t table21_75_emit_[216]; 703 static const uint8_t table21_76_emit_[216]; 704 static const uint8_t table21_77_emit_[216]; 705 static const uint8_t table21_78_emit_[216]; 706 static const uint8_t table21_79_emit_[216]; 707 static const uint8_t table21_80_emit_[216]; 708 static const uint8_t table21_81_emit_[216]; 709 static const uint8_t table21_82_emit_[216]; 710 static const uint8_t table21_83_emit_[216]; 711 static const uint8_t table21_84_emit_[216]; 712 static const uint8_t table21_85_emit_[216]; 713 static const uint8_t table21_86_emit_[216]; 714 static const uint8_t table21_87_emit_[120]; 715 static const uint8_t table21_88_emit_[120]; 716 static const uint8_t table21_89_emit_[120]; 717 static const uint8_t table21_90_emit_[120]; 718 static const uint8_t table21_91_emit_[120]; 719 static const uint8_t table21_92_emit_[120]; 720 static const uint8_t table21_93_emit_[120]; 721 static const uint8_t table21_94_emit_[120]; 722 static const uint8_t table21_95_emit_[32]; 723 static const uint8_t table21_96_emit_[204]; 724 static const uint8_t table21_97_emit_[204]; 725 static const uint8_t table21_98_emit_[204]; 726 static const uint8_t table21_99_emit_[204]; 727 static const uint8_t table21_100_emit_[204]; 728 static const uint8_t table21_101_emit_[204]; 729 static const uint8_t table21_102_emit_[204]; 730 static const uint8_t table21_103_emit_[204]; 731 static const uint8_t table21_104_emit_[204]; 732 static const uint8_t table21_105_emit_[204]; 733 static const uint8_t table21_106_emit_[216]; 734 static const uint8_t table21_107_emit_[216]; 735 static const uint8_t table21_108_emit_[216]; 736 static const uint8_t table21_109_emit_[216]; 737 static const uint8_t table21_110_emit_[216]; 738 static const uint8_t table21_111_emit_[216]; 739 static const uint8_t table21_112_emit_[216]; 740 static const uint8_t table21_113_emit_[216]; 741 static const uint8_t table21_114_emit_[216]; 742 static const uint8_t table21_115_emit_[216]; 743 static const uint8_t table21_116_emit_[216]; 744 static const uint8_t table21_117_emit_[216]; 745 static const uint8_t table21_118_emit_[216]; 746 static const uint8_t table21_119_emit_[120]; 747 static const uint8_t table21_120_emit_[120]; 748 static const uint8_t table21_121_emit_[120]; 749 static const uint8_t table21_122_emit_[120]; 750 static const uint8_t table21_123_emit_[120]; 751 static const uint8_t table21_124_emit_[120]; 752 static const uint8_t table21_125_emit_[120]; 753 static const uint8_t table21_126_emit_[120]; 754 static const uint8_t table21_127_emit_[32]; 755 static const uint8_t table21_128_emit_[204]; 756 static const uint8_t table21_129_emit_[204]; 757 static const uint8_t table21_130_emit_[204]; 758 static const uint8_t table21_131_emit_[204]; 759 static const uint8_t table21_132_emit_[204]; 760 static const uint8_t table21_133_emit_[204]; 761 static const uint8_t table21_134_emit_[204]; 762 static const uint8_t table21_135_emit_[204]; 763 static const uint8_t table21_136_emit_[204]; 764 static const uint8_t table21_137_emit_[204]; 765 static const uint8_t table21_138_emit_[216]; 766 static const uint8_t table21_139_emit_[216]; 767 static const uint8_t table21_140_emit_[216]; 768 static const uint8_t table21_141_emit_[216]; 769 static const uint8_t table21_142_emit_[216]; 770 static const uint8_t table21_143_emit_[216]; 771 static const uint8_t table21_144_emit_[216]; 772 static const uint8_t table21_145_emit_[216]; 773 static const uint8_t table21_146_emit_[216]; 774 static const uint8_t table21_147_emit_[216]; 775 static const uint8_t table21_148_emit_[216]; 776 static const uint8_t table21_149_emit_[216]; 777 static const uint8_t table21_150_emit_[216]; 778 static const uint8_t table21_151_emit_[120]; 779 static const uint8_t table21_152_emit_[120]; 780 static const uint8_t table21_153_emit_[120]; 781 static const uint8_t table21_154_emit_[120]; 782 static const uint8_t table21_155_emit_[120]; 783 static const uint8_t table21_156_emit_[120]; 784 static const uint8_t table21_157_emit_[120]; 785 static const uint8_t table21_158_emit_[120]; 786 static const uint8_t table21_159_emit_[32]; 787 static const uint8_t table21_160_emit_[204]; 788 static const uint8_t table21_161_emit_[204]; 789 static const uint8_t table21_162_emit_[204]; 790 static const uint8_t table21_163_emit_[204]; 791 static const uint8_t table21_164_emit_[204]; 792 static const uint8_t table21_165_emit_[204]; 793 static const uint8_t table21_166_emit_[204]; 794 static const uint8_t table21_167_emit_[204]; 795 static const uint8_t table21_168_emit_[204]; 796 static const uint8_t table21_169_emit_[204]; 797 static const uint8_t table21_170_emit_[216]; 798 static const uint8_t table21_171_emit_[216]; 799 static const uint8_t table21_172_emit_[216]; 800 static const uint8_t table21_173_emit_[216]; 801 static const uint8_t table21_174_emit_[216]; 802 static const uint8_t table21_175_emit_[216]; 803 static const uint8_t table21_176_emit_[216]; 804 static const uint8_t table21_177_emit_[216]; 805 static const uint8_t table21_178_emit_[216]; 806 static const uint8_t table21_179_emit_[216]; 807 static const uint8_t table21_180_emit_[216]; 808 static const uint8_t table21_181_emit_[216]; 809 static const uint8_t table21_182_emit_[216]; 810 static const uint8_t table21_183_emit_[120]; 811 static const uint8_t table21_184_emit_[120]; 812 static const uint8_t table21_185_emit_[120]; 813 static const uint8_t table21_186_emit_[120]; 814 static const uint8_t table21_187_emit_[120]; 815 static const uint8_t table21_188_emit_[120]; 816 static const uint8_t table21_189_emit_[120]; 817 static const uint8_t table21_190_emit_[120]; 818 static const uint8_t table21_191_emit_[32]; 819 static const uint8_t table21_192_emit_[216]; 820 static const uint8_t table21_193_emit_[216]; 821 static const uint8_t table21_194_emit_[216]; 822 static const uint8_t table21_195_emit_[216]; 823 static const uint8_t table21_196_emit_[216]; 824 static const uint8_t table21_197_emit_[120]; 825 static const uint8_t table21_198_emit_[120]; 826 static const uint8_t table21_199_emit_[120]; 827 static const uint8_t table21_200_emit_[120]; 828 static const uint8_t table21_201_emit_[120]; 829 static const uint8_t table21_202_emit_[120]; 830 static const uint8_t table21_203_emit_[68]; 831 static const uint8_t table21_204_emit_[16]; 832 static const uint8_t table21_205_emit_[16]; 833 static const uint8_t table21_206_emit_[16]; 834 static const uint8_t table21_207_emit_[36]; 835 static const uint8_t table21_208_emit_[216]; 836 static const uint8_t table21_209_emit_[216]; 837 static const uint8_t table21_210_emit_[216]; 838 static const uint8_t table21_211_emit_[216]; 839 static const uint8_t table21_212_emit_[216]; 840 static const uint8_t table21_213_emit_[120]; 841 static const uint8_t table21_214_emit_[120]; 842 static const uint8_t table21_215_emit_[120]; 843 static const uint8_t table21_216_emit_[120]; 844 static const uint8_t table21_217_emit_[120]; 845 static const uint8_t table21_218_emit_[120]; 846 static const uint8_t table21_219_emit_[68]; 847 static const uint8_t table21_220_emit_[16]; 848 static const uint8_t table21_221_emit_[16]; 849 static const uint8_t table21_222_emit_[16]; 850 static const uint8_t table21_223_emit_[36]; 851 static const uint8_t table21_224_emit_[120]; 852 static const uint8_t table21_225_emit_[120]; 853 static const uint8_t table21_226_emit_[68]; 854 static const uint8_t table21_227_emit_[16]; 855 static const uint8_t table21_228_emit_[16]; 856 static const uint8_t table21_229_emit_[20]; 857 static const uint8_t table21_230_emit_[32]; 858 static const uint8_t table21_231_emit_[46]; 859 static const uint8_t table21_232_emit_[120]; 860 static const uint8_t table21_233_emit_[120]; 861 static const uint8_t table21_234_emit_[68]; 862 static const uint8_t table21_235_emit_[16]; 863 static const uint8_t table21_236_emit_[16]; 864 static const uint8_t table21_237_emit_[20]; 865 static const uint8_t table21_238_emit_[32]; 866 static const uint8_t table21_239_emit_[46]; 867 static const uint8_t table21_240_emit_[120]; 868 static const uint8_t table21_241_emit_[120]; 869 static const uint8_t table21_242_emit_[68]; 870 static const uint8_t table21_243_emit_[16]; 871 static const uint8_t table21_244_emit_[16]; 872 static const uint8_t table21_245_emit_[20]; 873 static const uint8_t table21_246_emit_[32]; 874 static const uint8_t table21_247_emit_[46]; 875 static const uint8_t table21_248_emit_[144]; 876 static const uint16_t table21_248_ops_[128]; 877 static const uint8_t table21_249_emit_[112]; 878 static const uint16_t table21_249_ops_[128]; 879 static const uint8_t table21_250_emit_[80]; 880 static const uint16_t table21_250_ops_[128]; 881 static const uint8_t table21_251_emit_[44]; 882 static const uint16_t table21_251_ops_[128]; 883 static const uint8_t table21_252_emit_[8]; 884 static const uint16_t table21_252_ops_[128]; 885 static const uint8_t table21_253_emit_[15]; 886 static const uint16_t table21_253_ops_[128]; 887 static const uint8_t table21_254_emit_[20]; 888 static const uint16_t table21_254_ops_[128]; 889 static const uint8_t table21_255_emit_[37]; 890 static const uint16_t table21_255_ops_[128]; 891 static const uint8_t* const table21_emit_[256]; 892 static const uint16_t* const table21_ops_[256]; 893 static const uint8_t table8_0_emit_[1]; 894 static const uint32_t table8_0_inner_[1]; 895 static const uint8_t table8_0_outer_[512]; 896 static const uint8_t table8_16_emit_[1]; 897 static const uint8_t table8_32_emit_[1]; 898 static const uint8_t table8_48_emit_[1]; 899 static const uint8_t table8_64_emit_[1]; 900 static const uint8_t table8_80_emit_[1]; 901 static const uint8_t table8_96_emit_[1]; 902 static const uint32_t table8_96_inner_[1]; 903 static const uint8_t table8_104_emit_[1]; 904 static const uint8_t table8_112_emit_[1]; 905 static const uint32_t table8_112_inner_[1]; 906 static const uint8_t table8_116_emit_[1]; 907 static const uint8_t table8_120_emit_[1]; 908 static const uint8_t table8_124_emit_[5]; 909 static const uint32_t table8_124_inner_[5]; 910 static const uint8_t table8_124_outer_[512]; 911 static const uint32_t table8_125_inner_[10]; 912 static const uint8_t table8_125_outer_[512]; 913 static const uint32_t table8_126_inner_[23]; 914 static const uint8_t table8_126_outer_[512]; 915 static const uint8_t table8_127_emit_[72]; 916 static const uint32_t table8_127_inner_[89]; 917 static const uint8_t table8_127_outer_[512]; 918 static const uint8_t* const table8_emit_[128]; 919 static const uint32_t* const table8_inner_[128]; 920 static const uint8_t* const table8_outer_[128]; 921 static const uint8_t table41_0_inner_[5]; 922 static const uint8_t table41_0_outer_[8]; 923 static const uint8_t table39_0_emit_[6]; 924 static const uint8_t table39_0_inner_[7]; 925 }; 926 template <typename F> 927 class HuffDecoder : public HuffDecoderCommon { 928 public: HuffDecoder(F sink,const uint8_t * begin,const uint8_t * end)929 HuffDecoder(F sink, const uint8_t* begin, const uint8_t* end) 930 : sink_(sink), begin_(begin), end_(end) {} Run()931 bool Run() { 932 while (!done_) { 933 if (!RefillTo10()) { 934 Done0(); 935 break; 936 } 937 const auto index = (buffer_ >> (buffer_len_ - 10)) & 0x3ff; 938 const auto op = GetOp1(index); 939 const int consumed = op & 15; 940 buffer_len_ -= consumed; 941 const auto emit_ofs = op >> 7; 942 switch ((op >> 4) & 7) { 943 case 0: { 944 sink_(GetEmit1(index, emit_ofs + 0)); 945 sink_(GetEmit1(index, emit_ofs + 1)); 946 break; 947 } 948 case 1: { 949 sink_(GetEmit1(index, emit_ofs + 0)); 950 break; 951 } 952 case 2: { 953 DecodeStep0(); 954 break; 955 } 956 case 3: { 957 DecodeStep19(); 958 break; 959 } 960 case 4: { 961 DecodeStep1(); 962 break; 963 } 964 } 965 } 966 return ok_; 967 } 968 969 private: RefillTo10()970 bool RefillTo10() { 971 switch (buffer_len_) { 972 case 0: { 973 return Read2to8Bytes(); 974 } 975 case 1: { 976 return Read2to7Bytes(); 977 } 978 case 2: 979 case 3: 980 case 4: 981 case 5: 982 case 6: 983 case 7: 984 case 8: { 985 return Read1to7Bytes(); 986 } 987 case 9: { 988 return Read1to6Bytes(); 989 } 990 } 991 return true; 992 } Read2to8Bytes()993 bool Read2to8Bytes() { 994 switch (end_ - begin_) { 995 case 0: 996 case 1: { 997 return false; 998 } 999 case 2: { 1000 Fill2(); 1001 return true; 1002 } 1003 case 3: { 1004 Fill3(); 1005 return true; 1006 } 1007 case 4: { 1008 Fill4(); 1009 return true; 1010 } 1011 case 5: { 1012 Fill5(); 1013 return true; 1014 } 1015 case 6: { 1016 Fill6(); 1017 return true; 1018 } 1019 case 7: { 1020 Fill7(); 1021 return true; 1022 } 1023 default: { 1024 Fill8(); 1025 return true; 1026 } 1027 } 1028 } Fill2()1029 void Fill2() { 1030 buffer_ = (buffer_ << 16) | (static_cast<uint64_t>(begin_[0]) << 8) | 1031 (static_cast<uint64_t>(begin_[1]) << 0); 1032 begin_ += 2; 1033 buffer_len_ += 16; 1034 } Fill3()1035 void Fill3() { 1036 buffer_ = (buffer_ << 24) | (static_cast<uint64_t>(begin_[0]) << 16) | 1037 (static_cast<uint64_t>(begin_[1]) << 8) | 1038 (static_cast<uint64_t>(begin_[2]) << 0); 1039 begin_ += 3; 1040 buffer_len_ += 24; 1041 } Fill4()1042 void Fill4() { 1043 buffer_ = (buffer_ << 32) | (static_cast<uint64_t>(begin_[0]) << 24) | 1044 (static_cast<uint64_t>(begin_[1]) << 16) | 1045 (static_cast<uint64_t>(begin_[2]) << 8) | 1046 (static_cast<uint64_t>(begin_[3]) << 0); 1047 begin_ += 4; 1048 buffer_len_ += 32; 1049 } Fill5()1050 void Fill5() { 1051 buffer_ = (buffer_ << 40) | (static_cast<uint64_t>(begin_[0]) << 32) | 1052 (static_cast<uint64_t>(begin_[1]) << 24) | 1053 (static_cast<uint64_t>(begin_[2]) << 16) | 1054 (static_cast<uint64_t>(begin_[3]) << 8) | 1055 (static_cast<uint64_t>(begin_[4]) << 0); 1056 begin_ += 5; 1057 buffer_len_ += 40; 1058 } Fill6()1059 void Fill6() { 1060 buffer_ = (buffer_ << 48) | (static_cast<uint64_t>(begin_[0]) << 40) | 1061 (static_cast<uint64_t>(begin_[1]) << 32) | 1062 (static_cast<uint64_t>(begin_[2]) << 24) | 1063 (static_cast<uint64_t>(begin_[3]) << 16) | 1064 (static_cast<uint64_t>(begin_[4]) << 8) | 1065 (static_cast<uint64_t>(begin_[5]) << 0); 1066 begin_ += 6; 1067 buffer_len_ += 48; 1068 } Fill7()1069 void Fill7() { 1070 buffer_ = (buffer_ << 56) | (static_cast<uint64_t>(begin_[0]) << 48) | 1071 (static_cast<uint64_t>(begin_[1]) << 40) | 1072 (static_cast<uint64_t>(begin_[2]) << 32) | 1073 (static_cast<uint64_t>(begin_[3]) << 24) | 1074 (static_cast<uint64_t>(begin_[4]) << 16) | 1075 (static_cast<uint64_t>(begin_[5]) << 8) | 1076 (static_cast<uint64_t>(begin_[6]) << 0); 1077 begin_ += 7; 1078 buffer_len_ += 56; 1079 } Fill8()1080 void Fill8() { 1081 buffer_ = 0 | (static_cast<uint64_t>(begin_[0]) << 56) | 1082 (static_cast<uint64_t>(begin_[1]) << 48) | 1083 (static_cast<uint64_t>(begin_[2]) << 40) | 1084 (static_cast<uint64_t>(begin_[3]) << 32) | 1085 (static_cast<uint64_t>(begin_[4]) << 24) | 1086 (static_cast<uint64_t>(begin_[5]) << 16) | 1087 (static_cast<uint64_t>(begin_[6]) << 8) | 1088 (static_cast<uint64_t>(begin_[7]) << 0); 1089 begin_ += 8; 1090 buffer_len_ += 64; 1091 } Read2to7Bytes()1092 bool Read2to7Bytes() { 1093 switch (end_ - begin_) { 1094 case 0: 1095 case 1: { 1096 return false; 1097 } 1098 case 2: { 1099 Fill2(); 1100 return true; 1101 } 1102 case 3: { 1103 Fill3(); 1104 return true; 1105 } 1106 case 4: { 1107 Fill4(); 1108 return true; 1109 } 1110 case 5: { 1111 Fill5(); 1112 return true; 1113 } 1114 case 6: { 1115 Fill6(); 1116 return true; 1117 } 1118 default: { 1119 Fill7(); 1120 return true; 1121 } 1122 } 1123 } Read1to7Bytes()1124 bool Read1to7Bytes() { 1125 switch (end_ - begin_) { 1126 case 0: { 1127 return false; 1128 } 1129 case 1: { 1130 Fill1(); 1131 return true; 1132 } 1133 case 2: { 1134 Fill2(); 1135 return true; 1136 } 1137 case 3: { 1138 Fill3(); 1139 return true; 1140 } 1141 case 4: { 1142 Fill4(); 1143 return true; 1144 } 1145 case 5: { 1146 Fill5(); 1147 return true; 1148 } 1149 case 6: { 1150 Fill6(); 1151 return true; 1152 } 1153 default: { 1154 Fill7(); 1155 return true; 1156 } 1157 } 1158 } Fill1()1159 void Fill1() { 1160 buffer_ = (buffer_ << 8) | (static_cast<uint64_t>(begin_[0]) << 0); 1161 begin_ += 1; 1162 buffer_len_ += 8; 1163 } Read1to6Bytes()1164 bool Read1to6Bytes() { 1165 switch (end_ - begin_) { 1166 case 0: { 1167 return false; 1168 } 1169 case 1: { 1170 Fill1(); 1171 return true; 1172 } 1173 case 2: { 1174 Fill2(); 1175 return true; 1176 } 1177 case 3: { 1178 Fill3(); 1179 return true; 1180 } 1181 case 4: { 1182 Fill4(); 1183 return true; 1184 } 1185 case 5: { 1186 Fill5(); 1187 return true; 1188 } 1189 default: { 1190 Fill6(); 1191 return true; 1192 } 1193 } 1194 } Done0()1195 void Done0() { 1196 done_ = true; 1197 switch (end_ - begin_) { 1198 case 1: { 1199 Fill1(); 1200 break; 1201 } 1202 } 1203 switch (buffer_len_) { 1204 case 1: 1205 case 2: 1206 case 3: 1207 case 4: { 1208 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1209 return; 1210 } 1211 case 5: { 1212 const auto index = buffer_ & 31; 1213 const auto op = GetOp2(index); 1214 switch (op & 3) { 1215 case 0: { 1216 sink_(GetEmit2(index, (op >> 2) + 0)); 1217 break; 1218 } 1219 case 1: { 1220 ok_ = false; 1221 break; 1222 } 1223 } 1224 return; 1225 } 1226 case 6: { 1227 const auto index = buffer_ & 63; 1228 const auto op = GetOp3(index); 1229 switch (op & 3) { 1230 case 0: { 1231 ok_ = false; 1232 break; 1233 } 1234 case 1: { 1235 sink_(GetEmit3(index, (op >> 2) + 0)); 1236 break; 1237 } 1238 } 1239 return; 1240 } 1241 case 7: { 1242 const auto index = buffer_ & 127; 1243 const auto op = GetOp4(index); 1244 switch (op & 3) { 1245 case 0: { 1246 ok_ = false; 1247 break; 1248 } 1249 case 1: { 1250 sink_(GetEmit4(index, (op >> 2) + 0)); 1251 break; 1252 } 1253 } 1254 return; 1255 } 1256 case 8: { 1257 const auto index = buffer_ & 255; 1258 const auto op = GetOp5(index); 1259 switch (op & 3) { 1260 case 0: { 1261 ok_ = false; 1262 break; 1263 } 1264 case 1: { 1265 sink_(GetEmit5(index, (op >> 2) + 0)); 1266 break; 1267 } 1268 } 1269 return; 1270 } 1271 case 9: { 1272 const auto index = buffer_ & 511; 1273 const auto op = GetOp6(index); 1274 switch (op & 3) { 1275 case 0: { 1276 ok_ = false; 1277 break; 1278 } 1279 case 1: { 1280 sink_(GetEmit6(index, (op >> 2) + 0)); 1281 break; 1282 } 1283 } 1284 return; 1285 } 1286 case 0: { 1287 return; 1288 } 1289 } 1290 } DecodeStep0()1291 void DecodeStep0() { 1292 if (!RefillTo1()) { 1293 Done1(); 1294 return; 1295 } 1296 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1297 const auto op = GetOp7(index); 1298 const int consumed = op & 1; 1299 buffer_len_ -= consumed; 1300 const auto emit_ofs = op >> 1; 1301 sink_(GetEmit7(index, emit_ofs + 0)); 1302 } RefillTo1()1303 bool RefillTo1() { 1304 switch (buffer_len_) { 1305 case 0: { 1306 return Read1to8Bytes(); 1307 } 1308 } 1309 return true; 1310 } Read1to8Bytes()1311 bool Read1to8Bytes() { 1312 switch (end_ - begin_) { 1313 case 0: { 1314 return false; 1315 } 1316 case 1: { 1317 Fill1(); 1318 return true; 1319 } 1320 case 2: { 1321 Fill2(); 1322 return true; 1323 } 1324 case 3: { 1325 Fill3(); 1326 return true; 1327 } 1328 case 4: { 1329 Fill4(); 1330 return true; 1331 } 1332 case 5: { 1333 Fill5(); 1334 return true; 1335 } 1336 case 6: { 1337 Fill6(); 1338 return true; 1339 } 1340 case 7: { 1341 Fill7(); 1342 return true; 1343 } 1344 default: { 1345 Fill8(); 1346 return true; 1347 } 1348 } 1349 } Done1()1350 void Done1() { 1351 done_ = true; 1352 ok_ = false; 1353 } DecodeStep1()1354 void DecodeStep1() { 1355 if (!RefillTo16()) { 1356 Done2(); 1357 return; 1358 } 1359 const auto index = (buffer_ >> (buffer_len_ - 16)) & 0xffff; 1360 const auto op = GetOp8(index); 1361 const int consumed = op & 31; 1362 buffer_len_ -= consumed; 1363 const auto emit_ofs = op >> 10; 1364 switch ((op >> 5) & 31) { 1365 case 0: { 1366 sink_(GetEmit8(index, emit_ofs + 0)); 1367 break; 1368 } 1369 case 1: { 1370 DecodeStep2(); 1371 break; 1372 } 1373 case 2: { 1374 DecodeStep3(); 1375 break; 1376 } 1377 case 3: { 1378 DecodeStep4(); 1379 break; 1380 } 1381 case 4: { 1382 DecodeStep5(); 1383 break; 1384 } 1385 case 5: { 1386 DecodeStep6(); 1387 break; 1388 } 1389 case 6: { 1390 DecodeStep7(); 1391 break; 1392 } 1393 case 7: { 1394 DecodeStep8(); 1395 break; 1396 } 1397 case 8: { 1398 DecodeStep9(); 1399 break; 1400 } 1401 case 9: { 1402 DecodeStep10(); 1403 break; 1404 } 1405 case 10: { 1406 DecodeStep17(); 1407 break; 1408 } 1409 case 11: { 1410 DecodeStep11(); 1411 break; 1412 } 1413 case 12: { 1414 DecodeStep12(); 1415 break; 1416 } 1417 case 13: { 1418 DecodeStep13(); 1419 break; 1420 } 1421 case 14: { 1422 DecodeStep14(); 1423 break; 1424 } 1425 case 15: { 1426 DecodeStep15(); 1427 break; 1428 } 1429 case 16: { 1430 DecodeStep16(); 1431 break; 1432 } 1433 case 17: { 1434 DecodeStep18(); 1435 break; 1436 } 1437 } 1438 } RefillTo16()1439 bool RefillTo16() { 1440 switch (buffer_len_) { 1441 case 0: { 1442 return Read2to8Bytes(); 1443 } 1444 case 1: 1445 case 2: 1446 case 3: 1447 case 4: 1448 case 5: 1449 case 6: 1450 case 7: { 1451 return Read2to7Bytes(); 1452 } 1453 case 8: { 1454 return Read1to7Bytes(); 1455 } 1456 case 9: 1457 case 10: 1458 case 11: 1459 case 12: 1460 case 13: 1461 case 14: 1462 case 15: { 1463 return Read1to6Bytes(); 1464 } 1465 } 1466 return true; 1467 } Done2()1468 void Done2() { 1469 done_ = true; 1470 switch (end_ - begin_) { 1471 case 1: { 1472 Fill1(); 1473 break; 1474 } 1475 } 1476 switch (buffer_len_) { 1477 case 1: 1478 case 2: { 1479 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1480 return; 1481 } 1482 case 3: { 1483 const auto index = buffer_ & 7; 1484 const auto op = GetOp9(index); 1485 switch (op & 3) { 1486 case 0: { 1487 sink_(GetEmit9(index, (op >> 2) + 0)); 1488 break; 1489 } 1490 case 1: { 1491 ok_ = false; 1492 break; 1493 } 1494 } 1495 return; 1496 } 1497 case 4: { 1498 const auto index = buffer_ & 15; 1499 const auto op = GetOp10(index); 1500 switch (op & 3) { 1501 case 0: { 1502 ok_ = false; 1503 break; 1504 } 1505 case 1: { 1506 sink_(GetEmit10(index, (op >> 2) + 0)); 1507 break; 1508 } 1509 } 1510 return; 1511 } 1512 case 5: { 1513 const auto index = buffer_ & 31; 1514 const auto op = GetOp11(index); 1515 switch (op & 3) { 1516 case 0: { 1517 ok_ = false; 1518 break; 1519 } 1520 case 1: { 1521 sink_(GetEmit11(index, (op >> 2) + 0)); 1522 break; 1523 } 1524 } 1525 return; 1526 } 1527 case 6: { 1528 const auto index = buffer_ & 63; 1529 const auto op = GetOp12(index); 1530 switch (op & 3) { 1531 case 0: { 1532 ok_ = false; 1533 break; 1534 } 1535 case 1: { 1536 sink_(GetEmit12(index, (op >> 2) + 0)); 1537 break; 1538 } 1539 } 1540 return; 1541 } 1542 case 7: { 1543 const auto index = buffer_ & 127; 1544 const auto op = GetOp13(index); 1545 switch (op & 3) { 1546 case 0: { 1547 ok_ = false; 1548 break; 1549 } 1550 case 1: { 1551 sink_(GetEmit13(index, (op >> 2) + 0)); 1552 break; 1553 } 1554 } 1555 return; 1556 } 1557 case 8: { 1558 const auto index = buffer_ & 255; 1559 const auto op = GetOp14(index); 1560 switch (op & 3) { 1561 case 0: { 1562 sink_(GetEmit14(index, (op >> 2) + 0)); 1563 sink_(GetEmit14(index, (op >> 2) + 1)); 1564 break; 1565 } 1566 case 1: { 1567 ok_ = false; 1568 break; 1569 } 1570 case 2: { 1571 sink_(GetEmit14(index, (op >> 2) + 0)); 1572 break; 1573 } 1574 } 1575 return; 1576 } 1577 case 9: { 1578 const auto index = buffer_ & 511; 1579 const auto op = GetOp15(index); 1580 switch (op & 3) { 1581 case 0: { 1582 ok_ = false; 1583 break; 1584 } 1585 case 1: { 1586 sink_(GetEmit15(index, (op >> 2) + 0)); 1587 sink_(GetEmit15(index, (op >> 2) + 1)); 1588 break; 1589 } 1590 case 2: { 1591 sink_(GetEmit15(index, (op >> 2) + 0)); 1592 break; 1593 } 1594 } 1595 return; 1596 } 1597 case 10: { 1598 const auto index = buffer_ & 1023; 1599 const auto op = GetOp16(index); 1600 switch (op & 3) { 1601 case 0: { 1602 ok_ = false; 1603 break; 1604 } 1605 case 1: { 1606 sink_(GetEmit16(index, (op >> 2) + 0)); 1607 sink_(GetEmit16(index, (op >> 2) + 1)); 1608 break; 1609 } 1610 case 2: { 1611 sink_(GetEmit16(index, (op >> 2) + 0)); 1612 break; 1613 } 1614 } 1615 return; 1616 } 1617 case 11: { 1618 const auto index = buffer_ & 2047; 1619 const auto op = GetOp17(index); 1620 switch (op & 3) { 1621 case 0: { 1622 ok_ = false; 1623 break; 1624 } 1625 case 1: { 1626 sink_(GetEmit17(index, (op >> 2) + 0)); 1627 sink_(GetEmit17(index, (op >> 2) + 1)); 1628 break; 1629 } 1630 case 2: { 1631 sink_(GetEmit17(index, (op >> 2) + 0)); 1632 break; 1633 } 1634 } 1635 return; 1636 } 1637 case 12: { 1638 const auto index = buffer_ & 4095; 1639 const auto op = GetOp18(index); 1640 switch (op & 3) { 1641 case 0: { 1642 ok_ = false; 1643 break; 1644 } 1645 case 1: { 1646 sink_(GetEmit18(index, (op >> 2) + 0)); 1647 sink_(GetEmit18(index, (op >> 2) + 1)); 1648 break; 1649 } 1650 case 2: { 1651 sink_(GetEmit18(index, (op >> 2) + 0)); 1652 break; 1653 } 1654 } 1655 return; 1656 } 1657 case 13: { 1658 const auto index = buffer_ & 8191; 1659 const auto op = GetOp19(index); 1660 switch (op & 7) { 1661 case 0: { 1662 sink_(GetEmit19(index, (op >> 3) + 0)); 1663 sink_(GetEmit19(index, (op >> 3) + 1)); 1664 sink_(GetEmit19(index, (op >> 3) + 2)); 1665 break; 1666 } 1667 case 1: { 1668 ok_ = false; 1669 break; 1670 } 1671 case 2: { 1672 sink_(GetEmit19(index, (op >> 3) + 0)); 1673 sink_(GetEmit19(index, (op >> 3) + 1)); 1674 break; 1675 } 1676 case 3: { 1677 sink_(GetEmit19(index, (op >> 3) + 0)); 1678 break; 1679 } 1680 } 1681 return; 1682 } 1683 case 14: { 1684 const auto index = buffer_ & 16383; 1685 const auto op = GetOp20(index); 1686 switch (op & 7) { 1687 case 0: { 1688 ok_ = false; 1689 break; 1690 } 1691 case 1: { 1692 sink_(GetEmit20(index, (op >> 3) + 0)); 1693 sink_(GetEmit20(index, (op >> 3) + 1)); 1694 sink_(GetEmit20(index, (op >> 3) + 2)); 1695 break; 1696 } 1697 case 2: { 1698 sink_(GetEmit20(index, (op >> 3) + 0)); 1699 sink_(GetEmit20(index, (op >> 3) + 1)); 1700 break; 1701 } 1702 case 3: { 1703 sink_(GetEmit20(index, (op >> 3) + 0)); 1704 break; 1705 } 1706 } 1707 return; 1708 } 1709 case 15: { 1710 const auto index = buffer_ & 32767; 1711 const auto op = GetOp21(index); 1712 switch (op & 7) { 1713 case 0: { 1714 ok_ = false; 1715 break; 1716 } 1717 case 1: { 1718 sink_(GetEmit21(index, (op >> 3) + 0)); 1719 sink_(GetEmit21(index, (op >> 3) + 1)); 1720 sink_(GetEmit21(index, (op >> 3) + 2)); 1721 break; 1722 } 1723 case 2: { 1724 sink_(GetEmit21(index, (op >> 3) + 0)); 1725 sink_(GetEmit21(index, (op >> 3) + 1)); 1726 break; 1727 } 1728 case 3: { 1729 sink_(GetEmit21(index, (op >> 3) + 0)); 1730 break; 1731 } 1732 } 1733 return; 1734 } 1735 case 0: { 1736 return; 1737 } 1738 } 1739 } DecodeStep2()1740 void DecodeStep2() { 1741 if (!RefillTo1()) { 1742 Done3(); 1743 return; 1744 } 1745 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1746 const auto op = GetOp22(index); 1747 const int consumed = op & 1; 1748 buffer_len_ -= consumed; 1749 const auto emit_ofs = op >> 1; 1750 sink_(GetEmit22(index, emit_ofs + 0)); 1751 } Done3()1752 void Done3() { 1753 done_ = true; 1754 ok_ = false; 1755 } DecodeStep3()1756 void DecodeStep3() { 1757 if (!RefillTo1()) { 1758 Done4(); 1759 return; 1760 } 1761 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1762 const auto op = GetOp23(index); 1763 const int consumed = op & 1; 1764 buffer_len_ -= consumed; 1765 const auto emit_ofs = op >> 1; 1766 sink_(GetEmit23(index, emit_ofs + 0)); 1767 } Done4()1768 void Done4() { 1769 done_ = true; 1770 ok_ = false; 1771 } DecodeStep4()1772 void DecodeStep4() { 1773 if (!RefillTo1()) { 1774 Done5(); 1775 return; 1776 } 1777 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1778 const auto op = GetOp24(index); 1779 const int consumed = op & 1; 1780 buffer_len_ -= consumed; 1781 const auto emit_ofs = op >> 1; 1782 sink_(GetEmit24(index, emit_ofs + 0)); 1783 } Done5()1784 void Done5() { 1785 done_ = true; 1786 ok_ = false; 1787 } DecodeStep5()1788 void DecodeStep5() { 1789 if (!RefillTo1()) { 1790 Done6(); 1791 return; 1792 } 1793 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1794 const auto op = GetOp25(index); 1795 const int consumed = op & 1; 1796 buffer_len_ -= consumed; 1797 const auto emit_ofs = op >> 1; 1798 sink_(GetEmit25(index, emit_ofs + 0)); 1799 } Done6()1800 void Done6() { 1801 done_ = true; 1802 ok_ = false; 1803 } DecodeStep6()1804 void DecodeStep6() { 1805 if (!RefillTo1()) { 1806 Done7(); 1807 return; 1808 } 1809 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1810 const auto op = GetOp26(index); 1811 const int consumed = op & 1; 1812 buffer_len_ -= consumed; 1813 const auto emit_ofs = op >> 1; 1814 sink_(GetEmit26(index, emit_ofs + 0)); 1815 } Done7()1816 void Done7() { 1817 done_ = true; 1818 ok_ = false; 1819 } DecodeStep7()1820 void DecodeStep7() { 1821 if (!RefillTo1()) { 1822 Done8(); 1823 return; 1824 } 1825 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1826 const auto op = GetOp27(index); 1827 const int consumed = op & 1; 1828 buffer_len_ -= consumed; 1829 const auto emit_ofs = op >> 1; 1830 sink_(GetEmit27(index, emit_ofs + 0)); 1831 } Done8()1832 void Done8() { 1833 done_ = true; 1834 ok_ = false; 1835 } DecodeStep8()1836 void DecodeStep8() { 1837 if (!RefillTo1()) { 1838 Done9(); 1839 return; 1840 } 1841 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1842 const auto op = GetOp28(index); 1843 const int consumed = op & 1; 1844 buffer_len_ -= consumed; 1845 const auto emit_ofs = op >> 1; 1846 sink_(GetEmit28(index, emit_ofs + 0)); 1847 } Done9()1848 void Done9() { 1849 done_ = true; 1850 ok_ = false; 1851 } DecodeStep9()1852 void DecodeStep9() { 1853 if (!RefillTo1()) { 1854 Done10(); 1855 return; 1856 } 1857 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1858 const auto op = GetOp29(index); 1859 const int consumed = op & 1; 1860 buffer_len_ -= consumed; 1861 const auto emit_ofs = op >> 1; 1862 sink_(GetEmit29(index, emit_ofs + 0)); 1863 } Done10()1864 void Done10() { 1865 done_ = true; 1866 ok_ = false; 1867 } DecodeStep10()1868 void DecodeStep10() { 1869 if (!RefillTo1()) { 1870 Done11(); 1871 return; 1872 } 1873 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1874 const auto op = GetOp30(index); 1875 const int consumed = op & 1; 1876 buffer_len_ -= consumed; 1877 const auto emit_ofs = op >> 1; 1878 sink_(GetEmit30(index, emit_ofs + 0)); 1879 } Done11()1880 void Done11() { 1881 done_ = true; 1882 ok_ = false; 1883 } DecodeStep11()1884 void DecodeStep11() { 1885 if (!RefillTo2()) { 1886 Done12(); 1887 return; 1888 } 1889 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1890 const auto op = GetOp31(index); 1891 const int consumed = op & 3; 1892 buffer_len_ -= consumed; 1893 const auto emit_ofs = op >> 2; 1894 sink_(GetEmit31(index, emit_ofs + 0)); 1895 } RefillTo2()1896 bool RefillTo2() { 1897 switch (buffer_len_) { 1898 case 0: { 1899 return Read1to8Bytes(); 1900 } 1901 case 1: { 1902 return Read1to7Bytes(); 1903 } 1904 } 1905 return true; 1906 } Done12()1907 void Done12() { 1908 done_ = true; 1909 switch (buffer_len_) { 1910 case 1: 1911 case 0: { 1912 ok_ = false; 1913 return; 1914 } 1915 } 1916 } DecodeStep12()1917 void DecodeStep12() { 1918 if (!RefillTo2()) { 1919 Done13(); 1920 return; 1921 } 1922 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1923 const auto op = GetOp32(index); 1924 const int consumed = op & 3; 1925 buffer_len_ -= consumed; 1926 const auto emit_ofs = op >> 2; 1927 sink_(GetEmit32(index, emit_ofs + 0)); 1928 } Done13()1929 void Done13() { 1930 done_ = true; 1931 switch (buffer_len_) { 1932 case 1: 1933 case 0: { 1934 ok_ = false; 1935 return; 1936 } 1937 } 1938 } DecodeStep13()1939 void DecodeStep13() { 1940 if (!RefillTo2()) { 1941 Done14(); 1942 return; 1943 } 1944 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1945 const auto op = GetOp33(index); 1946 const int consumed = op & 3; 1947 buffer_len_ -= consumed; 1948 const auto emit_ofs = op >> 2; 1949 sink_(GetEmit33(index, emit_ofs + 0)); 1950 } Done14()1951 void Done14() { 1952 done_ = true; 1953 switch (buffer_len_) { 1954 case 1: 1955 case 0: { 1956 ok_ = false; 1957 return; 1958 } 1959 } 1960 } DecodeStep14()1961 void DecodeStep14() { 1962 if (!RefillTo2()) { 1963 Done15(); 1964 return; 1965 } 1966 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1967 const auto op = GetOp34(index); 1968 const int consumed = op & 3; 1969 buffer_len_ -= consumed; 1970 const auto emit_ofs = op >> 2; 1971 sink_(GetEmit34(index, emit_ofs + 0)); 1972 } Done15()1973 void Done15() { 1974 done_ = true; 1975 switch (buffer_len_) { 1976 case 1: 1977 case 0: { 1978 ok_ = false; 1979 return; 1980 } 1981 } 1982 } DecodeStep15()1983 void DecodeStep15() { 1984 if (!RefillTo2()) { 1985 Done16(); 1986 return; 1987 } 1988 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1989 const auto op = GetOp35(index); 1990 const int consumed = op & 3; 1991 buffer_len_ -= consumed; 1992 const auto emit_ofs = op >> 2; 1993 sink_(GetEmit35(index, emit_ofs + 0)); 1994 } Done16()1995 void Done16() { 1996 done_ = true; 1997 switch (buffer_len_) { 1998 case 1: 1999 case 0: { 2000 ok_ = false; 2001 return; 2002 } 2003 } 2004 } DecodeStep16()2005 void DecodeStep16() { 2006 if (!RefillTo2()) { 2007 Done17(); 2008 return; 2009 } 2010 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 2011 const auto op = GetOp36(index); 2012 const int consumed = op & 3; 2013 buffer_len_ -= consumed; 2014 const auto emit_ofs = op >> 2; 2015 sink_(GetEmit36(index, emit_ofs + 0)); 2016 } Done17()2017 void Done17() { 2018 done_ = true; 2019 switch (buffer_len_) { 2020 case 1: 2021 case 0: { 2022 ok_ = false; 2023 return; 2024 } 2025 } 2026 } DecodeStep17()2027 void DecodeStep17() { 2028 if (!RefillTo2()) { 2029 Done18(); 2030 return; 2031 } 2032 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 2033 const auto op = GetOp37(index); 2034 const int consumed = op & 3; 2035 buffer_len_ -= consumed; 2036 const auto emit_ofs = op >> 2; 2037 sink_(GetEmit37(index, emit_ofs + 0)); 2038 } Done18()2039 void Done18() { 2040 done_ = true; 2041 switch (buffer_len_) { 2042 case 1: { 2043 const auto index = buffer_ & 1; 2044 const auto op = GetOp38(index); 2045 switch (op & 1) { 2046 case 0: { 2047 sink_(GetEmit38(index, (op >> 1) + 0)); 2048 break; 2049 } 2050 case 1: { 2051 ok_ = false; 2052 break; 2053 } 2054 } 2055 return; 2056 } 2057 case 0: { 2058 ok_ = false; 2059 return; 2060 } 2061 } 2062 } DecodeStep18()2063 void DecodeStep18() { 2064 if (!RefillTo4()) { 2065 Done19(); 2066 return; 2067 } 2068 const auto index = (buffer_ >> (buffer_len_ - 4)) & 0xf; 2069 const auto op = GetOp39(index); 2070 const int consumed = op & 7; 2071 buffer_len_ -= consumed; 2072 const auto emit_ofs = op >> 4; 2073 switch ((op >> 3) & 1) { 2074 case 0: { 2075 sink_(GetEmit39(index, emit_ofs + 0)); 2076 break; 2077 } 2078 case 1: { 2079 begin_ = end_; 2080 buffer_len_ = 0; 2081 break; 2082 } 2083 } 2084 } RefillTo4()2085 bool RefillTo4() { 2086 switch (buffer_len_) { 2087 case 0: { 2088 return Read1to8Bytes(); 2089 } 2090 case 1: 2091 case 2: 2092 case 3: { 2093 return Read1to7Bytes(); 2094 } 2095 } 2096 return true; 2097 } Done19()2098 void Done19() { 2099 done_ = true; 2100 switch (buffer_len_) { 2101 case 1: { 2102 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 2103 return; 2104 } 2105 case 2: { 2106 const auto index = buffer_ & 3; 2107 const auto op = GetOp40(index); 2108 switch (op & 1) { 2109 case 0: { 2110 sink_(GetEmit40(index, (op >> 1) + 0)); 2111 break; 2112 } 2113 } 2114 return; 2115 } 2116 case 3: { 2117 const auto index = buffer_ & 7; 2118 const auto op = GetOp41(index); 2119 switch (op & 3) { 2120 case 0: { 2121 ok_ = false; 2122 break; 2123 } 2124 case 1: { 2125 sink_(GetEmit41(index, (op >> 2) + 0)); 2126 break; 2127 } 2128 } 2129 return; 2130 } 2131 case 0: { 2132 return; 2133 } 2134 } 2135 } DecodeStep19()2136 void DecodeStep19() { 2137 if (!RefillTo2()) { 2138 Done20(); 2139 return; 2140 } 2141 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 2142 const auto op = GetOp42(index); 2143 const int consumed = op & 3; 2144 buffer_len_ -= consumed; 2145 const auto emit_ofs = op >> 2; 2146 sink_(GetEmit42(index, emit_ofs + 0)); 2147 } Done20()2148 void Done20() { 2149 done_ = true; 2150 switch (buffer_len_) { 2151 case 1: { 2152 const auto index = buffer_ & 1; 2153 const auto op = GetOp43(index); 2154 switch (op & 1) { 2155 case 0: { 2156 sink_(GetEmit43(index, (op >> 1) + 0)); 2157 break; 2158 } 2159 case 1: { 2160 ok_ = false; 2161 break; 2162 } 2163 } 2164 return; 2165 } 2166 case 0: { 2167 ok_ = false; 2168 return; 2169 } 2170 } 2171 } 2172 F sink_; 2173 const uint8_t* begin_; 2174 const uint8_t* const end_; 2175 uint64_t buffer_ = 0; 2176 int buffer_len_ = 0; 2177 bool ok_ = true; 2178 bool done_ = false; 2179 }; 2180 } // namespace geometry_10_16 2181 } // namespace grpc_core 2182 #endif // GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_10_16_H 2183