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_7_16_7_H 19 #define GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_7_16_7_H 20 #include <cstddef> 21 #include <cstdint> 22 23 #include <grpc/support/port_platform.h> 24 namespace grpc_core { 25 namespace geometry_7_16_7 { 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 } GetOp1(size_t i)36 static inline uint64_t GetOp1(size_t i) { 37 return table1_0_inner_[table1_0_outer_[i]]; 38 } GetEmit1(size_t,size_t emit)39 static inline uint64_t GetEmit1(size_t, size_t emit) { 40 return table1_0_emit_[emit]; 41 } GetOp4(size_t i)42 static inline uint64_t GetOp4(size_t i) { return i ? 3 : 1; } GetEmit4(size_t,size_t emit)43 static inline uint64_t GetEmit4(size_t, size_t emit) { 44 return emit ? 42 : 38; 45 } GetOp5(size_t i)46 static inline uint64_t GetOp5(size_t i) { return i ? 3 : 1; } GetEmit5(size_t,size_t emit)47 static inline uint64_t GetEmit5(size_t, size_t emit) { 48 return emit ? 59 : 44; 49 } GetOp6(size_t i)50 static inline uint64_t GetOp6(size_t i) { return i ? 3 : 1; } GetEmit6(size_t,size_t emit)51 static inline uint64_t GetEmit6(size_t, size_t emit) { 52 return emit ? 90 : 88; 53 } GetOp8(size_t i)54 static inline uint64_t GetOp8(size_t i) { 55 return table8_0_inner_[(i < 6 ? (i) : ((i - 6) + 5))]; 56 } GetEmit8(size_t,size_t emit)57 static inline uint64_t GetEmit8(size_t, size_t emit) { 58 return table8_0_emit_[emit]; 59 } GetOp9(size_t i)60 static inline uint64_t GetOp9(size_t i) { 61 return table9_0_inner_[table9_0_outer_[i]]; 62 } GetEmit9(size_t,size_t emit)63 static inline uint64_t GetEmit9(size_t, size_t emit) { 64 return table9_0_emit_[emit]; 65 } GetOp10(size_t i)66 static inline uint64_t GetOp10(size_t i) { return table10_0_ops_[i]; } GetEmit10(size_t,size_t emit)67 static inline uint64_t GetEmit10(size_t, size_t emit) { 68 return table10_0_emit_[emit]; 69 } GetOp11(size_t i)70 static inline uint64_t GetOp11(size_t i) { return table11_0_ops_[i]; } GetEmit11(size_t,size_t emit)71 static inline uint64_t GetEmit11(size_t, size_t emit) { 72 return table11_0_emit_[emit]; 73 } GetOp12(size_t i)74 static inline uint64_t GetOp12(size_t i) { return table12_0_ops_[i]; } GetEmit12(size_t,size_t emit)75 static inline uint64_t GetEmit12(size_t, size_t emit) { 76 return table12_0_emit_[emit]; 77 } GetOp13(size_t i)78 static inline uint64_t GetOp13(size_t i) { 79 return table13_ops_[i >> 6][i & 0x3f]; 80 } GetEmit13(size_t i,size_t emit)81 static inline uint64_t GetEmit13(size_t i, size_t emit) { 82 return table13_emit_[i >> 6][emit]; 83 } GetOp14(size_t i)84 static inline uint64_t GetOp14(size_t i) { 85 return table14_ops_[i >> 6][i & 0x3f]; 86 } GetEmit14(size_t i,size_t emit)87 static inline uint64_t GetEmit14(size_t i, size_t emit) { 88 return table14_emit_[i >> 6][emit]; 89 } GetOp15(size_t i)90 static inline uint64_t GetOp15(size_t i) { 91 return table15_ops_[i >> 6][i & 0x3f]; 92 } GetEmit15(size_t i,size_t emit)93 static inline uint64_t GetEmit15(size_t i, size_t emit) { 94 return table15_emit_[i >> 6][emit]; 95 } GetOp16(size_t i)96 static inline uint64_t GetOp16(size_t i) { 97 return table16_ops_[i >> 6][i & 0x3f]; 98 } GetEmit16(size_t i,size_t emit)99 static inline uint64_t GetEmit16(size_t i, size_t emit) { 100 return table16_emit_[i >> 6][emit]; 101 } GetOp17(size_t i)102 static inline uint64_t GetOp17(size_t i) { 103 return table17_ops_[i >> 7][i & 0x7f]; 104 } GetEmit17(size_t i,size_t emit)105 static inline uint64_t GetEmit17(size_t i, size_t emit) { 106 return table17_emit_[i >> 7][emit]; 107 } GetOp18(size_t i)108 static inline uint64_t GetOp18(size_t i) { 109 return table18_ops_[i >> 6][i & 0x3f]; 110 } GetEmit18(size_t i,size_t emit)111 static inline uint64_t GetEmit18(size_t i, size_t emit) { 112 return table18_emit_[i >> 6][emit]; 113 } GetOp19(size_t i)114 static inline uint64_t GetOp19(size_t i) { 115 return table19_inner_[i >> 7][table19_outer_[i >> 7][i & 0x7f]]; 116 } GetEmit19(size_t i,size_t emit)117 static inline uint64_t GetEmit19(size_t i, size_t emit) { 118 return table19_emit_[i >> 7][emit]; 119 } GetOp20(size_t i)120 static inline uint64_t GetOp20(size_t i) { 121 return table20_ops_[i >> 7][i & 0x7f]; 122 } GetEmit20(size_t i,size_t emit)123 static inline uint64_t GetEmit20(size_t i, size_t emit) { 124 return table20_emit_[i >> 7][emit]; 125 } GetOp7(size_t i)126 static inline uint64_t GetOp7(size_t i) { 127 return table7_ops_[i >> 9][i & 0x1ff]; 128 } GetEmit7(size_t i,size_t emit)129 static inline uint64_t GetEmit7(size_t i, size_t emit) { 130 return table7_emit_[i >> 9][emit]; 131 } GetOp21(size_t i)132 static inline uint64_t GetOp21(size_t i) { return i ? 3 : 1; } GetEmit21(size_t,size_t emit)133 static inline uint64_t GetEmit21(size_t, size_t emit) { 134 return emit ? 142 : 9; 135 } GetOp22(size_t i)136 static inline uint64_t GetOp22(size_t i) { return i ? 3 : 1; } GetEmit22(size_t,size_t emit)137 static inline uint64_t GetEmit22(size_t, size_t emit) { return emit + 144; } GetOp23(size_t i)138 static inline uint64_t GetOp23(size_t i) { return i ? 3 : 1; } GetEmit23(size_t,size_t emit)139 static inline uint64_t GetEmit23(size_t, size_t emit) { 140 return emit ? 159 : 148; 141 } GetOp24(size_t i)142 static inline uint64_t GetOp24(size_t i) { return i ? 3 : 1; } GetEmit24(size_t,size_t emit)143 static inline uint64_t GetEmit24(size_t, size_t emit) { 144 return emit ? 206 : 171; 145 } GetOp25(size_t i)146 static inline uint64_t GetOp25(size_t i) { return i ? 3 : 1; } GetEmit25(size_t,size_t emit)147 static inline uint64_t GetEmit25(size_t, size_t emit) { 148 return emit ? 225 : 215; 149 } 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) { return emit + 236; } GetOp27(size_t i)152 static inline uint64_t GetOp27(size_t i) { 153 return (i < 2 ? (i ? 6 : 2) : ((i - 2) ? 14 : 10)); 154 } GetEmit27(size_t,size_t emit)155 static inline uint64_t GetEmit27(size_t, size_t emit) { 156 return (emit < 2 ? (emit ? 207 : 199) : ((emit - 2) + 234)); 157 } GetOp28(size_t i)158 static inline uint64_t GetOp28(size_t i) { return table28_0_inner_[i]; } GetEmit28(size_t,size_t emit)159 static inline uint64_t GetEmit28(size_t, size_t emit) { 160 return table28_0_emit_[emit]; 161 } GetOp29(size_t i)162 static inline uint64_t GetOp29(size_t i) { return table29_0_inner_[i]; } GetEmit29(size_t,size_t emit)163 static inline uint64_t GetEmit29(size_t, size_t emit) { 164 return table29_0_emit_[emit]; 165 } GetOp31(size_t i)166 static inline uint64_t GetOp31(size_t i) { 167 return (i < 1 ? (((void)i, 0)) : ((i - 1) / 14 + 1)); 168 } GetEmit31(size_t,size_t emit)169 static inline uint64_t GetEmit31(size_t, size_t emit) { 170 return ((void)emit, 254); 171 } GetOp32(size_t i)172 static inline uint64_t GetOp32(size_t i) { return table32_0_ops_[i]; } GetEmit32(size_t,size_t emit)173 static inline uint64_t GetEmit32(size_t, size_t emit) { 174 return table32_0_emit_[emit]; 175 } GetOp33(size_t i)176 static inline uint64_t GetOp33(size_t i) { return table33_0_ops_[i]; } GetEmit33(size_t,size_t emit)177 static inline uint64_t GetEmit33(size_t, size_t emit) { 178 return table32_0_emit_[emit]; 179 } GetOp30(size_t i)180 static inline uint64_t GetOp30(size_t i) { 181 return table30_ops_[i >> 5][i & 0x1f]; 182 } GetEmit30(size_t i,size_t emit)183 static inline uint64_t GetEmit30(size_t i, size_t emit) { 184 return table30_emit_[i >> 5][emit]; 185 } GetOp35(size_t i)186 static inline uint64_t GetOp35(size_t i) { return table35_0_inner_[i]; } GetEmit35(size_t,size_t emit)187 static inline uint64_t GetEmit35(size_t, size_t emit) { 188 return table35_0_emit_[emit]; 189 } GetOp34(size_t i)190 static inline uint64_t GetOp34(size_t i) { 191 return table34_0_inner_[(i < 13 ? (i / 2 + 0) : ((i - 13) + 6))]; 192 } GetEmit34(size_t,size_t emit)193 static inline uint64_t GetEmit34(size_t, size_t emit) { 194 return table34_0_emit_[emit]; 195 } 196 197 private: 198 static const uint8_t table2_0_emit_[10]; 199 static const uint8_t table2_0_ops_[32]; 200 static const uint8_t table3_0_emit_[36]; 201 static const uint8_t table3_0_ops_[64]; 202 static const uint8_t table1_0_emit_[68]; 203 static const uint16_t table1_0_inner_[72]; 204 static const uint8_t table1_0_outer_[128]; 205 static const uint8_t table8_0_emit_[5]; 206 static const uint8_t table8_0_inner_[7]; 207 static const uint8_t table9_0_emit_[8]; 208 static const uint8_t table9_0_inner_[10]; 209 static const uint8_t table9_0_outer_[16]; 210 static const uint8_t table10_0_emit_[10]; 211 static const uint8_t table10_0_ops_[32]; 212 static const uint8_t table11_0_emit_[16]; 213 static const uint8_t table11_0_ops_[64]; 214 static const uint8_t table12_0_emit_[18]; 215 static const uint8_t table12_0_ops_[128]; 216 static const uint8_t table13_0_emit_[40]; 217 static const uint8_t table13_0_ops_[64]; 218 static const uint8_t table13_1_emit_[40]; 219 static const uint8_t table13_2_emit_[22]; 220 static const uint8_t table13_2_ops_[64]; 221 static const uint8_t table13_3_emit_[14]; 222 static const uint8_t table13_3_ops_[64]; 223 static const uint8_t* const table13_emit_[4]; 224 static const uint8_t* const table13_ops_[4]; 225 static const uint8_t table14_0_emit_[72]; 226 static const uint16_t table14_0_ops_[64]; 227 static const uint8_t table14_1_emit_[72]; 228 static const uint8_t table14_2_emit_[72]; 229 static const uint8_t table14_3_emit_[72]; 230 static const uint8_t table14_4_emit_[72]; 231 static const uint8_t table14_5_emit_[40]; 232 static const uint16_t table14_5_ops_[64]; 233 static const uint8_t table14_6_emit_[22]; 234 static const uint16_t table14_6_ops_[64]; 235 static const uint8_t table14_7_emit_[11]; 236 static const uint16_t table14_7_ops_[64]; 237 static const uint8_t* const table14_emit_[8]; 238 static const uint16_t* const table14_ops_[8]; 239 static const uint8_t table15_0_emit_[44]; 240 static const uint16_t table15_0_ops_[64]; 241 static const uint8_t table15_1_emit_[92]; 242 static const uint16_t table15_1_ops_[64]; 243 static const uint8_t table15_2_emit_[44]; 244 static const uint8_t table15_3_emit_[92]; 245 static const uint8_t table15_4_emit_[44]; 246 static const uint8_t table15_5_emit_[92]; 247 static const uint8_t table15_6_emit_[44]; 248 static const uint8_t table15_7_emit_[92]; 249 static const uint8_t table15_8_emit_[44]; 250 static const uint8_t table15_9_emit_[92]; 251 static const uint8_t table15_10_emit_[72]; 252 static const uint8_t table15_11_emit_[72]; 253 static const uint8_t table15_12_emit_[72]; 254 static const uint8_t table15_13_emit_[40]; 255 static const uint8_t table15_14_emit_[4]; 256 static const uint16_t table15_14_ops_[64]; 257 static const uint8_t table15_15_emit_[7]; 258 static const uint16_t table15_15_ops_[64]; 259 static const uint8_t* const table15_emit_[16]; 260 static const uint16_t* const table15_ops_[16]; 261 static const uint8_t table16_0_emit_[16]; 262 static const uint16_t table16_0_ops_[64]; 263 static const uint8_t table16_1_emit_[28]; 264 static const uint16_t table16_1_ops_[64]; 265 static const uint8_t table16_2_emit_[36]; 266 static const uint16_t table16_2_ops_[64]; 267 static const uint8_t table16_3_emit_[68]; 268 static const uint16_t table16_3_ops_[64]; 269 static const uint8_t table16_4_emit_[16]; 270 static const uint8_t table16_5_emit_[28]; 271 static const uint8_t table16_6_emit_[36]; 272 static const uint8_t table16_7_emit_[68]; 273 static const uint8_t table16_8_emit_[16]; 274 static const uint8_t table16_9_emit_[28]; 275 static const uint8_t table16_10_emit_[36]; 276 static const uint8_t table16_11_emit_[68]; 277 static const uint8_t table16_12_emit_[16]; 278 static const uint8_t table16_13_emit_[28]; 279 static const uint8_t table16_14_emit_[36]; 280 static const uint8_t table16_15_emit_[68]; 281 static const uint8_t table16_16_emit_[16]; 282 static const uint8_t table16_17_emit_[28]; 283 static const uint8_t table16_18_emit_[36]; 284 static const uint8_t table16_19_emit_[68]; 285 static const uint8_t table16_20_emit_[44]; 286 static const uint8_t table16_21_emit_[92]; 287 static const uint8_t table16_22_emit_[44]; 288 static const uint8_t table16_23_emit_[92]; 289 static const uint8_t table16_24_emit_[44]; 290 static const uint8_t table16_25_emit_[92]; 291 static const uint8_t table16_26_emit_[72]; 292 static const uint8_t table16_27_emit_[72]; 293 static const uint8_t table16_28_emit_[40]; 294 static const uint8_t table16_29_emit_[40]; 295 static const uint8_t table16_30_emit_[40]; 296 static const uint8_t table16_31_emit_[5]; 297 static const uint16_t table16_31_ops_[64]; 298 static const uint8_t* const table16_emit_[32]; 299 static const uint16_t* const table16_ops_[32]; 300 static const uint16_t table17_0_ops_[128]; 301 static const uint16_t table17_1_ops_[128]; 302 static const uint16_t table17_2_ops_[128]; 303 static const uint16_t table17_3_ops_[128]; 304 static const uint16_t table17_20_ops_[128]; 305 static const uint8_t table17_21_emit_[104]; 306 static const uint16_t table17_21_ops_[128]; 307 static const uint8_t table17_23_emit_[104]; 308 static const uint8_t table17_25_emit_[104]; 309 static const uint8_t table17_26_emit_[136]; 310 static const uint16_t table17_26_ops_[128]; 311 static const uint8_t table17_27_emit_[136]; 312 static const uint8_t table17_28_emit_[144]; 313 static const uint16_t table17_28_ops_[128]; 314 static const uint8_t table17_29_emit_[144]; 315 static const uint8_t table17_30_emit_[144]; 316 static const uint8_t table17_31_emit_[46]; 317 static const uint16_t table17_31_ops_[128]; 318 static const uint8_t* const table17_emit_[32]; 319 static const uint16_t* const table17_ops_[32]; 320 static const uint8_t table18_0_emit_[60]; 321 static const uint16_t table18_0_ops_[64]; 322 static const uint8_t table18_1_emit_[60]; 323 static const uint8_t table18_2_emit_[60]; 324 static const uint8_t table18_3_emit_[60]; 325 static const uint8_t table18_4_emit_[60]; 326 static const uint8_t table18_5_emit_[8]; 327 static const uint16_t table18_5_ops_[64]; 328 static const uint8_t table18_6_emit_[8]; 329 static const uint8_t table18_7_emit_[8]; 330 static const uint8_t table18_8_emit_[8]; 331 static const uint8_t table18_9_emit_[8]; 332 static const uint8_t table18_10_emit_[8]; 333 static const uint8_t table18_11_emit_[12]; 334 static const uint16_t table18_11_ops_[64]; 335 static const uint8_t table18_12_emit_[16]; 336 static const uint16_t table18_12_ops_[64]; 337 static const uint8_t table18_13_emit_[16]; 338 static const uint8_t table18_14_emit_[16]; 339 static const uint8_t table18_15_emit_[29]; 340 static const uint16_t table18_15_ops_[64]; 341 static const uint8_t table18_16_emit_[60]; 342 static const uint8_t table18_17_emit_[60]; 343 static const uint8_t table18_18_emit_[60]; 344 static const uint8_t table18_19_emit_[60]; 345 static const uint8_t table18_20_emit_[60]; 346 static const uint8_t table18_21_emit_[8]; 347 static const uint8_t table18_22_emit_[8]; 348 static const uint8_t table18_23_emit_[8]; 349 static const uint8_t table18_24_emit_[8]; 350 static const uint8_t table18_25_emit_[8]; 351 static const uint8_t table18_26_emit_[8]; 352 static const uint8_t table18_27_emit_[12]; 353 static const uint8_t table18_28_emit_[16]; 354 static const uint8_t table18_29_emit_[16]; 355 static const uint8_t table18_30_emit_[16]; 356 static const uint8_t table18_31_emit_[29]; 357 static const uint16_t table18_31_ops_[64]; 358 static const uint8_t table18_32_emit_[60]; 359 static const uint8_t table18_33_emit_[60]; 360 static const uint8_t table18_34_emit_[60]; 361 static const uint8_t table18_35_emit_[60]; 362 static const uint8_t table18_36_emit_[60]; 363 static const uint8_t table18_37_emit_[8]; 364 static const uint8_t table18_38_emit_[8]; 365 static const uint8_t table18_39_emit_[8]; 366 static const uint8_t table18_40_emit_[8]; 367 static const uint8_t table18_41_emit_[8]; 368 static const uint8_t table18_42_emit_[8]; 369 static const uint8_t table18_43_emit_[12]; 370 static const uint8_t table18_44_emit_[16]; 371 static const uint8_t table18_45_emit_[16]; 372 static const uint8_t table18_46_emit_[16]; 373 static const uint8_t table18_47_emit_[29]; 374 static const uint16_t table18_47_ops_[64]; 375 static const uint8_t table18_48_emit_[60]; 376 static const uint8_t table18_49_emit_[60]; 377 static const uint8_t table18_50_emit_[60]; 378 static const uint8_t table18_51_emit_[60]; 379 static const uint8_t table18_52_emit_[60]; 380 static const uint8_t table18_53_emit_[8]; 381 static const uint8_t table18_54_emit_[8]; 382 static const uint8_t table18_55_emit_[8]; 383 static const uint8_t table18_56_emit_[8]; 384 static const uint8_t table18_57_emit_[8]; 385 static const uint8_t table18_58_emit_[8]; 386 static const uint8_t table18_59_emit_[12]; 387 static const uint8_t table18_60_emit_[16]; 388 static const uint8_t table18_61_emit_[16]; 389 static const uint8_t table18_62_emit_[16]; 390 static const uint8_t table18_63_emit_[29]; 391 static const uint16_t table18_63_ops_[64]; 392 static const uint8_t table18_64_emit_[60]; 393 static const uint8_t table18_65_emit_[60]; 394 static const uint8_t table18_66_emit_[60]; 395 static const uint8_t table18_67_emit_[60]; 396 static const uint8_t table18_68_emit_[60]; 397 static const uint8_t table18_69_emit_[8]; 398 static const uint8_t table18_70_emit_[8]; 399 static const uint8_t table18_71_emit_[8]; 400 static const uint8_t table18_72_emit_[8]; 401 static const uint8_t table18_73_emit_[8]; 402 static const uint8_t table18_74_emit_[8]; 403 static const uint8_t table18_75_emit_[12]; 404 static const uint8_t table18_76_emit_[16]; 405 static const uint8_t table18_77_emit_[16]; 406 static const uint8_t table18_78_emit_[16]; 407 static const uint8_t table18_79_emit_[30]; 408 static const uint16_t table18_79_ops_[64]; 409 static const uint8_t table18_80_emit_[8]; 410 static const uint8_t table18_81_emit_[8]; 411 static const uint8_t table18_82_emit_[12]; 412 static const uint8_t table18_83_emit_[16]; 413 static const uint8_t table18_84_emit_[16]; 414 static const uint8_t table18_85_emit_[20]; 415 static const uint16_t table18_85_ops_[64]; 416 static const uint8_t table18_86_emit_[32]; 417 static const uint16_t table18_86_ops_[64]; 418 static const uint8_t table18_87_emit_[36]; 419 static const uint16_t table18_87_ops_[64]; 420 static const uint8_t table18_88_emit_[8]; 421 static const uint8_t table18_89_emit_[8]; 422 static const uint8_t table18_90_emit_[12]; 423 static const uint8_t table18_91_emit_[16]; 424 static const uint8_t table18_92_emit_[16]; 425 static const uint8_t table18_93_emit_[20]; 426 static const uint8_t table18_94_emit_[32]; 427 static const uint8_t table18_95_emit_[36]; 428 static const uint8_t table18_96_emit_[8]; 429 static const uint8_t table18_97_emit_[8]; 430 static const uint8_t table18_98_emit_[12]; 431 static const uint8_t table18_99_emit_[16]; 432 static const uint8_t table18_100_emit_[16]; 433 static const uint8_t table18_101_emit_[20]; 434 static const uint8_t table18_102_emit_[32]; 435 static const uint8_t table18_103_emit_[36]; 436 static const uint8_t table18_104_emit_[16]; 437 static const uint8_t table18_105_emit_[28]; 438 static const uint16_t table18_105_ops_[64]; 439 static const uint8_t table18_106_emit_[36]; 440 static const uint16_t table18_106_ops_[64]; 441 static const uint8_t table18_107_emit_[68]; 442 static const uint16_t table18_107_ops_[64]; 443 static const uint8_t table18_108_emit_[16]; 444 static const uint8_t table18_109_emit_[28]; 445 static const uint8_t table18_110_emit_[36]; 446 static const uint8_t table18_111_emit_[68]; 447 static const uint8_t table18_112_emit_[44]; 448 static const uint16_t table18_112_ops_[64]; 449 static const uint8_t table18_113_emit_[92]; 450 static const uint16_t table18_113_ops_[64]; 451 static const uint8_t table18_114_emit_[44]; 452 static const uint8_t table18_115_emit_[92]; 453 static const uint8_t table18_116_emit_[44]; 454 static const uint8_t table18_117_emit_[92]; 455 static const uint8_t table18_118_emit_[44]; 456 static const uint8_t table18_119_emit_[92]; 457 static const uint8_t table18_120_emit_[44]; 458 static const uint8_t table18_121_emit_[92]; 459 static const uint8_t table18_122_emit_[44]; 460 static const uint8_t table18_123_emit_[92]; 461 static const uint8_t table18_124_emit_[72]; 462 static const uint16_t table18_124_ops_[64]; 463 static const uint8_t table18_125_emit_[72]; 464 static const uint8_t table18_126_emit_[40]; 465 static const uint16_t table18_126_ops_[64]; 466 static const uint8_t table18_127_emit_[31]; 467 static const uint16_t table18_127_ops_[64]; 468 static const uint8_t* const table18_emit_[128]; 469 static const uint16_t* const table18_ops_[128]; 470 static const uint8_t table19_0_emit_[216]; 471 static const uint16_t table19_0_inner_[75]; 472 static const uint8_t table19_0_outer_[128]; 473 static const uint8_t table19_1_emit_[216]; 474 static const uint8_t table19_2_emit_[216]; 475 static const uint8_t table19_3_emit_[216]; 476 static const uint8_t table19_4_emit_[216]; 477 static const uint8_t table19_5_emit_[120]; 478 static const uint16_t table19_5_inner_[45]; 479 static const uint8_t table19_5_outer_[128]; 480 static const uint8_t table19_6_emit_[120]; 481 static const uint8_t table19_7_emit_[120]; 482 static const uint8_t table19_8_emit_[120]; 483 static const uint8_t table19_9_emit_[120]; 484 static const uint8_t table19_10_emit_[120]; 485 static const uint8_t table19_11_emit_[68]; 486 static const uint16_t table19_11_inner_[27]; 487 static const uint8_t table19_11_outer_[128]; 488 static const uint16_t table19_12_inner_[9]; 489 static const uint8_t table19_12_outer_[128]; 490 static const uint8_t table19_15_emit_[35]; 491 static const uint16_t table19_15_inner_[20]; 492 static const uint8_t table19_15_outer_[128]; 493 static const uint8_t table19_16_emit_[216]; 494 static const uint8_t table19_17_emit_[216]; 495 static const uint8_t table19_18_emit_[216]; 496 static const uint8_t table19_19_emit_[216]; 497 static const uint8_t table19_20_emit_[216]; 498 static const uint8_t table19_21_emit_[120]; 499 static const uint8_t table19_22_emit_[120]; 500 static const uint8_t table19_23_emit_[120]; 501 static const uint8_t table19_24_emit_[120]; 502 static const uint8_t table19_25_emit_[120]; 503 static const uint8_t table19_26_emit_[120]; 504 static const uint8_t table19_27_emit_[68]; 505 static const uint8_t table19_31_emit_[35]; 506 static const uint16_t table19_31_inner_[20]; 507 static const uint8_t table19_32_emit_[216]; 508 static const uint8_t table19_33_emit_[216]; 509 static const uint8_t table19_34_emit_[216]; 510 static const uint8_t table19_35_emit_[216]; 511 static const uint8_t table19_36_emit_[216]; 512 static const uint8_t table19_37_emit_[120]; 513 static const uint8_t table19_38_emit_[120]; 514 static const uint8_t table19_39_emit_[120]; 515 static const uint8_t table19_40_emit_[120]; 516 static const uint8_t table19_41_emit_[120]; 517 static const uint8_t table19_42_emit_[120]; 518 static const uint8_t table19_43_emit_[68]; 519 static const uint8_t table19_47_emit_[35]; 520 static const uint16_t table19_47_inner_[20]; 521 static const uint8_t table19_48_emit_[216]; 522 static const uint8_t table19_49_emit_[216]; 523 static const uint8_t table19_50_emit_[216]; 524 static const uint8_t table19_51_emit_[216]; 525 static const uint8_t table19_52_emit_[216]; 526 static const uint8_t table19_53_emit_[120]; 527 static const uint8_t table19_54_emit_[120]; 528 static const uint8_t table19_55_emit_[120]; 529 static const uint8_t table19_56_emit_[120]; 530 static const uint8_t table19_57_emit_[120]; 531 static const uint8_t table19_58_emit_[120]; 532 static const uint8_t table19_59_emit_[68]; 533 static const uint8_t table19_63_emit_[35]; 534 static const uint16_t table19_63_inner_[20]; 535 static const uint8_t table19_64_emit_[216]; 536 static const uint8_t table19_65_emit_[216]; 537 static const uint8_t table19_66_emit_[216]; 538 static const uint8_t table19_67_emit_[216]; 539 static const uint8_t table19_68_emit_[216]; 540 static const uint8_t table19_69_emit_[120]; 541 static const uint8_t table19_70_emit_[120]; 542 static const uint8_t table19_71_emit_[120]; 543 static const uint8_t table19_72_emit_[120]; 544 static const uint8_t table19_73_emit_[120]; 545 static const uint8_t table19_74_emit_[120]; 546 static const uint8_t table19_75_emit_[68]; 547 static const uint8_t table19_79_emit_[35]; 548 static const uint16_t table19_79_inner_[20]; 549 static const uint8_t table19_80_emit_[120]; 550 static const uint8_t table19_81_emit_[120]; 551 static const uint8_t table19_82_emit_[68]; 552 static const uint16_t table19_85_inner_[11]; 553 static const uint8_t table19_85_outer_[128]; 554 static const uint16_t table19_86_inner_[17]; 555 static const uint8_t table19_86_outer_[128]; 556 static const uint8_t table19_87_emit_[46]; 557 static const uint16_t table19_87_inner_[25]; 558 static const uint8_t table19_87_outer_[128]; 559 static const uint8_t table19_88_emit_[120]; 560 static const uint8_t table19_89_emit_[120]; 561 static const uint8_t table19_90_emit_[68]; 562 static const uint8_t table19_95_emit_[46]; 563 static const uint8_t table19_96_emit_[120]; 564 static const uint8_t table19_97_emit_[120]; 565 static const uint8_t table19_98_emit_[68]; 566 static const uint8_t table19_103_emit_[46]; 567 static const uint16_t table19_105_inner_[15]; 568 static const uint8_t table19_105_outer_[128]; 569 static const uint16_t table19_106_inner_[19]; 570 static const uint8_t table19_106_outer_[128]; 571 static const uint16_t table19_107_inner_[36]; 572 static const uint8_t table19_107_outer_[128]; 573 static const uint16_t table19_112_inner_[23]; 574 static const uint8_t table19_112_outer_[128]; 575 static const uint8_t table19_113_emit_[104]; 576 static const uint16_t table19_113_inner_[54]; 577 static const uint8_t table19_113_outer_[128]; 578 static const uint8_t table19_115_emit_[104]; 579 static const uint8_t table19_117_emit_[104]; 580 static const uint8_t table19_119_emit_[104]; 581 static const uint8_t table19_121_emit_[104]; 582 static const uint8_t table19_123_emit_[104]; 583 static const uint8_t table19_124_emit_[136]; 584 static const uint16_t table19_124_inner_[70]; 585 static const uint8_t table19_124_outer_[128]; 586 static const uint8_t table19_125_emit_[136]; 587 static const uint8_t table19_126_emit_[144]; 588 static const uint16_t table19_126_inner_[75]; 589 static const uint8_t table19_127_emit_[96]; 590 static const uint16_t table19_127_inner_[63]; 591 static const uint8_t table19_127_outer_[128]; 592 static const uint8_t* const table19_emit_[128]; 593 static const uint16_t* const table19_inner_[128]; 594 static const uint8_t* const table19_outer_[128]; 595 static const uint8_t table20_0_emit_[204]; 596 static const uint16_t table20_0_ops_[128]; 597 static const uint8_t table20_1_emit_[204]; 598 static const uint8_t table20_2_emit_[204]; 599 static const uint8_t table20_3_emit_[204]; 600 static const uint8_t table20_4_emit_[204]; 601 static const uint8_t table20_5_emit_[204]; 602 static const uint8_t table20_6_emit_[204]; 603 static const uint8_t table20_7_emit_[204]; 604 static const uint8_t table20_8_emit_[204]; 605 static const uint8_t table20_9_emit_[204]; 606 static const uint8_t table20_10_emit_[216]; 607 static const uint16_t table20_10_ops_[128]; 608 static const uint8_t table20_11_emit_[216]; 609 static const uint8_t table20_12_emit_[216]; 610 static const uint8_t table20_13_emit_[216]; 611 static const uint8_t table20_14_emit_[216]; 612 static const uint8_t table20_15_emit_[216]; 613 static const uint8_t table20_16_emit_[216]; 614 static const uint8_t table20_17_emit_[216]; 615 static const uint8_t table20_18_emit_[216]; 616 static const uint8_t table20_19_emit_[216]; 617 static const uint8_t table20_20_emit_[216]; 618 static const uint8_t table20_21_emit_[216]; 619 static const uint8_t table20_22_emit_[216]; 620 static const uint8_t table20_23_emit_[120]; 621 static const uint16_t table20_23_ops_[128]; 622 static const uint8_t table20_24_emit_[120]; 623 static const uint8_t table20_25_emit_[120]; 624 static const uint8_t table20_26_emit_[120]; 625 static const uint8_t table20_27_emit_[120]; 626 static const uint8_t table20_28_emit_[120]; 627 static const uint8_t table20_29_emit_[120]; 628 static const uint8_t table20_30_emit_[120]; 629 static const uint8_t table20_31_emit_[31]; 630 static const uint16_t table20_31_ops_[128]; 631 static const uint8_t table20_32_emit_[204]; 632 static const uint8_t table20_33_emit_[204]; 633 static const uint8_t table20_34_emit_[204]; 634 static const uint8_t table20_35_emit_[204]; 635 static const uint8_t table20_36_emit_[204]; 636 static const uint8_t table20_37_emit_[204]; 637 static const uint8_t table20_38_emit_[204]; 638 static const uint8_t table20_39_emit_[204]; 639 static const uint8_t table20_40_emit_[204]; 640 static const uint8_t table20_41_emit_[204]; 641 static const uint8_t table20_42_emit_[216]; 642 static const uint8_t table20_43_emit_[216]; 643 static const uint8_t table20_44_emit_[216]; 644 static const uint8_t table20_45_emit_[216]; 645 static const uint8_t table20_46_emit_[216]; 646 static const uint8_t table20_47_emit_[216]; 647 static const uint8_t table20_48_emit_[216]; 648 static const uint8_t table20_49_emit_[216]; 649 static const uint8_t table20_50_emit_[216]; 650 static const uint8_t table20_51_emit_[216]; 651 static const uint8_t table20_52_emit_[216]; 652 static const uint8_t table20_53_emit_[216]; 653 static const uint8_t table20_54_emit_[216]; 654 static const uint8_t table20_55_emit_[120]; 655 static const uint8_t table20_56_emit_[120]; 656 static const uint8_t table20_57_emit_[120]; 657 static const uint8_t table20_58_emit_[120]; 658 static const uint8_t table20_59_emit_[120]; 659 static const uint8_t table20_60_emit_[120]; 660 static const uint8_t table20_61_emit_[120]; 661 static const uint8_t table20_62_emit_[120]; 662 static const uint8_t table20_63_emit_[31]; 663 static const uint16_t table20_63_ops_[128]; 664 static const uint8_t table20_64_emit_[204]; 665 static const uint8_t table20_65_emit_[204]; 666 static const uint8_t table20_66_emit_[204]; 667 static const uint8_t table20_67_emit_[204]; 668 static const uint8_t table20_68_emit_[204]; 669 static const uint8_t table20_69_emit_[204]; 670 static const uint8_t table20_70_emit_[204]; 671 static const uint8_t table20_71_emit_[204]; 672 static const uint8_t table20_72_emit_[204]; 673 static const uint8_t table20_73_emit_[204]; 674 static const uint8_t table20_74_emit_[216]; 675 static const uint8_t table20_75_emit_[216]; 676 static const uint8_t table20_76_emit_[216]; 677 static const uint8_t table20_77_emit_[216]; 678 static const uint8_t table20_78_emit_[216]; 679 static const uint8_t table20_79_emit_[216]; 680 static const uint8_t table20_80_emit_[216]; 681 static const uint8_t table20_81_emit_[216]; 682 static const uint8_t table20_82_emit_[216]; 683 static const uint8_t table20_83_emit_[216]; 684 static const uint8_t table20_84_emit_[216]; 685 static const uint8_t table20_85_emit_[216]; 686 static const uint8_t table20_86_emit_[216]; 687 static const uint8_t table20_87_emit_[120]; 688 static const uint8_t table20_88_emit_[120]; 689 static const uint8_t table20_89_emit_[120]; 690 static const uint8_t table20_90_emit_[120]; 691 static const uint8_t table20_91_emit_[120]; 692 static const uint8_t table20_92_emit_[120]; 693 static const uint8_t table20_93_emit_[120]; 694 static const uint8_t table20_94_emit_[120]; 695 static const uint8_t table20_95_emit_[31]; 696 static const uint16_t table20_95_ops_[128]; 697 static const uint8_t table20_96_emit_[204]; 698 static const uint8_t table20_97_emit_[204]; 699 static const uint8_t table20_98_emit_[204]; 700 static const uint8_t table20_99_emit_[204]; 701 static const uint8_t table20_100_emit_[204]; 702 static const uint8_t table20_101_emit_[204]; 703 static const uint8_t table20_102_emit_[204]; 704 static const uint8_t table20_103_emit_[204]; 705 static const uint8_t table20_104_emit_[204]; 706 static const uint8_t table20_105_emit_[204]; 707 static const uint8_t table20_106_emit_[216]; 708 static const uint8_t table20_107_emit_[216]; 709 static const uint8_t table20_108_emit_[216]; 710 static const uint8_t table20_109_emit_[216]; 711 static const uint8_t table20_110_emit_[216]; 712 static const uint8_t table20_111_emit_[216]; 713 static const uint8_t table20_112_emit_[216]; 714 static const uint8_t table20_113_emit_[216]; 715 static const uint8_t table20_114_emit_[216]; 716 static const uint8_t table20_115_emit_[216]; 717 static const uint8_t table20_116_emit_[216]; 718 static const uint8_t table20_117_emit_[216]; 719 static const uint8_t table20_118_emit_[216]; 720 static const uint8_t table20_119_emit_[120]; 721 static const uint8_t table20_120_emit_[120]; 722 static const uint8_t table20_121_emit_[120]; 723 static const uint8_t table20_122_emit_[120]; 724 static const uint8_t table20_123_emit_[120]; 725 static const uint8_t table20_124_emit_[120]; 726 static const uint8_t table20_125_emit_[120]; 727 static const uint8_t table20_126_emit_[120]; 728 static const uint8_t table20_127_emit_[31]; 729 static const uint16_t table20_127_ops_[128]; 730 static const uint8_t table20_128_emit_[204]; 731 static const uint8_t table20_129_emit_[204]; 732 static const uint8_t table20_130_emit_[204]; 733 static const uint8_t table20_131_emit_[204]; 734 static const uint8_t table20_132_emit_[204]; 735 static const uint8_t table20_133_emit_[204]; 736 static const uint8_t table20_134_emit_[204]; 737 static const uint8_t table20_135_emit_[204]; 738 static const uint8_t table20_136_emit_[204]; 739 static const uint8_t table20_137_emit_[204]; 740 static const uint8_t table20_138_emit_[216]; 741 static const uint8_t table20_139_emit_[216]; 742 static const uint8_t table20_140_emit_[216]; 743 static const uint8_t table20_141_emit_[216]; 744 static const uint8_t table20_142_emit_[216]; 745 static const uint8_t table20_143_emit_[216]; 746 static const uint8_t table20_144_emit_[216]; 747 static const uint8_t table20_145_emit_[216]; 748 static const uint8_t table20_146_emit_[216]; 749 static const uint8_t table20_147_emit_[216]; 750 static const uint8_t table20_148_emit_[216]; 751 static const uint8_t table20_149_emit_[216]; 752 static const uint8_t table20_150_emit_[216]; 753 static const uint8_t table20_151_emit_[120]; 754 static const uint8_t table20_152_emit_[120]; 755 static const uint8_t table20_153_emit_[120]; 756 static const uint8_t table20_154_emit_[120]; 757 static const uint8_t table20_155_emit_[120]; 758 static const uint8_t table20_156_emit_[120]; 759 static const uint8_t table20_157_emit_[120]; 760 static const uint8_t table20_158_emit_[120]; 761 static const uint8_t table20_159_emit_[31]; 762 static const uint16_t table20_159_ops_[128]; 763 static const uint8_t table20_160_emit_[216]; 764 static const uint8_t table20_161_emit_[216]; 765 static const uint8_t table20_162_emit_[216]; 766 static const uint8_t table20_163_emit_[216]; 767 static const uint8_t table20_164_emit_[216]; 768 static const uint8_t table20_165_emit_[120]; 769 static const uint8_t table20_166_emit_[120]; 770 static const uint8_t table20_167_emit_[120]; 771 static const uint8_t table20_168_emit_[120]; 772 static const uint8_t table20_169_emit_[120]; 773 static const uint8_t table20_170_emit_[120]; 774 static const uint8_t table20_171_emit_[68]; 775 static const uint16_t table20_171_ops_[128]; 776 static const uint8_t table20_172_emit_[16]; 777 static const uint16_t table20_172_ops_[128]; 778 static const uint8_t table20_173_emit_[16]; 779 static const uint8_t table20_174_emit_[16]; 780 static const uint8_t table20_175_emit_[35]; 781 static const uint16_t table20_175_ops_[128]; 782 static const uint8_t table20_176_emit_[216]; 783 static const uint8_t table20_177_emit_[216]; 784 static const uint8_t table20_178_emit_[216]; 785 static const uint8_t table20_179_emit_[216]; 786 static const uint8_t table20_180_emit_[216]; 787 static const uint8_t table20_181_emit_[120]; 788 static const uint8_t table20_182_emit_[120]; 789 static const uint8_t table20_183_emit_[120]; 790 static const uint8_t table20_184_emit_[120]; 791 static const uint8_t table20_185_emit_[120]; 792 static const uint8_t table20_186_emit_[120]; 793 static const uint8_t table20_187_emit_[68]; 794 static const uint8_t table20_188_emit_[16]; 795 static const uint8_t table20_189_emit_[16]; 796 static const uint8_t table20_190_emit_[16]; 797 static const uint8_t table20_191_emit_[35]; 798 static const uint16_t table20_191_ops_[128]; 799 static const uint8_t table20_192_emit_[216]; 800 static const uint8_t table20_193_emit_[216]; 801 static const uint8_t table20_194_emit_[216]; 802 static const uint8_t table20_195_emit_[216]; 803 static const uint8_t table20_196_emit_[216]; 804 static const uint8_t table20_197_emit_[120]; 805 static const uint8_t table20_198_emit_[120]; 806 static const uint8_t table20_199_emit_[120]; 807 static const uint8_t table20_200_emit_[120]; 808 static const uint8_t table20_201_emit_[120]; 809 static const uint8_t table20_202_emit_[120]; 810 static const uint8_t table20_203_emit_[68]; 811 static const uint8_t table20_204_emit_[16]; 812 static const uint8_t table20_205_emit_[16]; 813 static const uint8_t table20_206_emit_[16]; 814 static const uint8_t table20_207_emit_[36]; 815 static const uint16_t table20_207_ops_[128]; 816 static const uint8_t table20_208_emit_[120]; 817 static const uint8_t table20_209_emit_[120]; 818 static const uint8_t table20_210_emit_[68]; 819 static const uint8_t table20_211_emit_[16]; 820 static const uint8_t table20_212_emit_[16]; 821 static const uint8_t table20_213_emit_[20]; 822 static const uint16_t table20_213_ops_[128]; 823 static const uint8_t table20_214_emit_[32]; 824 static const uint16_t table20_214_ops_[128]; 825 static const uint8_t table20_215_emit_[46]; 826 static const uint16_t table20_215_ops_[128]; 827 static const uint8_t table20_216_emit_[120]; 828 static const uint8_t table20_217_emit_[120]; 829 static const uint8_t table20_218_emit_[68]; 830 static const uint8_t table20_219_emit_[16]; 831 static const uint8_t table20_220_emit_[16]; 832 static const uint8_t table20_221_emit_[20]; 833 static const uint8_t table20_222_emit_[32]; 834 static const uint8_t table20_223_emit_[46]; 835 static const uint8_t table20_224_emit_[16]; 836 static const uint8_t table20_225_emit_[28]; 837 static const uint16_t table20_225_ops_[128]; 838 static const uint8_t table20_226_emit_[36]; 839 static const uint16_t table20_226_ops_[128]; 840 static const uint8_t table20_227_emit_[68]; 841 static const uint16_t table20_227_ops_[128]; 842 static const uint8_t table20_228_emit_[16]; 843 static const uint8_t table20_229_emit_[28]; 844 static const uint8_t table20_230_emit_[36]; 845 static const uint8_t table20_231_emit_[68]; 846 static const uint8_t table20_232_emit_[16]; 847 static const uint8_t table20_233_emit_[28]; 848 static const uint8_t table20_234_emit_[36]; 849 static const uint8_t table20_235_emit_[68]; 850 static const uint8_t table20_236_emit_[16]; 851 static const uint8_t table20_237_emit_[28]; 852 static const uint8_t table20_238_emit_[36]; 853 static const uint8_t table20_239_emit_[68]; 854 static const uint8_t table20_240_emit_[16]; 855 static const uint8_t table20_241_emit_[28]; 856 static const uint8_t table20_242_emit_[36]; 857 static const uint8_t table20_243_emit_[68]; 858 static const uint8_t table20_244_emit_[16]; 859 static const uint8_t table20_245_emit_[28]; 860 static const uint8_t table20_246_emit_[36]; 861 static const uint8_t table20_247_emit_[68]; 862 static const uint8_t table20_248_emit_[44]; 863 static const uint16_t table20_248_ops_[128]; 864 static const uint8_t table20_249_emit_[104]; 865 static const uint16_t table20_249_ops_[128]; 866 static const uint8_t table20_250_emit_[44]; 867 static const uint8_t table20_251_emit_[104]; 868 static const uint8_t table20_252_emit_[136]; 869 static const uint16_t table20_252_ops_[128]; 870 static const uint8_t table20_253_emit_[136]; 871 static const uint8_t table20_254_emit_[136]; 872 static const uint8_t table20_255_emit_[50]; 873 static const uint16_t table20_255_ops_[128]; 874 static const uint8_t* const table20_emit_[256]; 875 static const uint16_t* const table20_ops_[256]; 876 static const uint8_t table7_0_emit_[1]; 877 static const uint16_t table7_0_ops_[512]; 878 static const uint8_t table7_16_emit_[1]; 879 static const uint8_t table7_32_emit_[1]; 880 static const uint8_t table7_48_emit_[1]; 881 static const uint8_t table7_64_emit_[1]; 882 static const uint8_t table7_80_emit_[1]; 883 static const uint16_t table7_80_ops_[512]; 884 static const uint8_t table7_88_emit_[1]; 885 static const uint8_t table7_96_emit_[1]; 886 static const uint8_t table7_104_emit_[1]; 887 static const uint16_t table7_104_ops_[512]; 888 static const uint8_t table7_108_emit_[1]; 889 static const uint8_t table7_112_emit_[1]; 890 static const uint16_t table7_112_ops_[512]; 891 static const uint8_t table7_114_emit_[1]; 892 static const uint8_t table7_116_emit_[1]; 893 static const uint8_t table7_118_emit_[1]; 894 static const uint8_t table7_120_emit_[1]; 895 static const uint8_t table7_122_emit_[1]; 896 static const uint8_t table7_124_emit_[1]; 897 static const uint16_t table7_124_ops_[512]; 898 static const uint8_t table7_125_emit_[1]; 899 static const uint8_t table7_126_emit_[2]; 900 static const uint16_t table7_126_ops_[512]; 901 static const uint8_t table7_127_emit_[80]; 902 static const uint16_t table7_127_ops_[512]; 903 static const uint8_t* const table7_emit_[128]; 904 static const uint16_t* const table7_ops_[128]; 905 static const uint8_t table28_0_emit_[8]; 906 static const uint8_t table28_0_inner_[8]; 907 static const uint8_t table29_0_emit_[16]; 908 static const uint8_t table29_0_inner_[16]; 909 static const uint8_t table32_0_emit_[30]; 910 static const uint8_t table32_0_ops_[32]; 911 static const uint8_t table33_0_ops_[64]; 912 static const uint8_t table30_0_emit_[7]; 913 static const uint8_t table30_0_ops_[32]; 914 static const uint8_t table30_1_emit_[8]; 915 static const uint8_t table30_1_ops_[32]; 916 static const uint8_t table30_2_emit_[8]; 917 static const uint8_t table30_3_emit_[10]; 918 static const uint8_t table30_3_ops_[32]; 919 static const uint8_t* const table30_emit_[4]; 920 static const uint8_t* const table30_ops_[4]; 921 static const uint8_t table35_0_emit_[7]; 922 static const uint8_t table35_0_inner_[8]; 923 static const uint8_t table34_0_emit_[9]; 924 static const uint8_t table34_0_inner_[9]; 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 (!RefillTo7()) { 934 Done0(); 935 break; 936 } 937 const auto index = (buffer_ >> (buffer_len_ - 7)) & 0x7f; 938 const auto op = GetOp1(index); 939 const int consumed = op & 7; 940 buffer_len_ -= consumed; 941 const auto emit_ofs = op >> 6; 942 switch ((op >> 3) & 7) { 943 case 0: { 944 sink_(GetEmit1(index, emit_ofs + 0)); 945 break; 946 } 947 case 1: { 948 DecodeStep0(); 949 break; 950 } 951 case 2: { 952 DecodeStep1(); 953 break; 954 } 955 case 3: { 956 DecodeStep2(); 957 break; 958 } 959 case 4: { 960 DecodeStep3(); 961 break; 962 } 963 } 964 } 965 return ok_; 966 } 967 968 private: RefillTo7()969 bool RefillTo7() { 970 switch (buffer_len_) { 971 case 0: { 972 return Read1to8Bytes(); 973 } 974 case 1: 975 case 2: 976 case 3: 977 case 4: 978 case 5: 979 case 6: { 980 return Read1to7Bytes(); 981 } 982 } 983 return true; 984 } Read1to8Bytes()985 bool Read1to8Bytes() { 986 switch (end_ - begin_) { 987 case 0: { 988 return false; 989 } 990 case 1: { 991 Fill1(); 992 return true; 993 } 994 case 2: { 995 Fill2(); 996 return true; 997 } 998 case 3: { 999 Fill3(); 1000 return true; 1001 } 1002 case 4: { 1003 Fill4(); 1004 return true; 1005 } 1006 case 5: { 1007 Fill5(); 1008 return true; 1009 } 1010 case 6: { 1011 Fill6(); 1012 return true; 1013 } 1014 case 7: { 1015 Fill7(); 1016 return true; 1017 } 1018 default: { 1019 Fill8(); 1020 return true; 1021 } 1022 } 1023 } Fill1()1024 void Fill1() { 1025 buffer_ = (buffer_ << 8) | (static_cast<uint64_t>(begin_[0]) << 0); 1026 begin_ += 1; 1027 buffer_len_ += 8; 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 } Read1to7Bytes()1092 bool Read1to7Bytes() { 1093 switch (end_ - begin_) { 1094 case 0: { 1095 return false; 1096 } 1097 case 1: { 1098 Fill1(); 1099 return true; 1100 } 1101 case 2: { 1102 Fill2(); 1103 return true; 1104 } 1105 case 3: { 1106 Fill3(); 1107 return true; 1108 } 1109 case 4: { 1110 Fill4(); 1111 return true; 1112 } 1113 case 5: { 1114 Fill5(); 1115 return true; 1116 } 1117 case 6: { 1118 Fill6(); 1119 return true; 1120 } 1121 default: { 1122 Fill7(); 1123 return true; 1124 } 1125 } 1126 } Done0()1127 void Done0() { 1128 done_ = true; 1129 switch (buffer_len_) { 1130 case 1: 1131 case 2: 1132 case 3: 1133 case 4: { 1134 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1135 return; 1136 } 1137 case 5: { 1138 const auto index = buffer_ & 31; 1139 const auto op = GetOp2(index); 1140 switch (op & 3) { 1141 case 0: { 1142 sink_(GetEmit2(index, (op >> 2) + 0)); 1143 break; 1144 } 1145 case 1: { 1146 ok_ = false; 1147 break; 1148 } 1149 } 1150 return; 1151 } 1152 case 6: { 1153 const auto index = buffer_ & 63; 1154 const auto op = GetOp3(index); 1155 switch (op & 3) { 1156 case 0: { 1157 ok_ = false; 1158 break; 1159 } 1160 case 1: { 1161 sink_(GetEmit3(index, (op >> 2) + 0)); 1162 break; 1163 } 1164 } 1165 return; 1166 } 1167 case 0: { 1168 return; 1169 } 1170 } 1171 } DecodeStep0()1172 void DecodeStep0() { 1173 if (!RefillTo1()) { 1174 Done1(); 1175 return; 1176 } 1177 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1178 const auto op = GetOp4(index); 1179 const int consumed = op & 1; 1180 buffer_len_ -= consumed; 1181 const auto emit_ofs = op >> 1; 1182 sink_(GetEmit4(index, emit_ofs + 0)); 1183 } RefillTo1()1184 bool RefillTo1() { 1185 switch (buffer_len_) { 1186 case 0: { 1187 return Read1to8Bytes(); 1188 } 1189 } 1190 return true; 1191 } Done1()1192 void Done1() { 1193 done_ = true; 1194 ok_ = false; 1195 } DecodeStep1()1196 void DecodeStep1() { 1197 if (!RefillTo1()) { 1198 Done2(); 1199 return; 1200 } 1201 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1202 const auto op = GetOp5(index); 1203 const int consumed = op & 1; 1204 buffer_len_ -= consumed; 1205 const auto emit_ofs = op >> 1; 1206 sink_(GetEmit5(index, emit_ofs + 0)); 1207 } Done2()1208 void Done2() { 1209 done_ = true; 1210 ok_ = false; 1211 } DecodeStep2()1212 void DecodeStep2() { 1213 if (!RefillTo1()) { 1214 Done3(); 1215 return; 1216 } 1217 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1218 const auto op = GetOp6(index); 1219 const int consumed = op & 1; 1220 buffer_len_ -= consumed; 1221 const auto emit_ofs = op >> 1; 1222 sink_(GetEmit6(index, emit_ofs + 0)); 1223 } Done3()1224 void Done3() { 1225 done_ = true; 1226 ok_ = false; 1227 } DecodeStep3()1228 void DecodeStep3() { 1229 if (!RefillTo16()) { 1230 Done4(); 1231 return; 1232 } 1233 const auto index = (buffer_ >> (buffer_len_ - 16)) & 0xffff; 1234 const auto op = GetOp7(index); 1235 const int consumed = op & 31; 1236 buffer_len_ -= consumed; 1237 const auto emit_ofs = op >> 9; 1238 switch ((op >> 5) & 15) { 1239 case 0: { 1240 sink_(GetEmit7(index, emit_ofs + 0)); 1241 break; 1242 } 1243 case 1: { 1244 DecodeStep4(); 1245 break; 1246 } 1247 case 2: { 1248 DecodeStep5(); 1249 break; 1250 } 1251 case 3: { 1252 DecodeStep6(); 1253 break; 1254 } 1255 case 4: { 1256 DecodeStep7(); 1257 break; 1258 } 1259 case 5: { 1260 DecodeStep8(); 1261 break; 1262 } 1263 case 6: { 1264 DecodeStep9(); 1265 break; 1266 } 1267 case 7: { 1268 DecodeStep10(); 1269 break; 1270 } 1271 case 8: { 1272 DecodeStep11(); 1273 break; 1274 } 1275 case 9: { 1276 DecodeStep14(); 1277 break; 1278 } 1279 case 10: { 1280 DecodeStep12(); 1281 break; 1282 } 1283 case 11: { 1284 DecodeStep13(); 1285 break; 1286 } 1287 } 1288 } RefillTo16()1289 bool RefillTo16() { 1290 switch (buffer_len_) { 1291 case 0: { 1292 return Read2to8Bytes(); 1293 } 1294 case 1: 1295 case 2: 1296 case 3: 1297 case 4: 1298 case 5: 1299 case 6: 1300 case 7: { 1301 return Read2to7Bytes(); 1302 } 1303 case 8: { 1304 return Read1to7Bytes(); 1305 } 1306 case 9: 1307 case 10: 1308 case 11: 1309 case 12: 1310 case 13: 1311 case 14: 1312 case 15: { 1313 return Read1to6Bytes(); 1314 } 1315 } 1316 return true; 1317 } Read2to8Bytes()1318 bool Read2to8Bytes() { 1319 switch (end_ - begin_) { 1320 case 0: 1321 case 1: { 1322 return false; 1323 } 1324 case 2: { 1325 Fill2(); 1326 return true; 1327 } 1328 case 3: { 1329 Fill3(); 1330 return true; 1331 } 1332 case 4: { 1333 Fill4(); 1334 return true; 1335 } 1336 case 5: { 1337 Fill5(); 1338 return true; 1339 } 1340 case 6: { 1341 Fill6(); 1342 return true; 1343 } 1344 case 7: { 1345 Fill7(); 1346 return true; 1347 } 1348 default: { 1349 Fill8(); 1350 return true; 1351 } 1352 } 1353 } Read2to7Bytes()1354 bool Read2to7Bytes() { 1355 switch (end_ - begin_) { 1356 case 0: 1357 case 1: { 1358 return false; 1359 } 1360 case 2: { 1361 Fill2(); 1362 return true; 1363 } 1364 case 3: { 1365 Fill3(); 1366 return true; 1367 } 1368 case 4: { 1369 Fill4(); 1370 return true; 1371 } 1372 case 5: { 1373 Fill5(); 1374 return true; 1375 } 1376 case 6: { 1377 Fill6(); 1378 return true; 1379 } 1380 default: { 1381 Fill7(); 1382 return true; 1383 } 1384 } 1385 } Read1to6Bytes()1386 bool Read1to6Bytes() { 1387 switch (end_ - begin_) { 1388 case 0: { 1389 return false; 1390 } 1391 case 1: { 1392 Fill1(); 1393 return true; 1394 } 1395 case 2: { 1396 Fill2(); 1397 return true; 1398 } 1399 case 3: { 1400 Fill3(); 1401 return true; 1402 } 1403 case 4: { 1404 Fill4(); 1405 return true; 1406 } 1407 case 5: { 1408 Fill5(); 1409 return true; 1410 } 1411 default: { 1412 Fill6(); 1413 return true; 1414 } 1415 } 1416 } Done4()1417 void Done4() { 1418 done_ = true; 1419 switch (end_ - begin_) { 1420 case 1: { 1421 Fill1(); 1422 break; 1423 } 1424 } 1425 switch (buffer_len_) { 1426 case 1: 1427 case 2: { 1428 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1429 return; 1430 } 1431 case 3: { 1432 const auto index = buffer_ & 7; 1433 const auto op = GetOp8(index); 1434 switch (op & 3) { 1435 case 0: { 1436 sink_(GetEmit8(index, (op >> 2) + 0)); 1437 break; 1438 } 1439 case 1: { 1440 ok_ = false; 1441 break; 1442 } 1443 } 1444 return; 1445 } 1446 case 4: { 1447 const auto index = buffer_ & 15; 1448 const auto op = GetOp9(index); 1449 switch (op & 3) { 1450 case 0: { 1451 ok_ = false; 1452 break; 1453 } 1454 case 1: { 1455 sink_(GetEmit9(index, (op >> 2) + 0)); 1456 break; 1457 } 1458 } 1459 return; 1460 } 1461 case 5: { 1462 const auto index = buffer_ & 31; 1463 const auto op = GetOp10(index); 1464 switch (op & 3) { 1465 case 0: { 1466 ok_ = false; 1467 break; 1468 } 1469 case 1: { 1470 sink_(GetEmit10(index, (op >> 2) + 0)); 1471 break; 1472 } 1473 } 1474 return; 1475 } 1476 case 6: { 1477 const auto index = buffer_ & 63; 1478 const auto op = GetOp11(index); 1479 switch (op & 3) { 1480 case 0: { 1481 ok_ = false; 1482 break; 1483 } 1484 case 1: { 1485 sink_(GetEmit11(index, (op >> 2) + 0)); 1486 break; 1487 } 1488 } 1489 return; 1490 } 1491 case 7: { 1492 const auto index = buffer_ & 127; 1493 const auto op = GetOp12(index); 1494 switch (op & 3) { 1495 case 0: { 1496 ok_ = false; 1497 break; 1498 } 1499 case 1: { 1500 sink_(GetEmit12(index, (op >> 2) + 0)); 1501 break; 1502 } 1503 } 1504 return; 1505 } 1506 case 8: { 1507 const auto index = buffer_ & 255; 1508 const auto op = GetOp13(index); 1509 switch (op & 3) { 1510 case 0: { 1511 sink_(GetEmit13(index, (op >> 2) + 0)); 1512 sink_(GetEmit13(index, (op >> 2) + 1)); 1513 break; 1514 } 1515 case 1: { 1516 ok_ = false; 1517 break; 1518 } 1519 case 2: { 1520 sink_(GetEmit13(index, (op >> 2) + 0)); 1521 break; 1522 } 1523 } 1524 return; 1525 } 1526 case 9: { 1527 const auto index = buffer_ & 511; 1528 const auto op = GetOp14(index); 1529 switch (op & 3) { 1530 case 0: { 1531 ok_ = false; 1532 break; 1533 } 1534 case 1: { 1535 sink_(GetEmit14(index, (op >> 2) + 0)); 1536 sink_(GetEmit14(index, (op >> 2) + 1)); 1537 break; 1538 } 1539 case 2: { 1540 sink_(GetEmit14(index, (op >> 2) + 0)); 1541 break; 1542 } 1543 } 1544 return; 1545 } 1546 case 10: { 1547 const auto index = buffer_ & 1023; 1548 const auto op = GetOp15(index); 1549 switch (op & 3) { 1550 case 0: { 1551 ok_ = false; 1552 break; 1553 } 1554 case 1: { 1555 sink_(GetEmit15(index, (op >> 2) + 0)); 1556 sink_(GetEmit15(index, (op >> 2) + 1)); 1557 break; 1558 } 1559 case 2: { 1560 sink_(GetEmit15(index, (op >> 2) + 0)); 1561 break; 1562 } 1563 } 1564 return; 1565 } 1566 case 11: { 1567 const auto index = buffer_ & 2047; 1568 const auto op = GetOp16(index); 1569 switch (op & 3) { 1570 case 0: { 1571 ok_ = false; 1572 break; 1573 } 1574 case 1: { 1575 sink_(GetEmit16(index, (op >> 2) + 0)); 1576 sink_(GetEmit16(index, (op >> 2) + 1)); 1577 break; 1578 } 1579 case 2: { 1580 sink_(GetEmit16(index, (op >> 2) + 0)); 1581 break; 1582 } 1583 } 1584 return; 1585 } 1586 case 12: { 1587 const auto index = buffer_ & 4095; 1588 const auto op = GetOp17(index); 1589 switch (op & 3) { 1590 case 0: { 1591 ok_ = false; 1592 break; 1593 } 1594 case 1: { 1595 sink_(GetEmit17(index, (op >> 2) + 0)); 1596 sink_(GetEmit17(index, (op >> 2) + 1)); 1597 break; 1598 } 1599 case 2: { 1600 sink_(GetEmit17(index, (op >> 2) + 0)); 1601 break; 1602 } 1603 } 1604 return; 1605 } 1606 case 13: { 1607 const auto index = buffer_ & 8191; 1608 const auto op = GetOp18(index); 1609 switch (op & 7) { 1610 case 0: { 1611 sink_(GetEmit18(index, (op >> 3) + 0)); 1612 sink_(GetEmit18(index, (op >> 3) + 1)); 1613 sink_(GetEmit18(index, (op >> 3) + 2)); 1614 break; 1615 } 1616 case 1: { 1617 ok_ = false; 1618 break; 1619 } 1620 case 2: { 1621 sink_(GetEmit18(index, (op >> 3) + 0)); 1622 sink_(GetEmit18(index, (op >> 3) + 1)); 1623 break; 1624 } 1625 case 3: { 1626 sink_(GetEmit18(index, (op >> 3) + 0)); 1627 break; 1628 } 1629 } 1630 return; 1631 } 1632 case 14: { 1633 const auto index = buffer_ & 16383; 1634 const auto op = GetOp19(index); 1635 switch (op & 7) { 1636 case 0: { 1637 ok_ = false; 1638 break; 1639 } 1640 case 1: { 1641 sink_(GetEmit19(index, (op >> 3) + 0)); 1642 sink_(GetEmit19(index, (op >> 3) + 1)); 1643 sink_(GetEmit19(index, (op >> 3) + 2)); 1644 break; 1645 } 1646 case 2: { 1647 sink_(GetEmit19(index, (op >> 3) + 0)); 1648 sink_(GetEmit19(index, (op >> 3) + 1)); 1649 break; 1650 } 1651 case 3: { 1652 sink_(GetEmit19(index, (op >> 3) + 0)); 1653 break; 1654 } 1655 } 1656 return; 1657 } 1658 case 15: { 1659 const auto index = buffer_ & 32767; 1660 const auto op = GetOp20(index); 1661 switch (op & 7) { 1662 case 0: { 1663 ok_ = false; 1664 break; 1665 } 1666 case 1: { 1667 sink_(GetEmit20(index, (op >> 3) + 0)); 1668 sink_(GetEmit20(index, (op >> 3) + 1)); 1669 sink_(GetEmit20(index, (op >> 3) + 2)); 1670 break; 1671 } 1672 case 2: { 1673 sink_(GetEmit20(index, (op >> 3) + 0)); 1674 sink_(GetEmit20(index, (op >> 3) + 1)); 1675 break; 1676 } 1677 case 3: { 1678 sink_(GetEmit20(index, (op >> 3) + 0)); 1679 break; 1680 } 1681 } 1682 return; 1683 } 1684 case 0: { 1685 return; 1686 } 1687 } 1688 } DecodeStep4()1689 void DecodeStep4() { 1690 if (!RefillTo1()) { 1691 Done5(); 1692 return; 1693 } 1694 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1695 const auto op = GetOp21(index); 1696 const int consumed = op & 1; 1697 buffer_len_ -= consumed; 1698 const auto emit_ofs = op >> 1; 1699 sink_(GetEmit21(index, emit_ofs + 0)); 1700 } Done5()1701 void Done5() { 1702 done_ = true; 1703 ok_ = false; 1704 } DecodeStep5()1705 void DecodeStep5() { 1706 if (!RefillTo1()) { 1707 Done6(); 1708 return; 1709 } 1710 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1711 const auto op = GetOp22(index); 1712 const int consumed = op & 1; 1713 buffer_len_ -= consumed; 1714 const auto emit_ofs = op >> 1; 1715 sink_(GetEmit22(index, emit_ofs + 0)); 1716 } Done6()1717 void Done6() { 1718 done_ = true; 1719 ok_ = false; 1720 } DecodeStep6()1721 void DecodeStep6() { 1722 if (!RefillTo1()) { 1723 Done7(); 1724 return; 1725 } 1726 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1727 const auto op = GetOp23(index); 1728 const int consumed = op & 1; 1729 buffer_len_ -= consumed; 1730 const auto emit_ofs = op >> 1; 1731 sink_(GetEmit23(index, emit_ofs + 0)); 1732 } Done7()1733 void Done7() { 1734 done_ = true; 1735 ok_ = false; 1736 } DecodeStep7()1737 void DecodeStep7() { 1738 if (!RefillTo1()) { 1739 Done8(); 1740 return; 1741 } 1742 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1743 const auto op = GetOp24(index); 1744 const int consumed = op & 1; 1745 buffer_len_ -= consumed; 1746 const auto emit_ofs = op >> 1; 1747 sink_(GetEmit24(index, emit_ofs + 0)); 1748 } Done8()1749 void Done8() { 1750 done_ = true; 1751 ok_ = false; 1752 } DecodeStep8()1753 void DecodeStep8() { 1754 if (!RefillTo1()) { 1755 Done9(); 1756 return; 1757 } 1758 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1759 const auto op = GetOp25(index); 1760 const int consumed = op & 1; 1761 buffer_len_ -= consumed; 1762 const auto emit_ofs = op >> 1; 1763 sink_(GetEmit25(index, emit_ofs + 0)); 1764 } Done9()1765 void Done9() { 1766 done_ = true; 1767 ok_ = false; 1768 } DecodeStep9()1769 void DecodeStep9() { 1770 if (!RefillTo1()) { 1771 Done10(); 1772 return; 1773 } 1774 const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1; 1775 const auto op = GetOp26(index); 1776 const int consumed = op & 1; 1777 buffer_len_ -= consumed; 1778 const auto emit_ofs = op >> 1; 1779 sink_(GetEmit26(index, emit_ofs + 0)); 1780 } Done10()1781 void Done10() { 1782 done_ = true; 1783 ok_ = false; 1784 } DecodeStep10()1785 void DecodeStep10() { 1786 if (!RefillTo2()) { 1787 Done11(); 1788 return; 1789 } 1790 const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3; 1791 const auto op = GetOp27(index); 1792 const int consumed = op & 3; 1793 buffer_len_ -= consumed; 1794 const auto emit_ofs = op >> 2; 1795 sink_(GetEmit27(index, emit_ofs + 0)); 1796 } RefillTo2()1797 bool RefillTo2() { 1798 switch (buffer_len_) { 1799 case 0: { 1800 return Read1to8Bytes(); 1801 } 1802 case 1: { 1803 return Read1to7Bytes(); 1804 } 1805 } 1806 return true; 1807 } Done11()1808 void Done11() { 1809 done_ = true; 1810 switch (buffer_len_) { 1811 case 1: 1812 case 0: { 1813 ok_ = false; 1814 return; 1815 } 1816 } 1817 } DecodeStep11()1818 void DecodeStep11() { 1819 if (!RefillTo3()) { 1820 Done12(); 1821 return; 1822 } 1823 const auto index = (buffer_ >> (buffer_len_ - 3)) & 0x7; 1824 const auto op = GetOp28(index); 1825 const int consumed = op & 3; 1826 buffer_len_ -= consumed; 1827 const auto emit_ofs = op >> 2; 1828 sink_(GetEmit28(index, emit_ofs + 0)); 1829 } RefillTo3()1830 bool RefillTo3() { 1831 switch (buffer_len_) { 1832 case 0: { 1833 return Read1to8Bytes(); 1834 } 1835 case 1: 1836 case 2: { 1837 return Read1to7Bytes(); 1838 } 1839 } 1840 return true; 1841 } Done12()1842 void Done12() { 1843 done_ = true; 1844 switch (buffer_len_) { 1845 case 1: 1846 case 2: 1847 case 0: { 1848 ok_ = false; 1849 return; 1850 } 1851 } 1852 } DecodeStep12()1853 void DecodeStep12() { 1854 if (!RefillTo4()) { 1855 Done13(); 1856 return; 1857 } 1858 const auto index = (buffer_ >> (buffer_len_ - 4)) & 0xf; 1859 const auto op = GetOp29(index); 1860 const int consumed = op & 7; 1861 buffer_len_ -= consumed; 1862 const auto emit_ofs = op >> 3; 1863 sink_(GetEmit29(index, emit_ofs + 0)); 1864 } RefillTo4()1865 bool RefillTo4() { 1866 switch (buffer_len_) { 1867 case 0: { 1868 return Read1to8Bytes(); 1869 } 1870 case 1: 1871 case 2: 1872 case 3: { 1873 return Read1to7Bytes(); 1874 } 1875 } 1876 return true; 1877 } Done13()1878 void Done13() { 1879 done_ = true; 1880 switch (buffer_len_) { 1881 case 1: 1882 case 2: 1883 case 3: 1884 case 0: { 1885 ok_ = false; 1886 return; 1887 } 1888 } 1889 } DecodeStep13()1890 void DecodeStep13() { 1891 if (!RefillTo7()) { 1892 Done14(); 1893 return; 1894 } 1895 const auto index = (buffer_ >> (buffer_len_ - 7)) & 0x7f; 1896 const auto op = GetOp30(index); 1897 const int consumed = op & 7; 1898 buffer_len_ -= consumed; 1899 const auto emit_ofs = op >> 4; 1900 switch ((op >> 3) & 1) { 1901 case 0: { 1902 sink_(GetEmit30(index, emit_ofs + 0)); 1903 break; 1904 } 1905 case 1: { 1906 begin_ = end_; 1907 buffer_len_ = 0; 1908 break; 1909 } 1910 } 1911 } Done14()1912 void Done14() { 1913 done_ = true; 1914 switch (buffer_len_) { 1915 case 1: 1916 case 2: 1917 case 3: { 1918 ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1; 1919 return; 1920 } 1921 case 4: { 1922 const auto index = buffer_ & 15; 1923 const auto op = GetOp31(index); 1924 switch (op & 3) { 1925 case 0: { 1926 sink_(GetEmit31(index, (op >> 2) + 0)); 1927 break; 1928 } 1929 case 1: { 1930 ok_ = false; 1931 break; 1932 } 1933 } 1934 return; 1935 } 1936 case 5: { 1937 const auto index = buffer_ & 31; 1938 const auto op = GetOp32(index); 1939 switch (op & 3) { 1940 case 0: { 1941 ok_ = false; 1942 break; 1943 } 1944 case 1: { 1945 sink_(GetEmit32(index, (op >> 2) + 0)); 1946 break; 1947 } 1948 } 1949 return; 1950 } 1951 case 6: { 1952 const auto index = buffer_ & 63; 1953 const auto op = GetOp33(index); 1954 switch (op & 3) { 1955 case 0: { 1956 ok_ = false; 1957 break; 1958 } 1959 case 1: { 1960 sink_(GetEmit33(index, (op >> 2) + 0)); 1961 break; 1962 } 1963 } 1964 return; 1965 } 1966 case 0: { 1967 return; 1968 } 1969 } 1970 } DecodeStep14()1971 void DecodeStep14() { 1972 if (!RefillTo4()) { 1973 Done15(); 1974 return; 1975 } 1976 const auto index = (buffer_ >> (buffer_len_ - 4)) & 0xf; 1977 const auto op = GetOp34(index); 1978 const int consumed = op & 7; 1979 buffer_len_ -= consumed; 1980 const auto emit_ofs = op >> 3; 1981 sink_(GetEmit34(index, emit_ofs + 0)); 1982 } Done15()1983 void Done15() { 1984 done_ = true; 1985 switch (buffer_len_) { 1986 case 1: 1987 case 2: 1988 case 0: { 1989 ok_ = false; 1990 return; 1991 } 1992 case 3: { 1993 const auto index = buffer_ & 7; 1994 const auto op = GetOp35(index); 1995 switch (op & 1) { 1996 case 0: { 1997 sink_(GetEmit35(index, (op >> 1) + 0)); 1998 break; 1999 } 2000 case 1: { 2001 ok_ = false; 2002 break; 2003 } 2004 } 2005 return; 2006 } 2007 } 2008 } 2009 F sink_; 2010 const uint8_t* begin_; 2011 const uint8_t* const end_; 2012 uint64_t buffer_ = 0; 2013 int buffer_len_ = 0; 2014 bool ok_ = true; 2015 bool done_ = false; 2016 }; 2017 } // namespace geometry_7_16_7 2018 } // namespace grpc_core 2019 #endif // GRPC_TEST_CPP_MICROBENCHMARKS_HUFFMAN_GEOMETRIES_DECODE_HUFF_7_16_7_H 2020