modernc.org/z@v1.7.4/lib/z_freebsd_amd64.go (about) 1 // Code generated by 'ccgo -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -o lib/z_freebsd_amd64.go -pkgname z -trace-translation-units /tmp/go-generate-3340550282/cdb.json libz.a', DO NOT EDIT. 2 3 package z 4 5 import ( 6 "math" 7 "reflect" 8 "sync/atomic" 9 "unsafe" 10 11 "modernc.org/libc" 12 "modernc.org/libc/sys/types" 13 ) 14 15 var _ = math.Pi 16 var _ reflect.Kind 17 var _ atomic.Value 18 var _ unsafe.Pointer 19 var _ types.Size_t 20 21 const ( 22 ARG_MAX = 524288 23 BASE = 65521 24 BC_BASE_MAX = 99 25 BC_DIM_MAX = 2048 26 BC_SCALE_MAX = 99 27 BC_STRING_MAX = 1000 28 BIG_ENDIAN = 4321 29 BYTE_ORDER = 1234 30 CHARCLASS_NAME_MAX = 14 31 CHAR_BIT = 8 32 CHAR_MAX = 127 33 CHAR_MIN = -128 34 CHILD_MAX = 40 35 COLL_WEIGHTS_MAX = 10 36 DEF_MEM_LEVEL = 8 37 DEF_WBITS = 15 38 DYN_TREES = 2 39 EXIT_FAILURE = 1 40 EXIT_SUCCESS = 0 41 EXPR_NEST_MAX = 32 42 FAR = 0 43 FD_SETSIZE = 1024 44 F_LOCK = 1 45 F_OK = 0 46 F_TEST = 3 47 F_TLOCK = 2 48 F_ULOCK = 0 49 GID_MAX = 4294967295 50 HAVE_HIDDEN = 1 51 HAVE_MEMCPY = 0 52 INT_MAX = 2147483647 53 INT_MIN = -2147483648 54 IOV_MAX = 1024 55 LINE_MAX = 2048 56 LITTLE_ENDIAN = 1234 57 LLONG_MAX = 9223372036854775807 58 LLONG_MIN = -9223372036854775808 59 LONG_BIT = 64 60 LONG_MAX = 9223372036854775807 61 LONG_MIN = -9223372036854775808 62 L_INCR = 1 63 L_SET = 0 64 L_XTND = 2 65 MAX_CANON = 255 66 MAX_INPUT = 255 67 MAX_MATCH = 258 68 MAX_MEM_LEVEL = 9 69 MAX_WBITS = 15 70 MB_LEN_MAX = 6 71 MIN_MATCH = 3 72 MQ_PRIO_MAX = 64 73 NAME_MAX = 255 74 NGROUPS_MAX = 1023 75 NL_ARGMAX = 4096 76 NL_LANGMAX = 31 77 NL_MSGMAX = 32767 78 NL_NMAX = 1 79 NL_SETMAX = 255 80 NL_TEXTMAX = 2048 81 NMAX = 5552 82 OFF_MAX = 9223372036854775807 83 OFF_MIN = -9223372036854775808 84 OPEN_MAX = 64 85 OS_CODE = 3 86 PASS_MAX = 128 87 PATH_MAX = 1024 88 PDP_ENDIAN = 3412 89 PIPE_BUF = 512 90 PRESET_DICT = 0x20 91 QUAD_MAX = 9223372036854775807 92 QUAD_MIN = -9223372036854775808 93 RAND_MAX = 0x7fffffff 94 RE_DUP_MAX = 255 95 RFCENVG = 2048 96 RFCFDG = 4096 97 RFCNAMEG = 1024 98 RFENVG = 2 99 RFFDG = 4 100 RFFLAGS = 2416930932 101 RFHIGHPID = 262144 102 RFKERNELONLY = 268828672 103 RFLINUXTHPN = 65536 104 RFMEM = 32 105 RFNAMEG = 1 106 RFNOTEG = 8 107 RFNOWAIT = 64 108 RFPPWAIT = 2147483648 109 RFPROC = 16 110 RFPROCDESC = 268435456 111 RFSIGSHARE = 16384 112 RFSPAWN = 2147483648 113 RFSTOPPED = 131072 114 RFTHREAD = 8192 115 RFTSIGMASK = 0xFF 116 RFTSIGSHIFT = 20 117 RFTSIGZMB = 524288 118 R_OK = 0x04 119 SCHAR_MAX = 127 120 SCHAR_MIN = -128 121 SEEK_CUR = 1 122 SEEK_DATA = 3 123 SEEK_END = 2 124 SEEK_HOLE = 4 125 SEEK_SET = 0 126 SHRT_MAX = 32767 127 SHRT_MIN = -32768 128 SIZE_T_MAX = 18446744073709551615 129 SSIZE_MAX = 9223372036854775807 130 STATIC_TREES = 1 131 STDC = 0 132 STDC99 = 0 133 STDERR_FILENO = 2 134 STDIN_FILENO = 0 135 STDOUT_FILENO = 1 136 STORED_BLOCK = 0 137 UCHAR_MAX = 255 138 UID_MAX = 4294967295 139 UINT_MAX = 4294967295 140 ULLONG_MAX = 18446744073709551615 141 ULONG_MAX = 18446744073709551615 142 UQUAD_MAX = 18446744073709551615 143 USHRT_MAX = 65535 144 WORD_BIT = 32 145 W_OK = 0x02 146 X_OK = 0x01 147 ZCONF_H = 0 148 ZEXPORT = 0 149 ZEXPORTVA = 0 150 ZLIB_H = 0 151 ZLIB_VERNUM = 0x12b0 152 ZLIB_VERSION = "1.2.11" 153 ZLIB_VER_MAJOR = 1 154 ZLIB_VER_MINOR = 2 155 ZLIB_VER_REVISION = 11 156 ZLIB_VER_SUBREVISION = 0 157 ZUTIL_H = 0 158 Z_ASCII = 1 159 Z_BEST_COMPRESSION = 9 160 Z_BEST_SPEED = 1 161 Z_BINARY = 0 162 Z_BLOCK = 5 163 Z_BUF_ERROR = -5 164 Z_DATA_ERROR = -3 165 Z_DEFAULT_COMPRESSION = -1 166 Z_DEFAULT_STRATEGY = 0 167 Z_DEFLATED = 8 168 Z_ERRNO = -1 169 Z_FILTERED = 1 170 Z_FINISH = 4 171 Z_FIXED = 4 172 Z_FULL_FLUSH = 3 173 Z_HAVE_STDARG_H = 0 174 Z_HAVE_UNISTD_H = 0 175 Z_HUFFMAN_ONLY = 2 176 Z_MEM_ERROR = -4 177 Z_NEED_DICT = 2 178 Z_NO_COMPRESSION = 0 179 Z_NO_FLUSH = 0 180 Z_NULL = 0 181 Z_OK = 0 182 Z_PARTIAL_FLUSH = 1 183 Z_RLE = 3 184 Z_STREAM_END = 1 185 Z_STREAM_ERROR = -2 186 Z_SYNC_FLUSH = 2 187 Z_TEXT = 1 188 Z_TREES = 6 189 Z_UNKNOWN = 2 190 Z_VERSION_ERROR = -6 191 X_ACCMODE_T_DECLARED = 0 192 X_BIG_ENDIAN = 4321 193 X_BLKCNT_T_DECLARED = 0 194 X_BLKSIZE_T_DECLARED = 0 195 X_BYTE_ORDER = 1234 196 X_CAP_IOCTL_T_DECLARED = 0 197 X_CAP_RIGHTS_T_DECLARED = 0 198 X_CLOCKID_T_DECLARED = 0 199 X_CLOCK_T_DECLARED = 0 200 X_CS_PATH = 1 201 X_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 2 202 X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 3 203 X_CS_POSIX_V6_ILP32_OFF32_LIBS = 4 204 X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 5 205 X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 6 206 X_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 7 207 X_CS_POSIX_V6_LP64_OFF64_CFLAGS = 8 208 X_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 9 209 X_CS_POSIX_V6_LP64_OFF64_LIBS = 10 210 X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 11 211 X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 12 212 X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 13 213 X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS = 14 214 X_DEV_T_DECLARED = 0 215 X_ERRNO_T_DEFINED = 0 216 X_FFLAGS_T_DECLARED = 0 217 X_FILE_OFFSET_BITS = 64 218 X_FSBLKCNT_T_DECLARED = 0 219 X_FTRUNCATE_DECLARED = 0 220 X_GCC_MAX_ALIGN_T = 0 221 X_GETOPT_DECLARED = 0 222 X_GID_T_DECLARED = 0 223 X_ID_T_DECLARED = 0 224 X_INO_T_DECLARED = 0 225 X_INT16_T_DECLARED = 0 226 X_INT32_T_DECLARED = 0 227 X_INT64_T_DECLARED = 0 228 X_INT8_T_DECLARED = 0 229 X_INTMAX_T_DECLARED = 0 230 X_INTPTR_T_DECLARED = 0 231 X_IN_ADDR_T_DECLARED = 0 232 X_IN_PORT_T_DECLARED = 0 233 X_KEY_T_DECLARED = 0 234 X_LARGEFILE64_SOURCE = 1 235 X_LIMITS_H_ = 0 236 X_LITTLE_ENDIAN = 1234 237 X_LOCALE_T_DEFINED = 0 238 X_LP64 = 1 239 X_LSEEK_DECLARED = 0 240 X_LWPID_T_DECLARED = 0 241 X_MACHINE_ENDIAN_H_ = 0 242 X_MACHINE_STDARG_H_ = 0 243 X_MACHINE__LIMITS_H_ = 0 244 X_MACHINE__TYPES_H_ = 0 245 X_MKDTEMP_DECLARED = 0 246 X_MKNOD_DECLARED = 0 247 X_MKSTEMP_DECLARED = 0 248 X_MKTEMP_DECLARED = 0 249 X_MMAP_DECLARED = 0 250 X_MODE_T_DECLARED = 0 251 X_MQD_T_DECLARED = 0 252 X_NLINK_T_DECLARED = 0 253 X_Nonnull = 0 254 X_Null_unspecified = 0 255 X_Nullable = 0 256 X_OFF64_T_DECLARED = 0 257 X_OFF_T_DECLARED = 0 258 X_OPTRESET_DECLARED = 0 259 X_PC_ACL_EXTENDED = 59 260 X_PC_ACL_NFS4 = 64 261 X_PC_ACL_PATH_MAX = 60 262 X_PC_ALLOC_SIZE_MIN = 10 263 X_PC_ASYNC_IO = 53 264 X_PC_CAP_PRESENT = 61 265 X_PC_CHOWN_RESTRICTED = 7 266 X_PC_FILESIZEBITS = 12 267 X_PC_INF_PRESENT = 62 268 X_PC_LINK_MAX = 1 269 X_PC_MAC_PRESENT = 63 270 X_PC_MAX_CANON = 2 271 X_PC_MAX_INPUT = 3 272 X_PC_MIN_HOLE_SIZE = 21 273 X_PC_NAME_MAX = 4 274 X_PC_NO_TRUNC = 8 275 X_PC_PATH_MAX = 5 276 X_PC_PIPE_BUF = 6 277 X_PC_PRIO_IO = 54 278 X_PC_REC_INCR_XFER_SIZE = 14 279 X_PC_REC_MAX_XFER_SIZE = 15 280 X_PC_REC_MIN_XFER_SIZE = 16 281 X_PC_REC_XFER_ALIGN = 17 282 X_PC_SYMLINK_MAX = 18 283 X_PC_SYNC_IO = 55 284 X_PC_VDISABLE = 9 285 X_PDP_ENDIAN = 3412 286 X_PID_T_DECLARED = 0 287 X_POSIX2_BC_BASE_MAX = 99 288 X_POSIX2_BC_DIM_MAX = 2048 289 X_POSIX2_BC_SCALE_MAX = 99 290 X_POSIX2_BC_STRING_MAX = 1000 291 X_POSIX2_CHARCLASS_NAME_MAX = 14 292 X_POSIX2_CHAR_TERM = 1 293 X_POSIX2_COLL_WEIGHTS_MAX = 2 294 X_POSIX2_C_BIND = 200112 295 X_POSIX2_C_DEV = -1 296 X_POSIX2_EQUIV_CLASS_MAX = 2 297 X_POSIX2_EXPR_NEST_MAX = 32 298 X_POSIX2_FORT_DEV = -1 299 X_POSIX2_FORT_RUN = 200112 300 X_POSIX2_LINE_MAX = 2048 301 X_POSIX2_LOCALEDEF = -1 302 X_POSIX2_PBS = -1 303 X_POSIX2_PBS_ACCOUNTING = -1 304 X_POSIX2_PBS_CHECKPOINT = -1 305 X_POSIX2_PBS_LOCATE = -1 306 X_POSIX2_PBS_MESSAGE = -1 307 X_POSIX2_PBS_TRACK = -1 308 X_POSIX2_RE_DUP_MAX = 255 309 X_POSIX2_SW_DEV = -1 310 X_POSIX2_UPE = 200112 311 X_POSIX2_VERSION = 199212 312 X_POSIX_ADVISORY_INFO = 200112 313 X_POSIX_AIO_LISTIO_MAX = 2 314 X_POSIX_AIO_MAX = 1 315 X_POSIX_ARG_MAX = 4096 316 X_POSIX_ASYNCHRONOUS_IO = 200112 317 X_POSIX_BARRIERS = 200112 318 X_POSIX_CHILD_MAX = 25 319 X_POSIX_CHOWN_RESTRICTED = 1 320 X_POSIX_CLOCKRES_MIN = 20000000 321 X_POSIX_CLOCK_SELECTION = -1 322 X_POSIX_CPUTIME = 200112 323 X_POSIX_DELAYTIMER_MAX = 32 324 X_POSIX_FSYNC = 200112 325 X_POSIX_HOST_NAME_MAX = 255 326 X_POSIX_IPV6 = 0 327 X_POSIX_JOB_CONTROL = 1 328 X_POSIX_LINK_MAX = 8 329 X_POSIX_LOGIN_NAME_MAX = 9 330 X_POSIX_MAPPED_FILES = 200112 331 X_POSIX_MAX_CANON = 255 332 X_POSIX_MAX_INPUT = 255 333 X_POSIX_MEMLOCK = -1 334 X_POSIX_MEMLOCK_RANGE = 200112 335 X_POSIX_MEMORY_PROTECTION = 200112 336 X_POSIX_MESSAGE_PASSING = 200112 337 X_POSIX_MONOTONIC_CLOCK = 200112 338 X_POSIX_MQ_OPEN_MAX = 8 339 X_POSIX_MQ_PRIO_MAX = 32 340 X_POSIX_NAME_MAX = 14 341 X_POSIX_NGROUPS_MAX = 8 342 X_POSIX_NO_TRUNC = 1 343 X_POSIX_OPEN_MAX = 20 344 X_POSIX_PATH_MAX = 256 345 X_POSIX_PIPE_BUF = 512 346 X_POSIX_PRIORITIZED_IO = -1 347 X_POSIX_PRIORITY_SCHEDULING = 0 348 X_POSIX_RAW_SOCKETS = 200112 349 X_POSIX_READER_WRITER_LOCKS = 200112 350 X_POSIX_REALTIME_SIGNALS = 200112 351 X_POSIX_REGEXP = 1 352 X_POSIX_RE_DUP_MAX = 255 353 X_POSIX_RTSIG_MAX = 8 354 X_POSIX_SEMAPHORES = 200112 355 X_POSIX_SEM_NSEMS_MAX = 256 356 X_POSIX_SEM_VALUE_MAX = 32767 357 X_POSIX_SHARED_MEMORY_OBJECTS = 200112 358 X_POSIX_SHELL = 1 359 X_POSIX_SIGQUEUE_MAX = 32 360 X_POSIX_SPAWN = 200112 361 X_POSIX_SPIN_LOCKS = 200112 362 X_POSIX_SPORADIC_SERVER = -1 363 X_POSIX_SSIZE_MAX = 32767 364 X_POSIX_SS_REPL_MAX = 4 365 X_POSIX_STREAM_MAX = 8 366 X_POSIX_SYMLINK_MAX = 255 367 X_POSIX_SYMLOOP_MAX = 8 368 X_POSIX_SYNCHRONIZED_IO = -1 369 X_POSIX_THREADS = 200112 370 X_POSIX_THREAD_ATTR_STACKADDR = 200112 371 X_POSIX_THREAD_ATTR_STACKSIZE = 200112 372 X_POSIX_THREAD_CPUTIME = 200112 373 X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4 374 X_POSIX_THREAD_KEYS_MAX = 128 375 X_POSIX_THREAD_PRIORITY_SCHEDULING = 200112 376 X_POSIX_THREAD_PRIO_INHERIT = 200112 377 X_POSIX_THREAD_PRIO_PROTECT = 200112 378 X_POSIX_THREAD_PROCESS_SHARED = 200112 379 X_POSIX_THREAD_SAFE_FUNCTIONS = -1 380 X_POSIX_THREAD_SPORADIC_SERVER = -1 381 X_POSIX_THREAD_THREADS_MAX = 64 382 X_POSIX_TIMEOUTS = 200112 383 X_POSIX_TIMERS = 200112 384 X_POSIX_TIMER_MAX = 32 385 X_POSIX_TRACE = -1 386 X_POSIX_TRACE_EVENT_FILTER = -1 387 X_POSIX_TRACE_EVENT_NAME_MAX = 30 388 X_POSIX_TRACE_INHERIT = -1 389 X_POSIX_TRACE_LOG = -1 390 X_POSIX_TRACE_NAME_MAX = 8 391 X_POSIX_TRACE_SYS_MAX = 8 392 X_POSIX_TRACE_USER_EVENT_MAX = 32 393 X_POSIX_TTY_NAME_MAX = 9 394 X_POSIX_TYPED_MEMORY_OBJECTS = -1 395 X_POSIX_TZNAME_MAX = 6 396 X_POSIX_VDISABLE = 0xff 397 X_POSIX_VERSION = 200112 398 X_PTHREAD_T_DECLARED = 0 399 X_PTRDIFF_T_DECLARED = 0 400 X_QUAD_HIGHWORD = 1 401 X_QUAD_LOWWORD = 0 402 X_RLIM_T_DECLARED = 0 403 X_RSIZE_T_DEFINED = 0 404 X_RUNE_T_DECLARED = 0 405 X_SC_2_CHAR_TERM = 20 406 X_SC_2_C_BIND = 18 407 X_SC_2_C_DEV = 19 408 X_SC_2_FORT_DEV = 21 409 X_SC_2_FORT_RUN = 22 410 X_SC_2_LOCALEDEF = 23 411 X_SC_2_PBS = 59 412 X_SC_2_PBS_ACCOUNTING = 60 413 X_SC_2_PBS_CHECKPOINT = 61 414 X_SC_2_PBS_LOCATE = 62 415 X_SC_2_PBS_MESSAGE = 63 416 X_SC_2_PBS_TRACK = 64 417 X_SC_2_SW_DEV = 24 418 X_SC_2_UPE = 25 419 X_SC_2_VERSION = 17 420 X_SC_ADVISORY_INFO = 65 421 X_SC_AIO_LISTIO_MAX = 42 422 X_SC_AIO_MAX = 43 423 X_SC_AIO_PRIO_DELTA_MAX = 44 424 X_SC_ARG_MAX = 1 425 X_SC_ASYNCHRONOUS_IO = 28 426 X_SC_ATEXIT_MAX = 107 427 X_SC_BARRIERS = 66 428 X_SC_BC_BASE_MAX = 9 429 X_SC_BC_DIM_MAX = 10 430 X_SC_BC_SCALE_MAX = 11 431 X_SC_BC_STRING_MAX = 12 432 X_SC_CHILD_MAX = 2 433 X_SC_CLK_TCK = 3 434 X_SC_CLOCK_SELECTION = 67 435 X_SC_COLL_WEIGHTS_MAX = 13 436 X_SC_CPUSET_SIZE = 122 437 X_SC_CPUTIME = 68 438 X_SC_DELAYTIMER_MAX = 45 439 X_SC_EXPR_NEST_MAX = 14 440 X_SC_FILE_LOCKING = 69 441 X_SC_FSYNC = 38 442 X_SC_GETGR_R_SIZE_MAX = 70 443 X_SC_GETPW_R_SIZE_MAX = 71 444 X_SC_HOST_NAME_MAX = 72 445 X_SC_IOV_MAX = 56 446 X_SC_IPV6 = 118 447 X_SC_JOB_CONTROL = 6 448 X_SC_LINE_MAX = 15 449 X_SC_LOGIN_NAME_MAX = 73 450 X_SC_MAPPED_FILES = 29 451 X_SC_MEMLOCK = 30 452 X_SC_MEMLOCK_RANGE = 31 453 X_SC_MEMORY_PROTECTION = 32 454 X_SC_MESSAGE_PASSING = 33 455 X_SC_MONOTONIC_CLOCK = 74 456 X_SC_MQ_OPEN_MAX = 46 457 X_SC_MQ_PRIO_MAX = 75 458 X_SC_NGROUPS_MAX = 4 459 X_SC_NPROCESSORS_CONF = 57 460 X_SC_NPROCESSORS_ONLN = 58 461 X_SC_OPEN_MAX = 5 462 X_SC_PAGESIZE = 47 463 X_SC_PAGE_SIZE = 47 464 X_SC_PHYS_PAGES = 121 465 X_SC_PRIORITIZED_IO = 34 466 X_SC_PRIORITY_SCHEDULING = 35 467 X_SC_RAW_SOCKETS = 119 468 X_SC_READER_WRITER_LOCKS = 76 469 X_SC_REALTIME_SIGNALS = 36 470 X_SC_REGEXP = 77 471 X_SC_RE_DUP_MAX = 16 472 X_SC_RTSIG_MAX = 48 473 X_SC_SAVED_IDS = 7 474 X_SC_SEMAPHORES = 37 475 X_SC_SEM_NSEMS_MAX = 49 476 X_SC_SEM_VALUE_MAX = 50 477 X_SC_SHARED_MEMORY_OBJECTS = 39 478 X_SC_SHELL = 78 479 X_SC_SIGQUEUE_MAX = 51 480 X_SC_SPAWN = 79 481 X_SC_SPIN_LOCKS = 80 482 X_SC_SPORADIC_SERVER = 81 483 X_SC_STREAM_MAX = 26 484 X_SC_SYMLOOP_MAX = 120 485 X_SC_SYNCHRONIZED_IO = 40 486 X_SC_THREADS = 96 487 X_SC_THREAD_ATTR_STACKADDR = 82 488 X_SC_THREAD_ATTR_STACKSIZE = 83 489 X_SC_THREAD_CPUTIME = 84 490 X_SC_THREAD_DESTRUCTOR_ITERATIONS = 85 491 X_SC_THREAD_KEYS_MAX = 86 492 X_SC_THREAD_PRIORITY_SCHEDULING = 89 493 X_SC_THREAD_PRIO_INHERIT = 87 494 X_SC_THREAD_PRIO_PROTECT = 88 495 X_SC_THREAD_PROCESS_SHARED = 90 496 X_SC_THREAD_SAFE_FUNCTIONS = 91 497 X_SC_THREAD_SPORADIC_SERVER = 92 498 X_SC_THREAD_STACK_MIN = 93 499 X_SC_THREAD_THREADS_MAX = 94 500 X_SC_TIMEOUTS = 95 501 X_SC_TIMERS = 41 502 X_SC_TIMER_MAX = 52 503 X_SC_TRACE = 97 504 X_SC_TRACE_EVENT_FILTER = 98 505 X_SC_TRACE_INHERIT = 99 506 X_SC_TRACE_LOG = 100 507 X_SC_TTY_NAME_MAX = 101 508 X_SC_TYPED_MEMORY_OBJECTS = 102 509 X_SC_TZNAME_MAX = 27 510 X_SC_V6_ILP32_OFF32 = 103 511 X_SC_V6_ILP32_OFFBIG = 104 512 X_SC_V6_LP64_OFF64 = 105 513 X_SC_V6_LPBIG_OFFBIG = 106 514 X_SC_VERSION = 8 515 X_SC_XOPEN_CRYPT = 108 516 X_SC_XOPEN_ENH_I18N = 109 517 X_SC_XOPEN_LEGACY = 110 518 X_SC_XOPEN_REALTIME = 111 519 X_SC_XOPEN_REALTIME_THREADS = 112 520 X_SC_XOPEN_SHM = 113 521 X_SC_XOPEN_STREAMS = 114 522 X_SC_XOPEN_UNIX = 115 523 X_SC_XOPEN_VERSION = 116 524 X_SC_XOPEN_XCU_VERSION = 117 525 X_SELECT_DECLARED = 0 526 X_SIGSET_T_DECLARED = 0 527 X_SIG_MAXSIG = 128 528 X_SIG_WORDS = 4 529 X_SIZE_T_DECLARED = 0 530 X_SSIZE_T_DECLARED = 0 531 X_STDDEF_H_ = 0 532 X_STDLIB_H_ = 0 533 X_STRINGS_H_ = 0 534 X_STRING_H_ = 0 535 X_SUSECONDS_T_DECLARED = 0 536 X_SWAB_DECLARED = 0 537 X_SYS_CDEFS_H_ = 0 538 X_SYS_LIMITS_H_ = 0 539 X_SYS_SELECT_H_ = 0 540 X_SYS_SYSLIMITS_H_ = 0 541 X_SYS_TIMESPEC_H_ = 0 542 X_SYS_TYPES_H_ = 0 543 X_SYS_UNISTD_H_ = 0 544 X_SYS__PTHREADTYPES_H_ = 0 545 X_SYS__SIGSET_H_ = 0 546 X_SYS__STDARG_H_ = 0 547 X_SYS__STDINT_H_ = 0 548 X_SYS__TIMESPEC_H_ = 0 549 X_SYS__TIMEVAL_H_ = 0 550 X_SYS__TYPES_H_ = 0 551 X_TIMER_T_DECLARED = 0 552 X_TIME_T_DECLARED = 0 553 X_TRUNCATE_DECLARED = 0 554 X_UID_T_DECLARED = 0 555 X_UINT16_T_DECLARED = 0 556 X_UINT32_T_DECLARED = 0 557 X_UINT64_T_DECLARED = 0 558 X_UINT8_T_DECLARED = 0 559 X_UINTMAX_T_DECLARED = 0 560 X_UINTPTR_T_DECLARED = 0 561 X_UNISTD_H_ = 0 562 X_USECONDS_T_DECLARED = 0 563 X_V6_ILP32_OFF32 = -1 564 X_V6_ILP32_OFFBIG = 0 565 X_V6_LP64_OFF64 = 0 566 X_V6_LPBIG_OFFBIG = -1 567 X_VA_LIST_DECLARED = 0 568 X_WCHAR_T_DECLARED = 0 569 X_XLOCALE_STRING1_H = 0 570 X_XLOCALE_STRINGS1_H = 0 571 X_XOPEN_CRYPT = -1 572 X_XOPEN_ENH_I18N = -1 573 X_XOPEN_IOV_MAX = 16 574 X_XOPEN_LEGACY = -1 575 X_XOPEN_NAME_MAX = 255 576 X_XOPEN_PATH_MAX = 1024 577 X_XOPEN_REALTIME = -1 578 X_XOPEN_REALTIME_THREADS = -1 579 X_XOPEN_SHM = 1 580 X_XOPEN_STREAMS = -1 581 X_XOPEN_UNIX = -1 582 Unix = 1 583 Z_const = 0 584 BYFOUR = 0 585 GF2_DIM = 32 586 TBLS = 8 587 BL_CODES = 19 588 BUSY_STATE = 113 589 Buf_size = 16 590 COMMENT_STATE = 91 591 DEFLATE_H = 0 592 D_CODES = 30 593 EXTRA_STATE = 69 594 FINISH_STATE = 666 595 GZIP = 0 596 GZIP_STATE = 57 597 HCRC_STATE = 103 598 HEAP_SIZE = 573 599 INIT_STATE = 42 600 LENGTH_CODES = 29 601 LITERALS = 256 602 L_CODES = 286 603 MAX_BITS = 15 604 MAX_STORED = 65535 605 MIN_LOOKAHEAD = 262 606 NAME_STATE = 73 607 NIL = 0 608 TOO_FAR = 4096 609 WIN_INIT = 258 610 AT_EACCESS = 0x0100 611 AT_FDCWD = -100 612 AT_REMOVEDIR = 0x0800 613 AT_RESOLVE_BENEATH = 0x2000 614 AT_SYMLINK_FOLLOW = 0x0400 615 AT_SYMLINK_NOFOLLOW = 0x0200 616 BUFSIZ = 1024 617 COPY1 = 1 618 E2BIG = 7 619 EACCES = 13 620 EAGAIN = 35 621 EBADF = 9 622 EBADMSG = 89 623 EBUSY = 16 624 ECHILD = 10 625 EDEADLK = 11 626 EDOM = 33 627 EEXIST = 17 628 EFAULT = 14 629 EFBIG = 27 630 EINTR = 4 631 EINVAL = 22 632 EIO = 5 633 EISDIR = 21 634 EMFILE = 24 635 EMLINK = 31 636 EMULTIHOP = 90 637 ENAMETOOLONG = 63 638 ENFILE = 23 639 ENODEV = 19 640 ENOENT = 2 641 ENOEXEC = 8 642 ENOLCK = 77 643 ENOLINK = 91 644 ENOMEM = 12 645 ENOSPC = 28 646 ENOSYS = 78 647 ENOTDIR = 20 648 ENOTEMPTY = 66 649 ENOTTY = 25 650 ENXIO = 6 651 EOF = -1 652 EPERM = 1 653 EPIPE = 32 654 EPROTO = 92 655 ERANGE = 34 656 EROFS = 30 657 ESPIPE = 29 658 ESRCH = 3 659 EXDEV = 18 660 FAPPEND = 8 661 FASYNC = 64 662 FDSYNC = 16777216 663 FD_CLOEXEC = 1 664 FD_NONE = -200 665 FFSYNC = 128 666 FILENAME_MAX = 1024 667 FNDELAY = 4 668 FNONBLOCK = 4 669 FOPEN_MAX = 20 670 FRDAHEAD = 512 671 FREAD = 0x0001 672 FWRITE = 0x0002 673 F_ADD_SEALS = 19 674 F_CANCEL = 5 675 F_DUP2FD = 10 676 F_DUP2FD_CLOEXEC = 18 677 F_DUPFD = 0 678 F_DUPFD_CLOEXEC = 17 679 F_GETFD = 1 680 F_GETFL = 3 681 F_GETLK = 11 682 F_GETOWN = 5 683 F_GET_SEALS = 20 684 F_ISUNIONSTACK = 21 685 F_OGETLK = 7 686 F_OSETLK = 8 687 F_OSETLKW = 9 688 F_RDAHEAD = 16 689 F_RDLCK = 1 690 F_READAHEAD = 15 691 F_SEAL_GROW = 0x0004 692 F_SEAL_SEAL = 0x0001 693 F_SEAL_SHRINK = 0x0002 694 F_SEAL_WRITE = 0x0008 695 F_SETFD = 2 696 F_SETFL = 4 697 F_SETLK = 12 698 F_SETLKW = 13 699 F_SETLK_REMOTE = 14 700 F_SETOWN = 6 701 F_UNLCK = 2 702 F_UNLCKSYS = 4 703 F_WRLCK = 3 704 GZBUFSIZE = 8192 705 GZ_APPEND = 1 706 GZ_NONE = 0 707 GZ_READ = 7247 708 GZ_WRITE = 31153 709 HAVE_VSNPRINTF = 0 710 LOCK_EX = 0x02 711 LOCK_NB = 0x04 712 LOCK_SH = 0x01 713 LOCK_UN = 0x08 714 LOOK = 0 715 L_ctermid = 1024 716 L_cuserid = 17 717 L_tmpnam = 1024 718 O_ACCMODE = 0x0003 719 O_APPEND = 0x0008 720 O_ASYNC = 0x0040 721 O_CLOEXEC = 0x00100000 722 O_CREAT = 0x0200 723 O_DIRECT = 0x00010000 724 O_DIRECTORY = 0x00020000 725 O_DSYNC = 0x01000000 726 O_EXCL = 0x0800 727 O_EXEC = 0x00040000 728 O_EXLOCK = 0x0020 729 O_FSYNC = 0x0080 730 O_NDELAY = 4 731 O_NOCTTY = 0x8000 732 O_NOFOLLOW = 0x0100 733 O_NONBLOCK = 0x0004 734 O_RDONLY = 0x0000 735 O_RDWR = 0x0002 736 O_RESOLVE_BENEATH = 0x00800000 737 O_SEARCH = 262144 738 O_SHLOCK = 0x0010 739 O_SYNC = 0x0080 740 O_TRUNC = 0x0400 741 O_TTY_INIT = 0x00080000 742 O_VERIFY = 0x00200000 743 O_WRONLY = 0x0001 744 POSIX_FADV_DONTNEED = 4 745 POSIX_FADV_NOREUSE = 5 746 POSIX_FADV_NORMAL = 0 747 POSIX_FADV_RANDOM = 1 748 POSIX_FADV_SEQUENTIAL = 2 749 POSIX_FADV_WILLNEED = 3 750 P_tmpdir = "/tmp/" 751 TMP_MAX = 308915776 752 X_FSTDIO = 0 753 X_IOFBF = 0 754 X_IOLBF = 1 755 X_IONBF = 2 756 X_LARGEFILE_SOURCE = 1 757 X_POSIX_SOURCE = 0 758 X_STDFILE_DECLARED = 0 759 X_STDIO_H_ = 0 760 X_STDSTREAM_DECLARED = 0 761 X_SYS_ERRNO_H_ = 0 762 X_SYS_FCNTL_H_ = 0 763 ENOUGH = 1444 764 ENOUGH_DISTS = 592 765 ENOUGH_LENS = 852 766 GUNZIP = 0 767 MAXBITS = 15 768 DIST_CODE_LEN = 512 769 END_BLOCK = 256 770 MAX_BL_BITS = 7 771 REPZ_11_138 = 18 772 REPZ_3_10 = 17 773 REP_3_6 = 16 774 SMALLEST = 1 775 ) 776 777 // 778 // If you use the zlib library in a product, an acknowledgment is welcome 779 // in the documentation of your product. If for some reason you cannot 780 // include such an acknowledgment, I would appreciate that you keep this 781 // copyright string in the executable of your product. 782 // 783 784 // =========================================================================== 785 // Function prototypes. 786 const ( /* deflate.c:66:1: */ 787 Need_more = 0 // block not completed, need more input or more output 788 Block_done = 1 // block flush performed 789 Finish_started = 2 // finish started, need only more output at next deflate 790 Finish_done = 3 791 ) 792 793 // inflate.h -- internal inflate state definition 794 // Copyright (C) 1995-2016 Mark Adler 795 // For conditions of distribution and use, see copyright notice in zlib.h 796 797 // WARNING: this file should *not* be used by applications. It is 798 // part of the implementation of the compression library and is 799 // subject to change. Applications should only use zlib.h. 800 // 801 802 // define NO_GZIP when compiling if you want to disable gzip header and 803 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 804 // the crc code when it is not needed. For shared libraries, gzip decoding 805 // should be left enabled. 806 807 // Possible inflate modes between inflate() calls 808 const ( /* inflate.h:20:1: */ 809 HEAD = 16180 // i: waiting for magic header 810 FLAGS = 16181 // i: waiting for method and flags (gzip) 811 TIME = 16182 // i: waiting for modification time (gzip) 812 OS = 16183 // i: waiting for extra flags and operating system (gzip) 813 EXLEN = 16184 // i: waiting for extra length (gzip) 814 EXTRA = 16185 // i: waiting for extra bytes (gzip) 815 NAME = 16186 // i: waiting for end of file name (gzip) 816 COMMENT = 16187 // i: waiting for end of comment (gzip) 817 HCRC = 16188 // i: waiting for header crc (gzip) 818 DICTID = 16189 // i: waiting for dictionary check value 819 DICT = 16190 // waiting for inflateSetDictionary() call 820 TYPE = 16191 // i: waiting for type bits, including last-flag bit 821 TYPEDO = 16192 // i: same, but skip check to exit inflate on new block 822 STORED = 16193 // i: waiting for stored size (length and complement) 823 COPY_ = 16194 // i/o: same as COPY below, but only first time in 824 COPY = 16195 // i/o: waiting for input or output to copy stored block 825 TABLE = 16196 // i: waiting for dynamic block table lengths 826 LENLENS = 16197 // i: waiting for code length code lengths 827 CODELENS = 16198 // i: waiting for length/lit and distance code lengths 828 LEN_ = 16199 // i: same as LEN below, but only first time in 829 LEN = 16200 // i: waiting for length/lit/eob code 830 LENEXT = 16201 // i: waiting for length extra bits 831 DIST = 16202 // i: waiting for distance code 832 DISTEXT = 16203 // i: waiting for distance extra bits 833 MATCH = 16204 // o: waiting for output space to copy string 834 LIT = 16205 // o: waiting for output space to write literal 835 CHECK = 16206 // i: waiting for 32-bit check value 836 LENGTH = 16207 // i: waiting for 32-bit length (gzip) 837 DONE = 16208 // finished check, done -- remain here until reset 838 BAD = 16209 // got a data error -- remain here until reset 839 MEM = 16210 // got an inflate() memory error -- remain here until reset 840 SYNC = 16211 841 ) 842 843 // op values as set by inflate_table(): 844 // 00000000 - literal 845 // 0000tttt - table link, tttt != 0 is the number of table index bits 846 // 0001eeee - length or distance, eeee is the number of extra bits 847 // 01100000 - end of block 848 // 01000000 - invalid code 849 // 850 851 // Maximum size of the dynamic table. The maximum number of code structures is 852 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 853 // codes. These values were found by exhaustive searches using the program 854 // examples/enough.c found in the zlib distribtution. The arguments to that 855 // program are the number of symbols, the initial root table size, and the 856 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 857 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 858 // The initial root table size (9 or 6) is found in the fifth argument of the 859 // inflate_table() calls in inflate.c and infback.c. If the root table size is 860 // changed, then these maximum sizes would be need to be recalculated and 861 // updated. 862 863 // Type of code to build for inflate_table() 864 const ( /* inftrees.h:54:1: */ 865 CODES = 0 866 LENS = 1 867 DISTS = 2 868 ) 869 870 type Ptrdiff_t = int64 /* <builtin>:3:26 */ 871 872 type Size_t = uint64 /* <builtin>:9:23 */ 873 874 type Wchar_t = int32 /* <builtin>:15:24 */ 875 876 type X__int128_t = struct { 877 Flo int64 878 Fhi int64 879 } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128 880 type X__uint128_t = struct { 881 Flo uint64 882 Fhi uint64 883 } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128 884 885 type X__builtin_va_list = uintptr /* <builtin>:46:14 */ 886 type X__float128 = float64 /* <builtin>:47:21 */ 887 888 // adler32.c -- compute the Adler-32 checksum of a data stream 889 // Copyright (C) 1995-2011, 2016 Mark Adler 890 // For conditions of distribution and use, see copyright notice in zlib.h 891 892 // @(#) $Id$ 893 894 // zutil.h -- internal interface and configuration of the compression library 895 // Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler 896 // For conditions of distribution and use, see copyright notice in zlib.h 897 898 // WARNING: this file should *not* be used by applications. It is 899 // part of the implementation of the compression library and is 900 // subject to change. Applications should only use zlib.h. 901 // 902 903 // @(#) $Id$ 904 905 // zlib.h -- interface of the 'zlib' general purpose compression library 906 // version 1.2.11, January 15th, 2017 907 // 908 // Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler 909 // 910 // This software is provided 'as-is', without any express or implied 911 // warranty. In no event will the authors be held liable for any damages 912 // arising from the use of this software. 913 // 914 // Permission is granted to anyone to use this software for any purpose, 915 // including commercial applications, and to alter it and redistribute it 916 // freely, subject to the following restrictions: 917 // 918 // 1. The origin of this software must not be misrepresented; you must not 919 // claim that you wrote the original software. If you use this software 920 // in a product, an acknowledgment in the product documentation would be 921 // appreciated but is not required. 922 // 2. Altered source versions must be plainly marked as such, and must not be 923 // misrepresented as being the original software. 924 // 3. This notice may not be removed or altered from any source distribution. 925 // 926 // Jean-loup Gailly Mark Adler 927 // jloup@gzip.org madler@alumni.caltech.edu 928 // 929 // 930 // The data format used by the zlib library is described by RFCs (Request for 931 // Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 932 // (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). 933 934 // zconf.h -- configuration of the zlib compression library 935 // Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler 936 // For conditions of distribution and use, see copyright notice in zlib.h 937 938 // @(#) $Id$ 939 940 // If you *really* need a unique prefix for all types and library functions, 941 // compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. 942 // Even better than compiling with -DZ_PREFIX would be to use configure to set 943 // this permanently in zconf.h using "./configure --zprefix". 944 945 // Compile with -DMAXSEG_64K if the alloc function cannot allocate more 946 // than 64k bytes at a time (needed on systems with 16-bit int). 947 948 // - 949 // SPDX-License-Identifier: BSD-3-Clause 950 // 951 // Copyright (c) 1990, 1993 952 // The Regents of the University of California. All rights reserved. 953 // 954 // Redistribution and use in source and binary forms, with or without 955 // modification, are permitted provided that the following conditions 956 // are met: 957 // 1. Redistributions of source code must retain the above copyright 958 // notice, this list of conditions and the following disclaimer. 959 // 2. Redistributions in binary form must reproduce the above copyright 960 // notice, this list of conditions and the following disclaimer in the 961 // documentation and/or other materials provided with the distribution. 962 // 3. Neither the name of the University nor the names of its contributors 963 // may be used to endorse or promote products derived from this software 964 // without specific prior written permission. 965 // 966 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 967 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 968 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 969 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 970 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 971 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 972 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 973 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 974 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 975 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 976 // SUCH DAMAGE. 977 // 978 // @(#)stddef.h 8.1 (Berkeley) 6/2/93 979 // 980 // $FreeBSD$ 981 982 // - 983 // SPDX-License-Identifier: BSD-3-Clause 984 // 985 // Copyright (c) 1991, 1993 986 // The Regents of the University of California. All rights reserved. 987 // 988 // This code is derived from software contributed to Berkeley by 989 // Berkeley Software Design, Inc. 990 // 991 // Redistribution and use in source and binary forms, with or without 992 // modification, are permitted provided that the following conditions 993 // are met: 994 // 1. Redistributions of source code must retain the above copyright 995 // notice, this list of conditions and the following disclaimer. 996 // 2. Redistributions in binary form must reproduce the above copyright 997 // notice, this list of conditions and the following disclaimer in the 998 // documentation and/or other materials provided with the distribution. 999 // 3. Neither the name of the University nor the names of its contributors 1000 // may be used to endorse or promote products derived from this software 1001 // without specific prior written permission. 1002 // 1003 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1004 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1005 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1006 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1007 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1008 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1009 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1010 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1011 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1012 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1013 // SUCH DAMAGE. 1014 // 1015 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 1016 // $FreeBSD$ 1017 1018 // Testing against Clang-specific extensions. 1019 1020 // This code has been put in place to help reduce the addition of 1021 // compiler specific defines in FreeBSD code. It helps to aid in 1022 // having a compiler-agnostic source tree. 1023 1024 // Compiler memory barriers, specific to gcc and clang. 1025 1026 // XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced 1027 1028 // Macro to test if we're using a specific version of gcc or later. 1029 1030 // The __CONCAT macro is used to concatenate parts of symbol names, e.g. 1031 // with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. 1032 // The __CONCAT macro is a bit tricky to use if it must work in non-ANSI 1033 // mode -- there must be no spaces between its arguments, and for nested 1034 // __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also 1035 // concatenate double-quoted strings produced by the __STRING macro, but 1036 // this only works with ANSI C. 1037 // 1038 // __XSTRING is like __STRING, but it expands any macros in its argument 1039 // first. It is only available with ANSI C. 1040 1041 // Compiler-dependent macros to help declare dead (non-returning) and 1042 // pure (no side effects) functions, and unused variables. They are 1043 // null except for versions of gcc that are known to support the features 1044 // properly (old versions of gcc-2 supported the dead and pure features 1045 // in a different (wrong) way). If we do not provide an implementation 1046 // for a given compiler, let the compile fail if it is told to use 1047 // a feature that we cannot live without. 1048 1049 // Keywords added in C11. 1050 1051 // Emulation of C11 _Generic(). Unlike the previously defined C11 1052 // keywords, it is not possible to implement this using exactly the same 1053 // syntax. Therefore implement something similar under the name 1054 // __generic(). Unlike _Generic(), this macro can only distinguish 1055 // between a single type, so it requires nested invocations to 1056 // distinguish multiple cases. 1057 1058 // C99 Static array indices in function parameter declarations. Syntax such as: 1059 // void bar(int myArray[static 10]); 1060 // is allowed in C99 but not in C++. Define __min_size appropriately so 1061 // headers using it can be compiled in either language. Use like this: 1062 // void bar(int myArray[__min_size(10)]); 1063 1064 // XXX: should use `#if __STDC_VERSION__ < 199901'. 1065 1066 // C++11 exposes a load of C99 stuff 1067 1068 // GCC 2.95 provides `__restrict' as an extension to C90 to support the 1069 // C99-specific `restrict' type qualifier. We happen to use `__restrict' as 1070 // a way to define the `restrict' type qualifier without disturbing older 1071 // software that is unaware of C99 keywords. 1072 1073 // GNU C version 2.96 adds explicit branch prediction so that 1074 // the CPU back-end can hint the processor and also so that 1075 // code blocks can be reordered such that the predicted path 1076 // sees a more linear flow, thus improving cache behavior, etc. 1077 // 1078 // The following two macros provide us with a way to utilize this 1079 // compiler feature. Use __predict_true() if you expect the expression 1080 // to evaluate to true, and __predict_false() if you expect the 1081 // expression to evaluate to false. 1082 // 1083 // A few notes about usage: 1084 // 1085 // * Generally, __predict_false() error condition checks (unless 1086 // you have some _strong_ reason to do otherwise, in which case 1087 // document it), and/or __predict_true() `no-error' condition 1088 // checks, assuming you want to optimize for the no-error case. 1089 // 1090 // * Other than that, if you don't know the likelihood of a test 1091 // succeeding from empirical or other `hard' evidence, don't 1092 // make predictions. 1093 // 1094 // * These are meant to be used in places that are run `a lot'. 1095 // It is wasteful to make predictions in code that is run 1096 // seldomly (e.g. at subsystem initialization time) as the 1097 // basic block reordering that this affects can often generate 1098 // larger code. 1099 1100 // We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h> 1101 // require it. 1102 1103 // Given the pointer x to the member m of the struct s, return 1104 // a pointer to the containing structure. When using GCC, we first 1105 // assign pointer x to a local variable, to check that its type is 1106 // compatible with member m. 1107 1108 // Compiler-dependent macros to declare that functions take printf-like 1109 // or scanf-like arguments. They are null except for versions of gcc 1110 // that are known to support the features properly (old versions of gcc-2 1111 // didn't permit keeping the keywords out of the application namespace). 1112 1113 // Compiler-dependent macros that rely on FreeBSD-specific extensions. 1114 1115 // Embed the rcs id of a source file in the resulting library. Note that in 1116 // more recent ELF binutils, we use .ident allowing the ID to be stripped. 1117 // Usage: 1118 // __FBSDID("$FreeBSD$"); 1119 1120 // - 1121 // The following definitions are an extension of the behavior originally 1122 // implemented in <sys/_posix.h>, but with a different level of granularity. 1123 // POSIX.1 requires that the macros we test be defined before any standard 1124 // header file is included. 1125 // 1126 // Here's a quick run-down of the versions: 1127 // defined(_POSIX_SOURCE) 1003.1-1988 1128 // _POSIX_C_SOURCE == 1 1003.1-1990 1129 // _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option 1130 // _POSIX_C_SOURCE == 199309 1003.1b-1993 1131 // _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995, 1132 // and the omnibus ISO/IEC 9945-1: 1996 1133 // _POSIX_C_SOURCE == 200112 1003.1-2001 1134 // _POSIX_C_SOURCE == 200809 1003.1-2008 1135 // 1136 // In addition, the X/Open Portability Guide, which is now the Single UNIX 1137 // Specification, defines a feature-test macro which indicates the version of 1138 // that specification, and which subsumes _POSIX_C_SOURCE. 1139 // 1140 // Our macros begin with two underscores to avoid namespace screwage. 1141 1142 // Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. 1143 1144 // Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. 1145 1146 // Deal with various X/Open Portability Guides and Single UNIX Spec. 1147 1148 // Deal with all versions of POSIX. The ordering relative to the tests above is 1149 // important. 1150 // - 1151 // Deal with _ANSI_SOURCE: 1152 // If it is defined, and no other compilation environment is explicitly 1153 // requested, then define our internal feature-test macros to zero. This 1154 // makes no difference to the preprocessor (undefined symbols in preprocessing 1155 // expressions are defined to have value zero), but makes it more convenient for 1156 // a test program to print out the values. 1157 // 1158 // If a program mistakenly defines _ANSI_SOURCE and some other macro such as 1159 // _POSIX_C_SOURCE, we will assume that it wants the broader compilation 1160 // environment (and in fact we will never get here). 1161 1162 // User override __EXT1_VISIBLE 1163 1164 // Old versions of GCC use non-standard ARM arch symbols; acle-compat.h 1165 // translates them to __ARM_ARCH and the modern feature symbols defined by ARM. 1166 1167 // Nullability qualifiers: currently only supported by Clang. 1168 1169 // Type Safety Checking 1170 // 1171 // Clang provides additional attributes to enable checking type safety 1172 // properties that cannot be enforced by the C type system. 1173 1174 // Lock annotations. 1175 // 1176 // Clang provides support for doing basic thread-safety tests at 1177 // compile-time, by marking which locks will/should be held when 1178 // entering/leaving a functions. 1179 // 1180 // Furthermore, it is also possible to annotate variables and structure 1181 // members to enforce that they are only accessed when certain locks are 1182 // held. 1183 1184 // Structure implements a lock. 1185 1186 // Function acquires an exclusive or shared lock. 1187 1188 // Function attempts to acquire an exclusive or shared lock. 1189 1190 // Function releases a lock. 1191 1192 // Function asserts that an exclusive or shared lock is held. 1193 1194 // Function requires that an exclusive or shared lock is or is not held. 1195 1196 // Function should not be analyzed. 1197 1198 // Function or variable should not be sanitized, i.e. by AddressSanitizer. 1199 // GCC has the nosanitize attribute, but as a function attribute only, and 1200 // warns on use as a variable attribute. 1201 1202 // Guard variables and structure members by lock. 1203 1204 // - 1205 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 1206 // 1207 // Copyright (c) 2003 Marcel Moolenaar 1208 // All rights reserved. 1209 // 1210 // Redistribution and use in source and binary forms, with or without 1211 // modification, are permitted provided that the following conditions 1212 // are met: 1213 // 1214 // 1. Redistributions of source code must retain the above copyright 1215 // notice, this list of conditions and the following disclaimer. 1216 // 2. Redistributions in binary form must reproduce the above copyright 1217 // notice, this list of conditions and the following disclaimer in the 1218 // documentation and/or other materials provided with the distribution. 1219 // 1220 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1221 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1222 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1223 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1224 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1225 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1226 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1227 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1228 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 1229 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1230 // 1231 // $FreeBSD$ 1232 1233 // - 1234 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 1235 // 1236 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 1237 // All rights reserved. 1238 // 1239 // Redistribution and use in source and binary forms, with or without 1240 // modification, are permitted provided that the following conditions 1241 // are met: 1242 // 1. Redistributions of source code must retain the above copyright 1243 // notice, this list of conditions and the following disclaimer. 1244 // 2. Redistributions in binary form must reproduce the above copyright 1245 // notice, this list of conditions and the following disclaimer in the 1246 // documentation and/or other materials provided with the distribution. 1247 // 1248 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1249 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1250 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1251 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1252 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1253 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1254 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1255 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1256 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1257 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1258 // SUCH DAMAGE. 1259 // 1260 // $FreeBSD$ 1261 1262 // - 1263 // SPDX-License-Identifier: BSD-3-Clause 1264 // 1265 // Copyright (c) 1991, 1993 1266 // The Regents of the University of California. All rights reserved. 1267 // 1268 // This code is derived from software contributed to Berkeley by 1269 // Berkeley Software Design, Inc. 1270 // 1271 // Redistribution and use in source and binary forms, with or without 1272 // modification, are permitted provided that the following conditions 1273 // are met: 1274 // 1. Redistributions of source code must retain the above copyright 1275 // notice, this list of conditions and the following disclaimer. 1276 // 2. Redistributions in binary form must reproduce the above copyright 1277 // notice, this list of conditions and the following disclaimer in the 1278 // documentation and/or other materials provided with the distribution. 1279 // 3. Neither the name of the University nor the names of its contributors 1280 // may be used to endorse or promote products derived from this software 1281 // without specific prior written permission. 1282 // 1283 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1284 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1285 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1286 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1287 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1288 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1289 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1290 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1291 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1292 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1293 // SUCH DAMAGE. 1294 // 1295 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 1296 // $FreeBSD$ 1297 1298 // - 1299 // This file is in the public domain. 1300 // $FreeBSD$ 1301 1302 // - 1303 // SPDX-License-Identifier: BSD-4-Clause 1304 // 1305 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 1306 // Copyright (c) 1990, 1993 1307 // The Regents of the University of California. All rights reserved. 1308 // 1309 // Redistribution and use in source and binary forms, with or without 1310 // modification, are permitted provided that the following conditions 1311 // are met: 1312 // 1. Redistributions of source code must retain the above copyright 1313 // notice, this list of conditions and the following disclaimer. 1314 // 2. Redistributions in binary form must reproduce the above copyright 1315 // notice, this list of conditions and the following disclaimer in the 1316 // documentation and/or other materials provided with the distribution. 1317 // 3. All advertising materials mentioning features or use of this software 1318 // must display the following acknowledgement: 1319 // This product includes software developed by the University of 1320 // California, Berkeley and its contributors. 1321 // 4. Neither the name of the University nor the names of its contributors 1322 // may be used to endorse or promote products derived from this software 1323 // without specific prior written permission. 1324 // 1325 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1326 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1327 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1328 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1329 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1330 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1331 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1332 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1333 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1334 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1335 // SUCH DAMAGE. 1336 // 1337 // From: @(#)ansi.h 8.2 (Berkeley) 1/4/94 1338 // From: @(#)types.h 8.3 (Berkeley) 1/5/94 1339 // $FreeBSD$ 1340 1341 // - 1342 // This file is in the public domain. 1343 // $FreeBSD$ 1344 1345 // - 1346 // SPDX-License-Identifier: BSD-3-Clause 1347 // 1348 // Copyright (c) 1988, 1993 1349 // The Regents of the University of California. All rights reserved. 1350 // 1351 // Redistribution and use in source and binary forms, with or without 1352 // modification, are permitted provided that the following conditions 1353 // are met: 1354 // 1. Redistributions of source code must retain the above copyright 1355 // notice, this list of conditions and the following disclaimer. 1356 // 2. Redistributions in binary form must reproduce the above copyright 1357 // notice, this list of conditions and the following disclaimer in the 1358 // documentation and/or other materials provided with the distribution. 1359 // 3. Neither the name of the University nor the names of its contributors 1360 // may be used to endorse or promote products derived from this software 1361 // without specific prior written permission. 1362 // 1363 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1364 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1365 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1366 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1367 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1368 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1369 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1370 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1371 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1372 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1373 // SUCH DAMAGE. 1374 // 1375 // @(#)limits.h 8.3 (Berkeley) 1/4/94 1376 // $FreeBSD$ 1377 1378 // According to ANSI (section 2.2.4.2), the values below must be usable by 1379 // #if preprocessing directives. Additionally, the expression must have the 1380 // same type as would an expression that is an object of the corresponding 1381 // type converted according to the integral promotions. The subtraction for 1382 // INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an 1383 // unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2). 1384 1385 // max value for an unsigned long long 1386 1387 // Quads and longs are the same on the amd64. Ensure they stay in sync. 1388 1389 // Minimum signal stack size. 1390 1391 // Basic types upon which most other types are built. 1392 type X__int8_t = int8 /* _types.h:55:22 */ 1393 type X__uint8_t = uint8 /* _types.h:56:24 */ 1394 type X__int16_t = int16 /* _types.h:57:17 */ 1395 type X__uint16_t = uint16 /* _types.h:58:25 */ 1396 type X__int32_t = int32 /* _types.h:59:15 */ 1397 type X__uint32_t = uint32 /* _types.h:60:23 */ 1398 type X__int64_t = int64 /* _types.h:62:16 */ 1399 type X__uint64_t = uint64 /* _types.h:63:24 */ 1400 1401 // Standard type definitions. 1402 type X__clock_t = X__int32_t /* _types.h:75:19 */ // clock()... 1403 type X__critical_t = X__int64_t /* _types.h:76:19 */ 1404 type X__double_t = float64 /* _types.h:78:17 */ 1405 type X__float_t = float32 /* _types.h:79:16 */ 1406 type X__intfptr_t = X__int64_t /* _types.h:81:19 */ 1407 type X__intptr_t = X__int64_t /* _types.h:82:19 */ 1408 type X__intmax_t = X__int64_t /* _types.h:93:19 */ 1409 type X__int_fast8_t = X__int32_t /* _types.h:94:19 */ 1410 type X__int_fast16_t = X__int32_t /* _types.h:95:19 */ 1411 type X__int_fast32_t = X__int32_t /* _types.h:96:19 */ 1412 type X__int_fast64_t = X__int64_t /* _types.h:97:19 */ 1413 type X__int_least8_t = X__int8_t /* _types.h:98:18 */ 1414 type X__int_least16_t = X__int16_t /* _types.h:99:19 */ 1415 type X__int_least32_t = X__int32_t /* _types.h:100:19 */ 1416 type X__int_least64_t = X__int64_t /* _types.h:101:19 */ 1417 type X__ptrdiff_t = X__int64_t /* _types.h:103:19 */ // ptr1 - ptr2 1418 type X__register_t = X__int64_t /* _types.h:104:19 */ 1419 type X__segsz_t = X__int64_t /* _types.h:105:19 */ // segment size (in pages) 1420 type X__size_t = X__uint64_t /* _types.h:106:20 */ // sizeof() 1421 type X__ssize_t = X__int64_t /* _types.h:107:19 */ // byte count or error 1422 type X__time_t = X__int64_t /* _types.h:108:19 */ // time()... 1423 type X__uintfptr_t = X__uint64_t /* _types.h:109:20 */ 1424 type X__uintptr_t = X__uint64_t /* _types.h:110:20 */ 1425 type X__uintmax_t = X__uint64_t /* _types.h:121:20 */ 1426 type X__uint_fast8_t = X__uint32_t /* _types.h:122:20 */ 1427 type X__uint_fast16_t = X__uint32_t /* _types.h:123:20 */ 1428 type X__uint_fast32_t = X__uint32_t /* _types.h:124:20 */ 1429 type X__uint_fast64_t = X__uint64_t /* _types.h:125:20 */ 1430 type X__uint_least8_t = X__uint8_t /* _types.h:126:19 */ 1431 type X__uint_least16_t = X__uint16_t /* _types.h:127:20 */ 1432 type X__uint_least32_t = X__uint32_t /* _types.h:128:20 */ 1433 type X__uint_least64_t = X__uint64_t /* _types.h:129:20 */ 1434 type X__u_register_t = X__uint64_t /* _types.h:131:20 */ 1435 type X__vm_offset_t = X__uint64_t /* _types.h:132:20 */ 1436 type X__vm_paddr_t = X__uint64_t /* _types.h:133:20 */ 1437 type X__vm_size_t = X__uint64_t /* _types.h:134:20 */ 1438 type X___wchar_t = int32 /* _types.h:141:14 */ 1439 1440 // Standard type definitions. 1441 type X__blksize_t = X__int32_t /* _types.h:40:19 */ // file block size 1442 type X__blkcnt_t = X__int64_t /* _types.h:41:19 */ // file block count 1443 type X__clockid_t = X__int32_t /* _types.h:42:19 */ // clock_gettime()... 1444 type X__fflags_t = X__uint32_t /* _types.h:43:20 */ // file flags 1445 type X__fsblkcnt_t = X__uint64_t /* _types.h:44:20 */ 1446 type X__fsfilcnt_t = X__uint64_t /* _types.h:45:20 */ 1447 type X__gid_t = X__uint32_t /* _types.h:46:20 */ 1448 type X__id_t = X__int64_t /* _types.h:47:19 */ // can hold a gid_t, pid_t, or uid_t 1449 type X__ino_t = X__uint64_t /* _types.h:48:20 */ // inode number 1450 type X__key_t = int64 /* _types.h:49:15 */ // IPC key (for Sys V IPC) 1451 type X__lwpid_t = X__int32_t /* _types.h:50:19 */ // Thread ID (a.k.a. LWP) 1452 type X__mode_t = X__uint16_t /* _types.h:51:20 */ // permissions 1453 type X__accmode_t = int32 /* _types.h:52:14 */ // access permissions 1454 type X__nl_item = int32 /* _types.h:53:14 */ 1455 type X__nlink_t = X__uint64_t /* _types.h:54:20 */ // link count 1456 type X__off_t = X__int64_t /* _types.h:55:19 */ // file offset 1457 type X__off64_t = X__int64_t /* _types.h:56:19 */ // file offset (alias) 1458 type X__pid_t = X__int32_t /* _types.h:57:19 */ // process [group] 1459 type X__rlim_t = X__int64_t /* _types.h:58:19 */ // resource limit - intentionally 1460 // signed, because of legacy code 1461 // that uses -1 for RLIM_INFINITY 1462 type X__sa_family_t = X__uint8_t /* _types.h:61:19 */ 1463 type X__socklen_t = X__uint32_t /* _types.h:62:20 */ 1464 type X__suseconds_t = int64 /* _types.h:63:15 */ // microseconds (signed) 1465 type X__timer_t = uintptr /* _types.h:64:24 */ // timer_gettime()... 1466 type X__mqd_t = uintptr /* _types.h:65:21 */ // mq_open()... 1467 type X__uid_t = X__uint32_t /* _types.h:66:20 */ 1468 type X__useconds_t = uint32 /* _types.h:67:22 */ // microseconds (unsigned) 1469 type X__cpuwhich_t = int32 /* _types.h:68:14 */ // which parameter for cpuset. 1470 type X__cpulevel_t = int32 /* _types.h:69:14 */ // level parameter for cpuset. 1471 type X__cpusetid_t = int32 /* _types.h:70:14 */ // cpuset identifier. 1472 type X__daddr_t = X__int64_t /* _types.h:71:19 */ // bwrite(3), FIOBMAP2, etc 1473 1474 // Unusual type definitions. 1475 // rune_t is declared to be an ``int'' instead of the more natural 1476 // ``unsigned long'' or ``long''. Two things are happening here. It is not 1477 // unsigned so that EOF (-1) can be naturally assigned to it and used. Also, 1478 // it looks like 10646 will be a 31 bit standard. This means that if your 1479 // ints cannot hold 32 bits, you will be in trouble. The reason an int was 1480 // chosen over a long is that the is*() and to*() routines take ints (says 1481 // ANSI C), but they use __ct_rune_t instead of int. 1482 // 1483 // NOTE: rune_t is not covered by ANSI nor other standards, and should not 1484 // be instantiated outside of lib/libc/locale. Use wchar_t. wint_t and 1485 // rune_t must be the same type. Also, wint_t should be able to hold all 1486 // members of the largest character set plus one extra value (WEOF), and 1487 // must be at least 16 bits. 1488 type X__ct_rune_t = int32 /* _types.h:91:14 */ // arg type for ctype funcs 1489 type X__rune_t = X__ct_rune_t /* _types.h:92:21 */ // rune_t (see above) 1490 type X__wint_t = X__ct_rune_t /* _types.h:93:21 */ // wint_t (see above) 1491 1492 // Clang already provides these types as built-ins, but only in C++ mode. 1493 type X__char16_t = X__uint_least16_t /* _types.h:97:26 */ 1494 type X__char32_t = X__uint_least32_t /* _types.h:98:26 */ 1495 // In C++11, char16_t and char32_t are built-in types. 1496 1497 type X__max_align_t = struct { 1498 F__max_align1 int64 1499 F__max_align2 float64 1500 } /* _types.h:111:3 */ 1501 1502 type X__dev_t = X__uint64_t /* _types.h:113:20 */ // device number 1503 1504 type X__fixpt_t = X__uint32_t /* _types.h:115:20 */ // fixed point number 1505 1506 // mbstate_t is an opaque object to keep conversion state during multibyte 1507 // stream conversions. 1508 type X__mbstate_t = struct { 1509 F__ccgo_pad1 [0]uint64 1510 F__mbstate8 [128]int8 1511 } /* _types.h:124:3 */ 1512 1513 type X__rman_res_t = X__uintmax_t /* _types.h:126:25 */ 1514 1515 // Types for varargs. These are all provided by builtin types these 1516 // days, so centralize their definition. 1517 type X__va_list = X__builtin_va_list /* _types.h:133:27 */ // internally known to gcc 1518 type X__gnuc_va_list = X__va_list /* _types.h:140:20 */ 1519 1520 type Rune_t = X__rune_t /* stddef.h:50:18 */ 1521 1522 type Max_align_t = X__max_align_t /* stddef.h:69:23 */ 1523 1524 // ISO/IEC 9899:2011 K.3.3.2 1525 type Rsize_t = Size_t /* stddef.h:81:16 */ 1526 1527 type Z_size_t = Size_t /* zconf.h:248:21 */ 1528 1529 // Maximum value for memLevel in deflateInit2 1530 1531 // Maximum value for windowBits in deflateInit2 and inflateInit2. 1532 // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files 1533 // created by gzip. (Files created by minigzip can still be extracted by 1534 // gzip.) 1535 1536 // The memory requirements for deflate are (in bytes): 1537 // (1 << (windowBits+2)) + (1 << (memLevel+9)) 1538 // that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) 1539 // plus a few kilobytes for small objects. For example, if you want to reduce 1540 // the default memory requirements from 256K to 128K, compile with 1541 // make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" 1542 // Of course this will generally degrade compression (there's no free lunch). 1543 // 1544 // The memory requirements for inflate are (in bytes) 1 << windowBits 1545 // that is, 32K for windowBits=15 (default value) plus about 7 kilobytes 1546 // for small objects. 1547 1548 // Type declarations 1549 1550 // The following definitions for FAR are needed only for MSDOS mixed 1551 // model programming (small or medium model with some far allocations). 1552 // This was tested only with MSC; for other MSDOS compilers you may have 1553 // to define NO_MEMCPY in zutil.h. If you don't need the mixed model, 1554 // just define FAR to be empty. 1555 1556 type Byte = uint8 /* zconf.h:391:24 */ // 8 bits 1557 type UInt = uint32 /* zconf.h:393:24 */ // 16 bits or more 1558 type ULong = uint64 /* zconf.h:394:24 */ // 32 bits or more 1559 1560 type Bytef = Byte /* zconf.h:400:22 */ 1561 type Charf = int8 /* zconf.h:402:19 */ 1562 type Intf = int32 /* zconf.h:403:19 */ 1563 type UIntf = UInt /* zconf.h:404:19 */ 1564 type ULongf = ULong /* zconf.h:405:19 */ 1565 1566 type Voidpc = uintptr /* zconf.h:408:23 */ 1567 type Voidpf = uintptr /* zconf.h:409:23 */ 1568 type Voidp = uintptr /* zconf.h:410:23 */ 1569 1570 // - 1571 // SPDX-License-Identifier: BSD-3-Clause 1572 // 1573 // Copyright (c) 1988, 1993 1574 // The Regents of the University of California. All rights reserved. 1575 // 1576 // Redistribution and use in source and binary forms, with or without 1577 // modification, are permitted provided that the following conditions 1578 // are met: 1579 // 1. Redistributions of source code must retain the above copyright 1580 // notice, this list of conditions and the following disclaimer. 1581 // 2. Redistributions in binary form must reproduce the above copyright 1582 // notice, this list of conditions and the following disclaimer in the 1583 // documentation and/or other materials provided with the distribution. 1584 // 3. Neither the name of the University nor the names of its contributors 1585 // may be used to endorse or promote products derived from this software 1586 // without specific prior written permission. 1587 // 1588 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1589 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1590 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1591 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1592 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1593 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1594 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1595 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1596 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1597 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1598 // SUCH DAMAGE. 1599 // 1600 // @(#)limits.h 8.2 (Berkeley) 1/4/94 1601 // $FreeBSD$ 1602 1603 // - 1604 // SPDX-License-Identifier: BSD-3-Clause 1605 // 1606 // Copyright (c) 1991, 1993 1607 // The Regents of the University of California. All rights reserved. 1608 // 1609 // This code is derived from software contributed to Berkeley by 1610 // Berkeley Software Design, Inc. 1611 // 1612 // Redistribution and use in source and binary forms, with or without 1613 // modification, are permitted provided that the following conditions 1614 // are met: 1615 // 1. Redistributions of source code must retain the above copyright 1616 // notice, this list of conditions and the following disclaimer. 1617 // 2. Redistributions in binary form must reproduce the above copyright 1618 // notice, this list of conditions and the following disclaimer in the 1619 // documentation and/or other materials provided with the distribution. 1620 // 3. Neither the name of the University nor the names of its contributors 1621 // may be used to endorse or promote products derived from this software 1622 // without specific prior written permission. 1623 // 1624 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1625 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1626 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1627 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1628 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1629 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1630 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1631 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1632 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1633 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1634 // SUCH DAMAGE. 1635 // 1636 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 1637 // $FreeBSD$ 1638 1639 // - 1640 // SPDX-License-Identifier: BSD-3-Clause 1641 // 1642 // Copyright (c) 1988, 1993 1643 // The Regents of the University of California. All rights reserved. 1644 // 1645 // Redistribution and use in source and binary forms, with or without 1646 // modification, are permitted provided that the following conditions 1647 // are met: 1648 // 1. Redistributions of source code must retain the above copyright 1649 // notice, this list of conditions and the following disclaimer. 1650 // 2. Redistributions in binary form must reproduce the above copyright 1651 // notice, this list of conditions and the following disclaimer in the 1652 // documentation and/or other materials provided with the distribution. 1653 // 3. Neither the name of the University nor the names of its contributors 1654 // may be used to endorse or promote products derived from this software 1655 // without specific prior written permission. 1656 // 1657 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1658 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1659 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1660 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1661 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1662 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1663 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1664 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1665 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1666 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1667 // SUCH DAMAGE. 1668 // 1669 // $FreeBSD$ 1670 1671 // - 1672 // SPDX-License-Identifier: BSD-3-Clause 1673 // 1674 // Copyright (c) 1991, 1993 1675 // The Regents of the University of California. All rights reserved. 1676 // 1677 // This code is derived from software contributed to Berkeley by 1678 // Berkeley Software Design, Inc. 1679 // 1680 // Redistribution and use in source and binary forms, with or without 1681 // modification, are permitted provided that the following conditions 1682 // are met: 1683 // 1. Redistributions of source code must retain the above copyright 1684 // notice, this list of conditions and the following disclaimer. 1685 // 2. Redistributions in binary form must reproduce the above copyright 1686 // notice, this list of conditions and the following disclaimer in the 1687 // documentation and/or other materials provided with the distribution. 1688 // 3. Neither the name of the University nor the names of its contributors 1689 // may be used to endorse or promote products derived from this software 1690 // without specific prior written permission. 1691 // 1692 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1693 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1694 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1695 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1696 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1697 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1698 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1699 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1700 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1701 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1702 // SUCH DAMAGE. 1703 // 1704 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 1705 // $FreeBSD$ 1706 1707 // - 1708 // This file is in the public domain. 1709 // $FreeBSD$ 1710 1711 // - 1712 // SPDX-License-Identifier: BSD-3-Clause 1713 // 1714 // Copyright (c) 1988, 1993 1715 // The Regents of the University of California. All rights reserved. 1716 // 1717 // Redistribution and use in source and binary forms, with or without 1718 // modification, are permitted provided that the following conditions 1719 // are met: 1720 // 1. Redistributions of source code must retain the above copyright 1721 // notice, this list of conditions and the following disclaimer. 1722 // 2. Redistributions in binary form must reproduce the above copyright 1723 // notice, this list of conditions and the following disclaimer in the 1724 // documentation and/or other materials provided with the distribution. 1725 // 3. Neither the name of the University nor the names of its contributors 1726 // may be used to endorse or promote products derived from this software 1727 // without specific prior written permission. 1728 // 1729 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1730 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1731 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1732 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1733 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1734 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1735 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1736 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1737 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1738 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1739 // SUCH DAMAGE. 1740 // 1741 // @(#)limits.h 8.3 (Berkeley) 1/4/94 1742 // $FreeBSD$ 1743 1744 // - 1745 // SPDX-License-Identifier: BSD-3-Clause 1746 // 1747 // Copyright (c) 1988, 1993 1748 // The Regents of the University of California. All rights reserved. 1749 // 1750 // Redistribution and use in source and binary forms, with or without 1751 // modification, are permitted provided that the following conditions 1752 // are met: 1753 // 1. Redistributions of source code must retain the above copyright 1754 // notice, this list of conditions and the following disclaimer. 1755 // 2. Redistributions in binary form must reproduce the above copyright 1756 // notice, this list of conditions and the following disclaimer in the 1757 // documentation and/or other materials provided with the distribution. 1758 // 3. Neither the name of the University nor the names of its contributors 1759 // may be used to endorse or promote products derived from this software 1760 // without specific prior written permission. 1761 // 1762 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1763 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1764 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1765 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1766 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1767 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1768 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1769 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1770 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1771 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1772 // SUCH DAMAGE. 1773 // 1774 // @(#)syslimits.h 8.1 (Berkeley) 6/2/93 1775 // $FreeBSD$ 1776 1777 // Do not add any new variables here. (See the comment at the end of 1778 // the file for why.) 1779 1780 // We leave the following values undefined to force applications to either 1781 // assume conservative values or call sysconf() to get the current value. 1782 // 1783 // HOST_NAME_MAX 1784 // 1785 // (We should do this for most of the values currently defined here, 1786 // but many programs are not prepared to deal with this yet.) 1787 1788 type Z_crc_t = uint32 /* zconf.h:429:17 */ 1789 type Pthread_once = struct { 1790 Fstate int32 1791 F__ccgo_pad1 [4]byte 1792 Fmutex Pthread_mutex_t 1793 } /* _pthreadtypes.h:52:1 */ 1794 1795 // Primitive system data type definitions required by P1003.1c. 1796 // 1797 // Note that P1003.1c specifies that there are no defined comparison 1798 // or assignment operators for the types pthread_attr_t, pthread_cond_t, 1799 // pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t. 1800 type Pthread_t = uintptr /* _pthreadtypes.h:67:26 */ 1801 type Pthread_attr_t = uintptr /* _pthreadtypes.h:70:30 */ 1802 type Pthread_mutex_t = uintptr /* _pthreadtypes.h:71:31 */ 1803 type Pthread_mutexattr_t = uintptr /* _pthreadtypes.h:72:35 */ 1804 type Pthread_cond_t = uintptr /* _pthreadtypes.h:73:30 */ 1805 type Pthread_condattr_t = uintptr /* _pthreadtypes.h:74:34 */ 1806 type Pthread_key_t = int32 /* _pthreadtypes.h:75:20 */ 1807 type Pthread_once_t = Pthread_once /* _pthreadtypes.h:76:30 */ 1808 type Pthread_rwlock_t = uintptr /* _pthreadtypes.h:77:32 */ 1809 type Pthread_rwlockattr_t = uintptr /* _pthreadtypes.h:78:35 */ 1810 type Pthread_barrier_t = uintptr /* _pthreadtypes.h:79:33 */ 1811 type Pthread_barrierattr_t = uintptr /* _pthreadtypes.h:80:36 */ 1812 type Pthread_spinlock_t = uintptr /* _pthreadtypes.h:81:33 */ 1813 1814 // Additional type definitions: 1815 // 1816 // Note that P1003.1c reserves the prefixes pthread_ and PTHREAD_ for 1817 // use in header symbols. 1818 type Pthread_addr_t = uintptr /* _pthreadtypes.h:89:14 */ 1819 type Pthread_startroutine_t = uintptr /* _pthreadtypes.h:90:14 */ 1820 1821 type U_char = uint8 /* types.h:52:23 */ 1822 type U_short = uint16 /* types.h:53:24 */ 1823 type U_int = uint32 /* types.h:54:22 */ 1824 type U_long = uint64 /* types.h:55:23 */ 1825 type Ushort = uint16 /* types.h:57:24 */ // Sys V compatibility 1826 type Uint = uint32 /* types.h:58:22 */ // Sys V compatibility 1827 1828 // XXX POSIX sized integrals that should appear only in <sys/stdint.h>. 1829 // - 1830 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 1831 // 1832 // Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org> 1833 // Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org> 1834 // All rights reserved. 1835 // 1836 // Redistribution and use in source and binary forms, with or without 1837 // modification, are permitted provided that the following conditions 1838 // are met: 1839 // 1. Redistributions of source code must retain the above copyright 1840 // notice, this list of conditions and the following disclaimer. 1841 // 2. Redistributions in binary form must reproduce the above copyright 1842 // notice, this list of conditions and the following disclaimer in the 1843 // documentation and/or other materials provided with the distribution. 1844 // 1845 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1846 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1847 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1848 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1849 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1850 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1851 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1852 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1853 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 1854 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1855 // SUCH DAMAGE. 1856 // 1857 // $FreeBSD$ 1858 1859 type Int8_t = X__int8_t /* _stdint.h:36:19 */ 1860 1861 type Int16_t = X__int16_t /* _stdint.h:41:20 */ 1862 1863 type Int32_t = X__int32_t /* _stdint.h:46:20 */ 1864 1865 type Int64_t = X__int64_t /* _stdint.h:51:20 */ 1866 1867 type Uint8_t = X__uint8_t /* _stdint.h:56:20 */ 1868 1869 type Uint16_t = X__uint16_t /* _stdint.h:61:21 */ 1870 1871 type Uint32_t = X__uint32_t /* _stdint.h:66:21 */ 1872 1873 type Uint64_t = X__uint64_t /* _stdint.h:71:21 */ 1874 1875 type Intptr_t = X__intptr_t /* _stdint.h:76:21 */ 1876 type Uintptr_t = X__uintptr_t /* _stdint.h:80:22 */ 1877 type Intmax_t = X__intmax_t /* _stdint.h:84:21 */ 1878 type Uintmax_t = X__uintmax_t /* _stdint.h:88:22 */ 1879 1880 type U_int8_t = X__uint8_t /* types.h:67:19 */ // unsigned integrals (deprecated) 1881 type U_int16_t = X__uint16_t /* types.h:68:20 */ 1882 type U_int32_t = X__uint32_t /* types.h:69:20 */ 1883 type U_int64_t = X__uint64_t /* types.h:70:20 */ 1884 1885 type U_quad_t = X__uint64_t /* types.h:72:20 */ // quads (deprecated) 1886 type Quad_t = X__int64_t /* types.h:73:19 */ 1887 type Qaddr_t = uintptr /* types.h:74:16 */ 1888 1889 type Caddr_t = uintptr /* types.h:76:14 */ // core address 1890 type C_caddr_t = uintptr /* types.h:77:20 */ // core address, pointer to const 1891 1892 type Blksize_t = X__blksize_t /* types.h:80:21 */ 1893 1894 type Cpuwhich_t = X__cpuwhich_t /* types.h:84:22 */ 1895 type Cpulevel_t = X__cpulevel_t /* types.h:85:22 */ 1896 type Cpusetid_t = X__cpusetid_t /* types.h:86:22 */ 1897 1898 type Blkcnt_t = X__blkcnt_t /* types.h:89:20 */ 1899 1900 type Clock_t = X__clock_t /* types.h:94:19 */ 1901 1902 type Clockid_t = X__clockid_t /* types.h:99:21 */ 1903 1904 type Critical_t = X__critical_t /* types.h:103:22 */ // Critical section value 1905 type Daddr_t = X__daddr_t /* types.h:104:19 */ // disk address 1906 1907 type Dev_t = X__dev_t /* types.h:107:18 */ // device number or struct cdev 1908 1909 type Fflags_t = X__fflags_t /* types.h:112:20 */ // file flags 1910 1911 type Fixpt_t = X__fixpt_t /* types.h:116:19 */ // fixed point number 1912 1913 type Fsblkcnt_t = X__fsblkcnt_t /* types.h:119:22 */ 1914 type Fsfilcnt_t = X__fsfilcnt_t /* types.h:120:22 */ 1915 1916 type Gid_t = X__gid_t /* types.h:125:18 */ // group id 1917 1918 type In_addr_t = X__uint32_t /* types.h:130:20 */ // base type for internet address 1919 1920 type In_port_t = X__uint16_t /* types.h:135:20 */ 1921 1922 type Id_t = X__id_t /* types.h:140:17 */ // can hold a uid_t or pid_t 1923 1924 type Ino_t = X__ino_t /* types.h:145:18 */ // inode number 1925 1926 type Key_t = X__key_t /* types.h:150:18 */ // IPC key (for Sys V IPC) 1927 1928 type Lwpid_t = X__lwpid_t /* types.h:155:19 */ // Thread ID (a.k.a. LWP) 1929 1930 type Mode_t = X__mode_t /* types.h:160:18 */ // permissions 1931 1932 type Accmode_t = X__accmode_t /* types.h:165:21 */ // access permissions 1933 1934 type Nlink_t = X__nlink_t /* types.h:170:19 */ // link count 1935 1936 type Off_t = X__off_t /* types.h:175:18 */ // file offset 1937 1938 type Off64_t = X__off64_t /* types.h:180:19 */ // file offset (alias) 1939 1940 type Pid_t = X__pid_t /* types.h:185:18 */ // process id 1941 1942 type Register_t = X__register_t /* types.h:189:22 */ 1943 1944 type Rlim_t = X__rlim_t /* types.h:192:18 */ // resource limit 1945 1946 type Sbintime_t = X__int64_t /* types.h:196:19 */ 1947 1948 type Segsz_t = X__segsz_t /* types.h:198:19 */ // segment size (in pages) 1949 1950 type Ssize_t = X__ssize_t /* types.h:206:19 */ 1951 1952 type Suseconds_t = X__suseconds_t /* types.h:211:23 */ // microseconds (signed) 1953 1954 type Time_t = X__time_t /* types.h:216:18 */ 1955 1956 type Timer_t = X__timer_t /* types.h:221:19 */ 1957 1958 type Mqd_t = X__mqd_t /* types.h:226:17 */ 1959 1960 type U_register_t = X__u_register_t /* types.h:230:24 */ 1961 1962 type Uid_t = X__uid_t /* types.h:233:18 */ // user id 1963 1964 type Useconds_t = X__useconds_t /* types.h:238:22 */ // microseconds (unsigned) 1965 1966 type Cap_ioctl_t = uint64 /* types.h:244:23 */ 1967 1968 // Types suitable for exporting physical addresses, virtual addresses 1969 // (pointers), and memory object sizes from the kernel independent of native 1970 // word size. These should be used in place of vm_paddr_t, (u)intptr_t, and 1971 // size_t in structs which contain such types that are shared with userspace. 1972 type Kpaddr_t = X__uint64_t /* types.h:260:20 */ 1973 type Kvaddr_t = X__uint64_t /* types.h:261:20 */ 1974 type Ksize_t = X__uint64_t /* types.h:262:20 */ 1975 type Kssize_t = X__int64_t /* types.h:263:19 */ 1976 1977 type Vm_offset_t = X__vm_offset_t /* types.h:265:23 */ 1978 type Vm_ooffset_t = X__uint64_t /* types.h:266:20 */ 1979 type Vm_paddr_t = X__vm_paddr_t /* types.h:267:22 */ 1980 type Vm_pindex_t = X__uint64_t /* types.h:268:20 */ 1981 type Vm_size_t = X__vm_size_t /* types.h:269:21 */ 1982 1983 type Rman_res_t = X__rman_res_t /* types.h:271:25 */ 1984 1985 // - 1986 // SPDX-License-Identifier: BSD-3-Clause 1987 // 1988 // Copyright (c) 1992, 1993 1989 // The Regents of the University of California. All rights reserved. 1990 // 1991 // Redistribution and use in source and binary forms, with or without 1992 // modification, are permitted provided that the following conditions 1993 // are met: 1994 // 1. Redistributions of source code must retain the above copyright 1995 // notice, this list of conditions and the following disclaimer. 1996 // 2. Redistributions in binary form must reproduce the above copyright 1997 // notice, this list of conditions and the following disclaimer in the 1998 // documentation and/or other materials provided with the distribution. 1999 // 3. Neither the name of the University nor the names of its contributors 2000 // may be used to endorse or promote products derived from this software 2001 // without specific prior written permission. 2002 // 2003 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2004 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2005 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2006 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2007 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2008 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2009 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2010 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2011 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2012 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2013 // SUCH DAMAGE. 2014 // 2015 // $FreeBSD$ 2016 2017 // - 2018 // SPDX-License-Identifier: BSD-3-Clause 2019 // 2020 // Copyright (c) 1991, 1993 2021 // The Regents of the University of California. All rights reserved. 2022 // 2023 // This code is derived from software contributed to Berkeley by 2024 // Berkeley Software Design, Inc. 2025 // 2026 // Redistribution and use in source and binary forms, with or without 2027 // modification, are permitted provided that the following conditions 2028 // are met: 2029 // 1. Redistributions of source code must retain the above copyright 2030 // notice, this list of conditions and the following disclaimer. 2031 // 2. Redistributions in binary form must reproduce the above copyright 2032 // notice, this list of conditions and the following disclaimer in the 2033 // documentation and/or other materials provided with the distribution. 2034 // 3. Neither the name of the University nor the names of its contributors 2035 // may be used to endorse or promote products derived from this software 2036 // without specific prior written permission. 2037 // 2038 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2039 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2040 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2041 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2042 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2043 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2044 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2045 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2046 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2047 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2048 // SUCH DAMAGE. 2049 // 2050 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 2051 // $FreeBSD$ 2052 2053 // - 2054 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2055 // 2056 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2057 // All rights reserved. 2058 // 2059 // Redistribution and use in source and binary forms, with or without 2060 // modification, are permitted provided that the following conditions 2061 // are met: 2062 // 1. Redistributions of source code must retain the above copyright 2063 // notice, this list of conditions and the following disclaimer. 2064 // 2. Redistributions in binary form must reproduce the above copyright 2065 // notice, this list of conditions and the following disclaimer in the 2066 // documentation and/or other materials provided with the distribution. 2067 // 2068 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2069 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2070 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2071 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2072 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2073 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2074 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2075 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2076 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2077 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2078 // SUCH DAMAGE. 2079 // 2080 // $FreeBSD$ 2081 2082 // - 2083 // SPDX-License-Identifier: BSD-3-Clause 2084 // 2085 // Copyright (c) 1982, 1986, 1989, 1991, 1993 2086 // The Regents of the University of California. All rights reserved. 2087 // (c) UNIX System Laboratories, Inc. 2088 // All or some portions of this file are derived from material licensed 2089 // to the University of California by American Telephone and Telegraph 2090 // Co. or Unix System Laboratories, Inc. and are reproduced herein with 2091 // the permission of UNIX System Laboratories, Inc. 2092 // 2093 // Redistribution and use in source and binary forms, with or without 2094 // modification, are permitted provided that the following conditions 2095 // are met: 2096 // 1. Redistributions of source code must retain the above copyright 2097 // notice, this list of conditions and the following disclaimer. 2098 // 2. Redistributions in binary form must reproduce the above copyright 2099 // notice, this list of conditions and the following disclaimer in the 2100 // documentation and/or other materials provided with the distribution. 2101 // 3. Neither the name of the University nor the names of its contributors 2102 // may be used to endorse or promote products derived from this software 2103 // without specific prior written permission. 2104 // 2105 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2106 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2107 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2108 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2109 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2110 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2111 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2112 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2113 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2114 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2115 // SUCH DAMAGE. 2116 // 2117 // @(#)signal.h 8.4 (Berkeley) 5/4/95 2118 // $FreeBSD$ 2119 2120 // sigset_t macros. 2121 2122 type X__sigset = struct{ F__bits [4]X__uint32_t } /* _sigset.h:53:9 */ 2123 2124 // - 2125 // SPDX-License-Identifier: BSD-3-Clause 2126 // 2127 // Copyright (c) 1992, 1993 2128 // The Regents of the University of California. All rights reserved. 2129 // 2130 // Redistribution and use in source and binary forms, with or without 2131 // modification, are permitted provided that the following conditions 2132 // are met: 2133 // 1. Redistributions of source code must retain the above copyright 2134 // notice, this list of conditions and the following disclaimer. 2135 // 2. Redistributions in binary form must reproduce the above copyright 2136 // notice, this list of conditions and the following disclaimer in the 2137 // documentation and/or other materials provided with the distribution. 2138 // 3. Neither the name of the University nor the names of its contributors 2139 // may be used to endorse or promote products derived from this software 2140 // without specific prior written permission. 2141 // 2142 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2143 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2144 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2145 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2146 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2147 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2148 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2149 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2150 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2151 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2152 // SUCH DAMAGE. 2153 // 2154 // $FreeBSD$ 2155 2156 // - 2157 // SPDX-License-Identifier: BSD-3-Clause 2158 // 2159 // Copyright (c) 1991, 1993 2160 // The Regents of the University of California. All rights reserved. 2161 // 2162 // This code is derived from software contributed to Berkeley by 2163 // Berkeley Software Design, Inc. 2164 // 2165 // Redistribution and use in source and binary forms, with or without 2166 // modification, are permitted provided that the following conditions 2167 // are met: 2168 // 1. Redistributions of source code must retain the above copyright 2169 // notice, this list of conditions and the following disclaimer. 2170 // 2. Redistributions in binary form must reproduce the above copyright 2171 // notice, this list of conditions and the following disclaimer in the 2172 // documentation and/or other materials provided with the distribution. 2173 // 3. Neither the name of the University nor the names of its contributors 2174 // may be used to endorse or promote products derived from this software 2175 // without specific prior written permission. 2176 // 2177 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2178 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2179 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2180 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2181 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2182 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2183 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2184 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2185 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2186 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2187 // SUCH DAMAGE. 2188 // 2189 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 2190 // $FreeBSD$ 2191 2192 // - 2193 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2194 // 2195 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2196 // All rights reserved. 2197 // 2198 // Redistribution and use in source and binary forms, with or without 2199 // modification, are permitted provided that the following conditions 2200 // are met: 2201 // 1. Redistributions of source code must retain the above copyright 2202 // notice, this list of conditions and the following disclaimer. 2203 // 2. Redistributions in binary form must reproduce the above copyright 2204 // notice, this list of conditions and the following disclaimer in the 2205 // documentation and/or other materials provided with the distribution. 2206 // 2207 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2208 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2209 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2210 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2211 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2212 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2213 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2214 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2215 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2216 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2217 // SUCH DAMAGE. 2218 // 2219 // $FreeBSD$ 2220 2221 // - 2222 // SPDX-License-Identifier: BSD-3-Clause 2223 // 2224 // Copyright (c) 1982, 1986, 1989, 1991, 1993 2225 // The Regents of the University of California. All rights reserved. 2226 // (c) UNIX System Laboratories, Inc. 2227 // All or some portions of this file are derived from material licensed 2228 // to the University of California by American Telephone and Telegraph 2229 // Co. or Unix System Laboratories, Inc. and are reproduced herein with 2230 // the permission of UNIX System Laboratories, Inc. 2231 // 2232 // Redistribution and use in source and binary forms, with or without 2233 // modification, are permitted provided that the following conditions 2234 // are met: 2235 // 1. Redistributions of source code must retain the above copyright 2236 // notice, this list of conditions and the following disclaimer. 2237 // 2. Redistributions in binary form must reproduce the above copyright 2238 // notice, this list of conditions and the following disclaimer in the 2239 // documentation and/or other materials provided with the distribution. 2240 // 3. Neither the name of the University nor the names of its contributors 2241 // may be used to endorse or promote products derived from this software 2242 // without specific prior written permission. 2243 // 2244 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2245 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2246 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2247 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2248 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2249 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2250 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2251 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2252 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2253 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2254 // SUCH DAMAGE. 2255 // 2256 // @(#)signal.h 8.4 (Berkeley) 5/4/95 2257 // $FreeBSD$ 2258 2259 // sigset_t macros. 2260 2261 type X__sigset_t = X__sigset /* _sigset.h:55:3 */ 2262 2263 // - 2264 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2265 // 2266 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2267 // All rights reserved. 2268 // 2269 // Redistribution and use in source and binary forms, with or without 2270 // modification, are permitted provided that the following conditions 2271 // are met: 2272 // 1. Redistributions of source code must retain the above copyright 2273 // notice, this list of conditions and the following disclaimer. 2274 // 2. Redistributions in binary form must reproduce the above copyright 2275 // notice, this list of conditions and the following disclaimer in the 2276 // documentation and/or other materials provided with the distribution. 2277 // 2278 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2279 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2280 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2281 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2282 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2283 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2284 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2285 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2286 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2287 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2288 // SUCH DAMAGE. 2289 // 2290 // $FreeBSD$ 2291 2292 // - 2293 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2294 // 2295 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2296 // All rights reserved. 2297 // 2298 // Redistribution and use in source and binary forms, with or without 2299 // modification, are permitted provided that the following conditions 2300 // are met: 2301 // 1. Redistributions of source code must retain the above copyright 2302 // notice, this list of conditions and the following disclaimer. 2303 // 2. Redistributions in binary form must reproduce the above copyright 2304 // notice, this list of conditions and the following disclaimer in the 2305 // documentation and/or other materials provided with the distribution. 2306 // 2307 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2308 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2309 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2310 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2311 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2312 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2313 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2314 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2315 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2316 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2317 // SUCH DAMAGE. 2318 // 2319 // $FreeBSD$ 2320 2321 // Structure returned by gettimeofday(2) system call, and used in other calls. 2322 type Timeval = struct { 2323 Ftv_sec Time_t 2324 Ftv_usec Suseconds_t 2325 } /* _timeval.h:49:1 */ 2326 2327 // - 2328 // SPDX-License-Identifier: BSD-3-Clause 2329 // 2330 // Copyright (c) 1982, 1986, 1993 2331 // The Regents of the University of California. All rights reserved. 2332 // 2333 // Redistribution and use in source and binary forms, with or without 2334 // modification, are permitted provided that the following conditions 2335 // are met: 2336 // 1. Redistributions of source code must retain the above copyright 2337 // notice, this list of conditions and the following disclaimer. 2338 // 2. Redistributions in binary form must reproduce the above copyright 2339 // notice, this list of conditions and the following disclaimer in the 2340 // documentation and/or other materials provided with the distribution. 2341 // 3. Neither the name of the University nor the names of its contributors 2342 // may be used to endorse or promote products derived from this software 2343 // without specific prior written permission. 2344 // 2345 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2346 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2347 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2348 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2349 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2350 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2351 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2352 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2353 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2354 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2355 // SUCH DAMAGE. 2356 // 2357 // @(#)time.h 8.5 (Berkeley) 5/4/95 2358 // from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp 2359 // $FreeBSD$ 2360 2361 // - 2362 // SPDX-License-Identifier: BSD-3-Clause 2363 // 2364 // Copyright (c) 1991, 1993 2365 // The Regents of the University of California. All rights reserved. 2366 // 2367 // This code is derived from software contributed to Berkeley by 2368 // Berkeley Software Design, Inc. 2369 // 2370 // Redistribution and use in source and binary forms, with or without 2371 // modification, are permitted provided that the following conditions 2372 // are met: 2373 // 1. Redistributions of source code must retain the above copyright 2374 // notice, this list of conditions and the following disclaimer. 2375 // 2. Redistributions in binary form must reproduce the above copyright 2376 // notice, this list of conditions and the following disclaimer in the 2377 // documentation and/or other materials provided with the distribution. 2378 // 3. Neither the name of the University nor the names of its contributors 2379 // may be used to endorse or promote products derived from this software 2380 // without specific prior written permission. 2381 // 2382 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2383 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2384 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2385 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2386 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2387 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2388 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2389 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2390 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2391 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2392 // SUCH DAMAGE. 2393 // 2394 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 2395 // $FreeBSD$ 2396 2397 // - 2398 // SPDX-License-Identifier: BSD-3-Clause 2399 // 2400 // Copyright (c) 1982, 1986, 1993 2401 // The Regents of the University of California. All rights reserved. 2402 // 2403 // Redistribution and use in source and binary forms, with or without 2404 // modification, are permitted provided that the following conditions 2405 // are met: 2406 // 1. Redistributions of source code must retain the above copyright 2407 // notice, this list of conditions and the following disclaimer. 2408 // 2. Redistributions in binary form must reproduce the above copyright 2409 // notice, this list of conditions and the following disclaimer in the 2410 // documentation and/or other materials provided with the distribution. 2411 // 3. Neither the name of the University nor the names of its contributors 2412 // may be used to endorse or promote products derived from this software 2413 // without specific prior written permission. 2414 // 2415 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2416 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2417 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2418 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2419 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2420 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2421 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2422 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2423 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2424 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2425 // SUCH DAMAGE. 2426 // 2427 // @(#)time.h 8.5 (Berkeley) 5/4/95 2428 // from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp 2429 // $FreeBSD$ 2430 2431 // - 2432 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2433 // 2434 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2435 // All rights reserved. 2436 // 2437 // Redistribution and use in source and binary forms, with or without 2438 // modification, are permitted provided that the following conditions 2439 // are met: 2440 // 1. Redistributions of source code must retain the above copyright 2441 // notice, this list of conditions and the following disclaimer. 2442 // 2. Redistributions in binary form must reproduce the above copyright 2443 // notice, this list of conditions and the following disclaimer in the 2444 // documentation and/or other materials provided with the distribution. 2445 // 2446 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2447 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2448 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2449 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2450 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2451 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2452 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2453 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2454 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2455 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2456 // SUCH DAMAGE. 2457 // 2458 // $FreeBSD$ 2459 2460 type Timespec = struct { 2461 Ftv_sec Time_t 2462 Ftv_nsec int64 2463 } /* _timespec.h:46:1 */ 2464 2465 // Structure defined by POSIX.1b to be like a itimerval, but with 2466 // timespecs. Used in the timer_*() system calls. 2467 type Itimerspec = struct { 2468 Fit_interval struct { 2469 Ftv_sec Time_t 2470 Ftv_nsec int64 2471 } 2472 Fit_value struct { 2473 Ftv_sec Time_t 2474 Ftv_nsec int64 2475 } 2476 } /* timespec.h:60:1 */ 2477 2478 type X__fd_mask = uint64 /* select.h:44:23 */ 2479 type Fd_mask = X__fd_mask /* select.h:46:19 */ 2480 2481 type Sigset_t = X__sigset_t /* select.h:51:20 */ 2482 2483 // Select uses bit masks of file descriptors in longs. These macros 2484 // manipulate such bit fields (the filesystem macros use chars). 2485 // FD_SETSIZE may be defined by the user, but the default here should 2486 // be enough for most uses. 2487 2488 type Fd_set1 = struct{ F__fds_bits [16]X__fd_mask } /* select.h:73:9 */ 2489 2490 // Select uses bit masks of file descriptors in longs. These macros 2491 // manipulate such bit fields (the filesystem macros use chars). 2492 // FD_SETSIZE may be defined by the user, but the default here should 2493 // be enough for most uses. 2494 2495 type Fd_set = Fd_set1 /* select.h:75:3 */ 2496 2497 // - 2498 // This file is in the public domain. 2499 // $FreeBSD$ 2500 2501 // - 2502 // SPDX-License-Identifier: BSD-2-Clause 2503 // 2504 // Copyright (c) 2017 Poul-Henning Kamp. All rights reserved. 2505 // 2506 // Redistribution and use in source and binary forms, with or without 2507 // modification, are permitted provided that the following conditions 2508 // are met: 2509 // 1. Redistributions of source code must retain the above copyright 2510 // notice, this list of conditions and the following disclaimer. 2511 // 2. Redistributions in binary form must reproduce the above copyright 2512 // notice, this list of conditions and the following disclaimer in the 2513 // documentation and/or other materials provided with the distribution. 2514 // 2515 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2516 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2517 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2518 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2519 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2520 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2521 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2522 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2523 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2524 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2525 // SUCH DAMAGE. 2526 // 2527 // $FreeBSD$ 2528 2529 // - 2530 // SPDX-License-Identifier: BSD-3-Clause 2531 // 2532 // Copyright (c) 2002 David E. O'Brien. All rights reserved. 2533 // 2534 // Redistribution and use in source and binary forms, with or without 2535 // modification, are permitted provided that the following conditions 2536 // are met: 2537 // 1. Redistributions of source code must retain the above copyright 2538 // notice, this list of conditions and the following disclaimer. 2539 // 2. Redistributions in binary form must reproduce the above copyright 2540 // notice, this list of conditions and the following disclaimer in the 2541 // documentation and/or other materials provided with the distribution. 2542 // 3. Neither the name of the University nor the names of its contributors 2543 // may be used to endorse or promote products derived from this software 2544 // without specific prior written permission. 2545 // 2546 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2547 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2548 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2549 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2550 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2551 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2552 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2553 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2554 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2555 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2556 // SUCH DAMAGE. 2557 // 2558 // $FreeBSD$ 2559 2560 // - 2561 // SPDX-License-Identifier: BSD-3-Clause 2562 // 2563 // Copyright (c) 1991, 1993 2564 // The Regents of the University of California. All rights reserved. 2565 // 2566 // This code is derived from software contributed to Berkeley by 2567 // Berkeley Software Design, Inc. 2568 // 2569 // Redistribution and use in source and binary forms, with or without 2570 // modification, are permitted provided that the following conditions 2571 // are met: 2572 // 1. Redistributions of source code must retain the above copyright 2573 // notice, this list of conditions and the following disclaimer. 2574 // 2. Redistributions in binary form must reproduce the above copyright 2575 // notice, this list of conditions and the following disclaimer in the 2576 // documentation and/or other materials provided with the distribution. 2577 // 3. Neither the name of the University nor the names of its contributors 2578 // may be used to endorse or promote products derived from this software 2579 // without specific prior written permission. 2580 // 2581 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2582 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2583 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2584 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2585 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2586 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2587 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2588 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2589 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2590 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2591 // SUCH DAMAGE. 2592 // 2593 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 2594 // $FreeBSD$ 2595 2596 // - 2597 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 2598 // 2599 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 2600 // All rights reserved. 2601 // 2602 // Redistribution and use in source and binary forms, with or without 2603 // modification, are permitted provided that the following conditions 2604 // are met: 2605 // 1. Redistributions of source code must retain the above copyright 2606 // notice, this list of conditions and the following disclaimer. 2607 // 2. Redistributions in binary form must reproduce the above copyright 2608 // notice, this list of conditions and the following disclaimer in the 2609 // documentation and/or other materials provided with the distribution. 2610 // 2611 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2612 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2613 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2614 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2615 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2616 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2617 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2618 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2619 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2620 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2621 // SUCH DAMAGE. 2622 // 2623 // $FreeBSD$ 2624 2625 type Va_list = X__va_list /* _stdarg.h:41:27 */ // select(2) 2626 2627 type Crypt_data = struct { 2628 Finitialized int32 2629 F__buf [256]int8 2630 } /* unistd.h:489:1 */ 2631 2632 // getopt(3) external variable 2633 2634 // MVS linker does not support external names larger than 8 bytes 2635 2636 // 2637 // The 'zlib' compression library provides in-memory compression and 2638 // decompression functions, including integrity checks of the uncompressed data. 2639 // This version of the library supports only one compression method (deflation) 2640 // but other algorithms will be added later and will have the same stream 2641 // interface. 2642 // 2643 // Compression can be done in a single step if the buffers are large enough, 2644 // or can be done by repeated calls of the compression function. In the latter 2645 // case, the application must provide more input and/or consume the output 2646 // (providing more output space) before each call. 2647 // 2648 // The compressed data format used by default by the in-memory functions is 2649 // the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped 2650 // around a deflate stream, which is itself documented in RFC 1951. 2651 // 2652 // The library also supports reading and writing files in gzip (.gz) format 2653 // with an interface similar to that of stdio using the functions that start 2654 // with "gz". The gzip format is different from the zlib format. gzip is a 2655 // gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. 2656 // 2657 // This library can optionally read and write gzip and raw deflate streams in 2658 // memory as well. 2659 // 2660 // The zlib format was designed to be compact and fast for use in memory 2661 // and on communications channels. The gzip format was designed for single- 2662 // file compression on file systems, has a larger header than zlib to maintain 2663 // directory information, and uses a different, slower check method than zlib. 2664 // 2665 // The library does not install any signal handler. The decoder checks 2666 // the consistency of the compressed data, so the library should never crash 2667 // even in the case of corrupted input. 2668 2669 type Alloc_func = uintptr /* zlib.h:81:16 */ 2670 type Free_func = uintptr /* zlib.h:82:16 */ 2671 2672 type Internal_state = struct { 2673 Fstrm Z_streamp 2674 Fstatus int32 2675 F__ccgo_pad1 [4]byte 2676 Fpending_buf uintptr 2677 Fpending_buf_size Ulg 2678 Fpending_out uintptr 2679 Fpending Ulg 2680 Fwrap int32 2681 F__ccgo_pad2 [4]byte 2682 Fgzhead Gz_headerp 2683 Fgzindex Ulg 2684 Fmethod Byte 2685 F__ccgo_pad3 [3]byte 2686 Flast_flush int32 2687 Fw_size UInt 2688 Fw_bits UInt 2689 Fw_mask UInt 2690 F__ccgo_pad4 [4]byte 2691 Fwindow uintptr 2692 Fwindow_size Ulg 2693 Fprev uintptr 2694 Fhead uintptr 2695 Fins_h UInt 2696 Fhash_size UInt 2697 Fhash_bits UInt 2698 Fhash_mask UInt 2699 Fhash_shift UInt 2700 F__ccgo_pad5 [4]byte 2701 Fblock_start int64 2702 Fmatch_length UInt 2703 Fprev_match IPos 2704 Fmatch_available int32 2705 Fstrstart UInt 2706 Fmatch_start UInt 2707 Flookahead UInt 2708 Fprev_length UInt 2709 Fmax_chain_length UInt 2710 Fmax_lazy_match UInt 2711 Flevel int32 2712 Fstrategy int32 2713 Fgood_match UInt 2714 Fnice_match int32 2715 Fdyn_ltree [573]struct { 2716 Ffc struct{ Ffreq Ush } 2717 Fdl struct{ Fdad Ush } 2718 } 2719 Fdyn_dtree [61]struct { 2720 Ffc struct{ Ffreq Ush } 2721 Fdl struct{ Fdad Ush } 2722 } 2723 Fbl_tree [39]struct { 2724 Ffc struct{ Ffreq Ush } 2725 Fdl struct{ Fdad Ush } 2726 } 2727 Fl_desc struct { 2728 Fdyn_tree uintptr 2729 Fmax_code int32 2730 F__ccgo_pad1 [4]byte 2731 Fstat_desc uintptr 2732 } 2733 Fd_desc struct { 2734 Fdyn_tree uintptr 2735 Fmax_code int32 2736 F__ccgo_pad1 [4]byte 2737 Fstat_desc uintptr 2738 } 2739 Fbl_desc struct { 2740 Fdyn_tree uintptr 2741 Fmax_code int32 2742 F__ccgo_pad1 [4]byte 2743 Fstat_desc uintptr 2744 } 2745 Fbl_count [16]Ush 2746 Fheap [573]int32 2747 Fheap_len int32 2748 Fheap_max int32 2749 Fdepth [573]Uch 2750 F__ccgo_pad6 [7]byte 2751 Fl_buf uintptr 2752 Flit_bufsize UInt 2753 Flast_lit UInt 2754 Fd_buf uintptr 2755 Fopt_len Ulg 2756 Fstatic_len Ulg 2757 Fmatches UInt 2758 Finsert UInt 2759 Fbi_buf Ush 2760 F__ccgo_pad7 [2]byte 2761 Fbi_valid int32 2762 Fhigh_water Ulg 2763 } /* zlib.h:84:1 */ 2764 2765 type Z_stream_s = struct { 2766 Fnext_in uintptr 2767 Favail_in UInt 2768 F__ccgo_pad1 [4]byte 2769 Ftotal_in ULong 2770 Fnext_out uintptr 2771 Favail_out UInt 2772 F__ccgo_pad2 [4]byte 2773 Ftotal_out ULong 2774 Fmsg uintptr 2775 Fstate uintptr 2776 Fzalloc Alloc_func 2777 Fzfree Free_func 2778 Fopaque Voidpf 2779 Fdata_type int32 2780 F__ccgo_pad3 [4]byte 2781 Fadler ULong 2782 Freserved ULong 2783 } /* zlib.h:86:9 */ 2784 2785 type Z_stream = Z_stream_s /* zlib.h:106:3 */ 2786 2787 type Z_streamp = uintptr /* zlib.h:108:22 */ 2788 2789 // 2790 // gzip header information passed to and from zlib routines. See RFC 1952 2791 // for more details on the meanings of these fields. 2792 type Gz_header_s = struct { 2793 Ftext int32 2794 F__ccgo_pad1 [4]byte 2795 Ftime ULong 2796 Fxflags int32 2797 Fos int32 2798 Fextra uintptr 2799 Fextra_len UInt 2800 Fextra_max UInt 2801 Fname uintptr 2802 Fname_max UInt 2803 F__ccgo_pad2 [4]byte 2804 Fcomment uintptr 2805 Fcomm_max UInt 2806 Fhcrc int32 2807 Fdone int32 2808 F__ccgo_pad3 [4]byte 2809 } /* zlib.h:114:9 */ 2810 2811 // 2812 // gzip header information passed to and from zlib routines. See RFC 1952 2813 // for more details on the meanings of these fields. 2814 type Gz_header = Gz_header_s /* zlib.h:129:3 */ 2815 2816 type Gz_headerp = uintptr /* zlib.h:131:23 */ 2817 // 2818 // inflateGetHeader() requests that gzip header information be stored in the 2819 // provided gz_header structure. inflateGetHeader() may be called after 2820 // inflateInit2() or inflateReset(), and before the first call of inflate(). 2821 // As inflate() processes the gzip stream, head->done is zero until the header 2822 // is completed, at which time head->done is set to one. If a zlib stream is 2823 // being decoded, then head->done is set to -1 to indicate that there will be 2824 // no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be 2825 // used to force inflate() to return immediately after header processing is 2826 // complete and before any actual data is decompressed. 2827 // 2828 // The text, time, xflags, and os fields are filled in with the gzip header 2829 // contents. hcrc is set to true if there is a header CRC. (The header CRC 2830 // was valid if done is set to one.) If extra is not Z_NULL, then extra_max 2831 // contains the maximum number of bytes to write to extra. Once done is true, 2832 // extra_len contains the actual extra field length, and extra contains the 2833 // extra field, or that field truncated if extra_max is less than extra_len. 2834 // If name is not Z_NULL, then up to name_max characters are written there, 2835 // terminated with a zero unless the length is greater than name_max. If 2836 // comment is not Z_NULL, then up to comm_max characters are written there, 2837 // terminated with a zero unless the length is greater than comm_max. When any 2838 // of extra, name, or comment are not Z_NULL and the respective field is not 2839 // present in the header, then that field is set to Z_NULL to signal its 2840 // absence. This allows the use of deflateSetHeader() with the returned 2841 // structure to duplicate the header. However if those fields are set to 2842 // allocated memory, then the application will need to save those pointers 2843 // elsewhere so that they can be eventually freed. 2844 // 2845 // If inflateGetHeader is not used, then the header information is simply 2846 // discarded. The header is always checked for validity, including the header 2847 // CRC if present. inflateReset() will reset the process to discard the header 2848 // information. The application would need to call inflateGetHeader() again to 2849 // retrieve the header from the next gzip stream. 2850 // 2851 // inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source 2852 // stream state was inconsistent. 2853 2854 // 2855 // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, 2856 // unsigned char FAR *window)); 2857 // 2858 // Initialize the internal stream state for decompression using inflateBack() 2859 // calls. The fields zalloc, zfree and opaque in strm must be initialized 2860 // before the call. If zalloc and zfree are Z_NULL, then the default library- 2861 // derived memory allocation routines are used. windowBits is the base two 2862 // logarithm of the window size, in the range 8..15. window is a caller 2863 // supplied buffer of that size. Except for special applications where it is 2864 // assured that deflate was used with small window sizes, windowBits must be 15 2865 // and a 32K byte window must be supplied to be able to decompress general 2866 // deflate streams. 2867 // 2868 // See inflateBack() for the usage of these routines. 2869 // 2870 // inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of 2871 // the parameters are invalid, Z_MEM_ERROR if the internal state could not be 2872 // allocated, or Z_VERSION_ERROR if the version of the library does not match 2873 // the version of the header file. 2874 2875 type In_func = uintptr /* zlib.h:1092:18 */ 2876 type Out_func = uintptr /* zlib.h:1094:13 */ 2877 // 2878 // Same as uncompress, except that sourceLen is a pointer, where the 2879 // length of the source is *sourceLen. On return, *sourceLen is the number of 2880 // source bytes consumed. 2881 2882 // gzip file access functions 2883 2884 // 2885 // This library supports reading and writing files in gzip (.gz) format with 2886 // an interface similar to that of stdio, using the functions that start with 2887 // "gz". The gzip format is different from the zlib format. gzip is a gzip 2888 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 2889 2890 type GzFile_s = struct { 2891 Fhave uint32 2892 F__ccgo_pad1 [4]byte 2893 Fnext uintptr 2894 Fpos Off_t 2895 } /* zlib.h:1300:9 */ 2896 2897 // 2898 // Same as uncompress, except that sourceLen is a pointer, where the 2899 // length of the source is *sourceLen. On return, *sourceLen is the number of 2900 // source bytes consumed. 2901 2902 // gzip file access functions 2903 2904 // 2905 // This library supports reading and writing files in gzip (.gz) format with 2906 // an interface similar to that of stdio, using the functions that start with 2907 // "gz". The gzip format is different from the zlib format. gzip is a gzip 2908 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 2909 2910 type GzFile = uintptr /* zlib.h:1300:25 */ 2911 2912 // - 2913 // Copyright (c) 2011, 2012 The FreeBSD Foundation 2914 // All rights reserved. 2915 // 2916 // Redistribution and use in source and binary forms, with or without 2917 // modification, are permitted provided that the following conditions 2918 // are met: 2919 // 1. Redistributions of source code must retain the above copyright 2920 // notice, this list of conditions and the following disclaimer. 2921 // 2. Redistributions in binary form must reproduce the above copyright 2922 // notice, this list of conditions and the following disclaimer in the 2923 // documentation and/or other materials provided with the distribution. 2924 // 2925 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2926 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2927 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2928 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2929 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2930 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2931 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2932 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2933 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2934 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2935 // SUCH DAMAGE. 2936 // 2937 // $FreeBSD$ 2938 2939 type Locale_t = uintptr /* _strings.h:31:25 */ 2940 2941 // xlocale extensions 2942 2943 type Errno_t = int32 /* string.h:156:13 */ 2944 2945 // - 2946 // SPDX-License-Identifier: BSD-3-Clause 2947 // 2948 // Copyright (c) 1990, 1993 2949 // The Regents of the University of California. All rights reserved. 2950 // 2951 // Redistribution and use in source and binary forms, with or without 2952 // modification, are permitted provided that the following conditions 2953 // are met: 2954 // 1. Redistributions of source code must retain the above copyright 2955 // notice, this list of conditions and the following disclaimer. 2956 // 2. Redistributions in binary form must reproduce the above copyright 2957 // notice, this list of conditions and the following disclaimer in the 2958 // documentation and/or other materials provided with the distribution. 2959 // 3. Neither the name of the University nor the names of its contributors 2960 // may be used to endorse or promote products derived from this software 2961 // without specific prior written permission. 2962 // 2963 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2964 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2965 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2966 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2967 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2968 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2969 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2970 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2971 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2972 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2973 // SUCH DAMAGE. 2974 // 2975 // @(#)stdlib.h 8.5 (Berkeley) 5/19/95 2976 // $FreeBSD$ 2977 2978 // - 2979 // SPDX-License-Identifier: BSD-3-Clause 2980 // 2981 // Copyright (c) 1991, 1993 2982 // The Regents of the University of California. All rights reserved. 2983 // 2984 // This code is derived from software contributed to Berkeley by 2985 // Berkeley Software Design, Inc. 2986 // 2987 // Redistribution and use in source and binary forms, with or without 2988 // modification, are permitted provided that the following conditions 2989 // are met: 2990 // 1. Redistributions of source code must retain the above copyright 2991 // notice, this list of conditions and the following disclaimer. 2992 // 2. Redistributions in binary form must reproduce the above copyright 2993 // notice, this list of conditions and the following disclaimer in the 2994 // documentation and/or other materials provided with the distribution. 2995 // 3. Neither the name of the University nor the names of its contributors 2996 // may be used to endorse or promote products derived from this software 2997 // without specific prior written permission. 2998 // 2999 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 3000 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 3001 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3002 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 3003 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3004 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3005 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3006 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3007 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3008 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3009 // SUCH DAMAGE. 3010 // 3011 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 3012 // $FreeBSD$ 3013 3014 // - 3015 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3016 // 3017 // Copyright (c) 2003 Marcel Moolenaar 3018 // All rights reserved. 3019 // 3020 // Redistribution and use in source and binary forms, with or without 3021 // modification, are permitted provided that the following conditions 3022 // are met: 3023 // 3024 // 1. Redistributions of source code must retain the above copyright 3025 // notice, this list of conditions and the following disclaimer. 3026 // 2. Redistributions in binary form must reproduce the above copyright 3027 // notice, this list of conditions and the following disclaimer in the 3028 // documentation and/or other materials provided with the distribution. 3029 // 3030 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 3031 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 3032 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 3033 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 3034 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3035 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3036 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3037 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3038 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 3039 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3040 // 3041 // $FreeBSD$ 3042 3043 // - 3044 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3045 // 3046 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 3047 // All rights reserved. 3048 // 3049 // Redistribution and use in source and binary forms, with or without 3050 // modification, are permitted provided that the following conditions 3051 // are met: 3052 // 1. Redistributions of source code must retain the above copyright 3053 // notice, this list of conditions and the following disclaimer. 3054 // 2. Redistributions in binary form must reproduce the above copyright 3055 // notice, this list of conditions and the following disclaimer in the 3056 // documentation and/or other materials provided with the distribution. 3057 // 3058 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 3059 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 3060 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3061 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 3062 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3063 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3064 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3065 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3066 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3067 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3068 // SUCH DAMAGE. 3069 // 3070 // $FreeBSD$ 3071 3072 type Div_t = struct { 3073 Fquot int32 3074 Frem int32 3075 } /* stdlib.h:66:3 */ 3076 3077 type Ldiv_t = struct { 3078 Fquot int64 3079 Frem int64 3080 } /* stdlib.h:71:3 */ 3081 3082 // Functions added in C99 which we make conditionally available in the 3083 // BSD^C89 namespace if the compiler supports `long long'. 3084 // The #if test is more complicated than it ought to be because 3085 // __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long' 3086 // is not supported in the compilation environment (which therefore means 3087 // that it can't really be ISO C99). 3088 // 3089 // (The only other extension made by C99 in thie header is _Exit().) 3090 // LONGLONG 3091 type Lldiv_t = struct { 3092 Fquot int64 3093 Frem int64 3094 } /* stdlib.h:142:3 */ // getsubopt(3) external variable 3095 3096 // K.3.6 3097 type Constraint_handler_t = uintptr /* stdlib.h:349:14 */ 3098 3099 // since "static" is used to mean two completely different things in C, we 3100 // define "local" for the non-static meaning of "static", for readability 3101 // (compile with -Dlocal if your debugger can't find static symbols) 3102 3103 type Uch = uint8 /* zutil.h:43:24 */ 3104 type Uchf = Uch /* zutil.h:44:17 */ 3105 type Ush = uint16 /* zutil.h:45:24 */ 3106 type Ushf = Ush /* zutil.h:46:17 */ 3107 type Ulg = uint64 /* zutil.h:47:24 */ 3108 3109 // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 3110 3111 // use NO_DIVIDE if your processor does not do division in hardware -- 3112 // try it both ways to see which is faster 3113 3114 // ========================================================================= 3115 func Xadler32_z(tls *libc.TLS, adler ULong, buf uintptr, len Z_size_t) ULong { /* adler32.c:63:15: */ 3116 var sum2 uint64 3117 var n uint32 3118 3119 // split Adler-32 into component sums 3120 sum2 = ((adler >> 16) & uint64(0xffff)) 3121 adler = adler & (uint64(0xffff)) 3122 3123 // in case user likes doing a byte at a time, keep it fast 3124 if len == uint64(1) { 3125 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(buf)))) 3126 if adler >= uint64(BASE) { 3127 adler = adler - (uint64(BASE)) 3128 } 3129 sum2 = sum2 + (adler) 3130 if sum2 >= uint64(BASE) { 3131 sum2 = sum2 - (uint64(BASE)) 3132 } 3133 return (adler | (sum2 << 16)) 3134 } 3135 3136 // initial Adler-32 value (deferred check for len == 1 speed) 3137 if buf == uintptr(Z_NULL) { 3138 return uint64(1) 3139 } 3140 3141 // in case short lengths are provided, keep it somewhat fast 3142 if len < uint64(16) { 3143 for libc.PostDecUint64(&len, 1) != 0 { 3144 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))) 3145 sum2 = sum2 + (adler) 3146 } 3147 if adler >= uint64(BASE) { 3148 adler = adler - (uint64(BASE)) 3149 } 3150 sum2 = sum2 % (uint64(BASE)) // only added so many BASE's 3151 return (adler | (sum2 << 16)) 3152 } 3153 3154 // do length NMAX blocks -- requires just one modulo operation 3155 for len >= uint64(NMAX) { 3156 len = len - (uint64(NMAX)) 3157 n = (uint32(NMAX / 16)) // NMAX is divisible by 16 3158 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 3159 { 3160 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf))))) 3161 sum2 = sum2 + (adler) 3162 } 3163 { 3164 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1)))) 3165 sum2 = sum2 + (adler) 3166 } 3167 3168 { 3169 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2)))) 3170 sum2 = sum2 + (adler) 3171 } 3172 { 3173 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3)))) 3174 sum2 = sum2 + (adler) 3175 } 3176 3177 { 3178 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4)))) 3179 sum2 = sum2 + (adler) 3180 } 3181 { 3182 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5)))) 3183 sum2 = sum2 + (adler) 3184 } 3185 3186 { 3187 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6)))) 3188 sum2 = sum2 + (adler) 3189 } 3190 { 3191 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7)))) 3192 sum2 = sum2 + (adler) 3193 } 3194 3195 { 3196 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8)))) 3197 sum2 = sum2 + (adler) 3198 } 3199 { 3200 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9)))) 3201 sum2 = sum2 + (adler) 3202 } 3203 3204 { 3205 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10)))) 3206 sum2 = sum2 + (adler) 3207 } 3208 { 3209 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11)))) 3210 sum2 = sum2 + (adler) 3211 } 3212 3213 { 3214 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12)))) 3215 sum2 = sum2 + (adler) 3216 } 3217 { 3218 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13)))) 3219 sum2 = sum2 + (adler) 3220 } 3221 3222 { 3223 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14)))) 3224 sum2 = sum2 + (adler) 3225 } 3226 { 3227 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15)))) 3228 sum2 = sum2 + (adler) 3229 } 3230 3231 // 16 sums unrolled 3232 buf += uintptr(16) 3233 } 3234 adler = adler % (uint64(BASE)) 3235 sum2 = sum2 % (uint64(BASE)) 3236 } 3237 3238 // do remaining bytes (less than NMAX, still just one modulo) 3239 if len != 0 { // avoid modulos if none remaining 3240 for len >= uint64(16) { 3241 len = len - (uint64(16)) 3242 { 3243 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf))))) 3244 sum2 = sum2 + (adler) 3245 } 3246 { 3247 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1)))) 3248 sum2 = sum2 + (adler) 3249 } 3250 3251 { 3252 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2)))) 3253 sum2 = sum2 + (adler) 3254 } 3255 { 3256 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3)))) 3257 sum2 = sum2 + (adler) 3258 } 3259 3260 { 3261 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4)))) 3262 sum2 = sum2 + (adler) 3263 } 3264 { 3265 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5)))) 3266 sum2 = sum2 + (adler) 3267 } 3268 3269 { 3270 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6)))) 3271 sum2 = sum2 + (adler) 3272 } 3273 { 3274 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7)))) 3275 sum2 = sum2 + (adler) 3276 } 3277 3278 { 3279 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8)))) 3280 sum2 = sum2 + (adler) 3281 } 3282 { 3283 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9)))) 3284 sum2 = sum2 + (adler) 3285 } 3286 3287 { 3288 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10)))) 3289 sum2 = sum2 + (adler) 3290 } 3291 { 3292 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11)))) 3293 sum2 = sum2 + (adler) 3294 } 3295 3296 { 3297 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12)))) 3298 sum2 = sum2 + (adler) 3299 } 3300 { 3301 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13)))) 3302 sum2 = sum2 + (adler) 3303 } 3304 3305 { 3306 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14)))) 3307 sum2 = sum2 + (adler) 3308 } 3309 { 3310 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15)))) 3311 sum2 = sum2 + (adler) 3312 } 3313 3314 buf += uintptr(16) 3315 } 3316 for libc.PostDecUint64(&len, 1) != 0 { 3317 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))) 3318 sum2 = sum2 + (adler) 3319 } 3320 adler = adler % (uint64(BASE)) 3321 sum2 = sum2 % (uint64(BASE)) 3322 } 3323 3324 // return recombined sums 3325 return (adler | (sum2 << 16)) 3326 } 3327 3328 // ========================================================================= 3329 func Xadler32(tls *libc.TLS, adler ULong, buf uintptr, len UInt) ULong { /* adler32.c:134:15: */ 3330 return Xadler32_z(tls, adler, buf, uint64(len)) 3331 } 3332 3333 // ========================================================================= 3334 func adler32_combine_(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:143:13: */ 3335 var sum1 uint64 3336 var sum2 uint64 3337 var rem uint32 3338 3339 // for negative len, return invalid adler32 as a clue for debugging 3340 if len2 < int64(0) { 3341 return 0xffffffff 3342 } 3343 3344 // the derivation of this formula is left as an exercise for the reader 3345 len2 = len2 % (int64(BASE)) // assumes len2 >= 0 3346 rem = uint32(len2) 3347 sum1 = (adler1 & uint64(0xffff)) 3348 sum2 = (uint64(rem) * sum1) 3349 sum2 = sum2 % (uint64(BASE)) 3350 sum1 = sum1 + (((adler2 & uint64(0xffff)) + uint64(BASE)) - uint64(1)) 3351 sum2 = sum2 + (((((adler1 >> 16) & uint64(0xffff)) + ((adler2 >> 16) & uint64(0xffff))) + uint64(BASE)) - ULong(rem)) 3352 if sum1 >= uint64(BASE) { 3353 sum1 = sum1 - (uint64(BASE)) 3354 } 3355 if sum1 >= uint64(BASE) { 3356 sum1 = sum1 - (uint64(BASE)) 3357 } 3358 if sum2 >= (uint64(uint64(BASE)) << 1) { 3359 sum2 = sum2 - (uint64(uint64(BASE)) << 1) 3360 } 3361 if sum2 >= uint64(BASE) { 3362 sum2 = sum2 - (uint64(BASE)) 3363 } 3364 return (sum1 | (sum2 << 16)) 3365 } 3366 3367 // ========================================================================= 3368 func Xadler32_combine(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:172:15: */ 3369 return adler32_combine_(tls, adler1, adler2, len2) 3370 } 3371 3372 func Xadler32_combine64(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:180:15: */ 3373 return adler32_combine_(tls, adler1, adler2, len2) 3374 } 3375 3376 // =========================================================================== 3377 // Compresses the source buffer into the destination buffer. The level 3378 // parameter has the same meaning as in deflateInit. sourceLen is the byte 3379 // length of the source buffer. Upon entry, destLen is the total size of the 3380 // destination buffer, which must be at least 0.1% larger than sourceLen plus 3381 // 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. 3382 // 3383 // compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough 3384 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, 3385 // Z_STREAM_ERROR if the level parameter is invalid. 3386 func Xcompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong, level int32) int32 { /* compress.c:22:13: */ 3387 bp := tls.Alloc(112) 3388 defer tls.Free(112) 3389 3390 // var stream Z_stream at bp, 112 3391 3392 var err int32 3393 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 3394 var left ULong 3395 3396 left = *(*ULongf)(unsafe.Pointer(destLen)) 3397 *(*ULongf)(unsafe.Pointer(destLen)) = uint64(0) 3398 3399 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzalloc = uintptr(0) 3400 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzfree = uintptr(0) 3401 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fopaque = uintptr(0) 3402 3403 err = XdeflateInit_(tls, bp /* &stream */, level, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) 3404 if err != Z_OK { 3405 return err 3406 } 3407 3408 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_out = dest 3409 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = UInt(0) 3410 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_in = source 3411 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = UInt(0) 3412 3413 for ok := true; ok; ok = (err == Z_OK) { 3414 if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out == UInt(0) { 3415 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = func() uint32 { 3416 if left > ULong(max) { 3417 return max 3418 } 3419 return UInt(left) 3420 }() 3421 left = left - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out)) 3422 } 3423 if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in == UInt(0) { 3424 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = func() uint32 { 3425 if sourceLen > ULong(max) { 3426 return max 3427 } 3428 return UInt(sourceLen) 3429 }() 3430 sourceLen = sourceLen - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in)) 3431 } 3432 err = Xdeflate(tls, bp /* &stream */, func() int32 { 3433 if sourceLen != 0 { 3434 return Z_NO_FLUSH 3435 } 3436 return Z_FINISH 3437 }()) 3438 } 3439 3440 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Ftotal_out 3441 XdeflateEnd(tls, bp /* &stream */) 3442 if err == Z_STREAM_END { 3443 return Z_OK 3444 } 3445 return err 3446 } 3447 3448 // =========================================================================== 3449 func Xcompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* compress.c:68:13: */ 3450 return Xcompress2(tls, dest, destLen, source, sourceLen, -1) 3451 } 3452 3453 // =========================================================================== 3454 // If the default memLevel or windowBits for deflateInit() is changed, then 3455 // this function needs to be updated. 3456 // 3457 func XcompressBound(tls *libc.TLS, sourceLen ULong) ULong { /* compress.c:81:15: */ 3458 return ((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + uint64(13)) 3459 } 3460 3461 // ======================================================================== 3462 // Tables of CRC-32s of all single-byte values, made by make_crc_table(). 3463 // crc32.h -- tables for rapid CRC calculation 3464 // Generated automatically by crc32.c 3465 3466 var crc_table = [8][256]Z_crc_t{ 3467 { 3468 uint32(0x00000000), uint32(0x77073096), uint32(0xee0e612c), uint32(0x990951ba), uint32(0x076dc419), 3469 uint32(0x706af48f), uint32(0xe963a535), uint32(0x9e6495a3), uint32(0x0edb8832), uint32(0x79dcb8a4), 3470 uint32(0xe0d5e91e), uint32(0x97d2d988), uint32(0x09b64c2b), uint32(0x7eb17cbd), uint32(0xe7b82d07), 3471 uint32(0x90bf1d91), uint32(0x1db71064), uint32(0x6ab020f2), uint32(0xf3b97148), uint32(0x84be41de), 3472 uint32(0x1adad47d), uint32(0x6ddde4eb), uint32(0xf4d4b551), uint32(0x83d385c7), uint32(0x136c9856), 3473 uint32(0x646ba8c0), uint32(0xfd62f97a), uint32(0x8a65c9ec), uint32(0x14015c4f), uint32(0x63066cd9), 3474 uint32(0xfa0f3d63), uint32(0x8d080df5), uint32(0x3b6e20c8), uint32(0x4c69105e), uint32(0xd56041e4), 3475 uint32(0xa2677172), uint32(0x3c03e4d1), uint32(0x4b04d447), uint32(0xd20d85fd), uint32(0xa50ab56b), 3476 uint32(0x35b5a8fa), uint32(0x42b2986c), uint32(0xdbbbc9d6), uint32(0xacbcf940), uint32(0x32d86ce3), 3477 uint32(0x45df5c75), uint32(0xdcd60dcf), uint32(0xabd13d59), uint32(0x26d930ac), uint32(0x51de003a), 3478 uint32(0xc8d75180), uint32(0xbfd06116), uint32(0x21b4f4b5), uint32(0x56b3c423), uint32(0xcfba9599), 3479 uint32(0xb8bda50f), uint32(0x2802b89e), uint32(0x5f058808), uint32(0xc60cd9b2), uint32(0xb10be924), 3480 uint32(0x2f6f7c87), uint32(0x58684c11), uint32(0xc1611dab), uint32(0xb6662d3d), uint32(0x76dc4190), 3481 uint32(0x01db7106), uint32(0x98d220bc), uint32(0xefd5102a), uint32(0x71b18589), uint32(0x06b6b51f), 3482 uint32(0x9fbfe4a5), uint32(0xe8b8d433), uint32(0x7807c9a2), uint32(0x0f00f934), uint32(0x9609a88e), 3483 uint32(0xe10e9818), uint32(0x7f6a0dbb), uint32(0x086d3d2d), uint32(0x91646c97), uint32(0xe6635c01), 3484 uint32(0x6b6b51f4), uint32(0x1c6c6162), uint32(0x856530d8), uint32(0xf262004e), uint32(0x6c0695ed), 3485 uint32(0x1b01a57b), uint32(0x8208f4c1), uint32(0xf50fc457), uint32(0x65b0d9c6), uint32(0x12b7e950), 3486 uint32(0x8bbeb8ea), uint32(0xfcb9887c), uint32(0x62dd1ddf), uint32(0x15da2d49), uint32(0x8cd37cf3), 3487 uint32(0xfbd44c65), uint32(0x4db26158), uint32(0x3ab551ce), uint32(0xa3bc0074), uint32(0xd4bb30e2), 3488 uint32(0x4adfa541), uint32(0x3dd895d7), uint32(0xa4d1c46d), uint32(0xd3d6f4fb), uint32(0x4369e96a), 3489 uint32(0x346ed9fc), uint32(0xad678846), uint32(0xda60b8d0), uint32(0x44042d73), uint32(0x33031de5), 3490 uint32(0xaa0a4c5f), uint32(0xdd0d7cc9), uint32(0x5005713c), uint32(0x270241aa), uint32(0xbe0b1010), 3491 uint32(0xc90c2086), uint32(0x5768b525), uint32(0x206f85b3), uint32(0xb966d409), uint32(0xce61e49f), 3492 uint32(0x5edef90e), uint32(0x29d9c998), uint32(0xb0d09822), uint32(0xc7d7a8b4), uint32(0x59b33d17), 3493 uint32(0x2eb40d81), uint32(0xb7bd5c3b), uint32(0xc0ba6cad), uint32(0xedb88320), uint32(0x9abfb3b6), 3494 uint32(0x03b6e20c), uint32(0x74b1d29a), uint32(0xead54739), uint32(0x9dd277af), uint32(0x04db2615), 3495 uint32(0x73dc1683), uint32(0xe3630b12), uint32(0x94643b84), uint32(0x0d6d6a3e), uint32(0x7a6a5aa8), 3496 uint32(0xe40ecf0b), uint32(0x9309ff9d), uint32(0x0a00ae27), uint32(0x7d079eb1), uint32(0xf00f9344), 3497 uint32(0x8708a3d2), uint32(0x1e01f268), uint32(0x6906c2fe), uint32(0xf762575d), uint32(0x806567cb), 3498 uint32(0x196c3671), uint32(0x6e6b06e7), uint32(0xfed41b76), uint32(0x89d32be0), uint32(0x10da7a5a), 3499 uint32(0x67dd4acc), uint32(0xf9b9df6f), uint32(0x8ebeeff9), uint32(0x17b7be43), uint32(0x60b08ed5), 3500 uint32(0xd6d6a3e8), uint32(0xa1d1937e), uint32(0x38d8c2c4), uint32(0x4fdff252), uint32(0xd1bb67f1), 3501 uint32(0xa6bc5767), uint32(0x3fb506dd), uint32(0x48b2364b), uint32(0xd80d2bda), uint32(0xaf0a1b4c), 3502 uint32(0x36034af6), uint32(0x41047a60), uint32(0xdf60efc3), uint32(0xa867df55), uint32(0x316e8eef), 3503 uint32(0x4669be79), uint32(0xcb61b38c), uint32(0xbc66831a), uint32(0x256fd2a0), uint32(0x5268e236), 3504 uint32(0xcc0c7795), uint32(0xbb0b4703), uint32(0x220216b9), uint32(0x5505262f), uint32(0xc5ba3bbe), 3505 uint32(0xb2bd0b28), uint32(0x2bb45a92), uint32(0x5cb36a04), uint32(0xc2d7ffa7), uint32(0xb5d0cf31), 3506 uint32(0x2cd99e8b), uint32(0x5bdeae1d), uint32(0x9b64c2b0), uint32(0xec63f226), uint32(0x756aa39c), 3507 uint32(0x026d930a), uint32(0x9c0906a9), uint32(0xeb0e363f), uint32(0x72076785), uint32(0x05005713), 3508 uint32(0x95bf4a82), uint32(0xe2b87a14), uint32(0x7bb12bae), uint32(0x0cb61b38), uint32(0x92d28e9b), 3509 uint32(0xe5d5be0d), uint32(0x7cdcefb7), uint32(0x0bdbdf21), uint32(0x86d3d2d4), uint32(0xf1d4e242), 3510 uint32(0x68ddb3f8), uint32(0x1fda836e), uint32(0x81be16cd), uint32(0xf6b9265b), uint32(0x6fb077e1), 3511 uint32(0x18b74777), uint32(0x88085ae6), uint32(0xff0f6a70), uint32(0x66063bca), uint32(0x11010b5c), 3512 uint32(0x8f659eff), uint32(0xf862ae69), uint32(0x616bffd3), uint32(0x166ccf45), uint32(0xa00ae278), 3513 uint32(0xd70dd2ee), uint32(0x4e048354), uint32(0x3903b3c2), uint32(0xa7672661), uint32(0xd06016f7), 3514 uint32(0x4969474d), uint32(0x3e6e77db), uint32(0xaed16a4a), uint32(0xd9d65adc), uint32(0x40df0b66), 3515 uint32(0x37d83bf0), uint32(0xa9bcae53), uint32(0xdebb9ec5), uint32(0x47b2cf7f), uint32(0x30b5ffe9), 3516 uint32(0xbdbdf21c), uint32(0xcabac28a), uint32(0x53b39330), uint32(0x24b4a3a6), uint32(0xbad03605), 3517 uint32(0xcdd70693), uint32(0x54de5729), uint32(0x23d967bf), uint32(0xb3667a2e), uint32(0xc4614ab8), 3518 uint32(0x5d681b02), uint32(0x2a6f2b94), uint32(0xb40bbe37), uint32(0xc30c8ea1), uint32(0x5a05df1b), 3519 uint32(0x2d02ef8d), 3520 }, 3521 { 3522 uint32(0x00000000), uint32(0x191b3141), uint32(0x32366282), uint32(0x2b2d53c3), uint32(0x646cc504), 3523 uint32(0x7d77f445), uint32(0x565aa786), uint32(0x4f4196c7), uint32(0xc8d98a08), uint32(0xd1c2bb49), 3524 uint32(0xfaefe88a), uint32(0xe3f4d9cb), uint32(0xacb54f0c), uint32(0xb5ae7e4d), uint32(0x9e832d8e), 3525 uint32(0x87981ccf), uint32(0x4ac21251), uint32(0x53d92310), uint32(0x78f470d3), uint32(0x61ef4192), 3526 uint32(0x2eaed755), uint32(0x37b5e614), uint32(0x1c98b5d7), uint32(0x05838496), uint32(0x821b9859), 3527 uint32(0x9b00a918), uint32(0xb02dfadb), uint32(0xa936cb9a), uint32(0xe6775d5d), uint32(0xff6c6c1c), 3528 uint32(0xd4413fdf), uint32(0xcd5a0e9e), uint32(0x958424a2), uint32(0x8c9f15e3), uint32(0xa7b24620), 3529 uint32(0xbea97761), uint32(0xf1e8e1a6), uint32(0xe8f3d0e7), uint32(0xc3de8324), uint32(0xdac5b265), 3530 uint32(0x5d5daeaa), uint32(0x44469feb), uint32(0x6f6bcc28), uint32(0x7670fd69), uint32(0x39316bae), 3531 uint32(0x202a5aef), uint32(0x0b07092c), uint32(0x121c386d), uint32(0xdf4636f3), uint32(0xc65d07b2), 3532 uint32(0xed705471), uint32(0xf46b6530), uint32(0xbb2af3f7), uint32(0xa231c2b6), uint32(0x891c9175), 3533 uint32(0x9007a034), uint32(0x179fbcfb), uint32(0x0e848dba), uint32(0x25a9de79), uint32(0x3cb2ef38), 3534 uint32(0x73f379ff), uint32(0x6ae848be), uint32(0x41c51b7d), uint32(0x58de2a3c), uint32(0xf0794f05), 3535 uint32(0xe9627e44), uint32(0xc24f2d87), uint32(0xdb541cc6), uint32(0x94158a01), uint32(0x8d0ebb40), 3536 uint32(0xa623e883), uint32(0xbf38d9c2), uint32(0x38a0c50d), uint32(0x21bbf44c), uint32(0x0a96a78f), 3537 uint32(0x138d96ce), uint32(0x5ccc0009), uint32(0x45d73148), uint32(0x6efa628b), uint32(0x77e153ca), 3538 uint32(0xbabb5d54), uint32(0xa3a06c15), uint32(0x888d3fd6), uint32(0x91960e97), uint32(0xded79850), 3539 uint32(0xc7cca911), uint32(0xece1fad2), uint32(0xf5facb93), uint32(0x7262d75c), uint32(0x6b79e61d), 3540 uint32(0x4054b5de), uint32(0x594f849f), uint32(0x160e1258), uint32(0x0f152319), uint32(0x243870da), 3541 uint32(0x3d23419b), uint32(0x65fd6ba7), uint32(0x7ce65ae6), uint32(0x57cb0925), uint32(0x4ed03864), 3542 uint32(0x0191aea3), uint32(0x188a9fe2), uint32(0x33a7cc21), uint32(0x2abcfd60), uint32(0xad24e1af), 3543 uint32(0xb43fd0ee), uint32(0x9f12832d), uint32(0x8609b26c), uint32(0xc94824ab), uint32(0xd05315ea), 3544 uint32(0xfb7e4629), uint32(0xe2657768), uint32(0x2f3f79f6), uint32(0x362448b7), uint32(0x1d091b74), 3545 uint32(0x04122a35), uint32(0x4b53bcf2), uint32(0x52488db3), uint32(0x7965de70), uint32(0x607eef31), 3546 uint32(0xe7e6f3fe), uint32(0xfefdc2bf), uint32(0xd5d0917c), uint32(0xcccba03d), uint32(0x838a36fa), 3547 uint32(0x9a9107bb), uint32(0xb1bc5478), uint32(0xa8a76539), uint32(0x3b83984b), uint32(0x2298a90a), 3548 uint32(0x09b5fac9), uint32(0x10aecb88), uint32(0x5fef5d4f), uint32(0x46f46c0e), uint32(0x6dd93fcd), 3549 uint32(0x74c20e8c), uint32(0xf35a1243), uint32(0xea412302), uint32(0xc16c70c1), uint32(0xd8774180), 3550 uint32(0x9736d747), uint32(0x8e2de606), uint32(0xa500b5c5), uint32(0xbc1b8484), uint32(0x71418a1a), 3551 uint32(0x685abb5b), uint32(0x4377e898), uint32(0x5a6cd9d9), uint32(0x152d4f1e), uint32(0x0c367e5f), 3552 uint32(0x271b2d9c), uint32(0x3e001cdd), uint32(0xb9980012), uint32(0xa0833153), uint32(0x8bae6290), 3553 uint32(0x92b553d1), uint32(0xddf4c516), uint32(0xc4eff457), uint32(0xefc2a794), uint32(0xf6d996d5), 3554 uint32(0xae07bce9), uint32(0xb71c8da8), uint32(0x9c31de6b), uint32(0x852aef2a), uint32(0xca6b79ed), 3555 uint32(0xd37048ac), uint32(0xf85d1b6f), uint32(0xe1462a2e), uint32(0x66de36e1), uint32(0x7fc507a0), 3556 uint32(0x54e85463), uint32(0x4df36522), uint32(0x02b2f3e5), uint32(0x1ba9c2a4), uint32(0x30849167), 3557 uint32(0x299fa026), uint32(0xe4c5aeb8), uint32(0xfdde9ff9), uint32(0xd6f3cc3a), uint32(0xcfe8fd7b), 3558 uint32(0x80a96bbc), uint32(0x99b25afd), uint32(0xb29f093e), uint32(0xab84387f), uint32(0x2c1c24b0), 3559 uint32(0x350715f1), uint32(0x1e2a4632), uint32(0x07317773), uint32(0x4870e1b4), uint32(0x516bd0f5), 3560 uint32(0x7a468336), uint32(0x635db277), uint32(0xcbfad74e), uint32(0xd2e1e60f), uint32(0xf9ccb5cc), 3561 uint32(0xe0d7848d), uint32(0xaf96124a), uint32(0xb68d230b), uint32(0x9da070c8), uint32(0x84bb4189), 3562 uint32(0x03235d46), uint32(0x1a386c07), uint32(0x31153fc4), uint32(0x280e0e85), uint32(0x674f9842), 3563 uint32(0x7e54a903), uint32(0x5579fac0), uint32(0x4c62cb81), uint32(0x8138c51f), uint32(0x9823f45e), 3564 uint32(0xb30ea79d), uint32(0xaa1596dc), uint32(0xe554001b), uint32(0xfc4f315a), uint32(0xd7626299), 3565 uint32(0xce7953d8), uint32(0x49e14f17), uint32(0x50fa7e56), uint32(0x7bd72d95), uint32(0x62cc1cd4), 3566 uint32(0x2d8d8a13), uint32(0x3496bb52), uint32(0x1fbbe891), uint32(0x06a0d9d0), uint32(0x5e7ef3ec), 3567 uint32(0x4765c2ad), uint32(0x6c48916e), uint32(0x7553a02f), uint32(0x3a1236e8), uint32(0x230907a9), 3568 uint32(0x0824546a), uint32(0x113f652b), uint32(0x96a779e4), uint32(0x8fbc48a5), uint32(0xa4911b66), 3569 uint32(0xbd8a2a27), uint32(0xf2cbbce0), uint32(0xebd08da1), uint32(0xc0fdde62), uint32(0xd9e6ef23), 3570 uint32(0x14bce1bd), uint32(0x0da7d0fc), uint32(0x268a833f), uint32(0x3f91b27e), uint32(0x70d024b9), 3571 uint32(0x69cb15f8), uint32(0x42e6463b), uint32(0x5bfd777a), uint32(0xdc656bb5), uint32(0xc57e5af4), 3572 uint32(0xee530937), uint32(0xf7483876), uint32(0xb809aeb1), uint32(0xa1129ff0), uint32(0x8a3fcc33), 3573 uint32(0x9324fd72), 3574 }, 3575 { 3576 uint32(0x00000000), uint32(0x01c26a37), uint32(0x0384d46e), uint32(0x0246be59), uint32(0x0709a8dc), 3577 uint32(0x06cbc2eb), uint32(0x048d7cb2), uint32(0x054f1685), uint32(0x0e1351b8), uint32(0x0fd13b8f), 3578 uint32(0x0d9785d6), uint32(0x0c55efe1), uint32(0x091af964), uint32(0x08d89353), uint32(0x0a9e2d0a), 3579 uint32(0x0b5c473d), uint32(0x1c26a370), uint32(0x1de4c947), uint32(0x1fa2771e), uint32(0x1e601d29), 3580 uint32(0x1b2f0bac), uint32(0x1aed619b), uint32(0x18abdfc2), uint32(0x1969b5f5), uint32(0x1235f2c8), 3581 uint32(0x13f798ff), uint32(0x11b126a6), uint32(0x10734c91), uint32(0x153c5a14), uint32(0x14fe3023), 3582 uint32(0x16b88e7a), uint32(0x177ae44d), uint32(0x384d46e0), uint32(0x398f2cd7), uint32(0x3bc9928e), 3583 uint32(0x3a0bf8b9), uint32(0x3f44ee3c), uint32(0x3e86840b), uint32(0x3cc03a52), uint32(0x3d025065), 3584 uint32(0x365e1758), uint32(0x379c7d6f), uint32(0x35dac336), uint32(0x3418a901), uint32(0x3157bf84), 3585 uint32(0x3095d5b3), uint32(0x32d36bea), uint32(0x331101dd), uint32(0x246be590), uint32(0x25a98fa7), 3586 uint32(0x27ef31fe), uint32(0x262d5bc9), uint32(0x23624d4c), uint32(0x22a0277b), uint32(0x20e69922), 3587 uint32(0x2124f315), uint32(0x2a78b428), uint32(0x2bbade1f), uint32(0x29fc6046), uint32(0x283e0a71), 3588 uint32(0x2d711cf4), uint32(0x2cb376c3), uint32(0x2ef5c89a), uint32(0x2f37a2ad), uint32(0x709a8dc0), 3589 uint32(0x7158e7f7), uint32(0x731e59ae), uint32(0x72dc3399), uint32(0x7793251c), uint32(0x76514f2b), 3590 uint32(0x7417f172), uint32(0x75d59b45), uint32(0x7e89dc78), uint32(0x7f4bb64f), uint32(0x7d0d0816), 3591 uint32(0x7ccf6221), uint32(0x798074a4), uint32(0x78421e93), uint32(0x7a04a0ca), uint32(0x7bc6cafd), 3592 uint32(0x6cbc2eb0), uint32(0x6d7e4487), uint32(0x6f38fade), uint32(0x6efa90e9), uint32(0x6bb5866c), 3593 uint32(0x6a77ec5b), uint32(0x68315202), uint32(0x69f33835), uint32(0x62af7f08), uint32(0x636d153f), 3594 uint32(0x612bab66), uint32(0x60e9c151), uint32(0x65a6d7d4), uint32(0x6464bde3), uint32(0x662203ba), 3595 uint32(0x67e0698d), uint32(0x48d7cb20), uint32(0x4915a117), uint32(0x4b531f4e), uint32(0x4a917579), 3596 uint32(0x4fde63fc), uint32(0x4e1c09cb), uint32(0x4c5ab792), uint32(0x4d98dda5), uint32(0x46c49a98), 3597 uint32(0x4706f0af), uint32(0x45404ef6), uint32(0x448224c1), uint32(0x41cd3244), uint32(0x400f5873), 3598 uint32(0x4249e62a), uint32(0x438b8c1d), uint32(0x54f16850), uint32(0x55330267), uint32(0x5775bc3e), 3599 uint32(0x56b7d609), uint32(0x53f8c08c), uint32(0x523aaabb), uint32(0x507c14e2), uint32(0x51be7ed5), 3600 uint32(0x5ae239e8), uint32(0x5b2053df), uint32(0x5966ed86), uint32(0x58a487b1), uint32(0x5deb9134), 3601 uint32(0x5c29fb03), uint32(0x5e6f455a), uint32(0x5fad2f6d), uint32(0xe1351b80), uint32(0xe0f771b7), 3602 uint32(0xe2b1cfee), uint32(0xe373a5d9), uint32(0xe63cb35c), uint32(0xe7fed96b), uint32(0xe5b86732), 3603 uint32(0xe47a0d05), uint32(0xef264a38), uint32(0xeee4200f), uint32(0xeca29e56), uint32(0xed60f461), 3604 uint32(0xe82fe2e4), uint32(0xe9ed88d3), uint32(0xebab368a), uint32(0xea695cbd), uint32(0xfd13b8f0), 3605 uint32(0xfcd1d2c7), uint32(0xfe976c9e), uint32(0xff5506a9), uint32(0xfa1a102c), uint32(0xfbd87a1b), 3606 uint32(0xf99ec442), uint32(0xf85cae75), uint32(0xf300e948), uint32(0xf2c2837f), uint32(0xf0843d26), 3607 uint32(0xf1465711), uint32(0xf4094194), uint32(0xf5cb2ba3), uint32(0xf78d95fa), uint32(0xf64fffcd), 3608 uint32(0xd9785d60), uint32(0xd8ba3757), uint32(0xdafc890e), uint32(0xdb3ee339), uint32(0xde71f5bc), 3609 uint32(0xdfb39f8b), uint32(0xddf521d2), uint32(0xdc374be5), uint32(0xd76b0cd8), uint32(0xd6a966ef), 3610 uint32(0xd4efd8b6), uint32(0xd52db281), uint32(0xd062a404), uint32(0xd1a0ce33), uint32(0xd3e6706a), 3611 uint32(0xd2241a5d), uint32(0xc55efe10), uint32(0xc49c9427), uint32(0xc6da2a7e), uint32(0xc7184049), 3612 uint32(0xc25756cc), uint32(0xc3953cfb), uint32(0xc1d382a2), uint32(0xc011e895), uint32(0xcb4dafa8), 3613 uint32(0xca8fc59f), uint32(0xc8c97bc6), uint32(0xc90b11f1), uint32(0xcc440774), uint32(0xcd866d43), 3614 uint32(0xcfc0d31a), uint32(0xce02b92d), uint32(0x91af9640), uint32(0x906dfc77), uint32(0x922b422e), 3615 uint32(0x93e92819), uint32(0x96a63e9c), uint32(0x976454ab), uint32(0x9522eaf2), uint32(0x94e080c5), 3616 uint32(0x9fbcc7f8), uint32(0x9e7eadcf), uint32(0x9c381396), uint32(0x9dfa79a1), uint32(0x98b56f24), 3617 uint32(0x99770513), uint32(0x9b31bb4a), uint32(0x9af3d17d), uint32(0x8d893530), uint32(0x8c4b5f07), 3618 uint32(0x8e0de15e), uint32(0x8fcf8b69), uint32(0x8a809dec), uint32(0x8b42f7db), uint32(0x89044982), 3619 uint32(0x88c623b5), uint32(0x839a6488), uint32(0x82580ebf), uint32(0x801eb0e6), uint32(0x81dcdad1), 3620 uint32(0x8493cc54), uint32(0x8551a663), uint32(0x8717183a), uint32(0x86d5720d), uint32(0xa9e2d0a0), 3621 uint32(0xa820ba97), uint32(0xaa6604ce), uint32(0xaba46ef9), uint32(0xaeeb787c), uint32(0xaf29124b), 3622 uint32(0xad6fac12), uint32(0xacadc625), uint32(0xa7f18118), uint32(0xa633eb2f), uint32(0xa4755576), 3623 uint32(0xa5b73f41), uint32(0xa0f829c4), uint32(0xa13a43f3), uint32(0xa37cfdaa), uint32(0xa2be979d), 3624 uint32(0xb5c473d0), uint32(0xb40619e7), uint32(0xb640a7be), uint32(0xb782cd89), uint32(0xb2cddb0c), 3625 uint32(0xb30fb13b), uint32(0xb1490f62), uint32(0xb08b6555), uint32(0xbbd72268), uint32(0xba15485f), 3626 uint32(0xb853f606), uint32(0xb9919c31), uint32(0xbcde8ab4), uint32(0xbd1ce083), uint32(0xbf5a5eda), 3627 uint32(0xbe9834ed), 3628 }, 3629 { 3630 uint32(0x00000000), uint32(0xb8bc6765), uint32(0xaa09c88b), uint32(0x12b5afee), uint32(0x8f629757), 3631 uint32(0x37def032), uint32(0x256b5fdc), uint32(0x9dd738b9), uint32(0xc5b428ef), uint32(0x7d084f8a), 3632 uint32(0x6fbde064), uint32(0xd7018701), uint32(0x4ad6bfb8), uint32(0xf26ad8dd), uint32(0xe0df7733), 3633 uint32(0x58631056), uint32(0x5019579f), uint32(0xe8a530fa), uint32(0xfa109f14), uint32(0x42acf871), 3634 uint32(0xdf7bc0c8), uint32(0x67c7a7ad), uint32(0x75720843), uint32(0xcdce6f26), uint32(0x95ad7f70), 3635 uint32(0x2d111815), uint32(0x3fa4b7fb), uint32(0x8718d09e), uint32(0x1acfe827), uint32(0xa2738f42), 3636 uint32(0xb0c620ac), uint32(0x087a47c9), uint32(0xa032af3e), uint32(0x188ec85b), uint32(0x0a3b67b5), 3637 uint32(0xb28700d0), uint32(0x2f503869), uint32(0x97ec5f0c), uint32(0x8559f0e2), uint32(0x3de59787), 3638 uint32(0x658687d1), uint32(0xdd3ae0b4), uint32(0xcf8f4f5a), uint32(0x7733283f), uint32(0xeae41086), 3639 uint32(0x525877e3), uint32(0x40edd80d), uint32(0xf851bf68), uint32(0xf02bf8a1), uint32(0x48979fc4), 3640 uint32(0x5a22302a), uint32(0xe29e574f), uint32(0x7f496ff6), uint32(0xc7f50893), uint32(0xd540a77d), 3641 uint32(0x6dfcc018), uint32(0x359fd04e), uint32(0x8d23b72b), uint32(0x9f9618c5), uint32(0x272a7fa0), 3642 uint32(0xbafd4719), uint32(0x0241207c), uint32(0x10f48f92), uint32(0xa848e8f7), uint32(0x9b14583d), 3643 uint32(0x23a83f58), uint32(0x311d90b6), uint32(0x89a1f7d3), uint32(0x1476cf6a), uint32(0xaccaa80f), 3644 uint32(0xbe7f07e1), uint32(0x06c36084), uint32(0x5ea070d2), uint32(0xe61c17b7), uint32(0xf4a9b859), 3645 uint32(0x4c15df3c), uint32(0xd1c2e785), uint32(0x697e80e0), uint32(0x7bcb2f0e), uint32(0xc377486b), 3646 uint32(0xcb0d0fa2), uint32(0x73b168c7), uint32(0x6104c729), uint32(0xd9b8a04c), uint32(0x446f98f5), 3647 uint32(0xfcd3ff90), uint32(0xee66507e), uint32(0x56da371b), uint32(0x0eb9274d), uint32(0xb6054028), 3648 uint32(0xa4b0efc6), uint32(0x1c0c88a3), uint32(0x81dbb01a), uint32(0x3967d77f), uint32(0x2bd27891), 3649 uint32(0x936e1ff4), uint32(0x3b26f703), uint32(0x839a9066), uint32(0x912f3f88), uint32(0x299358ed), 3650 uint32(0xb4446054), uint32(0x0cf80731), uint32(0x1e4da8df), uint32(0xa6f1cfba), uint32(0xfe92dfec), 3651 uint32(0x462eb889), uint32(0x549b1767), uint32(0xec277002), uint32(0x71f048bb), uint32(0xc94c2fde), 3652 uint32(0xdbf98030), uint32(0x6345e755), uint32(0x6b3fa09c), uint32(0xd383c7f9), uint32(0xc1366817), 3653 uint32(0x798a0f72), uint32(0xe45d37cb), uint32(0x5ce150ae), uint32(0x4e54ff40), uint32(0xf6e89825), 3654 uint32(0xae8b8873), uint32(0x1637ef16), uint32(0x048240f8), uint32(0xbc3e279d), uint32(0x21e91f24), 3655 uint32(0x99557841), uint32(0x8be0d7af), uint32(0x335cb0ca), uint32(0xed59b63b), uint32(0x55e5d15e), 3656 uint32(0x47507eb0), uint32(0xffec19d5), uint32(0x623b216c), uint32(0xda874609), uint32(0xc832e9e7), 3657 uint32(0x708e8e82), uint32(0x28ed9ed4), uint32(0x9051f9b1), uint32(0x82e4565f), uint32(0x3a58313a), 3658 uint32(0xa78f0983), uint32(0x1f336ee6), uint32(0x0d86c108), uint32(0xb53aa66d), uint32(0xbd40e1a4), 3659 uint32(0x05fc86c1), uint32(0x1749292f), uint32(0xaff54e4a), uint32(0x322276f3), uint32(0x8a9e1196), 3660 uint32(0x982bbe78), uint32(0x2097d91d), uint32(0x78f4c94b), uint32(0xc048ae2e), uint32(0xd2fd01c0), 3661 uint32(0x6a4166a5), uint32(0xf7965e1c), uint32(0x4f2a3979), uint32(0x5d9f9697), uint32(0xe523f1f2), 3662 uint32(0x4d6b1905), uint32(0xf5d77e60), uint32(0xe762d18e), uint32(0x5fdeb6eb), uint32(0xc2098e52), 3663 uint32(0x7ab5e937), uint32(0x680046d9), uint32(0xd0bc21bc), uint32(0x88df31ea), uint32(0x3063568f), 3664 uint32(0x22d6f961), uint32(0x9a6a9e04), uint32(0x07bda6bd), uint32(0xbf01c1d8), uint32(0xadb46e36), 3665 uint32(0x15080953), uint32(0x1d724e9a), uint32(0xa5ce29ff), uint32(0xb77b8611), uint32(0x0fc7e174), 3666 uint32(0x9210d9cd), uint32(0x2aacbea8), uint32(0x38191146), uint32(0x80a57623), uint32(0xd8c66675), 3667 uint32(0x607a0110), uint32(0x72cfaefe), uint32(0xca73c99b), uint32(0x57a4f122), uint32(0xef189647), 3668 uint32(0xfdad39a9), uint32(0x45115ecc), uint32(0x764dee06), uint32(0xcef18963), uint32(0xdc44268d), 3669 uint32(0x64f841e8), uint32(0xf92f7951), uint32(0x41931e34), uint32(0x5326b1da), uint32(0xeb9ad6bf), 3670 uint32(0xb3f9c6e9), uint32(0x0b45a18c), uint32(0x19f00e62), uint32(0xa14c6907), uint32(0x3c9b51be), 3671 uint32(0x842736db), uint32(0x96929935), uint32(0x2e2efe50), uint32(0x2654b999), uint32(0x9ee8defc), 3672 uint32(0x8c5d7112), uint32(0x34e11677), uint32(0xa9362ece), uint32(0x118a49ab), uint32(0x033fe645), 3673 uint32(0xbb838120), uint32(0xe3e09176), uint32(0x5b5cf613), uint32(0x49e959fd), uint32(0xf1553e98), 3674 uint32(0x6c820621), uint32(0xd43e6144), uint32(0xc68bceaa), uint32(0x7e37a9cf), uint32(0xd67f4138), 3675 uint32(0x6ec3265d), uint32(0x7c7689b3), uint32(0xc4caeed6), uint32(0x591dd66f), uint32(0xe1a1b10a), 3676 uint32(0xf3141ee4), uint32(0x4ba87981), uint32(0x13cb69d7), uint32(0xab770eb2), uint32(0xb9c2a15c), 3677 uint32(0x017ec639), uint32(0x9ca9fe80), uint32(0x241599e5), uint32(0x36a0360b), uint32(0x8e1c516e), 3678 uint32(0x866616a7), uint32(0x3eda71c2), uint32(0x2c6fde2c), uint32(0x94d3b949), uint32(0x090481f0), 3679 uint32(0xb1b8e695), uint32(0xa30d497b), uint32(0x1bb12e1e), uint32(0x43d23e48), uint32(0xfb6e592d), 3680 uint32(0xe9dbf6c3), uint32(0x516791a6), uint32(0xccb0a91f), uint32(0x740cce7a), uint32(0x66b96194), 3681 uint32(0xde0506f1), 3682 }, 3683 { 3684 uint32(0x00000000), uint32(0x96300777), uint32(0x2c610eee), uint32(0xba510999), uint32(0x19c46d07), 3685 uint32(0x8ff46a70), uint32(0x35a563e9), uint32(0xa395649e), uint32(0x3288db0e), uint32(0xa4b8dc79), 3686 uint32(0x1ee9d5e0), uint32(0x88d9d297), uint32(0x2b4cb609), uint32(0xbd7cb17e), uint32(0x072db8e7), 3687 uint32(0x911dbf90), uint32(0x6410b71d), uint32(0xf220b06a), uint32(0x4871b9f3), uint32(0xde41be84), 3688 uint32(0x7dd4da1a), uint32(0xebe4dd6d), uint32(0x51b5d4f4), uint32(0xc785d383), uint32(0x56986c13), 3689 uint32(0xc0a86b64), uint32(0x7af962fd), uint32(0xecc9658a), uint32(0x4f5c0114), uint32(0xd96c0663), 3690 uint32(0x633d0ffa), uint32(0xf50d088d), uint32(0xc8206e3b), uint32(0x5e10694c), uint32(0xe44160d5), 3691 uint32(0x727167a2), uint32(0xd1e4033c), uint32(0x47d4044b), uint32(0xfd850dd2), uint32(0x6bb50aa5), 3692 uint32(0xfaa8b535), uint32(0x6c98b242), uint32(0xd6c9bbdb), uint32(0x40f9bcac), uint32(0xe36cd832), 3693 uint32(0x755cdf45), uint32(0xcf0dd6dc), uint32(0x593dd1ab), uint32(0xac30d926), uint32(0x3a00de51), 3694 uint32(0x8051d7c8), uint32(0x1661d0bf), uint32(0xb5f4b421), uint32(0x23c4b356), uint32(0x9995bacf), 3695 uint32(0x0fa5bdb8), uint32(0x9eb80228), uint32(0x0888055f), uint32(0xb2d90cc6), uint32(0x24e90bb1), 3696 uint32(0x877c6f2f), uint32(0x114c6858), uint32(0xab1d61c1), uint32(0x3d2d66b6), uint32(0x9041dc76), 3697 uint32(0x0671db01), uint32(0xbc20d298), uint32(0x2a10d5ef), uint32(0x8985b171), uint32(0x1fb5b606), 3698 uint32(0xa5e4bf9f), uint32(0x33d4b8e8), uint32(0xa2c90778), uint32(0x34f9000f), uint32(0x8ea80996), 3699 uint32(0x18980ee1), uint32(0xbb0d6a7f), uint32(0x2d3d6d08), uint32(0x976c6491), uint32(0x015c63e6), 3700 uint32(0xf4516b6b), uint32(0x62616c1c), uint32(0xd8306585), uint32(0x4e0062f2), uint32(0xed95066c), 3701 uint32(0x7ba5011b), uint32(0xc1f40882), uint32(0x57c40ff5), uint32(0xc6d9b065), uint32(0x50e9b712), 3702 uint32(0xeab8be8b), uint32(0x7c88b9fc), uint32(0xdf1ddd62), uint32(0x492dda15), uint32(0xf37cd38c), 3703 uint32(0x654cd4fb), uint32(0x5861b24d), uint32(0xce51b53a), uint32(0x7400bca3), uint32(0xe230bbd4), 3704 uint32(0x41a5df4a), uint32(0xd795d83d), uint32(0x6dc4d1a4), uint32(0xfbf4d6d3), uint32(0x6ae96943), 3705 uint32(0xfcd96e34), uint32(0x468867ad), uint32(0xd0b860da), uint32(0x732d0444), uint32(0xe51d0333), 3706 uint32(0x5f4c0aaa), uint32(0xc97c0ddd), uint32(0x3c710550), uint32(0xaa410227), uint32(0x10100bbe), 3707 uint32(0x86200cc9), uint32(0x25b56857), uint32(0xb3856f20), uint32(0x09d466b9), uint32(0x9fe461ce), 3708 uint32(0x0ef9de5e), uint32(0x98c9d929), uint32(0x2298d0b0), uint32(0xb4a8d7c7), uint32(0x173db359), 3709 uint32(0x810db42e), uint32(0x3b5cbdb7), uint32(0xad6cbac0), uint32(0x2083b8ed), uint32(0xb6b3bf9a), 3710 uint32(0x0ce2b603), uint32(0x9ad2b174), uint32(0x3947d5ea), uint32(0xaf77d29d), uint32(0x1526db04), 3711 uint32(0x8316dc73), uint32(0x120b63e3), uint32(0x843b6494), uint32(0x3e6a6d0d), uint32(0xa85a6a7a), 3712 uint32(0x0bcf0ee4), uint32(0x9dff0993), uint32(0x27ae000a), uint32(0xb19e077d), uint32(0x44930ff0), 3713 uint32(0xd2a30887), uint32(0x68f2011e), uint32(0xfec20669), uint32(0x5d5762f7), uint32(0xcb676580), 3714 uint32(0x71366c19), uint32(0xe7066b6e), uint32(0x761bd4fe), uint32(0xe02bd389), uint32(0x5a7ada10), 3715 uint32(0xcc4add67), uint32(0x6fdfb9f9), uint32(0xf9efbe8e), uint32(0x43beb717), uint32(0xd58eb060), 3716 uint32(0xe8a3d6d6), uint32(0x7e93d1a1), uint32(0xc4c2d838), uint32(0x52f2df4f), uint32(0xf167bbd1), 3717 uint32(0x6757bca6), uint32(0xdd06b53f), uint32(0x4b36b248), uint32(0xda2b0dd8), uint32(0x4c1b0aaf), 3718 uint32(0xf64a0336), uint32(0x607a0441), uint32(0xc3ef60df), uint32(0x55df67a8), uint32(0xef8e6e31), 3719 uint32(0x79be6946), uint32(0x8cb361cb), uint32(0x1a8366bc), uint32(0xa0d26f25), uint32(0x36e26852), 3720 uint32(0x95770ccc), uint32(0x03470bbb), uint32(0xb9160222), uint32(0x2f260555), uint32(0xbe3bbac5), 3721 uint32(0x280bbdb2), uint32(0x925ab42b), uint32(0x046ab35c), uint32(0xa7ffd7c2), uint32(0x31cfd0b5), 3722 uint32(0x8b9ed92c), uint32(0x1daede5b), uint32(0xb0c2649b), uint32(0x26f263ec), uint32(0x9ca36a75), 3723 uint32(0x0a936d02), uint32(0xa906099c), uint32(0x3f360eeb), uint32(0x85670772), uint32(0x13570005), 3724 uint32(0x824abf95), uint32(0x147ab8e2), uint32(0xae2bb17b), uint32(0x381bb60c), uint32(0x9b8ed292), 3725 uint32(0x0dbed5e5), uint32(0xb7efdc7c), uint32(0x21dfdb0b), uint32(0xd4d2d386), uint32(0x42e2d4f1), 3726 uint32(0xf8b3dd68), uint32(0x6e83da1f), uint32(0xcd16be81), uint32(0x5b26b9f6), uint32(0xe177b06f), 3727 uint32(0x7747b718), uint32(0xe65a0888), uint32(0x706a0fff), uint32(0xca3b0666), uint32(0x5c0b0111), 3728 uint32(0xff9e658f), uint32(0x69ae62f8), uint32(0xd3ff6b61), uint32(0x45cf6c16), uint32(0x78e20aa0), 3729 uint32(0xeed20dd7), uint32(0x5483044e), uint32(0xc2b30339), uint32(0x612667a7), uint32(0xf71660d0), 3730 uint32(0x4d476949), uint32(0xdb776e3e), uint32(0x4a6ad1ae), uint32(0xdc5ad6d9), uint32(0x660bdf40), 3731 uint32(0xf03bd837), uint32(0x53aebca9), uint32(0xc59ebbde), uint32(0x7fcfb247), uint32(0xe9ffb530), 3732 uint32(0x1cf2bdbd), uint32(0x8ac2baca), uint32(0x3093b353), uint32(0xa6a3b424), uint32(0x0536d0ba), 3733 uint32(0x9306d7cd), uint32(0x2957de54), uint32(0xbf67d923), uint32(0x2e7a66b3), uint32(0xb84a61c4), 3734 uint32(0x021b685d), uint32(0x942b6f2a), uint32(0x37be0bb4), uint32(0xa18e0cc3), uint32(0x1bdf055a), 3735 uint32(0x8def022d), 3736 }, 3737 { 3738 uint32(0x00000000), uint32(0x41311b19), uint32(0x82623632), uint32(0xc3532d2b), uint32(0x04c56c64), 3739 uint32(0x45f4777d), uint32(0x86a75a56), uint32(0xc796414f), uint32(0x088ad9c8), uint32(0x49bbc2d1), 3740 uint32(0x8ae8effa), uint32(0xcbd9f4e3), uint32(0x0c4fb5ac), uint32(0x4d7eaeb5), uint32(0x8e2d839e), 3741 uint32(0xcf1c9887), uint32(0x5112c24a), uint32(0x1023d953), uint32(0xd370f478), uint32(0x9241ef61), 3742 uint32(0x55d7ae2e), uint32(0x14e6b537), uint32(0xd7b5981c), uint32(0x96848305), uint32(0x59981b82), 3743 uint32(0x18a9009b), uint32(0xdbfa2db0), uint32(0x9acb36a9), uint32(0x5d5d77e6), uint32(0x1c6c6cff), 3744 uint32(0xdf3f41d4), uint32(0x9e0e5acd), uint32(0xa2248495), uint32(0xe3159f8c), uint32(0x2046b2a7), 3745 uint32(0x6177a9be), uint32(0xa6e1e8f1), uint32(0xe7d0f3e8), uint32(0x2483dec3), uint32(0x65b2c5da), 3746 uint32(0xaaae5d5d), uint32(0xeb9f4644), uint32(0x28cc6b6f), uint32(0x69fd7076), uint32(0xae6b3139), 3747 uint32(0xef5a2a20), uint32(0x2c09070b), uint32(0x6d381c12), uint32(0xf33646df), uint32(0xb2075dc6), 3748 uint32(0x715470ed), uint32(0x30656bf4), uint32(0xf7f32abb), uint32(0xb6c231a2), uint32(0x75911c89), 3749 uint32(0x34a00790), uint32(0xfbbc9f17), uint32(0xba8d840e), uint32(0x79dea925), uint32(0x38efb23c), 3750 uint32(0xff79f373), uint32(0xbe48e86a), uint32(0x7d1bc541), uint32(0x3c2ade58), uint32(0x054f79f0), 3751 uint32(0x447e62e9), uint32(0x872d4fc2), uint32(0xc61c54db), uint32(0x018a1594), uint32(0x40bb0e8d), 3752 uint32(0x83e823a6), uint32(0xc2d938bf), uint32(0x0dc5a038), uint32(0x4cf4bb21), uint32(0x8fa7960a), 3753 uint32(0xce968d13), uint32(0x0900cc5c), uint32(0x4831d745), uint32(0x8b62fa6e), uint32(0xca53e177), 3754 uint32(0x545dbbba), uint32(0x156ca0a3), uint32(0xd63f8d88), uint32(0x970e9691), uint32(0x5098d7de), 3755 uint32(0x11a9ccc7), uint32(0xd2fae1ec), uint32(0x93cbfaf5), uint32(0x5cd76272), uint32(0x1de6796b), 3756 uint32(0xdeb55440), uint32(0x9f844f59), uint32(0x58120e16), uint32(0x1923150f), uint32(0xda703824), 3757 uint32(0x9b41233d), uint32(0xa76bfd65), uint32(0xe65ae67c), uint32(0x2509cb57), uint32(0x6438d04e), 3758 uint32(0xa3ae9101), uint32(0xe29f8a18), uint32(0x21cca733), uint32(0x60fdbc2a), uint32(0xafe124ad), 3759 uint32(0xeed03fb4), uint32(0x2d83129f), uint32(0x6cb20986), uint32(0xab2448c9), uint32(0xea1553d0), 3760 uint32(0x29467efb), uint32(0x687765e2), uint32(0xf6793f2f), uint32(0xb7482436), uint32(0x741b091d), 3761 uint32(0x352a1204), uint32(0xf2bc534b), uint32(0xb38d4852), uint32(0x70de6579), uint32(0x31ef7e60), 3762 uint32(0xfef3e6e7), uint32(0xbfc2fdfe), uint32(0x7c91d0d5), uint32(0x3da0cbcc), uint32(0xfa368a83), 3763 uint32(0xbb07919a), uint32(0x7854bcb1), uint32(0x3965a7a8), uint32(0x4b98833b), uint32(0x0aa99822), 3764 uint32(0xc9fab509), uint32(0x88cbae10), uint32(0x4f5def5f), uint32(0x0e6cf446), uint32(0xcd3fd96d), 3765 uint32(0x8c0ec274), uint32(0x43125af3), uint32(0x022341ea), uint32(0xc1706cc1), uint32(0x804177d8), 3766 uint32(0x47d73697), uint32(0x06e62d8e), uint32(0xc5b500a5), uint32(0x84841bbc), uint32(0x1a8a4171), 3767 uint32(0x5bbb5a68), uint32(0x98e87743), uint32(0xd9d96c5a), uint32(0x1e4f2d15), uint32(0x5f7e360c), 3768 uint32(0x9c2d1b27), uint32(0xdd1c003e), uint32(0x120098b9), uint32(0x533183a0), uint32(0x9062ae8b), 3769 uint32(0xd153b592), uint32(0x16c5f4dd), uint32(0x57f4efc4), uint32(0x94a7c2ef), uint32(0xd596d9f6), 3770 uint32(0xe9bc07ae), uint32(0xa88d1cb7), uint32(0x6bde319c), uint32(0x2aef2a85), uint32(0xed796bca), 3771 uint32(0xac4870d3), uint32(0x6f1b5df8), uint32(0x2e2a46e1), uint32(0xe136de66), uint32(0xa007c57f), 3772 uint32(0x6354e854), uint32(0x2265f34d), uint32(0xe5f3b202), uint32(0xa4c2a91b), uint32(0x67918430), 3773 uint32(0x26a09f29), uint32(0xb8aec5e4), uint32(0xf99fdefd), uint32(0x3accf3d6), uint32(0x7bfde8cf), 3774 uint32(0xbc6ba980), uint32(0xfd5ab299), uint32(0x3e099fb2), uint32(0x7f3884ab), uint32(0xb0241c2c), 3775 uint32(0xf1150735), uint32(0x32462a1e), uint32(0x73773107), uint32(0xb4e17048), uint32(0xf5d06b51), 3776 uint32(0x3683467a), uint32(0x77b25d63), uint32(0x4ed7facb), uint32(0x0fe6e1d2), uint32(0xccb5ccf9), 3777 uint32(0x8d84d7e0), uint32(0x4a1296af), uint32(0x0b238db6), uint32(0xc870a09d), uint32(0x8941bb84), 3778 uint32(0x465d2303), uint32(0x076c381a), uint32(0xc43f1531), uint32(0x850e0e28), uint32(0x42984f67), 3779 uint32(0x03a9547e), uint32(0xc0fa7955), uint32(0x81cb624c), uint32(0x1fc53881), uint32(0x5ef42398), 3780 uint32(0x9da70eb3), uint32(0xdc9615aa), uint32(0x1b0054e5), uint32(0x5a314ffc), uint32(0x996262d7), 3781 uint32(0xd85379ce), uint32(0x174fe149), uint32(0x567efa50), uint32(0x952dd77b), uint32(0xd41ccc62), 3782 uint32(0x138a8d2d), uint32(0x52bb9634), uint32(0x91e8bb1f), uint32(0xd0d9a006), uint32(0xecf37e5e), 3783 uint32(0xadc26547), uint32(0x6e91486c), uint32(0x2fa05375), uint32(0xe836123a), uint32(0xa9070923), 3784 uint32(0x6a542408), uint32(0x2b653f11), uint32(0xe479a796), uint32(0xa548bc8f), uint32(0x661b91a4), 3785 uint32(0x272a8abd), uint32(0xe0bccbf2), uint32(0xa18dd0eb), uint32(0x62defdc0), uint32(0x23efe6d9), 3786 uint32(0xbde1bc14), uint32(0xfcd0a70d), uint32(0x3f838a26), uint32(0x7eb2913f), uint32(0xb924d070), 3787 uint32(0xf815cb69), uint32(0x3b46e642), uint32(0x7a77fd5b), uint32(0xb56b65dc), uint32(0xf45a7ec5), 3788 uint32(0x370953ee), uint32(0x763848f7), uint32(0xb1ae09b8), uint32(0xf09f12a1), uint32(0x33cc3f8a), 3789 uint32(0x72fd2493), 3790 }, 3791 { 3792 uint32(0x00000000), uint32(0x376ac201), uint32(0x6ed48403), uint32(0x59be4602), uint32(0xdca80907), 3793 uint32(0xebc2cb06), uint32(0xb27c8d04), uint32(0x85164f05), uint32(0xb851130e), uint32(0x8f3bd10f), 3794 uint32(0xd685970d), uint32(0xe1ef550c), uint32(0x64f91a09), uint32(0x5393d808), uint32(0x0a2d9e0a), 3795 uint32(0x3d475c0b), uint32(0x70a3261c), uint32(0x47c9e41d), uint32(0x1e77a21f), uint32(0x291d601e), 3796 uint32(0xac0b2f1b), uint32(0x9b61ed1a), uint32(0xc2dfab18), uint32(0xf5b56919), uint32(0xc8f23512), 3797 uint32(0xff98f713), uint32(0xa626b111), uint32(0x914c7310), uint32(0x145a3c15), uint32(0x2330fe14), 3798 uint32(0x7a8eb816), uint32(0x4de47a17), uint32(0xe0464d38), uint32(0xd72c8f39), uint32(0x8e92c93b), 3799 uint32(0xb9f80b3a), uint32(0x3cee443f), uint32(0x0b84863e), uint32(0x523ac03c), uint32(0x6550023d), 3800 uint32(0x58175e36), uint32(0x6f7d9c37), uint32(0x36c3da35), uint32(0x01a91834), uint32(0x84bf5731), 3801 uint32(0xb3d59530), uint32(0xea6bd332), uint32(0xdd011133), uint32(0x90e56b24), uint32(0xa78fa925), 3802 uint32(0xfe31ef27), uint32(0xc95b2d26), uint32(0x4c4d6223), uint32(0x7b27a022), uint32(0x2299e620), 3803 uint32(0x15f32421), uint32(0x28b4782a), uint32(0x1fdeba2b), uint32(0x4660fc29), uint32(0x710a3e28), 3804 uint32(0xf41c712d), uint32(0xc376b32c), uint32(0x9ac8f52e), uint32(0xada2372f), uint32(0xc08d9a70), 3805 uint32(0xf7e75871), uint32(0xae591e73), uint32(0x9933dc72), uint32(0x1c259377), uint32(0x2b4f5176), 3806 uint32(0x72f11774), uint32(0x459bd575), uint32(0x78dc897e), uint32(0x4fb64b7f), uint32(0x16080d7d), 3807 uint32(0x2162cf7c), uint32(0xa4748079), uint32(0x931e4278), uint32(0xcaa0047a), uint32(0xfdcac67b), 3808 uint32(0xb02ebc6c), uint32(0x87447e6d), uint32(0xdefa386f), uint32(0xe990fa6e), uint32(0x6c86b56b), 3809 uint32(0x5bec776a), uint32(0x02523168), uint32(0x3538f369), uint32(0x087faf62), uint32(0x3f156d63), 3810 uint32(0x66ab2b61), uint32(0x51c1e960), uint32(0xd4d7a665), uint32(0xe3bd6464), uint32(0xba032266), 3811 uint32(0x8d69e067), uint32(0x20cbd748), uint32(0x17a11549), uint32(0x4e1f534b), uint32(0x7975914a), 3812 uint32(0xfc63de4f), uint32(0xcb091c4e), uint32(0x92b75a4c), uint32(0xa5dd984d), uint32(0x989ac446), 3813 uint32(0xaff00647), uint32(0xf64e4045), uint32(0xc1248244), uint32(0x4432cd41), uint32(0x73580f40), 3814 uint32(0x2ae64942), uint32(0x1d8c8b43), uint32(0x5068f154), uint32(0x67023355), uint32(0x3ebc7557), 3815 uint32(0x09d6b756), uint32(0x8cc0f853), uint32(0xbbaa3a52), uint32(0xe2147c50), uint32(0xd57ebe51), 3816 uint32(0xe839e25a), uint32(0xdf53205b), uint32(0x86ed6659), uint32(0xb187a458), uint32(0x3491eb5d), 3817 uint32(0x03fb295c), uint32(0x5a456f5e), uint32(0x6d2fad5f), uint32(0x801b35e1), uint32(0xb771f7e0), 3818 uint32(0xeecfb1e2), uint32(0xd9a573e3), uint32(0x5cb33ce6), uint32(0x6bd9fee7), uint32(0x3267b8e5), 3819 uint32(0x050d7ae4), uint32(0x384a26ef), uint32(0x0f20e4ee), uint32(0x569ea2ec), uint32(0x61f460ed), 3820 uint32(0xe4e22fe8), uint32(0xd388ede9), uint32(0x8a36abeb), uint32(0xbd5c69ea), uint32(0xf0b813fd), 3821 uint32(0xc7d2d1fc), uint32(0x9e6c97fe), uint32(0xa90655ff), uint32(0x2c101afa), uint32(0x1b7ad8fb), 3822 uint32(0x42c49ef9), uint32(0x75ae5cf8), uint32(0x48e900f3), uint32(0x7f83c2f2), uint32(0x263d84f0), 3823 uint32(0x115746f1), uint32(0x944109f4), uint32(0xa32bcbf5), uint32(0xfa958df7), uint32(0xcdff4ff6), 3824 uint32(0x605d78d9), uint32(0x5737bad8), uint32(0x0e89fcda), uint32(0x39e33edb), uint32(0xbcf571de), 3825 uint32(0x8b9fb3df), uint32(0xd221f5dd), uint32(0xe54b37dc), uint32(0xd80c6bd7), uint32(0xef66a9d6), 3826 uint32(0xb6d8efd4), uint32(0x81b22dd5), uint32(0x04a462d0), uint32(0x33cea0d1), uint32(0x6a70e6d3), 3827 uint32(0x5d1a24d2), uint32(0x10fe5ec5), uint32(0x27949cc4), uint32(0x7e2adac6), uint32(0x494018c7), 3828 uint32(0xcc5657c2), uint32(0xfb3c95c3), uint32(0xa282d3c1), uint32(0x95e811c0), uint32(0xa8af4dcb), 3829 uint32(0x9fc58fca), uint32(0xc67bc9c8), uint32(0xf1110bc9), uint32(0x740744cc), uint32(0x436d86cd), 3830 uint32(0x1ad3c0cf), uint32(0x2db902ce), uint32(0x4096af91), uint32(0x77fc6d90), uint32(0x2e422b92), 3831 uint32(0x1928e993), uint32(0x9c3ea696), uint32(0xab546497), uint32(0xf2ea2295), uint32(0xc580e094), 3832 uint32(0xf8c7bc9f), uint32(0xcfad7e9e), uint32(0x9613389c), uint32(0xa179fa9d), uint32(0x246fb598), 3833 uint32(0x13057799), uint32(0x4abb319b), uint32(0x7dd1f39a), uint32(0x3035898d), uint32(0x075f4b8c), 3834 uint32(0x5ee10d8e), uint32(0x698bcf8f), uint32(0xec9d808a), uint32(0xdbf7428b), uint32(0x82490489), 3835 uint32(0xb523c688), uint32(0x88649a83), uint32(0xbf0e5882), uint32(0xe6b01e80), uint32(0xd1dadc81), 3836 uint32(0x54cc9384), uint32(0x63a65185), uint32(0x3a181787), uint32(0x0d72d586), uint32(0xa0d0e2a9), 3837 uint32(0x97ba20a8), uint32(0xce0466aa), uint32(0xf96ea4ab), uint32(0x7c78ebae), uint32(0x4b1229af), 3838 uint32(0x12ac6fad), uint32(0x25c6adac), uint32(0x1881f1a7), uint32(0x2feb33a6), uint32(0x765575a4), 3839 uint32(0x413fb7a5), uint32(0xc429f8a0), uint32(0xf3433aa1), uint32(0xaafd7ca3), uint32(0x9d97bea2), 3840 uint32(0xd073c4b5), uint32(0xe71906b4), uint32(0xbea740b6), uint32(0x89cd82b7), uint32(0x0cdbcdb2), 3841 uint32(0x3bb10fb3), uint32(0x620f49b1), uint32(0x55658bb0), uint32(0x6822d7bb), uint32(0x5f4815ba), 3842 uint32(0x06f653b8), uint32(0x319c91b9), uint32(0xb48adebc), uint32(0x83e01cbd), uint32(0xda5e5abf), 3843 uint32(0xed3498be), 3844 }, 3845 { 3846 uint32(0x00000000), uint32(0x6567bcb8), uint32(0x8bc809aa), uint32(0xeeafb512), uint32(0x5797628f), 3847 uint32(0x32f0de37), uint32(0xdc5f6b25), uint32(0xb938d79d), uint32(0xef28b4c5), uint32(0x8a4f087d), 3848 uint32(0x64e0bd6f), uint32(0x018701d7), uint32(0xb8bfd64a), uint32(0xddd86af2), uint32(0x3377dfe0), 3849 uint32(0x56106358), uint32(0x9f571950), uint32(0xfa30a5e8), uint32(0x149f10fa), uint32(0x71f8ac42), 3850 uint32(0xc8c07bdf), uint32(0xada7c767), uint32(0x43087275), uint32(0x266fcecd), uint32(0x707fad95), 3851 uint32(0x1518112d), uint32(0xfbb7a43f), uint32(0x9ed01887), uint32(0x27e8cf1a), uint32(0x428f73a2), 3852 uint32(0xac20c6b0), uint32(0xc9477a08), uint32(0x3eaf32a0), uint32(0x5bc88e18), uint32(0xb5673b0a), 3853 uint32(0xd00087b2), uint32(0x6938502f), uint32(0x0c5fec97), uint32(0xe2f05985), uint32(0x8797e53d), 3854 uint32(0xd1878665), uint32(0xb4e03add), uint32(0x5a4f8fcf), uint32(0x3f283377), uint32(0x8610e4ea), 3855 uint32(0xe3775852), uint32(0x0dd8ed40), uint32(0x68bf51f8), uint32(0xa1f82bf0), uint32(0xc49f9748), 3856 uint32(0x2a30225a), uint32(0x4f579ee2), uint32(0xf66f497f), uint32(0x9308f5c7), uint32(0x7da740d5), 3857 uint32(0x18c0fc6d), uint32(0x4ed09f35), uint32(0x2bb7238d), uint32(0xc518969f), uint32(0xa07f2a27), 3858 uint32(0x1947fdba), uint32(0x7c204102), uint32(0x928ff410), uint32(0xf7e848a8), uint32(0x3d58149b), 3859 uint32(0x583fa823), uint32(0xb6901d31), uint32(0xd3f7a189), uint32(0x6acf7614), uint32(0x0fa8caac), 3860 uint32(0xe1077fbe), uint32(0x8460c306), uint32(0xd270a05e), uint32(0xb7171ce6), uint32(0x59b8a9f4), 3861 uint32(0x3cdf154c), uint32(0x85e7c2d1), uint32(0xe0807e69), uint32(0x0e2fcb7b), uint32(0x6b4877c3), 3862 uint32(0xa20f0dcb), uint32(0xc768b173), uint32(0x29c70461), uint32(0x4ca0b8d9), uint32(0xf5986f44), 3863 uint32(0x90ffd3fc), uint32(0x7e5066ee), uint32(0x1b37da56), uint32(0x4d27b90e), uint32(0x284005b6), 3864 uint32(0xc6efb0a4), uint32(0xa3880c1c), uint32(0x1ab0db81), uint32(0x7fd76739), uint32(0x9178d22b), 3865 uint32(0xf41f6e93), uint32(0x03f7263b), uint32(0x66909a83), uint32(0x883f2f91), uint32(0xed589329), 3866 uint32(0x546044b4), uint32(0x3107f80c), uint32(0xdfa84d1e), uint32(0xbacff1a6), uint32(0xecdf92fe), 3867 uint32(0x89b82e46), uint32(0x67179b54), uint32(0x027027ec), uint32(0xbb48f071), uint32(0xde2f4cc9), 3868 uint32(0x3080f9db), uint32(0x55e74563), uint32(0x9ca03f6b), uint32(0xf9c783d3), uint32(0x176836c1), 3869 uint32(0x720f8a79), uint32(0xcb375de4), uint32(0xae50e15c), uint32(0x40ff544e), uint32(0x2598e8f6), 3870 uint32(0x73888bae), uint32(0x16ef3716), uint32(0xf8408204), uint32(0x9d273ebc), uint32(0x241fe921), 3871 uint32(0x41785599), uint32(0xafd7e08b), uint32(0xcab05c33), uint32(0x3bb659ed), uint32(0x5ed1e555), 3872 uint32(0xb07e5047), uint32(0xd519ecff), uint32(0x6c213b62), uint32(0x094687da), uint32(0xe7e932c8), 3873 uint32(0x828e8e70), uint32(0xd49eed28), uint32(0xb1f95190), uint32(0x5f56e482), uint32(0x3a31583a), 3874 uint32(0x83098fa7), uint32(0xe66e331f), uint32(0x08c1860d), uint32(0x6da63ab5), uint32(0xa4e140bd), 3875 uint32(0xc186fc05), uint32(0x2f294917), uint32(0x4a4ef5af), uint32(0xf3762232), uint32(0x96119e8a), 3876 uint32(0x78be2b98), uint32(0x1dd99720), uint32(0x4bc9f478), uint32(0x2eae48c0), uint32(0xc001fdd2), 3877 uint32(0xa566416a), uint32(0x1c5e96f7), uint32(0x79392a4f), uint32(0x97969f5d), uint32(0xf2f123e5), 3878 uint32(0x05196b4d), uint32(0x607ed7f5), uint32(0x8ed162e7), uint32(0xebb6de5f), uint32(0x528e09c2), 3879 uint32(0x37e9b57a), uint32(0xd9460068), uint32(0xbc21bcd0), uint32(0xea31df88), uint32(0x8f566330), 3880 uint32(0x61f9d622), uint32(0x049e6a9a), uint32(0xbda6bd07), uint32(0xd8c101bf), uint32(0x366eb4ad), 3881 uint32(0x53090815), uint32(0x9a4e721d), uint32(0xff29cea5), uint32(0x11867bb7), uint32(0x74e1c70f), 3882 uint32(0xcdd91092), uint32(0xa8beac2a), uint32(0x46111938), uint32(0x2376a580), uint32(0x7566c6d8), 3883 uint32(0x10017a60), uint32(0xfeaecf72), uint32(0x9bc973ca), uint32(0x22f1a457), uint32(0x479618ef), 3884 uint32(0xa939adfd), uint32(0xcc5e1145), uint32(0x06ee4d76), uint32(0x6389f1ce), uint32(0x8d2644dc), 3885 uint32(0xe841f864), uint32(0x51792ff9), uint32(0x341e9341), uint32(0xdab12653), uint32(0xbfd69aeb), 3886 uint32(0xe9c6f9b3), uint32(0x8ca1450b), uint32(0x620ef019), uint32(0x07694ca1), uint32(0xbe519b3c), 3887 uint32(0xdb362784), uint32(0x35999296), uint32(0x50fe2e2e), uint32(0x99b95426), uint32(0xfcdee89e), 3888 uint32(0x12715d8c), uint32(0x7716e134), uint32(0xce2e36a9), uint32(0xab498a11), uint32(0x45e63f03), 3889 uint32(0x208183bb), uint32(0x7691e0e3), uint32(0x13f65c5b), uint32(0xfd59e949), uint32(0x983e55f1), 3890 uint32(0x2106826c), uint32(0x44613ed4), uint32(0xaace8bc6), uint32(0xcfa9377e), uint32(0x38417fd6), 3891 uint32(0x5d26c36e), uint32(0xb389767c), uint32(0xd6eecac4), uint32(0x6fd61d59), uint32(0x0ab1a1e1), 3892 uint32(0xe41e14f3), uint32(0x8179a84b), uint32(0xd769cb13), uint32(0xb20e77ab), uint32(0x5ca1c2b9), 3893 uint32(0x39c67e01), uint32(0x80fea99c), uint32(0xe5991524), uint32(0x0b36a036), uint32(0x6e511c8e), 3894 uint32(0xa7166686), uint32(0xc271da3e), uint32(0x2cde6f2c), uint32(0x49b9d394), uint32(0xf0810409), 3895 uint32(0x95e6b8b1), uint32(0x7b490da3), uint32(0x1e2eb11b), uint32(0x483ed243), uint32(0x2d596efb), 3896 uint32(0xc3f6dbe9), uint32(0xa6916751), uint32(0x1fa9b0cc), uint32(0x7ace0c74), uint32(0x9461b966), 3897 uint32(0xf10605de), 3898 }, 3899 } /* crc32.h:5:25 */ 3900 3901 // ========================================================================= 3902 // This function can be used by asm versions of crc32() 3903 func Xget_crc_table(tls *libc.TLS) uintptr { /* crc32.c:188:19: */ 3904 return uintptr(uintptr(unsafe.Pointer(&crc_table))) 3905 } 3906 3907 // ========================================================================= 3908 3909 // ========================================================================= 3910 func Xcrc32_z(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:202:23: */ 3911 bp := tls.Alloc(4) 3912 defer tls.Free(4) 3913 3914 if buf == uintptr(Z_NULL) { 3915 return 0 3916 } 3917 3918 if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(Ptrdiff_t(0))) { 3919 // var endian Z_crc_t at bp, 4 3920 3921 *(*Z_crc_t)(unsafe.Pointer(bp /* endian */)) = Z_crc_t(1) 3922 if *(*uint8)(unsafe.Pointer(bp /* &endian */)) != 0 { 3923 return crc32_little(tls, crc, buf, len) 3924 } else { 3925 return crc32_big(tls, crc, buf, len) 3926 } 3927 } 3928 crc = (crc ^ 0xffffffff) 3929 for len >= uint64(8) { 3930 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3931 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3932 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3933 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3934 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3935 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3936 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3937 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3938 len = len - (uint64(8)) 3939 } 3940 if len != 0 { 3941 for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 { 3942 crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8)) 3943 } 3944 } 3945 return (crc ^ 0xffffffff) 3946 } 3947 3948 // ========================================================================= 3949 func Xcrc32(tls *libc.TLS, crc uint64, buf uintptr, len UInt) uint64 { /* crc32.c:237:23: */ 3950 return Xcrc32_z(tls, crc, buf, uint64(len)) 3951 } 3952 3953 // 3954 // This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit 3955 // integer pointer type. This violates the strict aliasing rule, where a 3956 // compiler can assume, for optimization purposes, that two pointers to 3957 // fundamentally different types won't ever point to the same memory. This can 3958 // manifest as a problem only if one of the pointers is written to. This code 3959 // only reads from those pointers. So long as this code remains isolated in 3960 // this compilation unit, there won't be a problem. For this reason, this code 3961 // should not be copied and pasted into a compilation unit in which other code 3962 // writes to the buffer that is passed to these routines. 3963 // 3964 3965 // ========================================================================= 3966 3967 // ========================================================================= 3968 func crc32_little(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:266:21: */ 3969 var c Z_crc_t 3970 var buf4 uintptr 3971 3972 c = Z_crc_t(crc) 3973 c = ^c 3974 for (len != 0) && ((Ptrdiff_t(buf) & int64(3)) != 0) { 3975 c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8)) 3976 len-- 3977 } 3978 3979 buf4 = buf 3980 for len >= uint64(32) { 3981 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3982 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3983 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3984 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3985 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3986 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3987 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3988 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3989 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3990 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3991 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3992 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3993 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3994 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3995 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 3996 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 3997 len = len - (uint64(32)) 3998 } 3999 for len >= uint64(4) { 4000 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4001 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4))) 4002 len = len - (uint64(4)) 4003 } 4004 buf = buf4 4005 4006 if len != 0 { 4007 for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 { 4008 c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8)) 4009 } 4010 } 4011 c = ^c 4012 return uint64(c) 4013 } 4014 4015 // ========================================================================= 4016 4017 // ========================================================================= 4018 func crc32_big(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:306:21: */ 4019 var c Z_crc_t 4020 var buf4 uintptr 4021 4022 c = ((((((Z_crc_t(crc)) >> 24) & Z_crc_t(0xff)) + (((Z_crc_t(crc)) >> 8) & Z_crc_t(0xff00))) + (((Z_crc_t(crc)) & Z_crc_t(0xff00)) << 8)) + (((Z_crc_t(crc)) & Z_crc_t(0xff)) << 24)) 4023 c = ^c 4024 for (len != 0) && ((Ptrdiff_t(buf) & int64(3)) != 0) { 4025 c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8)) 4026 len-- 4027 } 4028 4029 buf4 = buf 4030 for len >= uint64(32) { 4031 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4032 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4033 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4034 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4035 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4036 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4037 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4038 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4039 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4040 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4041 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4042 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4043 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4044 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4045 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4046 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4047 len = len - (uint64(32)) 4048 } 4049 for len >= uint64(4) { 4050 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 4051 c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4))) 4052 len = len - (uint64(4)) 4053 } 4054 buf = buf4 4055 4056 if len != 0 { 4057 for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 { 4058 c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8)) 4059 } 4060 } 4061 c = ^c 4062 return (uint64((((((c) >> 24) & Z_crc_t(0xff)) + (((c) >> 8) & Z_crc_t(0xff00))) + (((c) & Z_crc_t(0xff00)) << 8)) + (((c) & Z_crc_t(0xff)) << 24))) 4063 } 4064 4065 // ========================================================================= 4066 func gf2_matrix_times(tls *libc.TLS, mat uintptr, vec uint64) uint64 { /* crc32.c:344:21: */ 4067 var sum uint64 4068 4069 sum = uint64(0) 4070 for vec != 0 { 4071 if (vec & uint64(1)) != 0 { 4072 sum = sum ^ (*(*uint64)(unsafe.Pointer(mat))) 4073 } 4074 vec >>= 1 4075 mat += 8 4076 } 4077 return sum 4078 } 4079 4080 // ========================================================================= 4081 func gf2_matrix_square(tls *libc.TLS, square uintptr, mat uintptr) { /* crc32.c:361:12: */ 4082 var n int32 4083 4084 for n = 0; n < GF2_DIM; n++ { 4085 *(*uint64)(unsafe.Pointer(square + uintptr(n)*8)) = gf2_matrix_times(tls, mat, *(*uint64)(unsafe.Pointer(mat + uintptr(n)*8))) 4086 } 4087 } 4088 4089 // ========================================================================= 4090 func crc32_combine_(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:372:13: */ 4091 bp := tls.Alloc(512) 4092 defer tls.Free(512) 4093 4094 var n int32 4095 var row uint64 4096 // var even [32]uint64 at bp+256, 256 4097 // even-power-of-two zeros operator 4098 // var odd [32]uint64 at bp, 256 4099 // odd-power-of-two zeros operator 4100 4101 // degenerate case (also disallow negative lengths) 4102 if len2 <= int64(0) { 4103 return crc1 4104 } 4105 4106 // put operator for one zero bit in odd 4107 *(*uint64)(unsafe.Pointer(bp /* &odd[0] */)) = 0xedb88320 // CRC-32 polynomial 4108 row = uint64(1) 4109 for n = 1; n < GF2_DIM; n++ { 4110 *(*uint64)(unsafe.Pointer(bp /* &odd[0] */ + uintptr(n)*8)) = row 4111 row <<= 1 4112 } 4113 4114 // put operator for two zero bits in even 4115 gf2_matrix_square(tls, bp+256 /* &even[0] */, bp /* &odd[0] */) 4116 4117 // put operator for four zero bits in odd 4118 gf2_matrix_square(tls, bp /* &odd[0] */, bp+256 /* &even[0] */) 4119 4120 // apply len2 zeros to crc1 (first square will put the operator for one 4121 // zero byte, eight zero bits, in even) 4122 for ok := true; ok; ok = (len2 != int64(0)) { 4123 // apply zeros operator for this bit of len2 4124 gf2_matrix_square(tls, bp+256 /* &even[0] */, bp /* &odd[0] */) 4125 if (len2 & int64(1)) != 0 { 4126 crc1 = gf2_matrix_times(tls, bp+256 /* &even[0] */, crc1) 4127 } 4128 len2 >>= 1 4129 4130 // if no more bits set, then done 4131 if len2 == int64(0) { 4132 break 4133 } 4134 4135 // another iteration of the loop with odd and even swapped 4136 gf2_matrix_square(tls, bp /* &odd[0] */, bp+256 /* &even[0] */) 4137 if (len2 & int64(1)) != 0 { 4138 crc1 = gf2_matrix_times(tls, bp /* &odd[0] */, crc1) 4139 } 4140 len2 >>= 1 4141 4142 // if no more bits set, then done 4143 } 4144 4145 // return combined crc 4146 crc1 = crc1 ^ (crc2) 4147 return crc1 4148 } 4149 4150 // ========================================================================= 4151 func Xcrc32_combine(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:428:15: */ 4152 return crc32_combine_(tls, crc1, crc2, len2) 4153 } 4154 4155 func Xcrc32_combine64(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:436:15: */ 4156 return crc32_combine_(tls, crc1, crc2, len2) 4157 } 4158 4159 // Reverse the bytes in a 32-bit value 4160 4161 // define NO_GZIP when compiling if you want to disable gzip header and 4162 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 4163 // the crc code when it is not needed. For shared libraries, gzip encoding 4164 // should be left enabled. 4165 4166 // =========================================================================== 4167 // Internal compression state. 4168 4169 // number of length codes, not counting the special END_BLOCK code 4170 4171 // number of literal bytes 0..255 4172 4173 // number of Literal or Length codes, including the END_BLOCK code 4174 4175 // number of distance codes 4176 4177 // number of codes used to transfer the bit lengths 4178 4179 // maximum heap size 4180 4181 // All codes must not exceed MAX_BITS bits 4182 4183 // size of bit buffer in bi_buf 4184 4185 // Stream status 4186 4187 // Data structure describing a single value and its code string. 4188 type Ct_data_s = struct { 4189 Ffc struct{ Ffreq Ush } 4190 Fdl struct{ Fdad Ush } 4191 } /* zlib.h:84:1 */ 4192 4193 // Reverse the bytes in a 32-bit value 4194 4195 // define NO_GZIP when compiling if you want to disable gzip header and 4196 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 4197 // the crc code when it is not needed. For shared libraries, gzip encoding 4198 // should be left enabled. 4199 4200 // =========================================================================== 4201 // Internal compression state. 4202 4203 // number of length codes, not counting the special END_BLOCK code 4204 4205 // number of literal bytes 0..255 4206 4207 // number of Literal or Length codes, including the END_BLOCK code 4208 4209 // number of distance codes 4210 4211 // number of codes used to transfer the bit lengths 4212 4213 // maximum heap size 4214 4215 // All codes must not exceed MAX_BITS bits 4216 4217 // size of bit buffer in bi_buf 4218 4219 // Stream status 4220 4221 // Data structure describing a single value and its code string. 4222 type Ct_data = Ct_data_s /* deflate.h:77:7 */ 4223 4224 type Static_tree_desc_s = struct { 4225 Fstatic_tree uintptr 4226 Fextra_bits uintptr 4227 Fextra_base int32 4228 Felems int32 4229 Fmax_length int32 4230 F__ccgo_pad1 [4]byte 4231 } /* deflate.h:84:9 */ 4232 4233 type Tree_desc_s = struct { 4234 Fdyn_tree uintptr 4235 Fmax_code int32 4236 F__ccgo_pad1 [4]byte 4237 Fstat_desc uintptr 4238 } /* zlib.h:84:1 */ 4239 4240 type Tree_desc = Tree_desc_s /* deflate.h:90:7 */ 4241 4242 type Pos = Ush /* deflate.h:92:13 */ 4243 type Posf = Pos /* deflate.h:93:17 */ 4244 type IPos = uint32 /* deflate.h:94:18 */ 4245 4246 // A Pos is an index in the character window. We use short instead of int to 4247 // save space in the various tables. IPos is used only for parameter passing. 4248 4249 type Deflate_state = Internal_state /* deflate.h:276:7 */ 4250 4251 var Xdeflate_copyright = *(*[69]int8)(unsafe.Pointer(ts + 7 /* " deflate 1.2.11 ..." */)) /* deflate.c:54:12 */ 4252 // 4253 // If you use the zlib library in a product, an acknowledgment is welcome 4254 // in the documentation of your product. If for some reason you cannot 4255 // include such an acknowledgment, I would appreciate that you keep this 4256 // copyright string in the executable of your product. 4257 // 4258 4259 // =========================================================================== 4260 // Function prototypes. 4261 type Block_state = uint32 /* deflate.c:71:3 */ 4262 4263 type Compress_func = uintptr /* deflate.c:73:21 */ 4264 4265 // =========================================================================== 4266 // Local data 4267 4268 // Tail of hash chains 4269 4270 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 4271 4272 // Values for max_lazy_match, good_match and max_chain_length, depending on 4273 // the desired pack level (0..9). The values given below have been tuned to 4274 // exclude worst case performance for pathological files. Better values may be 4275 // found for specific files. 4276 type Config_s = struct { 4277 Fgood_length Ush 4278 Fmax_lazy Ush 4279 Fnice_length Ush 4280 Fmax_chain Ush 4281 Ffunc Compress_func 4282 } /* deflate.c:120:9 */ 4283 4284 // =========================================================================== 4285 // Local data 4286 4287 // Tail of hash chains 4288 4289 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 4290 4291 // Values for max_lazy_match, good_match and max_chain_length, depending on 4292 // the desired pack level (0..9). The values given below have been tuned to 4293 // exclude worst case performance for pathological files. Better values may be 4294 // found for specific files. 4295 type Config = Config_s /* deflate.c:126:3 */ 4296 4297 var configuration_table = [10]Config{ 4298 // good lazy nice chain 4299 /* 0 */ {Ffunc: 0}, // store only 4300 /* 1 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(8), Fmax_chain: Ush(4), Ffunc: 0}, // max speed, no lazy matches 4301 /* 2 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(5), Fnice_length: Ush(16), Fmax_chain: Ush(8), Ffunc: 0}, 4302 /* 3 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(6), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 4303 4304 /* 4 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(16), Fmax_chain: Ush(16), Ffunc: 0}, // lazy matches 4305 /* 5 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 4306 /* 6 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(128), Fmax_chain: Ush(128), Ffunc: 0}, 4307 /* 7 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(32), Fnice_length: Ush(128), Fmax_chain: Ush(256), Ffunc: 0}, 4308 /* 8 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(128), Fnice_length: Ush(258), Fmax_chain: Ush(1024), Ffunc: 0}, 4309 /* 9 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(258), Fnice_length: Ush(258), Fmax_chain: Ush(4096), Ffunc: 0}} /* deflate.c:134:20 */ 4310 4311 // max compression 4312 4313 // Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 4314 // For deflate_fast() (levels <= 3) good is ignored and lazy has a different 4315 // meaning. 4316 4317 // rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH 4318 4319 // =========================================================================== 4320 // Update a hash value with the given input byte 4321 // IN assertion: all calls to UPDATE_HASH are made with consecutive input 4322 // characters, so that a running hash key can be computed from the previous 4323 // key instead of complete recalculation each time. 4324 4325 // =========================================================================== 4326 // Insert string str in the dictionary and set match_head to the previous head 4327 // of the hash chain (the most recent string with same hash key). Return 4328 // the previous length of the hash chain. 4329 // If this file is compiled with -DFASTEST, the compression level is forced 4330 // to 1, and no hash chains are maintained. 4331 // IN assertion: all calls to INSERT_STRING are made with consecutive input 4332 // characters and the first MIN_MATCH bytes of str are valid (except for 4333 // the last MIN_MATCH-1 bytes of the input file). 4334 4335 // =========================================================================== 4336 // Initialize the hash table (avoiding 64K overflow for 16 bit systems). 4337 // prev[] will be initialized on the fly. 4338 4339 // =========================================================================== 4340 // Slide the hash table when sliding the window down (could be avoided with 32 4341 // bit values at the expense of memory usage). We slide even when level == 0 to 4342 // keep the hash table consistent if we switch back to level > 0 later. 4343 func slide_hash(tls *libc.TLS, s uintptr) { /* deflate.c:201:12: */ 4344 var n uint32 4345 var m uint32 4346 var p uintptr 4347 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 4348 4349 n = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size 4350 p = ((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(n)*2) 4351 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 4352 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 4353 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 4354 if m >= wsize { 4355 return (uint16(m - wsize)) 4356 } 4357 return uint16(NIL) 4358 }() 4359 } 4360 n = wsize 4361 p = ((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr(n)*2) 4362 for ok1 := true; ok1; ok1 = libc.PreDecUint32(&n, 1) != 0 { 4363 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 4364 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 4365 if m >= wsize { 4366 return (uint16(m - wsize)) 4367 } 4368 return uint16(NIL) 4369 }() 4370 // If n is not on any hash chain, prev[n] is garbage but 4371 // its value will never be used. 4372 } 4373 } 4374 4375 // ========================================================================= 4376 func XdeflateInit_(tls *libc.TLS, strm Z_streamp, level int32, version uintptr, stream_size int32) int32 { /* deflate.c:228:13: */ 4377 return XdeflateInit2_(tls, strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, 4378 Z_DEFAULT_STRATEGY, version, stream_size) 4379 // To do: ignore strm->next_in if we use it as window 4380 } 4381 4382 // ========================================================================= 4383 func XdeflateInit2_(tls *libc.TLS, strm Z_streamp, level int32, method int32, windowBits int32, memLevel int32, strategy int32, version uintptr, stream_size int32) int32 { /* deflate.c:240:13: */ 4384 var s uintptr 4385 var wrap int32 = 1 4386 var overlay uintptr 4387 // We overlay pending_buf and d_buf+l_buf. This works since the average 4388 // output size for (length,distance) codes is <= 24 bits. 4389 4390 if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(my_version[0]))) || (uint64(stream_size) != uint64(unsafe.Sizeof(Z_stream{}))) { 4391 return -6 4392 } 4393 if strm == uintptr(Z_NULL) { 4394 return -2 4395 } 4396 4397 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 4398 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 4399 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 4400 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 4401 }{Xzcalloc})) 4402 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 4403 } 4404 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 4405 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 4406 f func(*libc.TLS, Voidpf, Voidpf) 4407 }{Xzcfree})) 4408 } 4409 4410 if level == (-1) { 4411 level = 6 4412 } 4413 4414 if windowBits < 0 { // suppress zlib wrapper 4415 wrap = 0 4416 windowBits = -windowBits 4417 } else if windowBits > 15 { 4418 wrap = 2 // write gzip wrapper instead 4419 windowBits = windowBits - (16) 4420 } 4421 if (((((((((memLevel < 1) || (memLevel > MAX_MEM_LEVEL)) || (method != Z_DEFLATED)) || (windowBits < 8)) || (windowBits > 15)) || (level < 0)) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED)) || ((windowBits == 8) && (wrap != 1)) { 4422 return -2 4423 } 4424 if windowBits == 8 { 4425 windowBits = 9 4426 } // until 256-byte window bug fixed 4427 s = (*struct { 4428 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 4429 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{}))) 4430 if s == uintptr(Z_NULL) { 4431 return -4 4432 } 4433 (*Z_stream)(unsafe.Pointer(strm)).Fstate = s 4434 (*Deflate_state)(unsafe.Pointer(s)).Fstrm = strm 4435 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = INIT_STATE // to pass state test in deflateReset() 4436 4437 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 4438 (*Deflate_state)(unsafe.Pointer(s)).Fgzhead = Gz_headerp(Z_NULL) 4439 (*Deflate_state)(unsafe.Pointer(s)).Fw_bits = UInt(windowBits) 4440 (*Deflate_state)(unsafe.Pointer(s)).Fw_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fw_bits)) 4441 (*Deflate_state)(unsafe.Pointer(s)).Fw_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(1)) 4442 4443 (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits = (UInt(memLevel) + UInt(7)) 4444 (*Deflate_state)(unsafe.Pointer(s)).Fhash_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits)) 4445 (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) 4446 (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift = ((((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits + UInt(MIN_MATCH)) - UInt(1)) / UInt(MIN_MATCH)) 4447 4448 (*Deflate_state)(unsafe.Pointer(s)).Fwindow = (*struct { 4449 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 4450 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, (uint32(uint64(2) * uint64(unsafe.Sizeof(Byte(0)))))) 4451 (*Deflate_state)(unsafe.Pointer(s)).Fprev = (*struct { 4452 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 4453 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, uint32(unsafe.Sizeof(Pos(0)))) 4454 (*Deflate_state)(unsafe.Pointer(s)).Fhead = (*struct { 4455 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 4456 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fhash_size, uint32(unsafe.Sizeof(Pos(0)))) 4457 4458 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = uint64(0) // nothing written to s->window yet 4459 4460 (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize = (UInt(int32(1) << (memLevel + 6))) // 16K elements by default 4461 4462 overlay = (*struct { 4463 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 4464 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize, (uint32(uint64(unsafe.Sizeof(Ush(0))) + uint64(2)))) 4465 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf = overlay 4466 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize) * (uint64(unsafe.Sizeof(Ush(0))) + uint64(2))) 4467 4468 if ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf == uintptr(Z_NULL)) { 4469 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 4470 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-4))] 4471 XdeflateEnd(tls, strm) 4472 return -4 4473 } 4474 (*Deflate_state)(unsafe.Pointer(s)).Fd_buf = (overlay + uintptr((uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0)))))*2) 4475 (*Deflate_state)(unsafe.Pointer(s)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((uint64(1) + uint64(unsafe.Sizeof(Ush(0)))) * uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)))) 4476 4477 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 4478 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 4479 (*Deflate_state)(unsafe.Pointer(s)).Fmethod = Byte(method) 4480 4481 return XdeflateReset(tls, strm) 4482 } 4483 4484 var my_version = *(*[7]int8)(unsafe.Pointer(ts /* "1.2.11" */)) /* deflate.c:253:23 */ 4485 4486 // ========================================================================= 4487 // Check for a valid deflate stream state. Return 0 if ok, 1 if not. 4488 func deflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:353:11: */ 4489 var s uintptr 4490 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 4491 return 1 4492 } 4493 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4494 if ((s == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fstrm != strm)) || (((((((((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != GZIP_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != EXTRA_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != NAME_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != COMMENT_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != HCRC_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != BUSY_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) { 4495 return 1 4496 } 4497 return 0 4498 } 4499 4500 // ========================================================================= 4501 func XdeflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* deflate.c:376:13: */ 4502 var s uintptr 4503 var str UInt 4504 var n UInt 4505 var wrap int32 4506 var avail uint32 4507 var next uintptr 4508 4509 if (deflateStateCheck(tls, strm) != 0) || (dictionary == uintptr(Z_NULL)) { 4510 return -2 4511 } 4512 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4513 wrap = (*Deflate_state)(unsafe.Pointer(s)).Fwrap 4514 if ((wrap == 2) || ((wrap == 1) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE))) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != 0) { 4515 return -2 4516 } 4517 4518 // when using zlib wrappers, compute Adler-32 for provided dictionary 4519 if wrap == 1 { 4520 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, dictionary, dictLength) 4521 } 4522 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = 0 // avoid computing Adler-32 in read_buf 4523 4524 // if dictionary would fill window, just replace the history 4525 if dictLength >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 4526 if wrap == 0 { // already empty otherwise 4527 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 4528 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0))))) 4529 4530 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 4531 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 4532 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 4533 } 4534 dictionary += (uintptr(dictLength - (*Deflate_state)(unsafe.Pointer(s)).Fw_size)) // use the tail 4535 dictLength = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 4536 } 4537 4538 // insert dictionary into window and hash 4539 avail = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 4540 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 4541 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = dictLength 4542 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = dictionary 4543 fill_window(tls, s) 4544 for (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 4545 str = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 4546 n = ((*Deflate_state)(unsafe.Pointer(s)).Flookahead - (UInt(MIN_MATCH - 1))) 4547 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 4548 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 4549 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) 4550 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 4551 str++ 4552 } 4553 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = str 4554 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = (UInt(MIN_MATCH - 1)) 4555 fill_window(tls, s) 4556 } 4557 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 4558 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 4559 (*Deflate_state)(unsafe.Pointer(s)).Finsert = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 4560 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 4561 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184 /* &.prev_length */, (UInt(MIN_MATCH - 1))) 4562 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 4563 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 4564 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = avail 4565 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 4566 return Z_OK 4567 } 4568 4569 // ========================================================================= 4570 func XdeflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* deflate.c:445:13: */ 4571 var s uintptr 4572 var len UInt 4573 4574 if deflateStateCheck(tls, strm) != 0 { 4575 return -2 4576 } 4577 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4578 len = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) 4579 if len > (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 4580 len = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 4581 } 4582 if (dictionary != uintptr(Z_NULL)) && (len != 0) { 4583 libc.Xmemcpy(tls, dictionary, ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - uintptr(len)), uint64(len)) 4584 } 4585 if dictLength != uintptr(Z_NULL) { 4586 *(*UInt)(unsafe.Pointer(dictLength)) = len 4587 } 4588 return Z_OK 4589 } 4590 4591 // ========================================================================= 4592 func XdeflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:467:13: */ 4593 var s uintptr 4594 4595 if deflateStateCheck(tls, strm) != 0 { 4596 return -2 4597 } 4598 4599 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40 /* &.total_out */, uint64(0)) 4600 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // use zfree if we ever allocate msg dynamically 4601 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = Z_UNKNOWN 4602 4603 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4604 (*Deflate_state)(unsafe.Pointer(s)).Fpending = uint64(0) 4605 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 4606 4607 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap < 0 { 4608 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap // was made negative by deflate(..., Z_FINISH); 4609 } 4610 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = func() int32 { 4611 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 4612 return GZIP_STATE 4613 } 4614 return func() int32 { 4615 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap != 0 { 4616 return INIT_STATE 4617 } 4618 return BUSY_STATE 4619 }() 4620 }() 4621 (*Z_stream)(unsafe.Pointer(strm)).Fadler = func() uint64 { 4622 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 4623 return Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 4624 } 4625 return Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 4626 }() 4627 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = Z_NO_FLUSH 4628 4629 X_tr_init(tls, s) 4630 4631 return Z_OK 4632 } 4633 4634 // ========================================================================= 4635 func XdeflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:505:13: */ 4636 var ret int32 4637 4638 ret = XdeflateResetKeep(tls, strm) 4639 if ret == Z_OK { 4640 lm_init(tls, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 4641 } 4642 return ret 4643 } 4644 4645 // ========================================================================= 4646 func XdeflateSetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* deflate.c:517:13: */ 4647 if (deflateStateCheck(tls, strm) != 0) || ((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap != 2) { 4648 return -2 4649 } 4650 (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fgzhead = head 4651 return Z_OK 4652 } 4653 4654 // ========================================================================= 4655 func XdeflatePending(tls *libc.TLS, strm Z_streamp, pending uintptr, bits uintptr) int32 { /* deflate.c:528:13: */ 4656 if deflateStateCheck(tls, strm) != 0 { 4657 return -2 4658 } 4659 if pending != uintptr(Z_NULL) { 4660 *(*uint32)(unsafe.Pointer(pending)) = uint32((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending) 4661 } 4662 if bits != uintptr(Z_NULL) { 4663 *(*int32)(unsafe.Pointer(bits)) = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fbi_valid 4664 } 4665 return Z_OK 4666 } 4667 4668 // ========================================================================= 4669 func XdeflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* deflate.c:542:13: */ 4670 var s uintptr 4671 var put int32 4672 4673 if deflateStateCheck(tls, strm) != 0 { 4674 return -2 4675 } 4676 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4677 if ((*Deflate_state)(unsafe.Pointer(s)).Fd_buf) < ((*Deflate_state)(unsafe.Pointer(s)).Fpending_out + uintptr((int32((Buf_size + 7)) >> 3))) { 4678 return -5 4679 } 4680 for ok := true; ok; ok = bits != 0 { 4681 put = (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 4682 if put > bits { 4683 put = bits 4684 } 4685 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((value & ((int32(1) << put) - 1)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))))) 4686 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (put) 4687 X_tr_flush_bits(tls, s) 4688 value >>= put 4689 bits = bits - (put) 4690 } 4691 return Z_OK 4692 } 4693 4694 // ========================================================================= 4695 func XdeflateParams(tls *libc.TLS, strm Z_streamp, level int32, strategy int32) int32 { /* deflate.c:568:13: */ 4696 var s uintptr 4697 var func1 Compress_func 4698 4699 if deflateStateCheck(tls, strm) != 0 { 4700 return -2 4701 } 4702 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4703 4704 if level == (-1) { 4705 level = 6 4706 } 4707 if (((level < 0) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED) { 4708 return -2 4709 } 4710 func1 = configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc 4711 4712 if ((strategy != (*Deflate_state)(unsafe.Pointer(s)).Fstrategy) || (func1 != configuration_table[level].Ffunc)) && ((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water != 0) { 4713 // Flush the last buffer: 4714 var err int32 = Xdeflate(tls, strm, Z_BLOCK) 4715 if err == (-2) { 4716 return err 4717 } 4718 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 4719 return -5 4720 } 4721 } 4722 if (*Deflate_state)(unsafe.Pointer(s)).Flevel != level { 4723 if ((*Deflate_state)(unsafe.Pointer(s)).Flevel == 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatches != UInt(0)) { 4724 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches == UInt(1) { 4725 slide_hash(tls, s) 4726 } else { 4727 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 4728 } 4729 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0))))) 4730 4731 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(0) 4732 } 4733 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 4734 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[level].Fmax_lazy) 4735 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[level].Fgood_length) 4736 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[level].Fnice_length) 4737 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[level].Fmax_chain) 4738 } 4739 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 4740 return Z_OK 4741 } 4742 4743 // ========================================================================= 4744 func XdeflateTune(tls *libc.TLS, strm Z_streamp, good_length int32, max_lazy int32, nice_length int32, max_chain int32) int32 { /* deflate.c:617:13: */ 4745 var s uintptr 4746 4747 if deflateStateCheck(tls, strm) != 0 { 4748 return -2 4749 } 4750 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4751 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(good_length) 4752 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(max_lazy) 4753 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = nice_length 4754 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(max_chain) 4755 return Z_OK 4756 } 4757 4758 // ========================================================================= 4759 // For the default windowBits of 15 and memLevel of 8, this function returns 4760 // a close to exact, as well as small, upper bound on the compressed size. 4761 // They are coded as constants here for a reason--if the #define's are 4762 // changed, then this function needs to be changed as well. The return 4763 // value for 15 and 8 only works for those exact settings. 4764 // 4765 // For any setting other than those defaults for windowBits and memLevel, 4766 // the value returned is a conservative worst case for the maximum expansion 4767 // resulting from using fixed blocks instead of stored blocks, which deflate 4768 // can emit on compressed data for some combinations of the parameters. 4769 // 4770 // This function could be more sophisticated to provide closer upper bounds for 4771 // every combination of windowBits and memLevel. But even the conservative 4772 // upper bound of about 14% expansion does not seem onerous for output buffer 4773 // allocation. 4774 func XdeflateBound(tls *libc.TLS, strm Z_streamp, sourceLen ULong) ULong { /* deflate.c:652:15: */ 4775 var s uintptr 4776 var complen ULong 4777 var wraplen ULong 4778 4779 // conservative upper bound for compressed data 4780 complen = (((sourceLen + ((sourceLen + uint64(7)) >> 3)) + ((sourceLen + uint64(63)) >> 6)) + uint64(5)) 4781 4782 // if can't get parameters, return conservative bound plus zlib wrapper 4783 if deflateStateCheck(tls, strm) != 0 { 4784 return (complen + uint64(6)) 4785 } 4786 4787 // compute wrapper length 4788 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4789 switch (*Deflate_state)(unsafe.Pointer(s)).Fwrap { 4790 case 0: // raw deflate 4791 wraplen = uint64(0) 4792 break 4793 case 1: // zlib wrapper 4794 wraplen = (ULong(6 + (func() int32 { 4795 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != 0 { 4796 return 4 4797 } 4798 return 0 4799 }()))) 4800 break 4801 case 2: // gzip wrapper 4802 wraplen = uint64(18) 4803 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead != uintptr(Z_NULL) { // user-supplied gzip header 4804 var str uintptr 4805 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 4806 wraplen = wraplen + (ULong(UInt(2) + (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len)) 4807 } 4808 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname 4809 if str != uintptr(Z_NULL) { 4810 for ok := true; ok; ok = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 4811 wraplen++ 4812 } 4813 } 4814 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment 4815 if str != uintptr(Z_NULL) { 4816 for ok1 := true; ok1; ok1 = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 4817 wraplen++ 4818 } 4819 } 4820 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 4821 wraplen = wraplen + (uint64(2)) 4822 } 4823 } 4824 break 4825 default: // for compiler happiness 4826 wraplen = uint64(6) 4827 } 4828 4829 // if not default parameters, return conservative bound 4830 if ((*Deflate_state)(unsafe.Pointer(s)).Fw_bits != UInt(15)) || ((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits != (UInt(8 + 7))) { 4831 return (complen + wraplen) 4832 } 4833 4834 // default settings: return tight bound for that case 4835 return ((((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + uint64(13)) - uint64(6)) + wraplen) 4836 } 4837 4838 // ========================================================================= 4839 // Put a short in the pending buffer. The 16-bit value is put in MSB order. 4840 // IN assertion: the stream state is correct and there is enough room in 4841 // pending_buf. 4842 func putShortMSB(tls *libc.TLS, s uintptr, b UInt) { /* deflate.c:716:12: */ 4843 { 4844 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b >> 8)) 4845 } 4846 4847 { 4848 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b & UInt(0xff))) 4849 } 4850 4851 } 4852 4853 // ========================================================================= 4854 // Flush as much pending output as possible. All deflate() output, except for 4855 // some deflate_stored() output, goes through this function so some 4856 // applications may wish to modify it to avoid allocating a large 4857 // strm->next_out buffer and copying into it. (See also read_buf()). 4858 func flush_pending(tls *libc.TLS, strm Z_streamp) { /* deflate.c:730:12: */ 4859 var len uint32 4860 var s uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4861 4862 X_tr_flush_bits(tls, s) 4863 len = uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending) 4864 if len > (*Z_stream)(unsafe.Pointer(strm)).Favail_out { 4865 len = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 4866 } 4867 if len == uint32(0) { 4868 return 4869 } 4870 4871 libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fpending_out, uint64(len)) 4872 *(*uintptr)(unsafe.Pointer(strm + 24 /* &.next_out */)) += (uintptr(len)) 4873 *(*uintptr)(unsafe.Pointer(s + 32 /* &.pending_out */)) += (uintptr(len)) 4874 *(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(len)) 4875 *(*UInt)(unsafe.Pointer(strm + 32 /* &.avail_out */)) -= (len) 4876 *(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) -= (Ulg(len)) 4877 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == uint64(0) { 4878 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 4879 } 4880 } 4881 4882 // =========================================================================== 4883 // Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. 4884 4885 // ========================================================================= 4886 func Xdeflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* deflate.c:763:13: */ 4887 var old_flush int32 // value of flush param for previous deflate call 4888 var s uintptr 4889 4890 if ((deflateStateCheck(tls, strm) != 0) || (flush > Z_BLOCK)) || (flush < 0) { 4891 return -2 4892 } 4893 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 4894 4895 if (((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL)) || (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) && ((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)))) || (((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && (flush != Z_FINISH)) { 4896 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-2))]; return -2 }() 4897 } 4898 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 4899 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 4900 } 4901 4902 old_flush = (*Deflate_state)(unsafe.Pointer(s)).Flast_flush 4903 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = flush 4904 4905 // Flush as much pending output as possible 4906 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 4907 flush_pending(tls, strm) 4908 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 4909 // Since avail_out is 0, deflate will be called again with 4910 // more output space, but possibly with both pending and 4911 // avail_in equal to zero. There won't be anything to do, 4912 // but this is not an error situation so make sure we 4913 // return OK instead of BUF_ERROR at next call of deflate: 4914 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 4915 return Z_OK 4916 } 4917 4918 // Make sure there is something to do and avoid duplicate consecutive 4919 // flushes. For repeated and useless calls with Z_FINISH, we keep 4920 // returning Z_STREAM_END instead of Z_BUF_ERROR. 4921 } else if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((((flush) * 2) - (func() int32 { 4922 if (flush) > 4 { 4923 return 9 4924 } 4925 return 0 4926 }())) <= (((old_flush) * 2) - (func() int32 { 4927 if (old_flush) > 4 { 4928 return 9 4929 } 4930 return 0 4931 }())))) && (flush != Z_FINISH) { 4932 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 4933 } 4934 4935 // User must not provide more input after the first FINISH: 4936 if ((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) { 4937 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 4938 } 4939 4940 // Write the header 4941 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == INIT_STATE { 4942 // zlib header 4943 var header UInt = ((UInt(Z_DEFLATED) + (((*Deflate_state)(unsafe.Pointer(s)).Fw_bits - UInt(8)) << 4)) << 8) 4944 var level_flags UInt 4945 4946 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 4947 level_flags = UInt(0) 4948 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel < 6 { 4949 level_flags = UInt(1) 4950 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 6 { 4951 level_flags = UInt(2) 4952 } else { 4953 level_flags = UInt(3) 4954 } 4955 header = header | (level_flags << 6) 4956 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 4957 header = header | (UInt(PRESET_DICT)) 4958 } 4959 header = header + (UInt(31) - (header % UInt(31))) 4960 4961 putShortMSB(tls, s, header) 4962 4963 // Save the adler32 of the preset dictionary: 4964 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 4965 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16))) 4966 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xffff)))) 4967 } 4968 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 4969 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 4970 4971 // Compression must start with an empty pending buffer 4972 flush_pending(tls, strm) 4973 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 4974 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 4975 return Z_OK 4976 } 4977 } 4978 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == GZIP_STATE { 4979 // gzip header 4980 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 4981 { 4982 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(31) 4983 } 4984 4985 { 4986 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(139) 4987 } 4988 4989 { 4990 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(8) 4991 } 4992 4993 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead == uintptr(Z_NULL) { 4994 { 4995 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 4996 } 4997 4998 { 4999 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 5000 } 5001 5002 { 5003 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 5004 } 5005 5006 { 5007 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 5008 } 5009 5010 { 5011 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 5012 } 5013 5014 { 5015 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 5016 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 5017 return uint8(2) 5018 } 5019 return func() uint8 { 5020 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 5021 return uint8(4) 5022 } 5023 return uint8(0) 5024 }() 5025 }() 5026 } 5027 5028 { 5029 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(OS_CODE) 5030 } 5031 5032 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 5033 5034 // Compression must start with an empty pending buffer 5035 flush_pending(tls, strm) 5036 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5037 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5038 return Z_OK 5039 } 5040 } else { 5041 { 5042 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((((func() int32 { 5043 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftext != 0 { 5044 return 1 5045 } 5046 return 0 5047 }()) + (func() int32 { 5048 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 5049 return 2 5050 } 5051 return 0 5052 }())) + (func() int32 { 5053 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra == uintptr(Z_NULL) { 5054 return 0 5055 } 5056 return 4 5057 }())) + (func() int32 { 5058 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname == uintptr(Z_NULL) { 5059 return 0 5060 } 5061 return 8 5062 }())) + (func() int32 { 5063 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment == uintptr(Z_NULL) { 5064 return 0 5065 } 5066 return 16 5067 }()))) 5068 } 5069 5070 { 5071 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime & uint64(0xff))) 5072 } 5073 5074 { 5075 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 8) & uint64(0xff))) 5076 } 5077 5078 { 5079 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 16) & uint64(0xff))) 5080 } 5081 5082 { 5083 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 24) & uint64(0xff))) 5084 } 5085 5086 { 5087 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 5088 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 5089 return uint8(2) 5090 } 5091 return func() uint8 { 5092 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 5093 return uint8(4) 5094 } 5095 return uint8(0) 5096 }() 5097 }() 5098 } 5099 5100 { 5101 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fos & 0xff)) 5102 } 5103 5104 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 5105 { 5106 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xff))) 5107 } 5108 5109 { 5110 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len >> 8) & UInt(0xff))) 5111 } 5112 5113 } 5114 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 5115 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf, 5116 uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending)) 5117 } 5118 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 5119 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = EXTRA_STATE 5120 } 5121 } 5122 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == EXTRA_STATE { 5123 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 5124 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 5125 var left UInt = (UInt((Ulg((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xffff))) - (*Deflate_state)(unsafe.Pointer(s)).Fgzindex)) 5126 for ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(left)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 5127 var copy UInt = (UInt((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fpending)) 5128 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), 5129 ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), uint64(copy)) 5130 (*Deflate_state)(unsafe.Pointer(s)).Fpending = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size 5131 for ok := true; ok; ok = 0 != 0 { 5132 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5133 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5134 } 5135 } 5136 *(*Ulg)(unsafe.Pointer(s + 64 /* &.gzindex */)) += (Ulg(copy)) 5137 flush_pending(tls, strm) 5138 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5139 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5140 return Z_OK 5141 } 5142 beg = uint64(0) 5143 left = left - (copy) 5144 } 5145 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), 5146 ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), uint64(left)) 5147 *(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) += (Ulg(left)) 5148 for ok1 := true; ok1; ok1 = 0 != 0 { 5149 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5150 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5151 } 5152 } 5153 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 5154 } 5155 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = NAME_STATE 5156 } 5157 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == NAME_STATE { 5158 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname != uintptr(Z_NULL) { 5159 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 5160 var val int32 5161 for ok2 := true; ok2; ok2 = (val != 0) { 5162 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 5163 for ok3 := true; ok3; ok3 = 0 != 0 { 5164 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5165 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5166 } 5167 } 5168 flush_pending(tls, strm) 5169 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5170 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5171 return Z_OK 5172 } 5173 beg = uint64(0) 5174 } 5175 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 5176 { 5177 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 5178 } 5179 5180 } 5181 for ok4 := true; ok4; ok4 = 0 != 0 { 5182 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5183 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5184 } 5185 } 5186 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 5187 } 5188 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = COMMENT_STATE 5189 } 5190 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == COMMENT_STATE { 5191 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment != uintptr(Z_NULL) { 5192 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 5193 var val int32 5194 for ok5 := true; ok5; ok5 = (val != 0) { 5195 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 5196 for ok6 := true; ok6; ok6 = 0 != 0 { 5197 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5198 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5199 } 5200 } 5201 flush_pending(tls, strm) 5202 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5203 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5204 return Z_OK 5205 } 5206 beg = uint64(0) 5207 } 5208 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 5209 { 5210 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 5211 } 5212 5213 } 5214 for ok7 := true; ok7; ok7 = 0 != 0 { 5215 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 5216 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg)))) 5217 } 5218 } 5219 } 5220 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = HCRC_STATE 5221 } 5222 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == HCRC_STATE { 5223 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 5224 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending + uint64(2)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 5225 flush_pending(tls, strm) 5226 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5227 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5228 return Z_OK 5229 } 5230 } 5231 { 5232 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff))) 5233 } 5234 5235 { 5236 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & uint64(0xff))) 5237 } 5238 5239 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 5240 } 5241 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 5242 5243 // Compression must start with an empty pending buffer 5244 flush_pending(tls, strm) 5245 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5246 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 5247 return Z_OK 5248 } 5249 } 5250 5251 // Start a new block or continue the current one. 5252 if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != UInt(0))) || ((flush != Z_NO_FLUSH) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) { 5253 var bstate Block_state 5254 5255 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 { 5256 bstate = deflate_stored(tls, s, flush) 5257 } else { 5258 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_HUFFMAN_ONLY { 5259 bstate = deflate_huff(tls, s, flush) 5260 } else { 5261 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_RLE { 5262 bstate = deflate_rle(tls, s, flush) 5263 } else { 5264 bstate = (*struct { 5265 f func(*libc.TLS, uintptr, int32) Block_state 5266 })(unsafe.Pointer(&struct{ uintptr }{configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc})).f(tls, s, flush) 5267 } 5268 } 5269 } 5270 5271 if (bstate == Finish_started) || (bstate == Finish_done) { 5272 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 5273 } 5274 if (bstate == Need_more) || (bstate == Finish_started) { 5275 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 5276 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR next call, see above 5277 } 5278 return Z_OK 5279 // If flush != Z_NO_FLUSH && avail_out == 0, the next call 5280 // of deflate should use the same flush parameter to make sure 5281 // that the flush is complete. So we don't have to output an 5282 // empty block here, this will be done at next call. This also 5283 // ensures that for a very small output buffer, we emit at most 5284 // one empty block. 5285 } 5286 if bstate == Block_done { 5287 if flush == Z_PARTIAL_FLUSH { 5288 X_tr_align(tls, s) 5289 } else if flush != Z_BLOCK { // FULL_FLUSH or SYNC_FLUSH 5290 X_tr_stored_block(tls, s, uintptr(0), uint64(0), 0) 5291 // For a full flush, this empty block will be recognized 5292 // as a special marker by inflate_sync(). 5293 if flush == Z_FULL_FLUSH { 5294 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 5295 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0))))) 5296 // forget history 5297 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 5298 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 5299 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 5300 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 5301 } 5302 } 5303 } 5304 flush_pending(tls, strm) 5305 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 5306 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR at next call, see above 5307 return Z_OK 5308 } 5309 } 5310 } 5311 5312 if flush != Z_FINISH { 5313 return Z_OK 5314 } 5315 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap <= 0 { 5316 return Z_STREAM_END 5317 } 5318 5319 // Write the trailer 5320 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 5321 { 5322 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff))) 5323 } 5324 5325 { 5326 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & uint64(0xff))) 5327 } 5328 5329 { 5330 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16) & uint64(0xff))) 5331 } 5332 5333 { 5334 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 24) & uint64(0xff))) 5335 } 5336 5337 { 5338 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in & uint64(0xff))) 5339 } 5340 5341 { 5342 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 8) & uint64(0xff))) 5343 } 5344 5345 { 5346 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 16) & uint64(0xff))) 5347 } 5348 5349 { 5350 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 24) & uint64(0xff))) 5351 } 5352 5353 } else { 5354 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16))) 5355 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xffff)))) 5356 } 5357 flush_pending(tls, strm) 5358 // If avail_out is zero, the application will call deflate again 5359 // to flush the rest. 5360 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap > 0 { 5361 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap 5362 } // write the trailer only once! 5363 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 5364 return Z_OK 5365 } 5366 return Z_STREAM_END 5367 } 5368 5369 // ========================================================================= 5370 func XdeflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:1076:13: */ 5371 var status int32 5372 5373 if deflateStateCheck(tls, strm) != 0 { 5374 return -2 5375 } 5376 5377 status = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fstatus 5378 5379 /* Deallocate in reverse order of allocations: */ 5380 { 5381 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf != 0 { 5382 (*struct { 5383 f func(*libc.TLS, Voidpf, Voidpf) 5384 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf) 5385 } 5386 } 5387 5388 { 5389 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead != 0 { 5390 (*struct { 5391 f func(*libc.TLS, Voidpf, Voidpf) 5392 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead) 5393 } 5394 } 5395 5396 { 5397 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev != 0 { 5398 (*struct { 5399 f func(*libc.TLS, Voidpf, Voidpf) 5400 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev) 5401 } 5402 } 5403 5404 { 5405 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow != 0 { 5406 (*struct { 5407 f func(*libc.TLS, Voidpf, Voidpf) 5408 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow) 5409 } 5410 } 5411 5412 (*struct { 5413 f func(*libc.TLS, Voidpf, Voidpf) 5414 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 5415 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 5416 5417 if status == BUSY_STATE { 5418 return -3 5419 } 5420 return Z_OK 5421 } 5422 5423 // ========================================================================= 5424 // Copy the source state to the destination state. 5425 // To simplify the source, this is not supported for 16-bit MSDOS (which 5426 // doesn't have enough memory anyway to duplicate compression states). 5427 func XdeflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* deflate.c:1102:13: */ 5428 var ds uintptr 5429 var ss uintptr 5430 var overlay uintptr 5431 5432 if (deflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) { 5433 return -2 5434 } 5435 5436 ss = (*Z_stream)(unsafe.Pointer(source)).Fstate 5437 5438 libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{}))) 5439 5440 ds = (*struct { 5441 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 5442 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{}))) 5443 if ds == uintptr(Z_NULL) { 5444 return -4 5445 } 5446 (*Z_stream)(unsafe.Pointer(dest)).Fstate = ds 5447 libc.Xmemcpy(tls, ds, ss, uint64(unsafe.Sizeof(Deflate_state{}))) 5448 (*Deflate_state)(unsafe.Pointer(ds)).Fstrm = dest 5449 5450 (*Deflate_state)(unsafe.Pointer(ds)).Fwindow = (*struct { 5451 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 5452 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, (uint32(uint64(2) * uint64(unsafe.Sizeof(Byte(0)))))) 5453 (*Deflate_state)(unsafe.Pointer(ds)).Fprev = (*struct { 5454 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 5455 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, uint32(unsafe.Sizeof(Pos(0)))) 5456 (*Deflate_state)(unsafe.Pointer(ds)).Fhead = (*struct { 5457 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 5458 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fhash_size, uint32(unsafe.Sizeof(Pos(0)))) 5459 overlay = (*struct { 5460 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 5461 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize, (uint32(uint64(unsafe.Sizeof(Ush(0))) + uint64(2)))) 5462 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf = overlay 5463 5464 if ((((*Deflate_state)(unsafe.Pointer(ds)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(ds)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf == uintptr(Z_NULL)) { 5465 XdeflateEnd(tls, dest) 5466 return -4 5467 } 5468 // following zmemcpy do not work for 16-bit MSDOS 5469 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fwindow, (*Deflate_state)(unsafe.Pointer(ss)).Fwindow, ((uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(2))) * uint64(unsafe.Sizeof(Byte(0))))) 5470 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fprev, (*Deflate_state)(unsafe.Pointer(ss)).Fprev, (uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size) * uint64(unsafe.Sizeof(Pos(0))))) 5471 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fhead, (*Deflate_state)(unsafe.Pointer(ss)).Fhead, (uint64((*Deflate_state)(unsafe.Pointer(ds)).Fhash_size) * uint64(unsafe.Sizeof(Pos(0))))) 5472 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf, (*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf, uint64(UInt((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf_size))) 5473 5474 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_out = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_out) - int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf)) / 1))) 5475 (*Deflate_state)(unsafe.Pointer(ds)).Fd_buf = (overlay + uintptr((uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0)))))*2) 5476 (*Deflate_state)(unsafe.Pointer(ds)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((uint64(1) + uint64(unsafe.Sizeof(Ush(0)))) * uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)))) 5477 5478 (*Deflate_state)(unsafe.Pointer(ds)).Fl_desc.Fdyn_tree = ds + 212 /* &.dyn_ltree */ 5479 (*Deflate_state)(unsafe.Pointer(ds)).Fd_desc.Fdyn_tree = ds + 2504 /* &.dyn_dtree */ 5480 (*Deflate_state)(unsafe.Pointer(ds)).Fbl_desc.Fdyn_tree = ds + 2748 /* &.bl_tree */ 5481 5482 return Z_OK 5483 } 5484 5485 // =========================================================================== 5486 // Read a new buffer from the current input stream, update the adler32 5487 // and total number of bytes read. All deflate() input goes through 5488 // this function so some applications may wish to modify it to avoid 5489 // allocating a large strm->next_in buffer and copying from it. 5490 // (See also flush_pending()). 5491 func read_buf(tls *libc.TLS, strm Z_streamp, buf uintptr, size uint32) uint32 { /* deflate.c:1164:16: */ 5492 var len uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 5493 5494 if len > size { 5495 len = size 5496 } 5497 if len == uint32(0) { 5498 return uint32(0) 5499 } 5500 5501 *(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (len) 5502 5503 libc.Xmemcpy(tls, buf, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(len)) 5504 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 1 { 5505 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 5506 } else if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 2 { 5507 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 5508 } 5509 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len)) 5510 *(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(len)) 5511 5512 return len 5513 } 5514 5515 // =========================================================================== 5516 // Initialize the "longest match" routines for a new zlib stream 5517 func lm_init(tls *libc.TLS, s uintptr) { /* deflate.c:1194:12: */ 5518 (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size = (uint64(2) * Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) 5519 5520 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 5521 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0))))) 5522 5523 // Set the default configuration parameters: 5524 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_lazy) 5525 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fgood_length) 5526 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fnice_length) 5527 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_chain) 5528 5529 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 5530 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 5531 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 5532 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 5533 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184 /* &.prev_length */, (UInt(MIN_MATCH - 1))) 5534 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 5535 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(0) 5536 } 5537 5538 // =========================================================================== 5539 // Set match_start to the longest match starting at the given string and 5540 // return its length. Matches shorter or equal to prev_length are discarded, 5541 // in which case the result is equal to prev_length and match_start is 5542 // garbage. 5543 // IN assertions: cur_match is the head of the hash chain for the current 5544 // string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 5545 // OUT assertion: the match length is not greater than s->lookahead. 5546 // For 80x86 and 680x0, an optimized version will be provided in match.asm or 5547 // match.S. The code will be functionally equivalent. 5548 func longest_match(tls *libc.TLS, s uintptr, cur_match IPos) UInt { /* deflate.c:1236:12: */ 5549 var chain_length uint32 = (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length // max hash chain length 5550 var scan uintptr = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) // current string 5551 var match uintptr // matched string 5552 var len int32 // length of current match 5553 var best_len int32 = int32((*Deflate_state)(unsafe.Pointer(s)).Fprev_length) // best match length so far 5554 var nice_match int32 = (*Deflate_state)(unsafe.Pointer(s)).Fnice_match // stop if match long enough 5555 var limit IPos 5556 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))) { 5557 limit = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) 5558 } else { 5559 limit = uint32(NIL) 5560 } 5561 // Stop when cur_match becomes <= limit. To simplify the code, 5562 // we prevent matches with the string of window index 0. 5563 var prev uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fprev 5564 var wmask UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_mask 5565 5566 var strend uintptr = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH)) 5567 var scan_end1 Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1)))) 5568 var scan_end Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 5569 5570 // The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. 5571 // It is easy to get rid of this optimization if necessary. 5572 5573 // Do not waste too much time if we already have a good match: 5574 if (*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= (*Deflate_state)(unsafe.Pointer(s)).Fgood_match { 5575 chain_length >>= 2 5576 } 5577 // Do not look for matches beyond the end of the input. This is necessary 5578 // to make deflate deterministic. 5579 if UInt(nice_match) > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 5580 nice_match = int32((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 5581 } 5582 5583 for ok := true; ok; ok = (((libc.AssignUint32(&cur_match, IPos(*(*Posf)(unsafe.Pointer(prev + uintptr((cur_match&wmask))*2))))) > limit) && 5584 (libc.PreDecUint32(&chain_length, 1) != uint32(0))) { 5585 5586 match = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(cur_match)) 5587 5588 // Skip to next match if the match length cannot increase 5589 // or if the match length is less than 2. Note that the checks below 5590 // for insufficient lookahead only occur occasionally for performance 5591 // reasons. Therefore uninitialized memory will be accessed, and 5592 // conditional jumps will be made that depend on those values. 5593 // However the length of the match is limited to the lookahead, so 5594 // the output of deflate is not affected by the uninitialized values. 5595 5596 if (((int32(*(*Bytef)(unsafe.Pointer(match + uintptr(best_len)))) != int32(scan_end)) || (int32(*(*Bytef)(unsafe.Pointer(match + uintptr((best_len - 1))))) != int32(scan_end1))) || (int32(*(*Bytef)(unsafe.Pointer(match))) != int32(*(*Bytef)(unsafe.Pointer(scan))))) || (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))) != int32(*(*Bytef)(unsafe.Pointer(scan + 1)))) { 5597 continue 5598 } 5599 5600 // The check at best_len-1 can be removed because it will be made 5601 // again later. (This heuristic is not always a win.) 5602 // It is not necessary to compare scan[2] and match[2] since they 5603 // are always equal when the other bytes match, given that 5604 // the hash keys are equal and that HASH_BITS >= 8. 5605 scan += uintptr(2) 5606 match++ 5607 5608 // We check for insufficient lookahead only every 8th comparison; 5609 // the 256th check will be made at strstart+258. 5610 for ok1 := true; ok1; ok1 = (((((((((int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (scan < strend)) { 5611 } 5612 5613 len = (MAX_MATCH - (int32((int64(strend) - int64(scan)) / 1))) 5614 scan = (strend - uintptr(MAX_MATCH)) 5615 5616 if len > best_len { 5617 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start = cur_match 5618 best_len = len 5619 if len >= nice_match { 5620 break 5621 } 5622 scan_end1 = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1)))) 5623 scan_end = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 5624 } 5625 } 5626 5627 if UInt(best_len) <= (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 5628 return UInt(best_len) 5629 } 5630 return (*Deflate_state)(unsafe.Pointer(s)).Flookahead 5631 } 5632 5633 // =========================================================================== 5634 // Fill the window when the lookahead becomes insufficient. 5635 // Updates strstart and lookahead. 5636 // 5637 // IN assertion: lookahead < MIN_LOOKAHEAD 5638 // OUT assertions: strstart <= window_size-MIN_LOOKAHEAD 5639 // At least one byte has been read, or avail_in == 0; reads are 5640 // performed for at least two bytes (required for the zip translate_eol 5641 // option -- not supported here). 5642 func fill_window(tls *libc.TLS, s uintptr) { /* deflate.c:1482:12: */ 5643 var n uint32 5644 var more uint32 // Amount of free space at the end of the window. 5645 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5646 5647 for ok := true; ok; ok = (((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in != UInt(0))) { 5648 more = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 5649 5650 // Deal with !@#$% 64K limit: 5651 if uint64(unsafe.Sizeof(int32(0))) <= uint64(2) { 5652 if ((more == uint32(0)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart == UInt(0))) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0)) { 5653 more = wsize 5654 5655 } else if more == libc.Uint32(libc.Uint32FromInt32(-1)) { 5656 // Very unlikely, but possible on 16 bit machine if 5657 // strstart == 0 && lookahead == 1 (input done a byte at time) 5658 more-- 5659 } 5660 } 5661 5662 // If the window is almost full and there is insufficient lookahead, 5663 // move the upper half to the lower one to make room in the upper half. 5664 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart >= (wsize + ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) { 5665 5666 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(wsize)), (uint64(wsize - more))) 5667 *(*UInt)(unsafe.Pointer(s + 176 /* &.match_start */)) -= (wsize) 5668 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= (wsize) // we now have strstart >= MAX_DIST 5669 *(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) -= (int64(wsize)) 5670 slide_hash(tls, s) 5671 more = more + (wsize) 5672 } 5673 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) { 5674 break 5675 } 5676 5677 // If there was no sliding: 5678 // strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && 5679 // more == window_size - lookahead - strstart 5680 // => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) 5681 // => more >= window_size - 2*WSIZE + 2 5682 // In the BIG_MEM or MMAP case (not yet supported), 5683 // window_size == input_size + MIN_LOOKAHEAD && 5684 // strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. 5685 // Otherwise, window_size == 2*WSIZE so more >= 2. 5686 // If there was sliding, more >= WSIZE. So in all cases, more >= 2. 5687 5688 n = read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)), more) 5689 *(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) += (n) 5690 5691 // Initialize the hash value now that we have some input: 5692 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) >= UInt(MIN_MATCH) { 5693 var str UInt = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Finsert) 5694 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(str)))) 5695 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((str + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 5696 for (*Deflate_state)(unsafe.Pointer(s)).Finsert != 0 { 5697 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 5698 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) 5699 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 5700 str++ 5701 (*Deflate_state)(unsafe.Pointer(s)).Finsert-- 5702 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) < UInt(MIN_MATCH) { 5703 break 5704 } 5705 } 5706 } 5707 // If the whole input has less than MIN_MATCH bytes, ins_h is garbage, 5708 // but this is not important since only literal bytes will be emitted. 5709 5710 } 5711 5712 // If the WIN_INIT bytes after the end of the current data have never been 5713 // written, then zero those bytes in order to avoid memory check reports of 5714 // the use of uninitialized (or uninitialised as Julian writes) bytes by 5715 // the longest match routines. Update the high water mark for the next 5716 // time through here. WIN_INIT is set to MAX_MATCH since the longest match 5717 // routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. 5718 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size { 5719 var curr Ulg = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead))) 5720 var init1 Ulg 5721 5722 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr { 5723 // Previous high water mark below current data -- zero WIN_INIT 5724 // bytes or up to end of window, whichever is less. 5725 init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - curr) 5726 if init1 > uint64(MAX_MATCH) { 5727 init1 = uint64(MAX_MATCH) 5728 } 5729 libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(curr)), 0, uint64(uint32(init1))) 5730 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = (curr + init1) 5731 } else if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (curr + uint64(MAX_MATCH)) { 5732 // High water mark at or above current data, but below current data 5733 // plus WIN_INIT -- zero out to current data plus WIN_INIT, or up 5734 // to end of window, whichever is less. 5735 init1 = ((curr + uint64(MAX_MATCH)) - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) 5736 if init1 > ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) { 5737 init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) 5738 } 5739 libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)), 0, uint64(uint32(init1))) 5740 *(*Ulg)(unsafe.Pointer(s + 5944 /* &.high_water */)) += (init1) 5741 } 5742 } 5743 5744 } 5745 5746 // =========================================================================== 5747 // Flush the current block, with given end-of-file flag. 5748 // IN assertion: strstart is set to the end of the current match. 5749 5750 // Same but force premature exit if necessary. 5751 5752 // Maximum stored block length in deflate format (not including header). 5753 5754 // Minimum of a and b. 5755 5756 // =========================================================================== 5757 // Copy without compression as much as possible from the input stream, return 5758 // the current block state. 5759 // 5760 // In case deflateParams() is used to later switch to a non-zero compression 5761 // level, s->matches (otherwise unused when storing) keeps track of the number 5762 // of hash table slides to perform. If s->matches is 1, then one hash table 5763 // slide will be done when switching. If s->matches is 2, the maximum value 5764 // allowed here, then the hash table will be cleared, since two or more slides 5765 // is the same as a clear. 5766 // 5767 // deflate_stored() is written to minimize the number of times an input byte is 5768 // copied. It is most efficient with large input and output buffers, which 5769 // maximizes the opportunites to have a single copy from next_in to next_out. 5770 func deflate_stored(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1643:19: */ 5771 // Smallest worthy block size when not flushing or finishing. By default 5772 // this is 32K. This can be as small as 507 bytes for memLevel == 1. For 5773 // large input and output buffers, the stored block size will be larger. 5774 var min_block uint32 = func() uint32 { 5775 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - uint64(5)) > (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) { 5776 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5777 } 5778 return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - uint64(5))) 5779 }() 5780 5781 // Copy as many min_block or larger stored blocks directly to next_out as 5782 // possible. If flushing, copy the remaining available input to next_out as 5783 // stored blocks, if there is enough space. 5784 var len uint32 5785 var left uint32 5786 var have uint32 5787 var last uint32 = uint32(0) 5788 var used uint32 = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 5789 for ok := true; ok; ok = (last == uint32(0)) { 5790 // Set len to the maximum size block that we can copy directly with the 5791 // available input data and output space. Set left to how much of that 5792 // would be copied from what's left in the window. 5793 len = uint32(MAX_STORED) // maximum deflate stored block length 5794 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes 5795 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out < have { // need room for header 5796 break 5797 } 5798 // maximum stored block length that will fit in avail_out: 5799 have = ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out - have) 5800 left = (uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) // bytes left in window 5801 if Ulg(len) > (Ulg(left) + Ulg((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) { 5802 len = (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) 5803 } // limit len to the input 5804 if len > have { 5805 len = have 5806 } // limit len to the output 5807 5808 // If the stored block would be less than min_block in length, or if 5809 // unable to copy all of the available input when flushing, then try 5810 // copying to the window and the pending buffer instead. Also don't 5811 // write an empty block when flushing -- deflate() does that. 5812 if (len < min_block) && ((((len == uint32(0)) && (flush != Z_FINISH)) || (flush == Z_NO_FLUSH)) || (len != (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in))) { 5813 break 5814 } 5815 5816 // Make a dummy stored block in pending to get the header bytes, 5817 // including any pending bits. This also updates the debugging counts. 5818 if (flush == Z_FINISH) && (len == (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) { 5819 last = uint32(1) 5820 } else { 5821 last = uint32(0) 5822 } 5823 X_tr_stored_block(tls, s, uintptr(0), uint64(0), int32(last)) 5824 5825 // Replace the lengths in the dummy stored block with len. 5826 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(4))))) = Bytef(len) 5827 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(3))))) = (Bytef(len >> 8)) 5828 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(2))))) = Bytef(^len) 5829 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(1))))) = (Bytef(^len >> 8)) 5830 5831 // Write the stored block header bytes. 5832 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 5833 5834 // Copy uncompressed bytes from the window to next_out. 5835 if left != 0 { 5836 if left > len { 5837 left = len 5838 } 5839 libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint64(left)) 5840 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24 /* &.next_out */)) += (uintptr(left)) 5841 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32 /* &.avail_out */)) -= (left) 5842 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40 /* &.total_out */)) += (ULong(left)) 5843 *(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) += (int64(left)) 5844 len = len - (left) 5845 } 5846 5847 // Copy uncompressed bytes directly from next_in to next_out, updating 5848 // the check value. 5849 if len != 0 { 5850 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, len) 5851 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24 /* &.next_out */)) += (uintptr(len)) 5852 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32 /* &.avail_out */)) -= (len) 5853 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40 /* &.total_out */)) += (ULong(len)) 5854 } 5855 } 5856 5857 // Update the sliding window with the last s->w_size bytes of the copied 5858 // data, or append all of the copied data to the existing window if less 5859 // than s->w_size bytes were copied. Also update the number of bytes to 5860 // insert in the hash tables, in the event that deflateParams() switches to 5861 // a non-zero compression level. 5862 used = used - ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) // number of input bytes directly copied 5863 if used != 0 { 5864 // If any input was used, then no unused input remains in the window, 5865 // therefore s->block_start == s->strstart. 5866 if used >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { // supplant the previous history 5867 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(2) // clear hash 5868 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) 5869 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5870 } else { 5871 if ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) <= Ulg(used) { 5872 // Slide the window down. 5873 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 5874 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) 5875 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 5876 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 5877 } // add a pending slide_hash() 5878 } 5879 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr(used)), uint64(used)) 5880 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += (used) 5881 } 5882 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 5883 *(*UInt)(unsafe.Pointer(s + 5932 /* &.insert */)) += (func() uint32 { 5884 if (used) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) { 5885 return ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) 5886 } 5887 return used 5888 }()) 5889 } 5890 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 5891 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 5892 } 5893 5894 // If the last block was written to next_out, then done. 5895 if last != 0 { 5896 return Finish_done 5897 } 5898 5899 // If flushing and all input has been consumed, then done. 5900 if (((flush != Z_NO_FLUSH) && (flush != Z_FINISH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) == (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) { 5901 return Block_done 5902 } 5903 5904 // Fill the window with any remaining input. 5905 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uint64(1))) 5906 if ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in > have) && ((*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) { 5907 // Slide the window down. 5908 *(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) -= (int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) 5909 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 5910 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) 5911 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 5912 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 5913 } // add a pending slide_hash() 5914 have = have + ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) // more space now 5915 } 5916 if have > (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in { 5917 have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 5918 } 5919 if have != 0 { 5920 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), have) 5921 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += (have) 5922 } 5923 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 5924 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 5925 } 5926 5927 // There was not enough avail_out to write a complete worthy or flushed 5928 // stored block to next_out. Write a stored block to pending instead, if we 5929 // have enough input for a worthy block, or if flushing and there is enough 5930 // room for the remaining input as a stored block in the pending buffer. 5931 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes 5932 // maximum stored block length that will fit in pending: 5933 have = func() uint32 { 5934 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)) > (uint64(MAX_STORED)) { 5935 return uint32(MAX_STORED) 5936 } 5937 return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have))) 5938 }() 5939 min_block = func() uint32 { 5940 if (have) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) { 5941 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5942 } 5943 return have 5944 }() 5945 left = (uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 5946 if (left >= min_block) || (((((left != 0) || (flush == Z_FINISH)) && (flush != Z_NO_FLUSH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (left <= have)) { 5947 len = func() uint32 { 5948 if (left) > (have) { 5949 return have 5950 } 5951 return left 5952 }() 5953 if ((flush == Z_FINISH) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (len == left) { 5954 last = uint32(1) 5955 } else { 5956 last = uint32(0) 5957 } 5958 X_tr_stored_block(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint64(len), int32(last)) 5959 *(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) += (int64(len)) 5960 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 5961 } 5962 5963 // We've done all we can with the available input and output. 5964 if last != 0 { 5965 return Finish_started 5966 } 5967 return Need_more 5968 } 5969 5970 // =========================================================================== 5971 // Compress as much as possible from the input stream, return the current 5972 // block state. 5973 // This function does not perform lazy evaluation of matches and inserts 5974 // new strings in the dictionary only for unmatched strings or for short 5975 // matches. It is used only for the fast compression options. 5976 func deflate_fast(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1824:19: */ 5977 var hash_head IPos // head of the hash chain 5978 var bflush int32 // set if current block must be flushed 5979 5980 for { 5981 // Make sure that we always have enough lookahead, except 5982 // at the end of the input file. We need MAX_MATCH bytes 5983 // for the next match, plus MIN_MATCH bytes to insert the 5984 // string following the next match. 5985 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) { 5986 fill_window(tls, s) 5987 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) { 5988 return Need_more 5989 } 5990 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 5991 break 5992 } // flush the current block 5993 } 5994 5995 // Insert the string window[strstart .. strstart+2] in the 5996 // dictionary, and set hash_head to the head of the hash chain: 5997 hash_head = IPos(NIL) 5998 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 5999 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 6000 hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)))) 6001 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6002 } 6003 6004 // Find the longest match, discarding those <= prev_length. 6005 // At this point we have always match_length < MIN_MATCH 6006 if (hash_head != IPos(NIL)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) { 6007 // To simplify the code, we prevent matches with the string 6008 // of window index 0 (in particular we have to avoid a match 6009 // of the string with itself at the start of the input file). 6010 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 6011 // longest_match() sets match_start 6012 } 6013 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 6014 6015 { 6016 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH))) 6017 var dist Ush = (Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start)) 6018 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 6019 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 6020 dist-- 6021 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 6022 *(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 { 6023 if (int32(dist)) < 256 { 6024 return int32(X_dist_code[dist]) 6025 } 6026 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 6027 }()))*4 /* &.fc */))++ 6028 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6029 } 6030 6031 *(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 6032 6033 // Insert new strings in the hash table only if the match length 6034 // is not too large. This saves time but degrades compression. 6035 if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) { 6036 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length-- // string at strstart already in table 6037 for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length, 1) != UInt(0)) { 6038 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6039 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 6040 hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)))) 6041 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6042 // strstart never exceeds WSIZE-MAX_MATCH, so there are 6043 // always MIN_MATCH bytes ahead. 6044 } 6045 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6046 } else { 6047 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 6048 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 6049 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))) 6050 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 6051 // If lookahead < MIN_MATCH, ins_h is garbage, but it does not 6052 // matter since it will be recomputed at next deflate call. 6053 } 6054 } else { 6055 // No match, output a literal byte 6056 6057 { 6058 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 6059 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 6060 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 6061 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 6062 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6063 } 6064 6065 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 6066 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6067 } 6068 if bflush != 0 { 6069 { 6070 X_tr_flush_block(tls, s, func() uintptr { 6071 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6072 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6073 } 6074 return uintptr(Z_NULL) 6075 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6076 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6077 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6078 } 6079 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6080 if 0 != 0 { 6081 return Finish_started 6082 } 6083 return Need_more 6084 } 6085 } 6086 6087 } 6088 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 6089 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) { 6090 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 6091 } 6092 return (uint32(MIN_MATCH - 1)) 6093 }() 6094 if flush == Z_FINISH { 6095 { 6096 { 6097 X_tr_flush_block(tls, s, func() uintptr { 6098 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6099 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6100 } 6101 return uintptr(Z_NULL) 6102 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 6103 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6104 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6105 } 6106 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6107 if 1 != 0 { 6108 return Finish_started 6109 } 6110 return Need_more 6111 } 6112 } 6113 6114 return Finish_done 6115 } 6116 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 6117 { 6118 X_tr_flush_block(tls, s, func() uintptr { 6119 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6120 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6121 } 6122 return uintptr(Z_NULL) 6123 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6124 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6125 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6126 } 6127 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6128 if 0 != 0 { 6129 return Finish_started 6130 } 6131 return Need_more 6132 } 6133 } 6134 6135 return Block_done 6136 } 6137 6138 // =========================================================================== 6139 // Same as above, but achieves better compression. We use a lazy 6140 // evaluation for matches: a match is finally adopted only if there is 6141 // no better match at the next window position. 6142 func deflate_slow(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1926:19: */ 6143 var hash_head IPos // head of hash chain 6144 var bflush int32 // set if current block must be flushed 6145 6146 // Process the input block. 6147 for { 6148 // Make sure that we always have enough lookahead, except 6149 // at the end of the input file. We need MAX_MATCH bytes 6150 // for the next match, plus MIN_MATCH bytes to insert the 6151 // string following the next match. 6152 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) { 6153 fill_window(tls, s) 6154 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) { 6155 return Need_more 6156 } 6157 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6158 break 6159 } // flush the current block 6160 } 6161 6162 // Insert the string window[strstart .. strstart+2] in the 6163 // dictionary, and set hash_head to the head of the hash chain: 6164 hash_head = IPos(NIL) 6165 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 6166 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 6167 hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)))) 6168 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6169 } 6170 6171 // Find the longest match, discarding those <= prev_length. 6172 (*Deflate_state)(unsafe.Pointer(s)).Fprev_length = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 6173 (*Deflate_state)(unsafe.Pointer(s)).Fprev_match = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start 6174 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 6175 6176 if ((hash_head != IPos(NIL)) && ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length < (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) { 6177 // To simplify the code, we prevent matches with the string 6178 // of window index 0 (in particular we have to avoid a match 6179 // of the string with itself at the start of the input file). 6180 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 6181 // longest_match() sets match_start 6182 6183 if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= UInt(5)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FILTERED) || 6184 (((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length == UInt(MIN_MATCH)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start) > UInt(TOO_FAR)))) { 6185 6186 // If prev_match is also MIN_MATCH, match_start is garbage 6187 // but we will ignore the current match anyway. 6188 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 6189 } 6190 } 6191 // If there was a match at the previous step and the current 6192 // match is not better, output the previous match: 6193 if ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fprev_length) { 6194 var max_insert UInt = (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) - UInt(MIN_MATCH)) 6195 // Do not insert strings in hash table beyond this. 6196 6197 { 6198 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(MIN_MATCH))) 6199 var dist Ush = (Ush(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)) - (*Deflate_state)(unsafe.Pointer(s)).Fprev_match)) 6200 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 6201 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 6202 dist-- 6203 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 6204 *(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 { 6205 if (int32(dist)) < 256 { 6206 return int32(X_dist_code[dist]) 6207 } 6208 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 6209 }()))*4 /* &.fc */))++ 6210 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6211 } 6212 6213 // Insert in hash table all strings up to the end of the match. 6214 // strstart-1 and strstart are already inserted. If there is not 6215 // enough lookahead, the last two strings are not inserted in 6216 // the hash table. 6217 *(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(1)) 6218 *(*UInt)(unsafe.Pointer(s + 184 /* &.prev_length */)) -= (UInt(2)) 6219 for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fprev_length, 1) != UInt(0)) { 6220 if libc.PreIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fstrstart, 1) <= max_insert { 6221 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask) 6222 hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)))) 6223 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6224 } 6225 } 6226 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 6227 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 6228 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6229 6230 if bflush != 0 { 6231 { 6232 X_tr_flush_block(tls, s, func() uintptr { 6233 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6234 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6235 } 6236 return uintptr(Z_NULL) 6237 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6238 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6239 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6240 } 6241 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6242 if 0 != 0 { 6243 return Finish_started 6244 } 6245 return Need_more 6246 } 6247 } 6248 6249 } else if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 6250 // If there was no match at the previous position, output a 6251 // single literal. If there was a match but the current match 6252 // is longer, truncate the previous match to a single literal. 6253 6254 { 6255 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1))))) 6256 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 6257 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 6258 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 6259 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6260 } 6261 6262 if bflush != 0 { 6263 { 6264 X_tr_flush_block(tls, s, func() uintptr { 6265 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6266 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6267 } 6268 return uintptr(Z_NULL) 6269 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6270 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6271 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6272 } 6273 6274 } 6275 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6276 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 6277 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6278 return Need_more 6279 } 6280 } else { 6281 // There is no previous match to compare with, wait for 6282 // the next step to decide. 6283 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 1 6284 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6285 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 6286 } 6287 } 6288 6289 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 6290 6291 { 6292 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1))))) 6293 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 6294 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 6295 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 6296 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6297 } 6298 6299 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 6300 } 6301 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 6302 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) { 6303 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 6304 } 6305 return (uint32(MIN_MATCH - 1)) 6306 }() 6307 if flush == Z_FINISH { 6308 { 6309 { 6310 X_tr_flush_block(tls, s, func() uintptr { 6311 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6312 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6313 } 6314 return uintptr(Z_NULL) 6315 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 6316 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6317 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6318 } 6319 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6320 if 1 != 0 { 6321 return Finish_started 6322 } 6323 return Need_more 6324 } 6325 } 6326 6327 return Finish_done 6328 } 6329 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 6330 { 6331 X_tr_flush_block(tls, s, func() uintptr { 6332 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6333 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6334 } 6335 return uintptr(Z_NULL) 6336 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6337 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6338 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6339 } 6340 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6341 if 0 != 0 { 6342 return Finish_started 6343 } 6344 return Need_more 6345 } 6346 } 6347 6348 return Block_done 6349 } 6350 6351 // =========================================================================== 6352 // For Z_RLE, simply look for runs of bytes, generate matches only of distance 6353 // one. Do not maintain a hash table. (It will be regenerated if this run of 6354 // deflate switches away from Z_RLE.) 6355 func deflate_rle(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2057:19: */ 6356 var bflush int32 // set if current block must be flushed 6357 var prev UInt // byte at distance one to match 6358 var scan uintptr 6359 var strend uintptr // scan goes up to strend for length of run 6360 6361 for { 6362 // Make sure that we always have enough lookahead, except 6363 // at the end of the input file. We need MAX_MATCH bytes 6364 // for the longest run, plus one for the unrolled loop. 6365 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) { 6366 fill_window(tls, s) 6367 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH)) && (flush == Z_NO_FLUSH) { 6368 return Need_more 6369 } 6370 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6371 break 6372 } // flush the current block 6373 } 6374 6375 // See how many times the previous byte repeats 6376 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 6377 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart > UInt(0)) { 6378 scan = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uintptr(1)) 6379 prev = UInt(*(*Bytef)(unsafe.Pointer(scan))) 6380 if ((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) { 6381 strend = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH)) 6382 for ok := true; ok; ok = (((((((((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (scan < strend)) { 6383 } 6384 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MAX_MATCH) - (UInt((int64(strend) - int64(scan)) / 1))) 6385 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 6386 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 6387 } 6388 } 6389 6390 } 6391 6392 // Emit match if have run of MIN_MATCH or longer, else emit literal 6393 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 6394 6395 { 6396 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH))) 6397 var dist Ush = Ush(1) 6398 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 6399 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 6400 dist-- 6401 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 6402 *(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 { 6403 if (int32(dist)) < 256 { 6404 return int32(X_dist_code[dist]) 6405 } 6406 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 6407 }()))*4 /* &.fc */))++ 6408 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6409 } 6410 6411 *(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 6412 *(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 6413 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 6414 } else { 6415 // No match, output a literal byte 6416 6417 { 6418 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 6419 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 6420 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 6421 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 6422 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6423 } 6424 6425 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 6426 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6427 } 6428 if bflush != 0 { 6429 { 6430 X_tr_flush_block(tls, s, func() uintptr { 6431 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6432 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6433 } 6434 return uintptr(Z_NULL) 6435 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6436 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6437 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6438 } 6439 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6440 if 0 != 0 { 6441 return Finish_started 6442 } 6443 return Need_more 6444 } 6445 } 6446 6447 } 6448 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6449 if flush == Z_FINISH { 6450 { 6451 { 6452 X_tr_flush_block(tls, s, func() uintptr { 6453 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6454 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6455 } 6456 return uintptr(Z_NULL) 6457 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 6458 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6459 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6460 } 6461 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6462 if 1 != 0 { 6463 return Finish_started 6464 } 6465 return Need_more 6466 } 6467 } 6468 6469 return Finish_done 6470 } 6471 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 6472 { 6473 X_tr_flush_block(tls, s, func() uintptr { 6474 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6475 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6476 } 6477 return uintptr(Z_NULL) 6478 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6479 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6480 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6481 } 6482 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6483 if 0 != 0 { 6484 return Finish_started 6485 } 6486 return Need_more 6487 } 6488 } 6489 6490 return Block_done 6491 } 6492 6493 // =========================================================================== 6494 // For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. 6495 // (It will be regenerated if this run of deflate switches away from Huffman.) 6496 func deflate_huff(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2130:19: */ 6497 var bflush int32 // set if current block must be flushed 6498 6499 for { 6500 // Make sure that we have a literal to write. 6501 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6502 fill_window(tls, s) 6503 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6504 if flush == Z_NO_FLUSH { 6505 return Need_more 6506 } 6507 break // flush the current block 6508 } 6509 } 6510 6511 // Output a literal byte 6512 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 6513 6514 { 6515 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 6516 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 6517 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 6518 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 6519 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 6520 } 6521 6522 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 6523 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 6524 if bflush != 0 { 6525 { 6526 X_tr_flush_block(tls, s, func() uintptr { 6527 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6528 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6529 } 6530 return uintptr(Z_NULL) 6531 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6532 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6533 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6534 } 6535 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6536 if 0 != 0 { 6537 return Finish_started 6538 } 6539 return Need_more 6540 } 6541 } 6542 6543 } 6544 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6545 if flush == Z_FINISH { 6546 { 6547 { 6548 X_tr_flush_block(tls, s, func() uintptr { 6549 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6550 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6551 } 6552 return uintptr(Z_NULL) 6553 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 6554 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6555 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6556 } 6557 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6558 if 1 != 0 { 6559 return Finish_started 6560 } 6561 return Need_more 6562 } 6563 } 6564 6565 return Finish_done 6566 } 6567 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 6568 { 6569 X_tr_flush_block(tls, s, func() uintptr { 6570 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 6571 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 6572 } 6573 return uintptr(Z_NULL) 6574 }(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 6575 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6576 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 6577 } 6578 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 6579 if 0 != 0 { 6580 return Finish_started 6581 } 6582 return Need_more 6583 } 6584 } 6585 6586 return Block_done 6587 } 6588 6589 // compatibility w/GNU headers 6590 6591 // When the following macro is defined, the system uses 64-bit inode numbers. 6592 // Programs can use this to avoid including <sys/param.h>, with its associated 6593 // namespace pollution. 6594 6595 type Fpos_t = X__off_t /* stdio.h:47:18 */ 6596 6597 // NB: to fit things in six character monocase externals, the stdio 6598 // code uses the prefix `__s' for stdio objects, typically followed 6599 // by a three-character attempt at a mnemonic. 6600 6601 // stdio buffers 6602 type X__sbuf = struct { 6603 F_base uintptr 6604 F_size int32 6605 F__ccgo_pad1 [4]byte 6606 } /* stdio.h:91:1 */ 6607 6608 // stdio state variables. 6609 // 6610 // The following always hold: 6611 // 6612 // if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR), 6613 // _lbfsize is -_bf._size, else _lbfsize is 0 6614 // if _flags&__SRD, _w is 0 6615 // if _flags&__SWR, _r is 0 6616 // 6617 // This ensures that the getc and putc macros (or inline functions) never 6618 // try to write or read from a file that is in `read' or `write' mode. 6619 // (Moreover, they can, and do, automatically switch from read mode to 6620 // write mode, and back, on "r+" and "w+" files.) 6621 // 6622 // _lbfsize is used only to make the inline line-buffered output stream 6623 // code as compact as possible. 6624 // 6625 // _ub, _up, and _ur are used when ungetc() pushes back more characters 6626 // than fit in the current _bf, or when ungetc() pushes back a character 6627 // that does not match the previous one in _bf. When this happens, 6628 // _ub._base becomes non-nil (i.e., a stream has ungetc() data iff 6629 // _ub._base!=NULL) and _up and _ur save the current values of _p and _r. 6630 // 6631 // Certain members of __sFILE are accessed directly via macros or 6632 // inline functions. To preserve ABI compat, these members must not 6633 // be disturbed. These members are marked below with (*). 6634 type X__sFILE = struct { 6635 F_p uintptr 6636 F_r int32 6637 F_w int32 6638 F_flags int16 6639 F_file int16 6640 F__ccgo_pad1 [4]byte 6641 F_bf struct { 6642 F_base uintptr 6643 F_size int32 6644 F__ccgo_pad1 [4]byte 6645 } 6646 F_lbfsize int32 6647 F__ccgo_pad2 [4]byte 6648 F_cookie uintptr 6649 F_close uintptr 6650 F_read uintptr 6651 F_seek uintptr 6652 F_write uintptr 6653 F_ub struct { 6654 F_base uintptr 6655 F_size int32 6656 F__ccgo_pad1 [4]byte 6657 } 6658 F_up uintptr 6659 F_ur int32 6660 F_ubuf [3]uint8 6661 F_nbuf [1]uint8 6662 F_lb struct { 6663 F_base uintptr 6664 F_size int32 6665 F__ccgo_pad1 [4]byte 6666 } 6667 F_blksize int32 6668 F__ccgo_pad3 [4]byte 6669 F_offset Fpos_t 6670 F_fl_mutex uintptr 6671 F_fl_owner uintptr 6672 F_fl_count int32 6673 F_orientation int32 6674 F_mbstate X__mbstate_t 6675 F_flags2 int32 6676 F__ccgo_pad4 [4]byte 6677 } /* stdio.h:124:1 */ 6678 6679 type FILE = X__sFILE /* stdio.h:165:24 */ 6680 type Cookie_io_functions_t = struct { 6681 Fread uintptr 6682 Fwrite uintptr 6683 Fseek uintptr 6684 Fclose uintptr 6685 } /* stdio.h:428:3 */ 6686 6687 // - 6688 // SPDX-License-Identifier: BSD-3-Clause 6689 // 6690 // Copyright (c) 1988, 1993 6691 // The Regents of the University of California. All rights reserved. 6692 // 6693 // Redistribution and use in source and binary forms, with or without 6694 // modification, are permitted provided that the following conditions 6695 // are met: 6696 // 1. Redistributions of source code must retain the above copyright 6697 // notice, this list of conditions and the following disclaimer. 6698 // 2. Redistributions in binary form must reproduce the above copyright 6699 // notice, this list of conditions and the following disclaimer in the 6700 // documentation and/or other materials provided with the distribution. 6701 // 3. Neither the name of the University nor the names of its contributors 6702 // may be used to endorse or promote products derived from this software 6703 // without specific prior written permission. 6704 // 6705 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 6706 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 6707 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 6708 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 6709 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 6710 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 6711 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 6712 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 6713 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 6714 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 6715 // SUCH DAMAGE. 6716 // 6717 // @(#)limits.h 8.2 (Berkeley) 1/4/94 6718 // $FreeBSD$ 6719 6720 // - 6721 // SPDX-License-Identifier: BSD-3-Clause 6722 // 6723 // Copyright (c) 1983, 1990, 1993 6724 // The Regents of the University of California. All rights reserved. 6725 // (c) UNIX System Laboratories, Inc. 6726 // All or some portions of this file are derived from material licensed 6727 // to the University of California by American Telephone and Telegraph 6728 // Co. or Unix System Laboratories, Inc. and are reproduced herein with 6729 // the permission of UNIX System Laboratories, Inc. 6730 // 6731 // Redistribution and use in source and binary forms, with or without 6732 // modification, are permitted provided that the following conditions 6733 // are met: 6734 // 1. Redistributions of source code must retain the above copyright 6735 // notice, this list of conditions and the following disclaimer. 6736 // 2. Redistributions in binary form must reproduce the above copyright 6737 // notice, this list of conditions and the following disclaimer in the 6738 // documentation and/or other materials provided with the distribution. 6739 // 3. Neither the name of the University nor the names of its contributors 6740 // may be used to endorse or promote products derived from this software 6741 // without specific prior written permission. 6742 // 6743 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 6744 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 6745 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 6746 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 6747 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 6748 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 6749 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 6750 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 6751 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 6752 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 6753 // SUCH DAMAGE. 6754 // 6755 // @(#)fcntl.h 8.3 (Berkeley) 1/21/94 6756 // $FreeBSD$ 6757 6758 // This file includes the definitions for open and fcntl 6759 // described by POSIX for <fcntl.h>; it also includes 6760 // related kernel definitions. 6761 6762 // - 6763 // SPDX-License-Identifier: BSD-3-Clause 6764 // 6765 // Copyright (c) 1991, 1993 6766 // The Regents of the University of California. All rights reserved. 6767 // 6768 // This code is derived from software contributed to Berkeley by 6769 // Berkeley Software Design, Inc. 6770 // 6771 // Redistribution and use in source and binary forms, with or without 6772 // modification, are permitted provided that the following conditions 6773 // are met: 6774 // 1. Redistributions of source code must retain the above copyright 6775 // notice, this list of conditions and the following disclaimer. 6776 // 2. Redistributions in binary form must reproduce the above copyright 6777 // notice, this list of conditions and the following disclaimer in the 6778 // documentation and/or other materials provided with the distribution. 6779 // 3. Neither the name of the University nor the names of its contributors 6780 // may be used to endorse or promote products derived from this software 6781 // without specific prior written permission. 6782 // 6783 // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 6784 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 6785 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 6786 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 6787 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 6788 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 6789 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 6790 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 6791 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 6792 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 6793 // SUCH DAMAGE. 6794 // 6795 // @(#)cdefs.h 8.8 (Berkeley) 1/9/95 6796 // $FreeBSD$ 6797 6798 // - 6799 // SPDX-License-Identifier: BSD-2-Clause-FreeBSD 6800 // 6801 // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> 6802 // All rights reserved. 6803 // 6804 // Redistribution and use in source and binary forms, with or without 6805 // modification, are permitted provided that the following conditions 6806 // are met: 6807 // 1. Redistributions of source code must retain the above copyright 6808 // notice, this list of conditions and the following disclaimer. 6809 // 2. Redistributions in binary form must reproduce the above copyright 6810 // notice, this list of conditions and the following disclaimer in the 6811 // documentation and/or other materials provided with the distribution. 6812 // 6813 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 6814 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 6815 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 6816 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 6817 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 6818 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 6819 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 6820 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 6821 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 6822 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 6823 // SUCH DAMAGE. 6824 // 6825 // $FreeBSD$ 6826 6827 // File status flags: these are used by open(2), fcntl(2). 6828 // They are also used (indirectly) in the kernel file structure f_flags, 6829 // which is a superset of the open/fcntl flags. Open flags and f_flags 6830 // are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags). 6831 // Open/fcntl flags begin with O_; kernel-internal flags begin with F. 6832 // open-only flags 6833 6834 // Kernel encoding of open mode; separate read and write bits that are 6835 // independently testable: 1 greater than the above. 6836 // 6837 // XXX 6838 // FREAD and FWRITE are excluded from the #ifdef _KERNEL so that TIOCFLUSH, 6839 // which was documented to use FREAD/FWRITE, continues to work. 6840 6841 // Defined by POSIX 1003.1; BSD default, but must be distinct from O_RDONLY. 6842 6843 // Attempt to bypass buffer cache 6844 6845 // Defined by POSIX 1003.1-2008; BSD default, but reserve for future use. 6846 6847 /* #define O_UNUSED1 0x00400000 */ // Was O_BENEATH 6848 6849 // XXX missing O_RSYNC. 6850 6851 // The O_* flags used to have only F* names, which were used in the kernel 6852 // and by fcntl. We retain the F* names for the kernel f_flag field 6853 // and for backward compatibility for fcntl. These flags are deprecated. 6854 6855 // Historically, we ran out of bits in f_flag (which was once a short). 6856 // However, the flag bits not set in FMASK are only meaningful in the 6857 // initial open syscall. Those bits were thus given a 6858 // different meaning for fcntl(2). 6859 // Read ahead 6860 6861 // Magic value that specify the use of the current working directory 6862 // to determine the target of relative file paths in the openat() and 6863 // similar syscalls. 6864 6865 // Miscellaneous flags for the *at() syscalls. 6866 /* #define AT_UNUSED1 0x1000 */ // Was AT_BENEATH 6867 6868 // Constants used for fcntl(2) 6869 6870 // command values 6871 6872 // Seals (F_ADD_SEALS, F_GET_SEALS). 6873 6874 // file descriptor flags (F_GETFD, F_SETFD) 6875 6876 // record locking flags (F_GETLK, F_SETLK, F_SETLKW) 6877 6878 // Advisory file segment locking data type - 6879 // information passed to system by user 6880 type Flock = struct { 6881 Fl_start Off_t 6882 Fl_len Off_t 6883 Fl_pid Pid_t 6884 Fl_type int16 6885 Fl_whence int16 6886 Fl_sysid int32 6887 F__ccgo_pad1 [4]byte 6888 } /* fcntl.h:294:1 */ 6889 6890 // Old advisory file segment locking data type, 6891 // before adding l_sysid. 6892 type X__oflock = struct { 6893 Fl_start Off_t 6894 Fl_len Off_t 6895 Fl_pid Pid_t 6896 Fl_type int16 6897 Fl_whence int16 6898 } /* fcntl.h:308:1 */ 6899 6900 // default memLevel 6901 6902 // default i/o buffer size -- double this for output when reading (this and 6903 // twice this must be able to fit in an unsigned type) 6904 6905 // gzip modes, also provide a little integrity check on the passed structure 6906 6907 // values for gz_state how 6908 6909 // internal gzip file state data structure 6910 type Gz_state = struct { 6911 Fx GzFile_s 6912 Fmode int32 6913 Ffd int32 6914 Fpath uintptr 6915 Fsize uint32 6916 Fwant uint32 6917 Fin uintptr 6918 Fout uintptr 6919 Fdirect int32 6920 Fhow int32 6921 Fstart Off_t 6922 Feof int32 6923 Fpast int32 6924 Flevel int32 6925 Fstrategy int32 6926 Fskip Off_t 6927 Fseek int32 6928 Ferr int32 6929 Fmsg uintptr 6930 Fstrm Z_stream 6931 } /* gzguts.h:201:3 */ 6932 type Gz_statep = uintptr /* gzguts.h:202:22 */ 6933 6934 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 6935 // value -- needed when comparing unsigned to z_off64_t, which is signed 6936 // (possible z_off64_t types off_t, off64_t, and long are all signed) 6937 6938 // gzclose() is in a separate file so that it is linked in only if it is used. 6939 // That way the other gzclose functions can be used instead to avoid linking in 6940 // unneeded compression or decompression routines. 6941 func Xgzclose(tls *libc.TLS, file GzFile) int32 { /* gzclose.c:11:13: */ 6942 var state Gz_statep 6943 6944 if file == (uintptr(0)) { 6945 return -2 6946 } 6947 state = file 6948 6949 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 6950 return Xgzclose_r(tls, file) 6951 } 6952 return Xgzclose_w(tls, file) 6953 } 6954 6955 // Reset gzip file state 6956 func gz_reset(tls *libc.TLS, state Gz_statep) { /* gzlib.c:75:12: */ 6957 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) // no output data available 6958 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // for reading ... 6959 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 // not at end of file 6960 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 // have not read past end yet 6961 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK // look for gzip header 6962 } 6963 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 // no seek request pending 6964 Xgz_error(tls, state, Z_OK, uintptr(0)) // clear error 6965 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos = int64(0) // no uncompressed data yet 6966 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) // no input data yet 6967 } 6968 6969 // Open a gzip file either by name or file descriptor. 6970 func gz_open(tls *libc.TLS, path uintptr, fd int32, mode uintptr) GzFile { /* gzlib.c:91:14: */ 6971 bp := tls.Alloc(16) 6972 defer tls.Free(16) 6973 6974 var state Gz_statep 6975 var len Z_size_t 6976 var oflag int32 6977 var cloexec int32 = 0 6978 var exclusive int32 = 0 6979 6980 // check input 6981 if path == (uintptr(0)) { 6982 return uintptr(0) 6983 } 6984 6985 // allocate gzFile structure to return 6986 state = libc.Xmalloc(tls, uint64(unsafe.Sizeof(Gz_state{}))) 6987 if state == (uintptr(0)) { 6988 return uintptr(0) 6989 } 6990 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) // no buffers allocated yet 6991 (*Gz_state)(unsafe.Pointer(state)).Fwant = uint32(GZBUFSIZE) // requested buffer size 6992 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) // no error message yet 6993 6994 // interpret mode 6995 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_NONE 6996 (*Gz_state)(unsafe.Pointer(state)).Flevel = -1 6997 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_DEFAULT_STRATEGY 6998 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 6999 for *(*int8)(unsafe.Pointer(mode)) != 0 { 7000 if (int32(*(*int8)(unsafe.Pointer(mode))) >= '0') && (int32(*(*int8)(unsafe.Pointer(mode))) <= '9') { 7001 (*Gz_state)(unsafe.Pointer(state)).Flevel = (int32(*(*int8)(unsafe.Pointer(mode))) - '0') 7002 } else { 7003 switch int32(*(*int8)(unsafe.Pointer(mode))) { 7004 case 'r': 7005 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_READ 7006 break 7007 fallthrough 7008 case 'w': 7009 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE 7010 break 7011 fallthrough 7012 case 'a': 7013 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_APPEND 7014 break 7015 fallthrough 7016 case '+': // can't read and write at the same time 7017 libc.Xfree(tls, state) 7018 return uintptr(0) 7019 fallthrough 7020 case 'b': // ignore -- will request binary anyway 7021 break 7022 fallthrough 7023 case 'e': 7024 cloexec = 1 7025 break 7026 fallthrough 7027 case 'x': 7028 exclusive = 1 7029 break 7030 fallthrough 7031 case 'f': 7032 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FILTERED 7033 break 7034 fallthrough 7035 case 'h': 7036 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_HUFFMAN_ONLY 7037 break 7038 fallthrough 7039 case 'R': 7040 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_RLE 7041 break 7042 fallthrough 7043 case 'F': 7044 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FIXED 7045 break 7046 fallthrough 7047 case 'T': 7048 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 7049 break 7050 fallthrough 7051 default: // could consider as an error, but just ignore 7052 7053 } 7054 } 7055 mode++ 7056 } 7057 7058 // must provide an "r", "w", or "a" 7059 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_NONE { 7060 libc.Xfree(tls, state) 7061 return uintptr(0) 7062 } 7063 7064 // can't force transparent read 7065 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7066 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 7067 libc.Xfree(tls, state) 7068 return uintptr(0) 7069 } 7070 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 // for empty file 7071 } 7072 7073 // save the path name for error messages 7074 len = libc.Xstrlen(tls, path) 7075 (*Gz_state)(unsafe.Pointer(state)).Fpath = libc.Xmalloc(tls, (len + uint64(1))) 7076 if (*Gz_state)(unsafe.Pointer(state)).Fpath == (uintptr(0)) { 7077 libc.Xfree(tls, state) 7078 return uintptr(0) 7079 } 7080 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath, (len + uint64(1)), ts+76 /* "%s" */, libc.VaList(bp, path)) 7081 7082 // compute the flags for open() 7083 oflag = ((func() int32 { 7084 if cloexec != 0 { 7085 return O_CLOEXEC 7086 } 7087 return 0 7088 }()) | (func() int32 { 7089 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7090 return O_RDONLY 7091 } 7092 return (((O_WRONLY | O_CREAT) | (func() int32 { 7093 if exclusive != 0 { 7094 return O_EXCL 7095 } 7096 return 0 7097 }())) | (func() int32 { 7098 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_WRITE { 7099 return O_TRUNC 7100 } 7101 return O_APPEND 7102 }())) 7103 }())) 7104 7105 // open the file with the appropriate flags (or just use fd) 7106 (*Gz_state)(unsafe.Pointer(state)).Ffd = func() int32 { 7107 if fd > -1 { 7108 return fd 7109 } 7110 return libc.Xopen(tls, path, oflag, libc.VaList(bp+8, 0666)) 7111 }() 7112 if (*Gz_state)(unsafe.Pointer(state)).Ffd == -1 { 7113 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 7114 libc.Xfree(tls, state) 7115 return uintptr(0) 7116 } 7117 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_APPEND { 7118 libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_END) // so gzoffset() is correct 7119 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE // simplify later checks 7120 } 7121 7122 // save the current position for rewinding (only if reading) 7123 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7124 (*Gz_state)(unsafe.Pointer(state)).Fstart = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 7125 if (*Gz_state)(unsafe.Pointer(state)).Fstart == int64(-1) { 7126 (*Gz_state)(unsafe.Pointer(state)).Fstart = int64(0) 7127 } 7128 } 7129 7130 // initialize stream 7131 gz_reset(tls, state) 7132 7133 // return stream 7134 return state 7135 } 7136 7137 // -- see zlib.h -- 7138 func Xgzopen(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:270:16: */ 7139 return gz_open(tls, path, -1, mode) 7140 } 7141 7142 // -- see zlib.h -- 7143 func Xgzopen64(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:278:16: */ 7144 return gz_open(tls, path, -1, mode) 7145 } 7146 7147 // -- see zlib.h -- 7148 func Xgzdopen(tls *libc.TLS, fd int32, mode uintptr) GzFile { /* gzlib.c:286:16: */ 7149 bp := tls.Alloc(8) 7150 defer tls.Free(8) 7151 7152 var path uintptr // identifier for error messages 7153 var gz GzFile 7154 7155 if (fd == -1) || ((libc.AssignUintptr(&path, libc.Xmalloc(tls, (uint64(7)+(uint64(3)*uint64(unsafe.Sizeof(int32(0)))))))) == (uintptr(0))) { 7156 return uintptr(0) 7157 } 7158 libc.Xsnprintf(tls, path, (uint64(7) + (uint64(3) * uint64(unsafe.Sizeof(int32(0))))), ts+79 /* "<fd:%d>" */, libc.VaList(bp, fd)) 7159 gz = gz_open(tls, path, fd, mode) 7160 libc.Xfree(tls, path) 7161 return gz 7162 } 7163 7164 // -- see zlib.h -- 7165 7166 // -- see zlib.h -- 7167 func Xgzbuffer(tls *libc.TLS, file GzFile, size uint32) int32 { /* gzlib.c:316:13: */ 7168 var state Gz_statep 7169 7170 // get internal structure and check integrity 7171 if file == (uintptr(0)) { 7172 return -1 7173 } 7174 state = file 7175 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7176 return -1 7177 } 7178 7179 // make sure we haven't already allocated memory 7180 if (*Gz_state)(unsafe.Pointer(state)).Fsize != uint32(0) { 7181 return -1 7182 } 7183 7184 // check and set requested size 7185 if (size << 1) < size { 7186 return -1 7187 } // need to be able to double it 7188 if size < uint32(2) { 7189 size = uint32(2) 7190 } // need two bytes to check magic header 7191 (*Gz_state)(unsafe.Pointer(state)).Fwant = size 7192 return 0 7193 } 7194 7195 // -- see zlib.h -- 7196 func Xgzrewind(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:343:13: */ 7197 var state Gz_statep 7198 7199 // get internal structure 7200 if file == (uintptr(0)) { 7201 return -1 7202 } 7203 state = file 7204 7205 // check that we're reading and that there's no error 7206 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 7207 return -1 7208 } 7209 7210 // back up and start over 7211 if libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fstart, SEEK_SET) == int64(-1) { 7212 return -1 7213 } 7214 gz_reset(tls, state) 7215 return 0 7216 } 7217 7218 // -- see zlib.h -- 7219 func Xgzseek64(tls *libc.TLS, file GzFile, offset Off_t, whence int32) Off_t { /* gzlib.c:366:19: */ 7220 var n uint32 7221 var ret Off_t 7222 var state Gz_statep 7223 7224 // get internal structure and check integrity 7225 if file == (uintptr(0)) { 7226 return int64(-1) 7227 } 7228 state = file 7229 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7230 return int64(-1) 7231 } 7232 7233 // check that there's no error 7234 if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 7235 return int64(-1) 7236 } 7237 7238 // can only seek from start or relative to current position 7239 if (whence != SEEK_SET) && (whence != SEEK_CUR) { 7240 return int64(-1) 7241 } 7242 7243 // normalize offset to a SEEK_CUR specification 7244 if whence == SEEK_SET { 7245 offset = offset - ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos) 7246 } else if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 7247 offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fskip) 7248 } 7249 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 7250 7251 // if within raw area while reading, just go there 7252 if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1)) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset) >= int64(0)) { 7253 ret = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (offset - Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)), SEEK_CUR) 7254 if ret == int64(-1) { 7255 return int64(-1) 7256 } 7257 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 7258 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 7259 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 7260 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 7261 Xgz_error(tls, state, Z_OK, uintptr(0)) 7262 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 7263 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (offset) 7264 return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos 7265 } 7266 7267 // calculate skip amount, rewinding if needed for back seek when reading 7268 if offset < int64(0) { 7269 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { // writing -- can't go backwards 7270 return int64(-1) 7271 } 7272 offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos) 7273 if offset < int64(0) { // before start of file! 7274 return int64(-1) 7275 } 7276 if Xgzrewind(tls, file) == -1 { // rewind, then skip to offset 7277 return int64(-1) 7278 } 7279 } 7280 7281 // if reading, skip what's in output buffer (one less gzgetc() check) 7282 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7283 if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > offset) { 7284 n = uint32(offset) 7285 } else { 7286 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 7287 } 7288 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 7289 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n)) 7290 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n)) 7291 offset = offset - (Off_t(n)) 7292 } 7293 7294 // request skip (if not zero) 7295 if offset != 0 { 7296 (*Gz_state)(unsafe.Pointer(state)).Fseek = 1 7297 (*Gz_state)(unsafe.Pointer(state)).Fskip = offset 7298 } 7299 return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset) 7300 } 7301 7302 // -- see zlib.h -- 7303 func Xgzseek(tls *libc.TLS, file GzFile, offset Off_t, whence int32) Off_t { /* gzlib.c:443:17: */ 7304 var ret Off_t 7305 7306 ret = Xgzseek64(tls, file, offset, whence) 7307 if ret == ret { 7308 return ret 7309 } 7310 return int64(-1) 7311 } 7312 7313 // -- see zlib.h -- 7314 func Xgztell64(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:455:19: */ 7315 var state Gz_statep 7316 7317 // get internal structure and check integrity 7318 if file == (uintptr(0)) { 7319 return int64(-1) 7320 } 7321 state = file 7322 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7323 return int64(-1) 7324 } 7325 7326 // return position 7327 return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + (func() int64 { 7328 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 7329 return (*Gz_state)(unsafe.Pointer(state)).Fskip 7330 } 7331 return int64(0) 7332 }())) 7333 } 7334 7335 // -- see zlib.h -- 7336 func Xgztell(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:472:17: */ 7337 var ret Off_t 7338 7339 ret = Xgztell64(tls, file) 7340 if ret == ret { 7341 return ret 7342 } 7343 return int64(-1) 7344 } 7345 7346 // -- see zlib.h -- 7347 func Xgzoffset64(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:482:19: */ 7348 var offset Off_t 7349 var state Gz_statep 7350 7351 // get internal structure and check integrity 7352 if file == (uintptr(0)) { 7353 return int64(-1) 7354 } 7355 state = file 7356 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7357 return int64(-1) 7358 } 7359 7360 // compute and return effective offset in file 7361 offset = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 7362 if offset == int64(-1) { 7363 return int64(-1) 7364 } 7365 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // reading 7366 offset = offset - (Off_t((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in)) 7367 } // don't count buffered input 7368 return offset 7369 } 7370 7371 // -- see zlib.h -- 7372 func Xgzoffset(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:505:17: */ 7373 var ret Off_t 7374 7375 ret = Xgzoffset64(tls, file) 7376 if ret == ret { 7377 return ret 7378 } 7379 return int64(-1) 7380 } 7381 7382 // -- see zlib.h -- 7383 func Xgzeof(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:515:13: */ 7384 var state Gz_statep 7385 7386 // get internal structure and check integrity 7387 if file == (uintptr(0)) { 7388 return 0 7389 } 7390 state = file 7391 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7392 return 0 7393 } 7394 7395 // return end-of-file state 7396 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7397 return (*Gz_state)(unsafe.Pointer(state)).Fpast 7398 } 7399 return 0 7400 } 7401 7402 // -- see zlib.h -- 7403 func Xgzerror(tls *libc.TLS, file GzFile, errnum uintptr) uintptr { /* gzlib.c:532:12: */ 7404 var state Gz_statep 7405 7406 // get internal structure and check integrity 7407 if file == (uintptr(0)) { 7408 return uintptr(0) 7409 } 7410 state = file 7411 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7412 return uintptr(0) 7413 } 7414 7415 // return error information 7416 if errnum != (uintptr(0)) { 7417 *(*int32)(unsafe.Pointer(errnum)) = (*Gz_state)(unsafe.Pointer(state)).Ferr 7418 } 7419 if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-4) { 7420 return ts + 87 /* "out of memory" */ 7421 } 7422 return func() uintptr { 7423 if (*Gz_state)(unsafe.Pointer(state)).Fmsg == (uintptr(0)) { 7424 return ts + 101 /* "" */ 7425 } 7426 return (*Gz_state)(unsafe.Pointer(state)).Fmsg 7427 }() 7428 } 7429 7430 // -- see zlib.h -- 7431 func Xgzclearerr(tls *libc.TLS, file GzFile) { /* gzlib.c:553:14: */ 7432 var state Gz_statep 7433 7434 // get internal structure and check integrity 7435 if file == (uintptr(0)) { 7436 return 7437 } 7438 state = file 7439 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 7440 return 7441 } 7442 7443 // clear error and end-of-file 7444 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 7445 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 7446 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 7447 } 7448 Xgz_error(tls, state, Z_OK, uintptr(0)) 7449 } 7450 7451 // Create an error message in allocated memory and set state->err and 7452 // state->msg accordingly. Free any previous error message already there. Do 7453 // not try to free or allocate space if the error is Z_MEM_ERROR (out of 7454 // memory). Simply save the error message as a static string. If there is an 7455 // allocation failure constructing the error message, then convert the error to 7456 // out of memory. 7457 func Xgz_error(tls *libc.TLS, state Gz_statep, err int32, msg uintptr) { /* gzlib.c:579:20: */ 7458 bp := tls.Alloc(24) 7459 defer tls.Free(24) 7460 7461 // free previously allocated message and clear 7462 if (*Gz_state)(unsafe.Pointer(state)).Fmsg != (uintptr(0)) { 7463 if (*Gz_state)(unsafe.Pointer(state)).Ferr != (-4) { 7464 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg) 7465 } 7466 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) 7467 } 7468 7469 // if fatal, set state->x.have to 0 so that the gzgetc() macro fails 7470 if (err != Z_OK) && (err != (-5)) { 7471 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 7472 } 7473 7474 // set error code, and if no message, then done 7475 (*Gz_state)(unsafe.Pointer(state)).Ferr = err 7476 if msg == (uintptr(0)) { 7477 return 7478 } 7479 7480 // for an out of memory error, return literal string when requested 7481 if err == (-4) { 7482 return 7483 } 7484 7485 // construct error message with path 7486 if (libc.AssignPtrUintptr(state+112 /* &.msg */, libc.Xmalloc(tls, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg))+uint64(3))))) == (uintptr(0)) { 7487 (*Gz_state)(unsafe.Pointer(state)).Ferr = -4 7488 return 7489 } 7490 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) + libc.Xstrlen(tls, msg)) + uint64(3)), 7491 ts+102 /* "%s%s%s" */, libc.VaList(bp, (*Gz_state)(unsafe.Pointer(state)).Fpath, ts+109 /* ": " */, msg)) 7492 } 7493 7494 // Use read() to load a buffer -- return -1 on error, otherwise 0. Read from 7495 // state->fd, and update state->eof, state->err, and state->msg as appropriate. 7496 // This function needs to loop on read(), since read() is not guaranteed to 7497 // read the number of bytes requested, depending on the type of descriptor. 7498 func gz_load(tls *libc.TLS, state Gz_statep, buf uintptr, len uint32, have uintptr) int32 { /* gzread.c:21:11: */ 7499 var ret int32 7500 var get uint32 7501 var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1)) 7502 7503 *(*uint32)(unsafe.Pointer(have)) = uint32(0) 7504 for ok := true; ok; ok = (*(*uint32)(unsafe.Pointer(have)) < len) { 7505 get = (len - *(*uint32)(unsafe.Pointer(have))) 7506 if get > max { 7507 get = max 7508 } 7509 ret = int32(libc.Xread(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (buf + uintptr(*(*uint32)(unsafe.Pointer(have)))), uint64(get))) 7510 if ret <= 0 { 7511 break 7512 } 7513 *(*uint32)(unsafe.Pointer(have)) += (uint32(ret)) 7514 } 7515 if ret < 0 { 7516 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls))))) 7517 return -1 7518 } 7519 if ret == 0 { 7520 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 7521 } 7522 return 0 7523 } 7524 7525 // Load up input buffer and set eof flag if last data loaded -- return -1 on 7526 // error, 0 otherwise. Note that the eof flag is set when the end of the input 7527 // file is reached, even though there may be unused data in the buffer. Once 7528 // that data has been used, no more attempts will be made to read the file. 7529 // If strm->avail_in != 0, then the current data is moved to the beginning of 7530 // the input buffer, and then the remainder of the buffer is loaded with the 7531 // available data from the input file. 7532 func gz_avail(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:56:11: */ 7533 bp := tls.Alloc(4) 7534 defer tls.Free(4) 7535 7536 // var got uint32 at bp, 4 7537 7538 var strm Z_streamp = (state + 120 /* &.strm */) 7539 7540 if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 7541 return -1 7542 } 7543 if (*Gz_state)(unsafe.Pointer(state)).Feof == 0 { 7544 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { // copy what's there to the start 7545 var p uintptr = (*Gz_state)(unsafe.Pointer(state)).Fin 7546 var q uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 7547 var n uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 7548 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 7549 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) 7550 } 7551 } 7552 if gz_load(tls, state, ((*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)), 7553 ((*Gz_state)(unsafe.Pointer(state)).Fsize-(*Z_stream)(unsafe.Pointer(strm)).Favail_in), bp /* &got */) == -1 { 7554 return -1 7555 } 7556 *(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) += (*(*uint32)(unsafe.Pointer(bp /* got */))) 7557 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 7558 } 7559 return 0 7560 } 7561 7562 // Look for gzip header, set up for inflate or copy. state->x.have must be 0. 7563 // If this is the first time in, allocate required memory. state->how will be 7564 // left unchanged if there is no more input data available, will be set to COPY 7565 // if there is no gzip header and direct copying will be performed, or it will 7566 // be set to GZIP for decompression. If direct copying, then leftover input 7567 // data from the input buffer will be copied to the output buffer. In that 7568 // case, all further file reads will be directly to either the output buffer or 7569 // a user buffer. If decompressing, the inflate state will be initialized. 7570 // gz_look() will return 0 on success or -1 on failure. 7571 func gz_look(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:91:11: */ 7572 var strm Z_streamp = (state + 120 /* &.strm */) 7573 7574 // allocate read buffers and inflate memory 7575 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) { 7576 // allocate buffers 7577 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant)) 7578 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, (uint64((*Gz_state)(unsafe.Pointer(state)).Fwant << 1))) 7579 if ((*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0))) || ((*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0))) { 7580 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 7581 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 7582 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 7583 return -1 7584 } 7585 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 7586 7587 // allocate inflate memory 7588 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzalloc = Alloc_func(Z_NULL) 7589 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzfree = Free_func(Z_NULL) 7590 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fopaque = Voidpf(Z_NULL) 7591 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 7592 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = uintptr(Z_NULL) 7593 if (XinflateInit2_(tls, (state+120 /* &.strm */), (15+16), ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) != Z_OK) { // gunzip 7594 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 7595 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 7596 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) 7597 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 7598 return -1 7599 } 7600 } 7601 7602 // get at least the magic bytes in the input buffer 7603 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in < UInt(2) { 7604 if gz_avail(tls, state) == -1 { 7605 return -1 7606 } 7607 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 7608 return 0 7609 } 7610 } 7611 7612 // look for gzip magic bytes -- if there, do gzip decoding (note: there is 7613 // a logical dilemma here when considering the case of a partially written 7614 // gzip file, to wit, if a single 31 byte is written, then we cannot tell 7615 // whether this is a single-byte file, or just a partially written gzip 7616 // file -- for here we assume that if a gzip file is being written, then 7617 // the header will be written in a single operation, so that reading a 7618 // single byte is sufficient indication that it is not a gzip file) 7619 if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in > UInt(1)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in))) == 31)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + 1))) == 139) { 7620 XinflateReset(tls, strm) 7621 (*Gz_state)(unsafe.Pointer(state)).Fhow = /* GZIP */ 2 7622 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 7623 return 0 7624 } 7625 7626 // no gzip header -- if we were decoding gzip before, then this is trailing 7627 // garbage. Ignore the trailing garbage and finish. 7628 if (*Gz_state)(unsafe.Pointer(state)).Fdirect == 0 { 7629 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 7630 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 7631 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 7632 return 0 7633 } 7634 7635 // doing raw i/o, copy any leftover input to output -- this assumes that 7636 // the output buffer is larger than the input buffer, which also assures 7637 // space for gzungetc() 7638 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 7639 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 7640 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64((*Z_stream)(unsafe.Pointer(strm)).Favail_in)) 7641 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 7642 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 7643 } 7644 (*Gz_state)(unsafe.Pointer(state)).Fhow = COPY1 7645 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 7646 return 0 7647 } 7648 7649 // Decompress from input to the provided next_out and avail_out in the state. 7650 // On return, state->x.have and state->x.next point to the just decompressed 7651 // data. If the gzip stream completes, state->how is reset to LOOK to look for 7652 // the next gzip stream or raw data, once state->x.have is depleted. Returns 0 7653 // on success, -1 on failure. 7654 func gz_decomp(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:175:11: */ 7655 var ret int32 = Z_OK 7656 var had uint32 7657 var strm Z_streamp = (state + 120 /* &.strm */) 7658 7659 // fill output buffer up to end of deflate stream 7660 had = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 7661 for ok := true; ok; ok = (((*Z_stream)(unsafe.Pointer(strm)).Favail_out != 0) && (ret != Z_STREAM_END)) { 7662 // get more input for inflate() 7663 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && (gz_avail(tls, state) == -1) { 7664 return -1 7665 } 7666 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 7667 Xgz_error(tls, state, -5, ts+112 /* "unexpected end o..." */) 7668 break 7669 } 7670 7671 // decompress and handle errors 7672 ret = Xinflate(tls, strm, Z_NO_FLUSH) 7673 if (ret == (-2)) || (ret == Z_NEED_DICT) { 7674 Xgz_error(tls, state, -2, 7675 ts+135 /* "internal error: ..." */) 7676 return -1 7677 } 7678 if ret == (-4) { 7679 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 7680 return -1 7681 } 7682 if ret == (-3) { // deflate stream invalid 7683 Xgz_error(tls, state, -3, 7684 func() uintptr { 7685 if (*Z_stream)(unsafe.Pointer(strm)).Fmsg == (uintptr(0)) { 7686 return ts + 174 /* "compressed data ..." */ 7687 } 7688 return (*Z_stream)(unsafe.Pointer(strm)).Fmsg 7689 }()) 7690 return -1 7691 } 7692 } 7693 7694 // update available output 7695 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (had - (*Z_stream)(unsafe.Pointer(strm)).Favail_out) 7696 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)) 7697 7698 // if the gzip stream completed successfully, look for another 7699 if ret == Z_STREAM_END { 7700 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK 7701 } 7702 7703 // good decompression 7704 return 0 7705 } 7706 7707 // Fetch data and put it in the output buffer. Assumes state->x.have is 0. 7708 // Data is either copied from the input file or decompressed from the input 7709 // file depending on state->how. If state->how is LOOK, then a gzip header is 7710 // looked for to determine whether to copy or decompress. Returns -1 on error, 7711 // otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the 7712 // end of the input file has been reached and all data has been processed. 7713 func gz_fetch(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:229:11: */ 7714 var strm Z_streamp = (state + 120 /* &.strm */) 7715 7716 for ok := true; ok; ok = (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (!((*Gz_state)(unsafe.Pointer(state)).Feof != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0))) { 7717 switch (*Gz_state)(unsafe.Pointer(state)).Fhow { 7718 case LOOK: // -> LOOK, COPY (only if never GZIP), or GZIP 7719 if gz_look(tls, state) == -1 { 7720 return -1 7721 } 7722 if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK { 7723 return 0 7724 } 7725 break 7726 case COPY1: // -> COPY 7727 if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fout, ((*Gz_state)(unsafe.Pointer(state)).Fsize<<1), (state /* &.x */ /* &.have */)) == 7728 -1 { 7729 return -1 7730 } 7731 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 7732 return 0 7733 case /* GZIP */ 2: // -> GZIP or LOOK (if end of gzip stream) 7734 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) 7735 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 7736 if gz_decomp(tls, state) == -1 { 7737 return -1 7738 } 7739 } 7740 } 7741 return 0 7742 } 7743 7744 // Skip len uncompressed bytes of output. Return -1 on error, 0 on success. 7745 func gz_skip(tls *libc.TLS, state Gz_statep, len Off_t) int32 { /* gzread.c:259:11: */ 7746 var n uint32 7747 7748 // skip over len bytes or reach end-of-file, whichever comes first 7749 for len != 0 { 7750 // skip over whatever is in output buffer 7751 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 7752 if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > len) { 7753 n = uint32(len) 7754 } else { 7755 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 7756 } 7757 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 7758 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n)) 7759 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n)) 7760 len = len - (Off_t(n)) 7761 } else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) { 7762 break 7763 } else { 7764 // get more output, looking for header if required 7765 if gz_fetch(tls, state) == -1 { 7766 return -1 7767 } 7768 } 7769 } 7770 return 0 7771 } 7772 7773 // Read len bytes into buf from file, or less than len up to the end of the 7774 // input. Return the number of bytes read. If zero is returned, either the 7775 // end of file was reached, or there was an error. state->err must be 7776 // consulted in that case to determine which. 7777 func gz_read(tls *libc.TLS, state Gz_statep, buf Voidp, len Z_size_t) Z_size_t { /* gzread.c:294:16: */ 7778 bp := tls.Alloc(4) 7779 defer tls.Free(4) 7780 7781 var got Z_size_t 7782 // var n uint32 at bp, 4 7783 7784 // if len is zero, avoid unnecessary operations 7785 if len == uint64(0) { 7786 return uint64(0) 7787 } 7788 7789 // process a skip request 7790 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 7791 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 7792 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 7793 return uint64(0) 7794 } 7795 } 7796 7797 // get len bytes to buf, or less than len if at the end 7798 got = uint64(0) 7799 for ok := true; ok; ok = len != 0 { 7800 // set n to the maximum amount of len that fits in an unsigned int 7801 *(*uint32)(unsafe.Pointer(bp /* n */)) = libc.Uint32FromInt32(-1) 7802 if Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */))) > len { 7803 *(*uint32)(unsafe.Pointer(bp /* n */)) = uint32(len) 7804 } 7805 7806 // first just try copying data from the output buffer 7807 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 7808 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave < *(*uint32)(unsafe.Pointer(bp /* n */)) { 7809 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 7810 } 7811 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7812 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7813 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (*(*uint32)(unsafe.Pointer(bp /* n */))) 7814 } else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) { 7815 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // tried to read past end 7816 break 7817 } else if ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK) || (*(*uint32)(unsafe.Pointer(bp /* n */)) < ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)) { 7818 // get more output, looking for header if required 7819 if gz_fetch(tls, state) == -1 { 7820 return uint64(0) 7821 } 7822 continue // no progress yet -- go back to copy above 7823 // the copy above assures that we will leave with space in the 7824 // output buffer, allowing at least one gzungetc() to succeed 7825 } else if (*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1 { // read directly 7826 if gz_load(tls, state, buf, *(*uint32)(unsafe.Pointer(bp /* n */)), bp /* &n */) == -1 { 7827 return uint64(0) 7828 } 7829 } else { // state->how == GZIP 7830 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_out = *(*uint32)(unsafe.Pointer(bp /* n */)) 7831 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_out = buf 7832 if gz_decomp(tls, state) == -1 { 7833 return uint64(0) 7834 } 7835 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 7836 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 7837 } 7838 7839 // update progress 7840 len = len - (Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7841 buf = (buf + uintptr(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7842 got = got + (Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7843 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(*(*uint32)(unsafe.Pointer(bp /* n */)))) 7844 } 7845 7846 // return number of bytes read into user buffer 7847 return got 7848 } 7849 7850 // -- see zlib.h -- 7851 func Xgzread(tls *libc.TLS, file GzFile, buf Voidp, len uint32) int32 { /* gzread.c:375:13: */ 7852 var state Gz_statep 7853 7854 // get internal structure 7855 if file == (uintptr(0)) { 7856 return -1 7857 } 7858 state = file 7859 7860 // check that we're reading and that there's no (serious) error 7861 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 7862 return -1 7863 } 7864 7865 // since an int is returned, make sure len fits in one, otherwise return 7866 // with an error (this avoids a flaw in the interface) 7867 if int32(len) < 0 { 7868 Xgz_error(tls, state, -2, ts+196 /* "request does not..." */) 7869 return -1 7870 } 7871 7872 // read len or fewer bytes to buf 7873 len = uint32(gz_read(tls, state, buf, uint64(len))) 7874 7875 // check for an error 7876 if ((len == uint32(0)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 7877 return -1 7878 } 7879 7880 // return the number of bytes read (this is assured to fit in an int) 7881 return int32(len) 7882 } 7883 7884 // -- see zlib.h -- 7885 func Xgzfread(tls *libc.TLS, buf Voidp, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzread.c:411:18: */ 7886 var len Z_size_t 7887 var state Gz_statep 7888 7889 // get internal structure 7890 if file == (uintptr(0)) { 7891 return uint64(0) 7892 } 7893 state = file 7894 7895 // check that we're reading and that there's no (serious) error 7896 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 7897 return uint64(0) 7898 } 7899 7900 // compute bytes to read -- error on overflow 7901 len = (nitems * size) 7902 if (size != 0) && ((len / size) != nitems) { 7903 Xgz_error(tls, state, -2, ts+227 /* "request does not..." */) 7904 return uint64(0) 7905 } 7906 7907 // read len or fewer bytes to buf, return the number of full items read 7908 if len != 0 { 7909 return (gz_read(tls, state, buf, len) / size) 7910 } 7911 return uint64(0) 7912 } 7913 7914 // -- see zlib.h -- 7915 func Xgzgetc(tls *libc.TLS, file GzFile) int32 { /* gzread.c:447:13: */ 7916 bp := tls.Alloc(1) 7917 defer tls.Free(1) 7918 7919 var ret int32 7920 // var buf [1]uint8 at bp, 1 7921 7922 var state Gz_statep 7923 7924 // get internal structure 7925 if file == (uintptr(0)) { 7926 return -1 7927 } 7928 state = file 7929 7930 // check that we're reading and that there's no (serious) error 7931 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 7932 return -1 7933 } 7934 7935 // try output buffer (no need to check for skip request) 7936 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 7937 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave-- 7938 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 7939 return int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext), 1)))) 7940 } 7941 7942 // nothing there -- try gz_read() 7943 ret = int32(gz_read(tls, state, bp /* &buf[0] */, uint64(1))) 7944 if ret < 1 { 7945 return -1 7946 } 7947 return int32(*(*uint8)(unsafe.Pointer(bp /* &buf[0] */))) 7948 } 7949 7950 func Xgzgetc_(tls *libc.TLS, file GzFile) int32 { /* gzread.c:476:13: */ 7951 return Xgzgetc(tls, file) 7952 } 7953 7954 // -- see zlib.h -- 7955 func Xgzungetc(tls *libc.TLS, c int32, file GzFile) int32 { /* gzread.c:483:13: */ 7956 var state Gz_statep 7957 7958 // get internal structure 7959 if file == (uintptr(0)) { 7960 return -1 7961 } 7962 state = file 7963 7964 // check that we're reading and that there's no (serious) error 7965 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 7966 return -1 7967 } 7968 7969 // process a skip request 7970 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 7971 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 7972 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 7973 return -1 7974 } 7975 } 7976 7977 // can't push EOF 7978 if c < 0 { 7979 return -1 7980 } 7981 7982 // if output buffer empty, put byte at end (allows more pushing) 7983 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { 7984 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(1) 7985 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) - uintptr(1)) 7986 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 7987 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 7988 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 7989 return c 7990 } 7991 7992 // if no room, give up (must have already done a gzungetc()) 7993 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) { 7994 Xgz_error(tls, state, -3, ts+260 /* "out of room to p..." */) 7995 return -1 7996 } 7997 7998 // slide output data if needed and insert byte before existing data 7999 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext == (*Gz_state)(unsafe.Pointer(state)).Fout { 8000 var src uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)) 8001 var dest uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) 8002 for src > (*Gz_state)(unsafe.Pointer(state)).Fout { 8003 *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&dest, 1))) = *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&src, 1))) 8004 } 8005 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = dest 8006 } 8007 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave++ 8008 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext-- 8009 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 8010 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 8011 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 8012 return c 8013 } 8014 8015 // -- see zlib.h -- 8016 func Xgzgets(tls *libc.TLS, file GzFile, buf uintptr, len int32) uintptr { /* gzread.c:543:6: */ 8017 var left uint32 8018 var n uint32 8019 var str uintptr 8020 var eol uintptr 8021 var state Gz_statep 8022 8023 // check parameters and get internal structure 8024 if ((file == (uintptr(0))) || (buf == (uintptr(0)))) || (len < 1) { 8025 return uintptr(0) 8026 } 8027 state = file 8028 8029 // check that we're reading and that there's no (serious) error 8030 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 8031 return uintptr(0) 8032 } 8033 8034 // process a skip request 8035 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8036 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8037 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8038 return uintptr(0) 8039 } 8040 } 8041 8042 // copy output bytes up to new line or len - 1, whichever comes first -- 8043 // append a terminating zero to the string (we don't check for a zero in 8044 // the contents, let the user worry about that) 8045 str = buf 8046 left = (uint32(len) - uint32(1)) 8047 if left != 0 { 8048 for ok := true; ok; ok = ((left != 0) && (eol == (uintptr(0)))) { 8049 // assure that something is in the output buffer 8050 if ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (gz_fetch(tls, state) == -1) { 8051 return uintptr(0) 8052 } // error 8053 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { // end of file 8054 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // read past end 8055 break // return what we have 8056 } 8057 8058 // look for end-of-line in current output buffer 8059 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > left { 8060 n = left 8061 } else { 8062 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 8063 } 8064 eol = libc.Xmemchr(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, '\n', uint64(n)) 8065 if eol != (uintptr(0)) { 8066 n = ((uint32((int64(eol) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) + uint32(1)) 8067 } 8068 8069 // copy through end-of-line, or remainder if not found 8070 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(n)) 8071 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 8072 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n)) 8073 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n)) 8074 left = left - (n) 8075 buf += uintptr(n) 8076 } 8077 } 8078 8079 // return terminated string, or if nothing, end of file 8080 if buf == str { 8081 return uintptr(0) 8082 } 8083 *(*int8)(unsafe.Pointer(buf)) = int8(0) 8084 return str 8085 } 8086 8087 // -- see zlib.h -- 8088 func Xgzdirect(tls *libc.TLS, file GzFile) int32 { /* gzread.c:607:13: */ 8089 var state Gz_statep 8090 8091 // get internal structure 8092 if file == (uintptr(0)) { 8093 return 0 8094 } 8095 state = file 8096 8097 // if the state is not known, but we can find out, then do so (this is 8098 // mainly for right after a gzopen() or gzdopen()) 8099 if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK)) && ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) { 8100 gz_look(tls, state) 8101 } 8102 8103 // return 1 if transparent, 0 if processing a gzip stream 8104 return (*Gz_state)(unsafe.Pointer(state)).Fdirect 8105 } 8106 8107 // -- see zlib.h -- 8108 func Xgzclose_r(tls *libc.TLS, file GzFile) int32 { /* gzread.c:627:13: */ 8109 var ret int32 8110 var err int32 8111 var state Gz_statep 8112 8113 // get internal structure 8114 if file == (uintptr(0)) { 8115 return -2 8116 } 8117 state = file 8118 8119 // check that we're reading 8120 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { 8121 return -2 8122 } 8123 8124 // free memory and close file 8125 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 8126 XinflateEnd(tls, (state + 120 /* &.strm */)) 8127 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 8128 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 8129 } 8130 if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-5) { 8131 err = -5 8132 } else { 8133 err = Z_OK 8134 } 8135 Xgz_error(tls, state, Z_OK, uintptr(0)) 8136 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 8137 ret = libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) 8138 libc.Xfree(tls, state) 8139 if ret != 0 { 8140 return -1 8141 } 8142 return err 8143 } 8144 8145 // Initialize state for writing a gzip file. Mark initialization by setting 8146 // state->size to non-zero. Return -1 on a memory allocation failure, or 0 on 8147 // success. 8148 func gz_init(tls *libc.TLS, state Gz_statep) int32 { /* gzwrite.c:17:11: */ 8149 var ret int32 8150 var strm Z_streamp = (state + 120 /* &.strm */) 8151 8152 // allocate input buffer (double size for gzprintf) 8153 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, (uint64((*Gz_state)(unsafe.Pointer(state)).Fwant << 1))) 8154 if (*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0)) { 8155 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 8156 return -1 8157 } 8158 8159 // only need output buffer and deflate state if compressing 8160 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 8161 // allocate output buffer 8162 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant)) 8163 if (*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0)) { 8164 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 8165 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 8166 return -1 8167 } 8168 8169 // allocate deflate memory, set up for gzip compression 8170 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = Alloc_func(Z_NULL) 8171 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = Free_func(Z_NULL) 8172 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = Voidpf(Z_NULL) 8173 ret = XdeflateInit2_(tls, strm, (*Gz_state)(unsafe.Pointer(state)).Flevel, Z_DEFLATED, (MAX_WBITS + 16), DEF_MEM_LEVEL, (*Gz_state)(unsafe.Pointer(state)).Fstrategy, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) 8174 if ret != Z_OK { 8175 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 8176 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 8177 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 8178 return -1 8179 } 8180 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = uintptr(0) 8181 } 8182 8183 // mark state as initialized 8184 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 8185 8186 // initialize write buffer if compressing 8187 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 8188 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 8189 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 8190 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 8191 } 8192 return 0 8193 } 8194 8195 // Compress whatever is at avail_in and next_in and write to the output file. 8196 // Return -1 if there is an error writing to the output file or if gz_init() 8197 // fails to allocate memory, otherwise 0. flush is assumed to be a valid 8198 // deflate() flush value. If flush is Z_FINISH, then the deflate() state is 8199 // reset to start a new gzip stream. If gz->direct is true, then simply write 8200 // to the output file without compressing, and ignore flush. 8201 func gz_comp(tls *libc.TLS, state Gz_statep, flush int32) int32 { /* gzwrite.c:73:11: */ 8202 var ret int32 8203 var writ int32 8204 var have uint32 8205 var put uint32 8206 var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1)) 8207 var strm Z_streamp = (state + 120 /* &.strm */) 8208 8209 // allocate memory if this is the first time through 8210 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 8211 return -1 8212 } 8213 8214 // write directly if requested 8215 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 8216 for (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 8217 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in > max { 8218 put = max 8219 } else { 8220 put = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 8221 } 8222 writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(put))) 8223 if writ < 0 { 8224 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls))))) 8225 return -1 8226 } 8227 *(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (uint32(writ)) 8228 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(writ)) 8229 } 8230 return 0 8231 } 8232 8233 // run deflate() on provided input until it produces no more output 8234 ret = Z_OK 8235 for ok := true; ok; ok = have != 0 { 8236 // write out current buffer contents if full, or if flushing, but if 8237 // doing Z_FINISH then don't write until we get to Z_STREAM_END 8238 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0)) || ((flush != Z_NO_FLUSH) && ((flush != Z_FINISH) || (ret == Z_STREAM_END))) { 8239 for (*Z_stream)(unsafe.Pointer(strm)).Fnext_out > (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext { 8240 if ((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1) > int64(int32(max)) { 8241 put = max 8242 } else { 8243 put = (uint32((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) 8244 } 8245 writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(put))) 8246 if writ < 0 { 8247 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls))))) 8248 return -1 8249 } 8250 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(writ)) 8251 } 8252 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 8253 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 8254 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 8255 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 8256 } 8257 } 8258 8259 // compress 8260 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 8261 ret = Xdeflate(tls, strm, flush) 8262 if ret == (-2) { 8263 Xgz_error(tls, state, -2, 8264 ts+291 /* "internal error: ..." */) 8265 return -1 8266 } 8267 have = have - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out) 8268 } 8269 8270 // if that completed a deflate stream, allow another to start 8271 if flush == Z_FINISH { 8272 XdeflateReset(tls, strm) 8273 } 8274 8275 // all done, no errors 8276 return 0 8277 } 8278 8279 // Compress len zeros to output. Return -1 on a write error or memory 8280 // allocation failure by gz_comp(), or 0 on success. 8281 func gz_zero(tls *libc.TLS, state Gz_statep, len Off_t) int32 { /* gzwrite.c:145:11: */ 8282 var first int32 8283 var n uint32 8284 var strm Z_streamp = (state + 120 /* &.strm */) 8285 8286 // consume whatever's left in the input buffer 8287 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 8288 return -1 8289 } 8290 8291 // compress len zeros (len guaranteed > 0) 8292 first = 1 8293 for len != 0 { 8294 if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fsize) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fsize) > len) { 8295 n = uint32(len) 8296 } else { 8297 n = (*Gz_state)(unsafe.Pointer(state)).Fsize 8298 } 8299 if first != 0 { 8300 libc.Xmemset(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, 0, uint64(n)) 8301 first = 0 8302 } 8303 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = n 8304 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 8305 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n)) 8306 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 8307 return -1 8308 } 8309 len = len - (Off_t(n)) 8310 } 8311 return 0 8312 } 8313 8314 // Write len bytes from buf to file. Return the number of bytes written. If 8315 // the returned value is less than len, then there was an error. 8316 func gz_write(tls *libc.TLS, state Gz_statep, buf Voidpc, len Z_size_t) Z_size_t { /* gzwrite.c:178:16: */ 8317 var put Z_size_t = len 8318 8319 // if len is zero, avoid unnecessary operations 8320 if len == uint64(0) { 8321 return uint64(0) 8322 } 8323 8324 // allocate memory if this is the first time through 8325 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 8326 return uint64(0) 8327 } 8328 8329 // check for seek request 8330 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8331 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8332 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8333 return uint64(0) 8334 } 8335 } 8336 8337 // for small len, copy to input buffer, otherwise compress directly 8338 if len < Z_size_t((*Gz_state)(unsafe.Pointer(state)).Fsize) { 8339 // copy to input buffer, compress when full 8340 for ok := true; ok; ok = len != 0 { 8341 var have uint32 8342 var copy uint32 8343 8344 if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) { 8345 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 8346 } 8347 have = (uint32(((int64((*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in + uintptr((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1)) 8348 copy = ((*Gz_state)(unsafe.Pointer(state)).Fsize - have) 8349 if Z_size_t(copy) > len { 8350 copy = uint32(len) 8351 } 8352 libc.Xmemcpy(tls, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have)), buf, uint64(copy)) 8353 *(*UInt)(unsafe.Pointer(state + 120 /* &.strm */ + 8 /* &.avail_in */)) += (copy) 8354 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(copy)) 8355 buf = (buf + uintptr(copy)) 8356 len = len - (Z_size_t(copy)) 8357 if (len != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 8358 return uint64(0) 8359 } 8360 } 8361 } else { 8362 // consume whatever's left in the input buffer 8363 if ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 8364 return uint64(0) 8365 } 8366 8367 // directly compress user buffer to file 8368 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = buf 8369 for ok1 := true; ok1; ok1 = len != 0 { 8370 var n uint32 = libc.Uint32(libc.Uint32FromInt32(-1)) 8371 if Z_size_t(n) > len { 8372 n = uint32(len) 8373 } 8374 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = n 8375 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n)) 8376 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 8377 return uint64(0) 8378 } 8379 len = len - (Z_size_t(n)) 8380 } 8381 } 8382 8383 // input was all buffered or compressed 8384 return put 8385 } 8386 8387 // -- see zlib.h -- 8388 func Xgzwrite(tls *libc.TLS, file GzFile, buf Voidpc, len uint32) int32 { /* gzwrite.c:246:13: */ 8389 var state Gz_statep 8390 8391 // get internal structure 8392 if file == (uintptr(0)) { 8393 return 0 8394 } 8395 state = file 8396 8397 // check that we're writing and that there's no error 8398 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8399 return 0 8400 } 8401 8402 // since an int is returned, make sure len fits in one, otherwise return 8403 // with an error (this avoids a flaw in the interface) 8404 if int32(len) < 0 { 8405 Xgz_error(tls, state, -3, ts+330 /* "requested length..." */) 8406 return 0 8407 } 8408 8409 // write len bytes from buf (the return value will fit in an int) 8410 return int32(gz_write(tls, state, buf, uint64(len))) 8411 } 8412 8413 // -- see zlib.h -- 8414 func Xgzfwrite(tls *libc.TLS, buf Voidpc, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzwrite.c:274:18: */ 8415 var len Z_size_t 8416 var state Gz_statep 8417 8418 // get internal structure 8419 if file == (uintptr(0)) { 8420 return uint64(0) 8421 } 8422 state = file 8423 8424 // check that we're writing and that there's no error 8425 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8426 return uint64(0) 8427 } 8428 8429 // compute bytes to read -- error on overflow 8430 len = (nitems * size) 8431 if (size != 0) && ((len / size) != nitems) { 8432 Xgz_error(tls, state, -2, ts+227 /* "request does not..." */) 8433 return uint64(0) 8434 } 8435 8436 // write len bytes to buf, return the number of full items written 8437 if len != 0 { 8438 return (gz_write(tls, state, buf, len) / size) 8439 } 8440 return uint64(0) 8441 } 8442 8443 // -- see zlib.h -- 8444 func Xgzputc(tls *libc.TLS, file GzFile, c int32) int32 { /* gzwrite.c:304:13: */ 8445 bp := tls.Alloc(1) 8446 defer tls.Free(1) 8447 8448 var have uint32 8449 // var buf [1]uint8 at bp, 1 8450 8451 var state Gz_statep 8452 var strm Z_streamp 8453 8454 // get internal structure 8455 if file == (uintptr(0)) { 8456 return -1 8457 } 8458 state = file 8459 strm = (state + 120 /* &.strm */) 8460 8461 // check that we're writing and that there's no error 8462 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8463 return -1 8464 } 8465 8466 // check for seek request 8467 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8468 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8469 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8470 return -1 8471 } 8472 } 8473 8474 // try writing to input buffer for speed (state->size == 0 if buffer not 8475 // initialized) 8476 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 8477 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 8478 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 8479 } 8480 have = (uint32(((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1)) 8481 if have < (*Gz_state)(unsafe.Pointer(state)).Fsize { 8482 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have))) = uint8(c) 8483 (*Z_stream)(unsafe.Pointer(strm)).Favail_in++ 8484 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 8485 return (c & 0xff) 8486 } 8487 } 8488 8489 // no room in buffer or not initialized, use gz_write() 8490 *(*uint8)(unsafe.Pointer(bp /* &buf[0] */)) = uint8(c) 8491 if gz_write(tls, state, bp /* &buf[0] */, uint64(1)) != uint64(1) { 8492 return -1 8493 } 8494 return (c & 0xff) 8495 } 8496 8497 // -- see zlib.h -- 8498 func Xgzputs(tls *libc.TLS, file GzFile, str uintptr) int32 { /* gzwrite.c:352:13: */ 8499 var ret int32 8500 var len Z_size_t 8501 var state Gz_statep 8502 8503 // get internal structure 8504 if file == (uintptr(0)) { 8505 return -1 8506 } 8507 state = file 8508 8509 // check that we're writing and that there's no error 8510 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8511 return -1 8512 } 8513 8514 // write string 8515 len = libc.Xstrlen(tls, str) 8516 ret = int32(gz_write(tls, state, str, len)) 8517 if (ret == 0) && (len != uint64(0)) { 8518 return -1 8519 } 8520 return ret 8521 } 8522 8523 // - 8524 // This file is in the public domain. 8525 // $FreeBSD$ 8526 8527 // - 8528 // SPDX-License-Identifier: BSD-2-Clause 8529 // 8530 // Copyright (c) 2017 Poul-Henning Kamp. All rights reserved. 8531 // 8532 // Redistribution and use in source and binary forms, with or without 8533 // modification, are permitted provided that the following conditions 8534 // are met: 8535 // 1. Redistributions of source code must retain the above copyright 8536 // notice, this list of conditions and the following disclaimer. 8537 // 2. Redistributions in binary form must reproduce the above copyright 8538 // notice, this list of conditions and the following disclaimer in the 8539 // documentation and/or other materials provided with the distribution. 8540 // 8541 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 8542 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 8543 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 8544 // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 8545 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 8546 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 8547 // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 8548 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 8549 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 8550 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 8551 // SUCH DAMAGE. 8552 // 8553 // $FreeBSD$ 8554 8555 // -- see zlib.h -- 8556 func Xgzvprintf(tls *libc.TLS, file GzFile, format uintptr, va Va_list) int32 { /* gzwrite.c:379:15: */ 8557 var len int32 8558 var left uint32 8559 var next uintptr 8560 var state Gz_statep 8561 var strm Z_streamp 8562 8563 // get internal structure 8564 if file == (uintptr(0)) { 8565 return -2 8566 } 8567 state = file 8568 strm = (state + 120 /* &.strm */) 8569 8570 // check that we're writing and that there's no error 8571 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8572 return -2 8573 } 8574 8575 // make sure we have some buffer space 8576 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 8577 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8578 } 8579 8580 // check for seek request 8581 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8582 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8583 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8584 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8585 } 8586 } 8587 8588 // do the printf() into the input buffer, put length in len -- the input 8589 // buffer is double-sized just for this function, so there is guaranteed to 8590 // be state->size bytes available after the current contents 8591 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 8592 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 8593 } 8594 next = (((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))) + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)) 8595 *(*int8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1))))) = int8(0) 8596 len = libc.Xvsnprintf(tls, next, uint64((*Gz_state)(unsafe.Pointer(state)).Fsize), format, va) 8597 8598 // check that printf() results fit in buffer 8599 if ((len == 0) || (uint32(len) >= (*Gz_state)(unsafe.Pointer(state)).Fsize)) || (int32(*(*int8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1)))))) != 0) { 8600 return 0 8601 } 8602 8603 // update buffer and position, compress first half if past that 8604 *(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) += (uint32(len)) 8605 *(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(len)) 8606 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in >= (*Gz_state)(unsafe.Pointer(state)).Fsize { 8607 left = ((*Z_stream)(unsafe.Pointer(strm)).Favail_in - (*Gz_state)(unsafe.Pointer(state)).Fsize) 8608 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = (*Gz_state)(unsafe.Pointer(state)).Fsize 8609 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 8610 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8611 } 8612 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize)), uint64(left)) 8613 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 8614 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = left 8615 } 8616 return len 8617 } 8618 8619 func Xgzprintf(tls *libc.TLS, file GzFile, format uintptr, va uintptr) int32 { /* gzwrite.c:451:15: */ 8620 var va1 Va_list 8621 _ = va1 8622 var ret int32 8623 8624 (va1) = va 8625 ret = Xgzvprintf(tls, file, format, va1) 8626 _ = va1 8627 return ret 8628 } 8629 8630 // -- see zlib.h -- 8631 func Xgzflush(tls *libc.TLS, file GzFile, flush int32) int32 { /* gzwrite.c:553:13: */ 8632 var state Gz_statep 8633 8634 // get internal structure 8635 if file == (uintptr(0)) { 8636 return -2 8637 } 8638 state = file 8639 8640 // check that we're writing and that there's no error 8641 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8642 return -2 8643 } 8644 8645 // check flush parameter 8646 if (flush < 0) || (flush > Z_FINISH) { 8647 return -2 8648 } 8649 8650 // check for seek request 8651 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8652 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8653 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8654 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8655 } 8656 } 8657 8658 // compress remaining data with requested flush 8659 gz_comp(tls, state, flush) 8660 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8661 } 8662 8663 // -- see zlib.h -- 8664 func Xgzsetparams(tls *libc.TLS, file GzFile, level int32, strategy int32) int32 { /* gzwrite.c:585:13: */ 8665 var state Gz_statep 8666 var strm Z_streamp 8667 8668 // get internal structure 8669 if file == (uintptr(0)) { 8670 return -2 8671 } 8672 state = file 8673 strm = (state + 120 /* &.strm */) 8674 8675 // check that we're writing and that there's no error 8676 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 8677 return -2 8678 } 8679 8680 // if no change is requested, then do nothing 8681 if (level == (*Gz_state)(unsafe.Pointer(state)).Flevel) && (strategy == (*Gz_state)(unsafe.Pointer(state)).Fstrategy) { 8682 return Z_OK 8683 } 8684 8685 // check for seek request 8686 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8687 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8688 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8689 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8690 } 8691 } 8692 8693 // change compression parameters for subsequent input 8694 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 8695 // flush previous input with previous parameters before changing 8696 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_BLOCK) == -1) { 8697 return (*Gz_state)(unsafe.Pointer(state)).Ferr 8698 } 8699 XdeflateParams(tls, strm, level, strategy) 8700 } 8701 (*Gz_state)(unsafe.Pointer(state)).Flevel = level 8702 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = strategy 8703 return Z_OK 8704 } 8705 8706 // -- see zlib.h -- 8707 func Xgzclose_w(tls *libc.TLS, file GzFile) int32 { /* gzwrite.c:627:13: */ 8708 var ret int32 = Z_OK 8709 var state Gz_statep 8710 8711 // get internal structure 8712 if file == (uintptr(0)) { 8713 return -2 8714 } 8715 state = file 8716 8717 // check that we're writing 8718 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 8719 return -2 8720 } 8721 8722 // check for seek request 8723 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8724 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8725 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 8726 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 8727 } 8728 } 8729 8730 // flush, free memory, and close file 8731 if gz_comp(tls, state, Z_FINISH) == -1 { 8732 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 8733 } 8734 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 8735 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 8736 XdeflateEnd(tls, (state + 120 /* &.strm */)) 8737 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 8738 } 8739 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 8740 } 8741 Xgz_error(tls, state, Z_OK, uintptr(0)) 8742 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 8743 if libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) == -1 { 8744 ret = -1 8745 } 8746 libc.Xfree(tls, state) 8747 return ret 8748 } 8749 8750 // Reverse the bytes in a 32-bit value 8751 8752 // inftrees.h -- header to use inftrees.c 8753 // Copyright (C) 1995-2005, 2010 Mark Adler 8754 // For conditions of distribution and use, see copyright notice in zlib.h 8755 8756 // WARNING: this file should *not* be used by applications. It is 8757 // part of the implementation of the compression library and is 8758 // subject to change. Applications should only use zlib.h. 8759 // 8760 8761 // Structure for decoding tables. Each entry provides either the 8762 // information needed to do the operation requested by the code that 8763 // indexed that table entry, or it provides a pointer to another 8764 // table that indexes more bits of the code. op indicates whether 8765 // the entry is a pointer to another table, a literal, a length or 8766 // distance, an end-of-block, or an invalid code. For a table 8767 // pointer, the low four bits of op is the number of index bits of 8768 // that table. For a length or distance, the low four bits of op 8769 // is the number of extra bits to get after the code. bits is 8770 // the number of bits in this code or part of the code to drop off 8771 // of the bit buffer. val is the actual byte to output in the case 8772 // of a literal, the base length or distance, or the offset from 8773 // the current table to the next table. Each entry is four bytes. 8774 type Code = struct { 8775 Fop uint8 8776 Fbits uint8 8777 Fval uint16 8778 } /* inftrees.h:28:3 */ 8779 8780 // op values as set by inflate_table(): 8781 // 00000000 - literal 8782 // 0000tttt - table link, tttt != 0 is the number of table index bits 8783 // 0001eeee - length or distance, eeee is the number of extra bits 8784 // 01100000 - end of block 8785 // 01000000 - invalid code 8786 // 8787 8788 // Maximum size of the dynamic table. The maximum number of code structures is 8789 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 8790 // codes. These values were found by exhaustive searches using the program 8791 // examples/enough.c found in the zlib distribtution. The arguments to that 8792 // program are the number of symbols, the initial root table size, and the 8793 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 8794 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 8795 // The initial root table size (9 or 6) is found in the fifth argument of the 8796 // inflate_table() calls in inflate.c and infback.c. If the root table size is 8797 // changed, then these maximum sizes would be need to be recalculated and 8798 // updated. 8799 8800 // Type of code to build for inflate_table() 8801 type Codetype = uint32 /* inftrees.h:58:3 */ 8802 // inflate.h -- internal inflate state definition 8803 // Copyright (C) 1995-2016 Mark Adler 8804 // For conditions of distribution and use, see copyright notice in zlib.h 8805 8806 // WARNING: this file should *not* be used by applications. It is 8807 // part of the implementation of the compression library and is 8808 // subject to change. Applications should only use zlib.h. 8809 // 8810 8811 // define NO_GZIP when compiling if you want to disable gzip header and 8812 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 8813 // the crc code when it is not needed. For shared libraries, gzip decoding 8814 // should be left enabled. 8815 8816 // Possible inflate modes between inflate() calls 8817 type Inflate_mode = uint32 /* inflate.h:53:3 */ 8818 8819 // 8820 // State transitions between above modes - 8821 // 8822 // (most modes can go to BAD or MEM on error -- not shown for clarity) 8823 // 8824 // Process header: 8825 // HEAD -> (gzip) or (zlib) or (raw) 8826 // (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> 8827 // HCRC -> TYPE 8828 // (zlib) -> DICTID or TYPE 8829 // DICTID -> DICT -> TYPE 8830 // (raw) -> TYPEDO 8831 // Read deflate blocks: 8832 // TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK 8833 // STORED -> COPY_ -> COPY -> TYPE 8834 // TABLE -> LENLENS -> CODELENS -> LEN_ 8835 // LEN_ -> LEN 8836 // Read deflate codes in fixed or dynamic block: 8837 // LEN -> LENEXT or LIT or TYPE 8838 // LENEXT -> DIST -> DISTEXT -> MATCH -> LEN 8839 // LIT -> LEN 8840 // Process trailer: 8841 // CHECK -> LENGTH -> DONE 8842 // 8843 8844 // State maintained between inflate() calls -- approximately 7K bytes, not 8845 // including the allocated sliding window, which is up to 32K bytes. 8846 type Inflate_state = struct { 8847 Fstrm Z_streamp 8848 Fmode Inflate_mode 8849 Flast int32 8850 Fwrap int32 8851 Fhavedict int32 8852 Fflags int32 8853 Fdmax uint32 8854 Fcheck uint64 8855 Ftotal uint64 8856 Fhead Gz_headerp 8857 Fwbits uint32 8858 Fwsize uint32 8859 Fwhave uint32 8860 Fwnext uint32 8861 Fwindow uintptr 8862 Fhold uint64 8863 Fbits uint32 8864 Flength uint32 8865 Foffset uint32 8866 Fextra uint32 8867 Flencode uintptr 8868 Fdistcode uintptr 8869 Flenbits uint32 8870 Fdistbits uint32 8871 Fncode uint32 8872 Fnlen uint32 8873 Fndist uint32 8874 Fhave uint32 8875 Fnext uintptr 8876 Flens [320]uint16 8877 Fwork [288]uint16 8878 Fcodes [1444]Code 8879 Fsane int32 8880 Fback int32 8881 Fwas uint32 8882 F__ccgo_pad1 [4]byte 8883 } /* inflate.h:82:1 */ 8884 8885 // 8886 // strm provides memory allocation functions in zalloc and zfree, or 8887 // Z_NULL to use the library memory allocation functions. 8888 // 8889 // windowBits is in the range 8..15, and window is a user-supplied 8890 // window and output buffer that is 2**windowBits bytes. 8891 // 8892 func XinflateBackInit_(tls *libc.TLS, strm Z_streamp, windowBits int32, window uintptr, version uintptr, stream_size int32) int32 { /* infback.c:28:13: */ 8893 var state uintptr 8894 8895 if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(*(*int8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) { 8896 return -6 8897 } 8898 if (((strm == uintptr(Z_NULL)) || (window == uintptr(Z_NULL))) || (windowBits < 8)) || (windowBits > 15) { 8899 return -2 8900 } 8901 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 8902 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 8903 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 8904 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 8905 }{Xzcalloc})) 8906 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 8907 } 8908 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 8909 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 8910 f func(*libc.TLS, Voidpf, Voidpf) 8911 }{Xzcfree})) 8912 } 8913 state = (*struct { 8914 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 8915 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{}))) 8916 if state == uintptr(Z_NULL) { 8917 return -4 8918 } 8919 8920 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 8921 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 8922 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = UInt(windowBits) 8923 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << windowBits) 8924 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = window 8925 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 8926 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 8927 return Z_OK 8928 } 8929 8930 // 8931 // Return state with length and distance decoding tables and index sizes set to 8932 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 8933 // If BUILDFIXED is defined, then instead this routine builds the tables the 8934 // first time it's called, and returns those tables the first time and 8935 // thereafter. This reduces the size of the code by about 2K bytes, in 8936 // exchange for a little execution time. However, BUILDFIXED should not be 8937 // used for threaded applications, since the rewriting of the tables and virgin 8938 // may not be thread-safe. 8939 // 8940 func fixedtables(tls *libc.TLS, state uintptr) { /* infback.c:82:12: */ 8941 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix)) 8942 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 8943 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix)) 8944 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 8945 } 8946 8947 var lenfix = [512]Code{ 8948 {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, 8949 {Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, 8950 {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, 8951 {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)}, 8952 {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, 8953 {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, 8954 {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, 8955 {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)}, 8956 {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, 8957 {Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, 8958 {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)}, 8959 {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)}, 8960 {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, 8961 {Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, 8962 {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, 8963 {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)}, 8964 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, 8965 {Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, 8966 {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, 8967 {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)}, 8968 {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, 8969 {Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, 8970 {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, 8971 {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)}, 8972 {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, 8973 {Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, 8974 {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)}, 8975 {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, 8976 {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, 8977 {Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, 8978 {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, 8979 {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)}, 8980 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, 8981 {Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, 8982 {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, 8983 {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)}, 8984 {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, 8985 {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, 8986 {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, 8987 {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)}, 8988 {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, 8989 {Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, 8990 {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)}, 8991 {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)}, 8992 {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, 8993 {Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, 8994 {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, 8995 {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)}, 8996 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, 8997 {Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, 8998 {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, 8999 {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)}, 9000 {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, 9001 {Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, 9002 {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)}, 9003 {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)}, 9004 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, 9005 {Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, 9006 {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)}, 9007 {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, 9008 {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, 9009 {Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, 9010 {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, 9011 {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)}, 9012 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, 9013 {Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, 9014 {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, 9015 {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)}, 9016 {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, 9017 {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, 9018 {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, 9019 {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)}, 9020 {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, 9021 {Fbits: uint8(9), Fval: uint16(255)}, 9022 } /* inffixed.h:10:23 */ 9023 var distfix = [32]Code{ 9024 {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)}, 9025 {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)}, 9026 {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)}, 9027 {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)}, 9028 {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)}, 9029 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 9030 } /* inffixed.h:87:23 */ 9031 9032 // Macros for inflateBack(): 9033 9034 // Load returned state from inflate_fast() 9035 9036 // Set state from registers for inflate_fast() 9037 9038 // Clear the input bit accumulator 9039 9040 // Assure that some input is available. If input is requested, but denied, 9041 // then return a Z_BUF_ERROR from inflateBack(). 9042 9043 // Get a byte of input into the bit accumulator, or return from inflateBack() 9044 // with an error if there is no input available. 9045 9046 // Assure that there are at least n bits in the bit accumulator. If there is 9047 // not enough available input to do that, then return from inflateBack() with 9048 // an error. 9049 9050 // Return the low n bits of the bit accumulator (n < 16) 9051 9052 // Remove n bits from the bit accumulator 9053 9054 // Remove zero to seven bits as needed to go to a byte boundary 9055 9056 // Assure that some output space is available, by writing out the window 9057 // if it's full. If the write fails, return from inflateBack() with a 9058 // Z_BUF_ERROR. 9059 9060 // 9061 // strm provides the memory allocation functions and window buffer on input, 9062 // and provides information on the unused input on return. For Z_DATA_ERROR 9063 // returns, strm will also provide an error message. 9064 // 9065 // in() and out() are the call-back input and output functions. When 9066 // inflateBack() needs more input, it calls in(). When inflateBack() has 9067 // filled the window with output, or when it completes with data in the 9068 // window, it calls out() to write out the data. The application must not 9069 // change the provided input until in() is called again or inflateBack() 9070 // returns. The application must not change the window/output buffer until 9071 // inflateBack() returns. 9072 // 9073 // in() and out() are called with a descriptor parameter provided in the 9074 // inflateBack() call. This parameter can be a structure that provides the 9075 // information required to do the read or write, as well as accumulated 9076 // information on the input and output such as totals and check values. 9077 // 9078 // in() should return zero on failure. out() should return non-zero on 9079 // failure. If either in() or out() fails, than inflateBack() returns a 9080 // Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it 9081 // was in() or out() that caused in the error. Otherwise, inflateBack() 9082 // returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format 9083 // error, or Z_MEM_ERROR if it could not allocate memory for the state. 9084 // inflateBack() can also return Z_STREAM_ERROR if the input parameters 9085 // are not correct, i.e. strm is Z_NULL or the state was not initialized. 9086 // 9087 func XinflateBack(tls *libc.TLS, strm Z_streamp, in In_func, in_desc uintptr, out Out_func, out_desc uintptr) int32 { /* infback.c:250:13: */ 9088 bp := tls.Alloc(8) 9089 defer tls.Free(8) 9090 9091 var state uintptr 9092 // var next uintptr at bp, 8 9093 // next input 9094 var put uintptr // next output 9095 var have uint32 9096 var left uint32 // available input and output 9097 var hold uint64 // bit buffer 9098 var bits uint32 // bits in bit buffer 9099 var copy uint32 // number of stored or match bytes to copy 9100 var from uintptr // where to copy match bytes from 9101 var here Code // current decoding table entry 9102 var last Code // parent table entry 9103 var len uint32 // length to copy for repeats, bits to drop 9104 var ret int32 9105 9106 // Check that the strm exists and that the state was initialized 9107 if !((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) { 9108 goto __1 9109 } 9110 return -2 9111 __1: 9112 ; 9113 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 9114 9115 // Reset the state 9116 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 9117 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 9118 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 9119 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 9120 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 9121 if *(*uintptr)(unsafe.Pointer(bp /* next */)) != uintptr(Z_NULL) { 9122 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9123 } else { 9124 have = uint32(0) 9125 } 9126 hold = uint64(0) 9127 bits = uint32(0) 9128 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 9129 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 9130 9131 // Inflate until end of block marked as last 9132 __2: 9133 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 9134 case TYPE: 9135 goto __6 9136 9137 case STORED: 9138 goto __7 9139 9140 case TABLE: 9141 goto __8 9142 9143 case LEN: 9144 goto __9 9145 9146 case DONE: 9147 goto __10 9148 9149 case BAD: 9150 goto __11 9151 9152 default: 9153 goto __12 9154 } 9155 goto __5 9156 __6: 9157 // determine and dispatch block type 9158 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 9159 goto __13 9160 } 9161 __14: 9162 hold >>= (bits & uint32(7)) 9163 bits = bits - (bits & uint32(7)) 9164 goto __15 9165 __15: 9166 if 0 != 0 { 9167 goto __14 9168 } 9169 goto __16 9170 __16: 9171 ; 9172 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 9173 goto __5 9174 __13: 9175 ; 9176 __17: 9177 __20: 9178 if !(bits < (uint32(3))) { 9179 goto __21 9180 } 9181 __22: 9182 __25: 9183 if !(have == uint32(0)) { 9184 goto __28 9185 } 9186 have = (*struct { 9187 f func(*libc.TLS, uintptr, uintptr) uint32 9188 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9189 if !(have == uint32(0)) { 9190 goto __29 9191 } 9192 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9193 ret = -5 9194 goto inf_leave 9195 __29: 9196 ; 9197 __28: 9198 ; 9199 goto __26 9200 __26: 9201 if 0 != 0 { 9202 goto __25 9203 } 9204 goto __27 9205 __27: 9206 ; 9207 have-- 9208 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9209 bits = bits + (uint32(8)) 9210 goto __23 9211 __23: 9212 if 0 != 0 { 9213 goto __22 9214 } 9215 goto __24 9216 __24: 9217 ; 9218 goto __20 9219 __21: 9220 ; 9221 goto __18 9222 __18: 9223 if 0 != 0 { 9224 goto __17 9225 } 9226 goto __19 9227 __19: 9228 ; 9229 (*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1)))) 9230 __30: 9231 hold >>= 1 9232 bits = bits - (uint32(1)) 9233 goto __31 9234 __31: 9235 if 0 != 0 { 9236 goto __30 9237 } 9238 goto __32 9239 __32: 9240 ; 9241 switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) { 9242 case uint32(0): 9243 goto __34 9244 case uint32(1): 9245 goto __35 9246 case uint32(2): 9247 goto __36 9248 case uint32(3): 9249 goto __37 9250 } 9251 goto __33 9252 __34: // stored block 9253 ; 9254 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 9255 goto __33 9256 __35: // fixed block 9257 fixedtables(tls, state) 9258 9259 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN // decode codes 9260 goto __33 9261 __36: // dynamic block 9262 ; 9263 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 9264 goto __33 9265 __37: 9266 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 9267 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9268 __33: 9269 ; 9270 __38: 9271 hold >>= 2 9272 bits = bits - (uint32(2)) 9273 goto __39 9274 __39: 9275 if 0 != 0 { 9276 goto __38 9277 } 9278 goto __40 9279 __40: 9280 ; 9281 goto __5 9282 9283 __7: 9284 // get and verify stored block length 9285 __41: 9286 hold >>= (bits & uint32(7)) 9287 bits = bits - (bits & uint32(7)) 9288 goto __42 9289 __42: 9290 if 0 != 0 { 9291 goto __41 9292 } 9293 goto __43 9294 __43: 9295 ; // go to byte boundary 9296 __44: 9297 __47: 9298 if !(bits < (uint32(32))) { 9299 goto __48 9300 } 9301 __49: 9302 __52: 9303 if !(have == uint32(0)) { 9304 goto __55 9305 } 9306 have = (*struct { 9307 f func(*libc.TLS, uintptr, uintptr) uint32 9308 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9309 if !(have == uint32(0)) { 9310 goto __56 9311 } 9312 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9313 ret = -5 9314 goto inf_leave 9315 __56: 9316 ; 9317 __55: 9318 ; 9319 goto __53 9320 __53: 9321 if 0 != 0 { 9322 goto __52 9323 } 9324 goto __54 9325 __54: 9326 ; 9327 have-- 9328 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9329 bits = bits + (uint32(8)) 9330 goto __50 9331 __50: 9332 if 0 != 0 { 9333 goto __49 9334 } 9335 goto __51 9336 __51: 9337 ; 9338 goto __47 9339 __48: 9340 ; 9341 goto __45 9342 __45: 9343 if 0 != 0 { 9344 goto __44 9345 } 9346 goto __46 9347 __46: 9348 ; 9349 if !((hold & uint64(0xffff)) != ((hold >> 16) ^ uint64(0xffff))) { 9350 goto __57 9351 } 9352 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 9353 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9354 goto __5 9355 __57: 9356 ; 9357 (*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff)) 9358 9359 __58: 9360 hold = uint64(0) 9361 bits = uint32(0) 9362 goto __59 9363 __59: 9364 if 0 != 0 { 9365 goto __58 9366 } 9367 goto __60 9368 __60: 9369 ; 9370 9371 // copy stored block from input to output 9372 __61: 9373 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0)) { 9374 goto __62 9375 } 9376 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 9377 __63: 9378 if !(have == uint32(0)) { 9379 goto __66 9380 } 9381 have = (*struct { 9382 f func(*libc.TLS, uintptr, uintptr) uint32 9383 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9384 if !(have == uint32(0)) { 9385 goto __67 9386 } 9387 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9388 ret = -5 9389 goto inf_leave 9390 __67: 9391 ; 9392 __66: 9393 ; 9394 goto __64 9395 __64: 9396 if 0 != 0 { 9397 goto __63 9398 } 9399 goto __65 9400 __65: 9401 ; 9402 __68: 9403 if !(left == uint32(0)) { 9404 goto __71 9405 } 9406 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 9407 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 9408 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 9409 if !((*struct { 9410 f func(*libc.TLS, uintptr, uintptr, uint32) int32 9411 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 9412 goto __72 9413 } 9414 ret = -5 9415 goto inf_leave 9416 __72: 9417 ; 9418 __71: 9419 ; 9420 goto __69 9421 __69: 9422 if 0 != 0 { 9423 goto __68 9424 } 9425 goto __70 9426 __70: 9427 ; 9428 if !(copy > have) { 9429 goto __73 9430 } 9431 copy = have 9432 __73: 9433 ; 9434 if !(copy > left) { 9435 goto __74 9436 } 9437 copy = left 9438 __74: 9439 ; 9440 libc.Xmemcpy(tls, put, *(*uintptr)(unsafe.Pointer(bp /* next */)), uint64(copy)) 9441 have = have - (copy) 9442 *(*uintptr)(unsafe.Pointer(bp /* next */)) += uintptr(copy) 9443 left = left - (copy) 9444 put += uintptr(copy) 9445 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy) 9446 goto __61 9447 __62: 9448 ; 9449 9450 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 9451 goto __5 9452 9453 __8: 9454 // get dynamic table entries descriptor 9455 __75: 9456 __78: 9457 if !(bits < (uint32(14))) { 9458 goto __79 9459 } 9460 __80: 9461 __83: 9462 if !(have == uint32(0)) { 9463 goto __86 9464 } 9465 have = (*struct { 9466 f func(*libc.TLS, uintptr, uintptr) uint32 9467 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9468 if !(have == uint32(0)) { 9469 goto __87 9470 } 9471 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9472 ret = -5 9473 goto inf_leave 9474 __87: 9475 ; 9476 __86: 9477 ; 9478 goto __84 9479 __84: 9480 if 0 != 0 { 9481 goto __83 9482 } 9483 goto __85 9484 __85: 9485 ; 9486 have-- 9487 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9488 bits = bits + (uint32(8)) 9489 goto __81 9490 __81: 9491 if 0 != 0 { 9492 goto __80 9493 } 9494 goto __82 9495 __82: 9496 ; 9497 goto __78 9498 __79: 9499 ; 9500 goto __76 9501 __76: 9502 if 0 != 0 { 9503 goto __75 9504 } 9505 goto __77 9506 __77: 9507 ; 9508 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257)) 9509 __88: 9510 hold >>= 5 9511 bits = bits - (uint32(5)) 9512 goto __89 9513 __89: 9514 if 0 != 0 { 9515 goto __88 9516 } 9517 goto __90 9518 __90: 9519 ; 9520 (*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1)) 9521 __91: 9522 hold >>= 5 9523 bits = bits - (uint32(5)) 9524 goto __92 9525 __92: 9526 if 0 != 0 { 9527 goto __91 9528 } 9529 goto __93 9530 __93: 9531 ; 9532 (*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4)) 9533 __94: 9534 hold >>= 4 9535 bits = bits - (uint32(4)) 9536 goto __95 9537 __95: 9538 if 0 != 0 { 9539 goto __94 9540 } 9541 goto __96 9542 __96: 9543 ; 9544 if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) { 9545 goto __97 9546 } 9547 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 9548 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9549 goto __5 9550 __97: 9551 ; 9552 9553 // get code length code lengths (not a typo) 9554 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 9555 __98: 9556 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 9557 goto __99 9558 } 9559 __100: 9560 __103: 9561 if !(bits < (uint32(3))) { 9562 goto __104 9563 } 9564 __105: 9565 __108: 9566 if !(have == uint32(0)) { 9567 goto __111 9568 } 9569 have = (*struct { 9570 f func(*libc.TLS, uintptr, uintptr) uint32 9571 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9572 if !(have == uint32(0)) { 9573 goto __112 9574 } 9575 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9576 ret = -5 9577 goto inf_leave 9578 __112: 9579 ; 9580 __111: 9581 ; 9582 goto __109 9583 __109: 9584 if 0 != 0 { 9585 goto __108 9586 } 9587 goto __110 9588 __110: 9589 ; 9590 have-- 9591 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9592 bits = bits + (uint32(8)) 9593 goto __106 9594 __106: 9595 if 0 != 0 { 9596 goto __105 9597 } 9598 goto __107 9599 __107: 9600 ; 9601 goto __103 9602 __104: 9603 ; 9604 goto __101 9605 __101: 9606 if 0 != 0 { 9607 goto __100 9608 } 9609 goto __102 9610 __102: 9611 ; 9612 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 9613 __113: 9614 hold >>= 3 9615 bits = bits - (uint32(3)) 9616 goto __114 9617 __114: 9618 if 0 != 0 { 9619 goto __113 9620 } 9621 goto __115 9622 __115: 9623 ; 9624 goto __98 9625 __99: 9626 ; 9627 __116: 9628 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 9629 goto __117 9630 } 9631 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 9632 goto __116 9633 __117: 9634 ; 9635 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 9636 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 9637 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 9638 ret = Xinflate_table(tls, CODES, state+152 /* &.lens */, uint32(19), (state + 144 /* &.next */), 9639 (state + 120 /* &.lenbits */), state+792 /* &.work */) 9640 if !(ret != 0) { 9641 goto __118 9642 } 9643 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 9644 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9645 goto __5 9646 __118: 9647 ; 9648 9649 // get length and distance code code lengths 9650 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 9651 __119: 9652 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 9653 goto __120 9654 } 9655 __121: 9656 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 9657 if !((uint32(here.Fbits)) <= bits) { 9658 goto __124 9659 } 9660 goto __123 9661 __124: 9662 ; 9663 __125: 9664 __128: 9665 if !(have == uint32(0)) { 9666 goto __131 9667 } 9668 have = (*struct { 9669 f func(*libc.TLS, uintptr, uintptr) uint32 9670 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9671 if !(have == uint32(0)) { 9672 goto __132 9673 } 9674 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9675 ret = -5 9676 goto inf_leave 9677 __132: 9678 ; 9679 __131: 9680 ; 9681 goto __129 9682 __129: 9683 if 0 != 0 { 9684 goto __128 9685 } 9686 goto __130 9687 __130: 9688 ; 9689 have-- 9690 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9691 bits = bits + (uint32(8)) 9692 goto __126 9693 __126: 9694 if 0 != 0 { 9695 goto __125 9696 } 9697 goto __127 9698 __127: 9699 ; 9700 goto __122 9701 __122: 9702 goto __121 9703 goto __123 9704 __123: 9705 ; 9706 if !(int32(here.Fval) < 16) { 9707 goto __133 9708 } 9709 __135: 9710 hold >>= int32(here.Fbits) 9711 bits = bits - (uint32(here.Fbits)) 9712 goto __136 9713 __136: 9714 if 0 != 0 { 9715 goto __135 9716 } 9717 goto __137 9718 __137: 9719 ; 9720 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 9721 goto __134 9722 __133: 9723 if !(int32(here.Fval) == 16) { 9724 goto __138 9725 } 9726 __140: 9727 __143: 9728 if !(bits < (uint32(int32(here.Fbits) + 2))) { 9729 goto __144 9730 } 9731 __145: 9732 __148: 9733 if !(have == uint32(0)) { 9734 goto __151 9735 } 9736 have = (*struct { 9737 f func(*libc.TLS, uintptr, uintptr) uint32 9738 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9739 if !(have == uint32(0)) { 9740 goto __152 9741 } 9742 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9743 ret = -5 9744 goto inf_leave 9745 __152: 9746 ; 9747 __151: 9748 ; 9749 goto __149 9750 __149: 9751 if 0 != 0 { 9752 goto __148 9753 } 9754 goto __150 9755 __150: 9756 ; 9757 have-- 9758 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9759 bits = bits + (uint32(8)) 9760 goto __146 9761 __146: 9762 if 0 != 0 { 9763 goto __145 9764 } 9765 goto __147 9766 __147: 9767 ; 9768 goto __143 9769 __144: 9770 ; 9771 goto __141 9772 __141: 9773 if 0 != 0 { 9774 goto __140 9775 } 9776 goto __142 9777 __142: 9778 ; 9779 __153: 9780 hold >>= int32(here.Fbits) 9781 bits = bits - (uint32(here.Fbits)) 9782 goto __154 9783 __154: 9784 if 0 != 0 { 9785 goto __153 9786 } 9787 goto __155 9788 __155: 9789 ; 9790 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 9791 goto __156 9792 } 9793 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 9794 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9795 goto __120 9796 __156: 9797 ; 9798 len = uint32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2))) 9799 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1)))) 9800 __157: 9801 hold >>= 2 9802 bits = bits - (uint32(2)) 9803 goto __158 9804 __158: 9805 if 0 != 0 { 9806 goto __157 9807 } 9808 goto __159 9809 __159: 9810 ; 9811 goto __139 9812 __138: 9813 if !(int32(here.Fval) == 17) { 9814 goto __160 9815 } 9816 __162: 9817 __165: 9818 if !(bits < (uint32(int32(here.Fbits) + 3))) { 9819 goto __166 9820 } 9821 __167: 9822 __170: 9823 if !(have == uint32(0)) { 9824 goto __173 9825 } 9826 have = (*struct { 9827 f func(*libc.TLS, uintptr, uintptr) uint32 9828 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9829 if !(have == uint32(0)) { 9830 goto __174 9831 } 9832 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9833 ret = -5 9834 goto inf_leave 9835 __174: 9836 ; 9837 __173: 9838 ; 9839 goto __171 9840 __171: 9841 if 0 != 0 { 9842 goto __170 9843 } 9844 goto __172 9845 __172: 9846 ; 9847 have-- 9848 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9849 bits = bits + (uint32(8)) 9850 goto __168 9851 __168: 9852 if 0 != 0 { 9853 goto __167 9854 } 9855 goto __169 9856 __169: 9857 ; 9858 goto __165 9859 __166: 9860 ; 9861 goto __163 9862 __163: 9863 if 0 != 0 { 9864 goto __162 9865 } 9866 goto __164 9867 __164: 9868 ; 9869 __175: 9870 hold >>= int32(here.Fbits) 9871 bits = bits - (uint32(here.Fbits)) 9872 goto __176 9873 __176: 9874 if 0 != 0 { 9875 goto __175 9876 } 9877 goto __177 9878 __177: 9879 ; 9880 len = uint32(0) 9881 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 9882 __178: 9883 hold >>= 3 9884 bits = bits - (uint32(3)) 9885 goto __179 9886 __179: 9887 if 0 != 0 { 9888 goto __178 9889 } 9890 goto __180 9891 __180: 9892 ; 9893 goto __161 9894 __160: 9895 __181: 9896 __184: 9897 if !(bits < (uint32(int32(here.Fbits) + 7))) { 9898 goto __185 9899 } 9900 __186: 9901 __189: 9902 if !(have == uint32(0)) { 9903 goto __192 9904 } 9905 have = (*struct { 9906 f func(*libc.TLS, uintptr, uintptr) uint32 9907 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 9908 if !(have == uint32(0)) { 9909 goto __193 9910 } 9911 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 9912 ret = -5 9913 goto inf_leave 9914 __193: 9915 ; 9916 __192: 9917 ; 9918 goto __190 9919 __190: 9920 if 0 != 0 { 9921 goto __189 9922 } 9923 goto __191 9924 __191: 9925 ; 9926 have-- 9927 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 9928 bits = bits + (uint32(8)) 9929 goto __187 9930 __187: 9931 if 0 != 0 { 9932 goto __186 9933 } 9934 goto __188 9935 __188: 9936 ; 9937 goto __184 9938 __185: 9939 ; 9940 goto __182 9941 __182: 9942 if 0 != 0 { 9943 goto __181 9944 } 9945 goto __183 9946 __183: 9947 ; 9948 __194: 9949 hold >>= int32(here.Fbits) 9950 bits = bits - (uint32(here.Fbits)) 9951 goto __195 9952 __195: 9953 if 0 != 0 { 9954 goto __194 9955 } 9956 goto __196 9957 __196: 9958 ; 9959 len = uint32(0) 9960 copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1)))) 9961 __197: 9962 hold >>= 7 9963 bits = bits - (uint32(7)) 9964 goto __198 9965 __198: 9966 if 0 != 0 { 9967 goto __197 9968 } 9969 goto __199 9970 __199: 9971 ; 9972 __161: 9973 ; 9974 __139: 9975 ; 9976 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 9977 goto __200 9978 } 9979 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 9980 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 9981 goto __120 9982 __200: 9983 ; 9984 __201: 9985 if !(libc.PostDecUint32(©, 1) != 0) { 9986 goto __202 9987 } 9988 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 9989 goto __201 9990 __202: 9991 ; 9992 __134: 9993 ; 9994 goto __119 9995 __120: 9996 ; 9997 9998 // handle error breaks in while 9999 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 10000 goto __203 10001 } 10002 goto __5 10003 __203: 10004 ; 10005 10006 // check for end-of-block code (better have one) 10007 if !(int32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + 256*2))) == 0) { 10008 goto __204 10009 } 10010 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 10011 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10012 goto __5 10013 __204: 10014 ; 10015 10016 // build code tables -- note: do not change the lenbits or distbits 10017 // values here (9 and 6) without reading the comments in inftrees.h 10018 // concerning the ENOUGH constants, which depend on those values 10019 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 10020 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 10021 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 10022 ret = Xinflate_table(tls, LENS, state+152 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 144 /* &.next */), 10023 (state + 120 /* &.lenbits */), state+792 /* &.work */) 10024 if !(ret != 0) { 10025 goto __205 10026 } 10027 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 10028 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10029 goto __5 10030 __205: 10031 ; 10032 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 10033 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 10034 ret = Xinflate_table(tls, DISTS, ((state + 152 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist, 10035 (state + 144 /* &.next */), (state + 124 /* &.distbits */), state+792 /* &.work */) 10036 if !(ret != 0) { 10037 goto __206 10038 } 10039 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 10040 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10041 goto __5 10042 __206: 10043 ; 10044 10045 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 10046 10047 __9: 10048 // use inflate_fast() if we have enough input and output 10049 if !((have >= uint32(6)) && (left >= uint32(258))) { 10050 goto __207 10051 } 10052 __208: 10053 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 10054 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 10055 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 10056 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 10057 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 10058 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 10059 goto __209 10060 __209: 10061 if 0 != 0 { 10062 goto __208 10063 } 10064 goto __210 10065 __210: 10066 ; 10067 if !((*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 10068 goto __211 10069 } 10070 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - left) 10071 __211: 10072 ; 10073 Xinflate_fast(tls, strm, (*Inflate_state)(unsafe.Pointer(state)).Fwsize) 10074 __212: 10075 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 10076 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 10077 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 10078 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 10079 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 10080 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 10081 goto __213 10082 __213: 10083 if 0 != 0 { 10084 goto __212 10085 } 10086 goto __214 10087 __214: 10088 ; 10089 goto __5 10090 __207: 10091 ; 10092 10093 // get a literal, length, or end-of-block code 10094 __215: 10095 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 10096 if !((uint32(here.Fbits)) <= bits) { 10097 goto __218 10098 } 10099 goto __217 10100 __218: 10101 ; 10102 __219: 10103 __222: 10104 if !(have == uint32(0)) { 10105 goto __225 10106 } 10107 have = (*struct { 10108 f func(*libc.TLS, uintptr, uintptr) uint32 10109 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10110 if !(have == uint32(0)) { 10111 goto __226 10112 } 10113 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10114 ret = -5 10115 goto inf_leave 10116 __226: 10117 ; 10118 __225: 10119 ; 10120 goto __223 10121 __223: 10122 if 0 != 0 { 10123 goto __222 10124 } 10125 goto __224 10126 __224: 10127 ; 10128 have-- 10129 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10130 bits = bits + (uint32(8)) 10131 goto __220 10132 __220: 10133 if 0 != 0 { 10134 goto __219 10135 } 10136 goto __221 10137 __221: 10138 ; 10139 goto __216 10140 __216: 10141 goto __215 10142 goto __217 10143 __217: 10144 ; 10145 if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) { 10146 goto __227 10147 } 10148 last = here 10149 __228: 10150 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4)) 10151 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 10152 goto __231 10153 } 10154 goto __230 10155 __231: 10156 ; 10157 __232: 10158 __235: 10159 if !(have == uint32(0)) { 10160 goto __238 10161 } 10162 have = (*struct { 10163 f func(*libc.TLS, uintptr, uintptr) uint32 10164 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10165 if !(have == uint32(0)) { 10166 goto __239 10167 } 10168 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10169 ret = -5 10170 goto inf_leave 10171 __239: 10172 ; 10173 __238: 10174 ; 10175 goto __236 10176 __236: 10177 if 0 != 0 { 10178 goto __235 10179 } 10180 goto __237 10181 __237: 10182 ; 10183 have-- 10184 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10185 bits = bits + (uint32(8)) 10186 goto __233 10187 __233: 10188 if 0 != 0 { 10189 goto __232 10190 } 10191 goto __234 10192 __234: 10193 ; 10194 goto __229 10195 __229: 10196 goto __228 10197 goto __230 10198 __230: 10199 ; 10200 __240: 10201 hold >>= int32(last.Fbits) 10202 bits = bits - (uint32(last.Fbits)) 10203 goto __241 10204 __241: 10205 if 0 != 0 { 10206 goto __240 10207 } 10208 goto __242 10209 __242: 10210 ; 10211 __227: 10212 ; 10213 __243: 10214 hold >>= int32(here.Fbits) 10215 bits = bits - (uint32(here.Fbits)) 10216 goto __244 10217 __244: 10218 if 0 != 0 { 10219 goto __243 10220 } 10221 goto __245 10222 __245: 10223 ; 10224 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 10225 10226 // process literal 10227 if !(int32(here.Fop) == 0) { 10228 goto __246 10229 } 10230 10231 __247: 10232 if !(left == uint32(0)) { 10233 goto __250 10234 } 10235 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10236 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10237 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 10238 if !((*struct { 10239 f func(*libc.TLS, uintptr, uintptr, uint32) int32 10240 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 10241 goto __251 10242 } 10243 ret = -5 10244 goto inf_leave 10245 __251: 10246 ; 10247 __250: 10248 ; 10249 goto __248 10250 __248: 10251 if 0 != 0 { 10252 goto __247 10253 } 10254 goto __249 10255 __249: 10256 ; 10257 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 10258 left-- 10259 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 10260 goto __5 10261 __246: 10262 ; 10263 10264 // process end of block 10265 if !((int32(here.Fop) & 32) != 0) { 10266 goto __252 10267 } 10268 10269 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 10270 goto __5 10271 __252: 10272 ; 10273 10274 // invalid code 10275 if !((int32(here.Fop) & 64) != 0) { 10276 goto __253 10277 } 10278 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 10279 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10280 goto __5 10281 __253: 10282 ; 10283 10284 // length code -- get extra bits, if any 10285 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 10286 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 10287 goto __254 10288 } 10289 __255: 10290 __258: 10291 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 10292 goto __259 10293 } 10294 __260: 10295 __263: 10296 if !(have == uint32(0)) { 10297 goto __266 10298 } 10299 have = (*struct { 10300 f func(*libc.TLS, uintptr, uintptr) uint32 10301 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10302 if !(have == uint32(0)) { 10303 goto __267 10304 } 10305 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10306 ret = -5 10307 goto inf_leave 10308 __267: 10309 ; 10310 __266: 10311 ; 10312 goto __264 10313 __264: 10314 if 0 != 0 { 10315 goto __263 10316 } 10317 goto __265 10318 __265: 10319 ; 10320 have-- 10321 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10322 bits = bits + (uint32(8)) 10323 goto __261 10324 __261: 10325 if 0 != 0 { 10326 goto __260 10327 } 10328 goto __262 10329 __262: 10330 ; 10331 goto __258 10332 __259: 10333 ; 10334 goto __256 10335 __256: 10336 if 0 != 0 { 10337 goto __255 10338 } 10339 goto __257 10340 __257: 10341 ; 10342 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 10343 __268: 10344 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 10345 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 10346 goto __269 10347 __269: 10348 if 0 != 0 { 10349 goto __268 10350 } 10351 goto __270 10352 __270: 10353 ; 10354 __254: 10355 ; 10356 10357 // get distance code 10358 __271: 10359 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4)) 10360 if !((uint32(here.Fbits)) <= bits) { 10361 goto __274 10362 } 10363 goto __273 10364 __274: 10365 ; 10366 __275: 10367 __278: 10368 if !(have == uint32(0)) { 10369 goto __281 10370 } 10371 have = (*struct { 10372 f func(*libc.TLS, uintptr, uintptr) uint32 10373 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10374 if !(have == uint32(0)) { 10375 goto __282 10376 } 10377 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10378 ret = -5 10379 goto inf_leave 10380 __282: 10381 ; 10382 __281: 10383 ; 10384 goto __279 10385 __279: 10386 if 0 != 0 { 10387 goto __278 10388 } 10389 goto __280 10390 __280: 10391 ; 10392 have-- 10393 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10394 bits = bits + (uint32(8)) 10395 goto __276 10396 __276: 10397 if 0 != 0 { 10398 goto __275 10399 } 10400 goto __277 10401 __277: 10402 ; 10403 goto __272 10404 __272: 10405 goto __271 10406 goto __273 10407 __273: 10408 ; 10409 if !((int32(here.Fop) & 0xf0) == 0) { 10410 goto __283 10411 } 10412 last = here 10413 __284: 10414 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4)) 10415 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 10416 goto __287 10417 } 10418 goto __286 10419 __287: 10420 ; 10421 __288: 10422 __291: 10423 if !(have == uint32(0)) { 10424 goto __294 10425 } 10426 have = (*struct { 10427 f func(*libc.TLS, uintptr, uintptr) uint32 10428 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10429 if !(have == uint32(0)) { 10430 goto __295 10431 } 10432 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10433 ret = -5 10434 goto inf_leave 10435 __295: 10436 ; 10437 __294: 10438 ; 10439 goto __292 10440 __292: 10441 if 0 != 0 { 10442 goto __291 10443 } 10444 goto __293 10445 __293: 10446 ; 10447 have-- 10448 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10449 bits = bits + (uint32(8)) 10450 goto __289 10451 __289: 10452 if 0 != 0 { 10453 goto __288 10454 } 10455 goto __290 10456 __290: 10457 ; 10458 goto __285 10459 __285: 10460 goto __284 10461 goto __286 10462 __286: 10463 ; 10464 __296: 10465 hold >>= int32(last.Fbits) 10466 bits = bits - (uint32(last.Fbits)) 10467 goto __297 10468 __297: 10469 if 0 != 0 { 10470 goto __296 10471 } 10472 goto __298 10473 __298: 10474 ; 10475 __283: 10476 ; 10477 __299: 10478 hold >>= int32(here.Fbits) 10479 bits = bits - (uint32(here.Fbits)) 10480 goto __300 10481 __300: 10482 if 0 != 0 { 10483 goto __299 10484 } 10485 goto __301 10486 __301: 10487 ; 10488 if !((int32(here.Fop) & 64) != 0) { 10489 goto __302 10490 } 10491 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 10492 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10493 goto __5 10494 __302: 10495 ; 10496 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 10497 10498 // get distance extra bits, if any 10499 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 10500 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 10501 goto __303 10502 } 10503 __304: 10504 __307: 10505 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 10506 goto __308 10507 } 10508 __309: 10509 __312: 10510 if !(have == uint32(0)) { 10511 goto __315 10512 } 10513 have = (*struct { 10514 f func(*libc.TLS, uintptr, uintptr) uint32 10515 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10516 if !(have == uint32(0)) { 10517 goto __316 10518 } 10519 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10520 ret = -5 10521 goto inf_leave 10522 __316: 10523 ; 10524 __315: 10525 ; 10526 goto __313 10527 __313: 10528 if 0 != 0 { 10529 goto __312 10530 } 10531 goto __314 10532 __314: 10533 ; 10534 have-- 10535 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10536 bits = bits + (uint32(8)) 10537 goto __310 10538 __310: 10539 if 0 != 0 { 10540 goto __309 10541 } 10542 goto __311 10543 __311: 10544 ; 10545 goto __307 10546 __308: 10547 ; 10548 goto __305 10549 __305: 10550 if 0 != 0 { 10551 goto __304 10552 } 10553 goto __306 10554 __306: 10555 ; 10556 *(*uint32)(unsafe.Pointer(state + 96 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 10557 __317: 10558 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 10559 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 10560 goto __318 10561 __318: 10562 if 0 != 0 { 10563 goto __317 10564 } 10565 goto __319 10566 __319: 10567 ; 10568 __303: 10569 ; 10570 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (func() uint32 { 10571 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 10572 return left 10573 } 10574 return uint32(0) 10575 }()))) { 10576 goto __320 10577 } 10578 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 10579 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10580 goto __5 10581 __320: 10582 ; 10583 10584 // copy match from window to output 10585 __321: 10586 __324: 10587 if !(left == uint32(0)) { 10588 goto __327 10589 } 10590 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10591 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10592 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 10593 if !((*struct { 10594 f func(*libc.TLS, uintptr, uintptr, uint32) int32 10595 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 10596 goto __328 10597 } 10598 ret = -5 10599 goto inf_leave 10600 __328: 10601 ; 10602 __327: 10603 ; 10604 goto __325 10605 __325: 10606 if 0 != 0 { 10607 goto __324 10608 } 10609 goto __326 10610 __326: 10611 ; 10612 copy = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Foffset) 10613 if !(copy < left) { 10614 goto __329 10615 } 10616 from = (put + uintptr(copy)) 10617 copy = (left - copy) 10618 goto __330 10619 __329: 10620 from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset)) 10621 copy = left 10622 __330: 10623 ; 10624 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 10625 goto __331 10626 } 10627 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 10628 __331: 10629 ; 10630 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy) 10631 left = left - (copy) 10632 __332: 10633 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10634 goto __333 10635 __333: 10636 if libc.PreDecUint32(©, 1) != 0 { 10637 goto __332 10638 } 10639 goto __334 10640 __334: 10641 ; 10642 goto __322 10643 __322: 10644 if (*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0) { 10645 goto __321 10646 } 10647 goto __323 10648 __323: 10649 ; 10650 goto __5 10651 10652 __10: 10653 // inflate stream terminated properly -- write leftover output 10654 ret = Z_STREAM_END 10655 if !(left < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 10656 goto __335 10657 } 10658 if !((*struct { 10659 f func(*libc.TLS, uintptr, uintptr, uint32) int32 10660 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, ((*Inflate_state)(unsafe.Pointer(state)).Fwsize-left)) != 0) { 10661 goto __336 10662 } 10663 ret = -5 10664 __336: 10665 ; 10666 __335: 10667 ; 10668 goto inf_leave 10669 10670 __11: 10671 ret = -3 10672 goto inf_leave 10673 10674 __12: // can't happen, but makes compilers happy 10675 ret = -2 10676 goto inf_leave 10677 __5: 10678 ; 10679 goto __3 10680 __3: 10681 goto __2 10682 goto __4 10683 __4: 10684 ; 10685 10686 // Return unused input 10687 inf_leave: 10688 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 10689 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 10690 return ret 10691 } 10692 10693 var order = // permutation of code lengths 10694 [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* infback.c:269:33 */ 10695 10696 func XinflateBackEnd(tls *libc.TLS, strm Z_streamp) int32 { /* infback.c:631:13: */ 10697 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 10698 return -2 10699 } 10700 (*struct { 10701 f func(*libc.TLS, Voidpf, Voidpf) 10702 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 10703 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 10704 10705 return Z_OK 10706 } 10707 10708 // 10709 // Decode literal, length, and distance codes and write out the resulting 10710 // literal and match bytes until either not enough input or output is 10711 // available, an end-of-block is encountered, or a data error is encountered. 10712 // When large enough input and output buffers are supplied to inflate(), for 10713 // example, a 16K input buffer and a 64K output buffer, more than 95% of the 10714 // inflate execution time is spent in this routine. 10715 // 10716 // Entry assumptions: 10717 // 10718 // state->mode == LEN 10719 // strm->avail_in >= 6 10720 // strm->avail_out >= 258 10721 // start >= strm->avail_out 10722 // state->bits < 8 10723 // 10724 // On return, state->mode is one of: 10725 // 10726 // LEN -- ran out of enough output space or enough available input 10727 // TYPE -- reached end of block code, inflate() to interpret next block 10728 // BAD -- error in block data 10729 // 10730 // Notes: 10731 // 10732 // - The maximum input bits used by a length/distance pair is 15 bits for the 10733 // length code, 5 bits for the length extra, 15 bits for the distance code, 10734 // and 13 bits for the distance extra. This totals 48 bits, or six bytes. 10735 // Therefore if strm->avail_in >= 6, then there is enough input to avoid 10736 // checking for available input while decoding. 10737 // 10738 // - The maximum bytes that a single length/distance pair can output is 258 10739 // bytes, which is the maximum length that can be coded. inflate_fast() 10740 // requires strm->avail_out >= 258 for each loop to avoid checking for 10741 // output space. 10742 // 10743 func Xinflate_fast(tls *libc.TLS, strm Z_streamp, start uint32) { /* inffast.c:50:20: */ 10744 var state uintptr 10745 var in uintptr // local strm->next_in 10746 var last uintptr // have enough input while in < last 10747 var out uintptr // local strm->next_out 10748 var beg uintptr // inflate()'s initial strm->next_out 10749 var end uintptr // while out < end, enough space available 10750 var wsize uint32 // window size or zero if not using window 10751 var whave uint32 // valid bytes in the window 10752 var wnext uint32 // window write index 10753 var window uintptr // allocated sliding window, if wsize != 0 10754 var hold uint64 // local strm->hold 10755 var bits uint32 // local strm->bits 10756 var lcode uintptr // local strm->lencode 10757 var dcode uintptr // local strm->distcode 10758 var lmask uint32 // mask for first level of length codes 10759 var dmask uint32 // mask for first level of distance codes 10760 var here Code // retrieved table entry 10761 var op uint32 // code bits, operation, extra bits, or 10762 // window position, window bytes to copy 10763 var len uint32 // match length, unused bytes 10764 var dist uint32 // match distance 10765 var from uintptr // where to copy match from 10766 10767 // copy state to local variables 10768 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 10769 in = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 10770 last = (in + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_in - UInt(5)))) 10771 out = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 10772 beg = (out - uintptr((start - (*Z_stream)(unsafe.Pointer(strm)).Favail_out))) 10773 end = (out + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_out - UInt(257)))) 10774 wsize = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10775 whave = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 10776 wnext = (*Inflate_state)(unsafe.Pointer(state)).Fwnext 10777 window = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10778 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 10779 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 10780 lcode = (*Inflate_state)(unsafe.Pointer(state)).Flencode 10781 dcode = (*Inflate_state)(unsafe.Pointer(state)).Fdistcode 10782 lmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Flenbits) - uint32(1)) 10783 dmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fdistbits) - uint32(1)) 10784 10785 // decode literals and length/distances until end-of-block or not enough 10786 // input data or output space 10787 __1: 10788 if !(bits < uint32(15)) { 10789 goto __4 10790 } 10791 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10792 bits = bits + (uint32(8)) 10793 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10794 bits = bits + (uint32(8)) 10795 __4: 10796 ; 10797 here = *(*Code)(unsafe.Pointer(lcode + uintptr((hold&uint64(lmask)))*4)) 10798 dolen: 10799 op = uint32(here.Fbits) 10800 hold >>= op 10801 bits = bits - (op) 10802 op = uint32(here.Fop) 10803 if !(op == uint32(0)) { 10804 goto __5 10805 } // literal 10806 10807 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = uint8(here.Fval) 10808 goto __6 10809 __5: 10810 if !((op & uint32(16)) != 0) { 10811 goto __7 10812 } // length base 10813 len = uint32(here.Fval) 10814 op = op & (uint32(15)) // number of extra bits 10815 if !(op != 0) { 10816 goto __9 10817 } 10818 if !(bits < op) { 10819 goto __10 10820 } 10821 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10822 bits = bits + (uint32(8)) 10823 __10: 10824 ; 10825 len = len + (uint32(hold) & ((uint32(1) << op) - uint32(1))) 10826 hold >>= op 10827 bits = bits - (op) 10828 __9: 10829 ; 10830 10831 if !(bits < uint32(15)) { 10832 goto __11 10833 } 10834 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10835 bits = bits + (uint32(8)) 10836 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10837 bits = bits + (uint32(8)) 10838 __11: 10839 ; 10840 here = *(*Code)(unsafe.Pointer(dcode + uintptr((hold&uint64(dmask)))*4)) 10841 dodist: 10842 op = uint32(here.Fbits) 10843 hold >>= op 10844 bits = bits - (op) 10845 op = uint32(here.Fop) 10846 if !((op & uint32(16)) != 0) { 10847 goto __12 10848 } // distance base 10849 dist = uint32(here.Fval) 10850 op = op & (uint32(15)) // number of extra bits 10851 if !(bits < op) { 10852 goto __14 10853 } 10854 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10855 bits = bits + (uint32(8)) 10856 if !(bits < op) { 10857 goto __15 10858 } 10859 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 10860 bits = bits + (uint32(8)) 10861 __15: 10862 ; 10863 __14: 10864 ; 10865 dist = dist + (uint32(hold) & ((uint32(1) << op) - uint32(1))) 10866 hold >>= op 10867 bits = bits - (op) 10868 10869 op = (uint32((int64(out) - int64(beg)) / 1)) // max distance in output 10870 if !(dist > op) { 10871 goto __16 10872 } // see if copy from window 10873 op = (dist - op) // distance back in window 10874 if !(op > whave) { 10875 goto __18 10876 } 10877 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 10878 goto __19 10879 } 10880 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 10881 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10882 goto __3 10883 __19: 10884 ; 10885 __18: 10886 ; 10887 from = window 10888 if !(wnext == uint32(0)) { 10889 goto __20 10890 } // very common case 10891 from += (uintptr(wsize - op)) 10892 if !(op < len) { 10893 goto __22 10894 } // some from window 10895 len = len - (op) 10896 __23: 10897 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10898 goto __24 10899 __24: 10900 if libc.PreDecUint32(&op, 1) != 0 { 10901 goto __23 10902 } 10903 goto __25 10904 __25: 10905 ; 10906 from = (out - uintptr(dist)) // rest from output 10907 __22: 10908 ; 10909 goto __21 10910 __20: 10911 if !(wnext < op) { 10912 goto __26 10913 } // wrap around window 10914 from += (uintptr((wsize + wnext) - op)) 10915 op = op - (wnext) 10916 if !(op < len) { 10917 goto __28 10918 } // some from end of window 10919 len = len - (op) 10920 __29: 10921 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10922 goto __30 10923 __30: 10924 if libc.PreDecUint32(&op, 1) != 0 { 10925 goto __29 10926 } 10927 goto __31 10928 __31: 10929 ; 10930 from = window 10931 if !(wnext < len) { 10932 goto __32 10933 } // some from start of window 10934 op = wnext 10935 len = len - (op) 10936 __33: 10937 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10938 goto __34 10939 __34: 10940 if libc.PreDecUint32(&op, 1) != 0 { 10941 goto __33 10942 } 10943 goto __35 10944 __35: 10945 ; 10946 from = (out - uintptr(dist)) // rest from output 10947 __32: 10948 ; 10949 __28: 10950 ; 10951 goto __27 10952 __26: // contiguous in window 10953 from += (uintptr(wnext - op)) 10954 if !(op < len) { 10955 goto __36 10956 } // some from window 10957 len = len - (op) 10958 __37: 10959 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10960 goto __38 10961 __38: 10962 if libc.PreDecUint32(&op, 1) != 0 { 10963 goto __37 10964 } 10965 goto __39 10966 __39: 10967 ; 10968 from = (out - uintptr(dist)) // rest from output 10969 __36: 10970 ; 10971 __27: 10972 ; 10973 __21: 10974 ; 10975 __40: 10976 if !(len > uint32(2)) { 10977 goto __41 10978 } 10979 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10980 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10981 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10982 len = len - (uint32(3)) 10983 goto __40 10984 __41: 10985 ; 10986 if !(len != 0) { 10987 goto __42 10988 } 10989 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10990 if !(len > uint32(1)) { 10991 goto __43 10992 } 10993 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 10994 __43: 10995 ; 10996 __42: 10997 ; 10998 goto __17 10999 __16: 11000 from = (out - uintptr(dist)) // copy direct from output 11001 __44: // minimum length is three 11002 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 11003 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 11004 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 11005 len = len - (uint32(3)) 11006 goto __45 11007 __45: 11008 if len > uint32(2) { 11009 goto __44 11010 } 11011 goto __46 11012 __46: 11013 ; 11014 if !(len != 0) { 11015 goto __47 11016 } 11017 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 11018 if !(len > uint32(1)) { 11019 goto __48 11020 } 11021 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 11022 __48: 11023 ; 11024 __47: 11025 ; 11026 __17: 11027 ; 11028 goto __13 11029 __12: 11030 if !((op & uint32(64)) == uint32(0)) { 11031 goto __49 11032 } // 2nd level distance code 11033 here = *(*Code)(unsafe.Pointer(dcode + uintptr((uint64(here.Fval)+(hold&(uint64((uint32(1)<<op)-uint32(1))))))*4)) 11034 goto dodist 11035 goto __50 11036 __49: 11037 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 11038 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11039 goto __3 11040 __50: 11041 ; 11042 __13: 11043 ; 11044 goto __8 11045 __7: 11046 if !((op & uint32(64)) == uint32(0)) { 11047 goto __51 11048 } // 2nd level length code 11049 here = *(*Code)(unsafe.Pointer(lcode + uintptr((uint64(here.Fval)+(hold&(uint64((uint32(1)<<op)-uint32(1))))))*4)) 11050 goto dolen 11051 goto __52 11052 __51: 11053 if !((op & uint32(32)) != 0) { 11054 goto __53 11055 } // end-of-block 11056 11057 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 11058 goto __3 11059 goto __54 11060 __53: 11061 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 11062 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11063 goto __3 11064 __54: 11065 ; 11066 __52: 11067 ; 11068 __8: 11069 ; 11070 __6: 11071 ; 11072 goto __2 11073 __2: 11074 if (in < last) && (out < end) { 11075 goto __1 11076 } 11077 goto __3 11078 __3: 11079 ; 11080 11081 // return unused bytes (on entry, bits < 8, so in won't go too far back) 11082 len = (bits >> 3) 11083 in -= uintptr(len) 11084 bits = bits - (len << 3) 11085 hold = hold & (uint64((uint32(1) << bits) - uint32(1))) 11086 11087 // update state and return 11088 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = in 11089 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = out 11090 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = func() uint32 { 11091 if in < last { 11092 return (uint32(int64(5) + ((int64(last) - int64(in)) / 1))) 11093 } 11094 return (uint32(int64(5) - ((int64(in) - int64(last)) / 1))) 11095 }() 11096 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = func() uint32 { 11097 if out < end { 11098 return (uint32(int64(257) + ((int64(end) - int64(out)) / 1))) 11099 } 11100 return (uint32(int64(257) - ((int64(out) - int64(end)) / 1))) 11101 }() 11102 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 11103 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 11104 return 11105 } 11106 11107 // 11108 // inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): 11109 // - Using bit fields for code structure 11110 // - Different op definition to avoid & for extra bits (do & for table bits) 11111 // - Three separate decoding do-loops for direct, window, and wnext == 0 11112 // - Special case for distance > 1 copies to do overlapped load and store copy 11113 // - Explicit branch predictions (based on measured branch probabilities) 11114 // - Deferring match copy and interspersed it with decoding subsequent codes 11115 // - Swapping literal/length else 11116 // - Swapping window/direct else 11117 // - Larger unrolled copy loops (three is about right) 11118 // - Moving len -= 3 statement into middle of loop 11119 // 11120 11121 func inflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:105:11: */ 11122 var state uintptr 11123 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 11124 return 1 11125 } 11126 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11127 if (((state == uintptr(Z_NULL)) || ((*Inflate_state)(unsafe.Pointer(state)).Fstrm != strm)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode < HEAD)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode > SYNC) { 11128 return 1 11129 } 11130 return 0 11131 } 11132 11133 func XinflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:119:13: */ 11134 var state uintptr 11135 11136 if inflateStateCheck(tls, strm) != 0 { 11137 return -2 11138 } 11139 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11140 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40 /* &.total_out */, libc.AssignPtrUint64(state+40 /* &.total */, uint64(0))) 11141 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 11142 if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 { // to support ill-conceived Java test suite 11143 (*Z_stream)(unsafe.Pointer(strm)).Fadler = (ULong((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1)) 11144 } 11145 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD 11146 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 11147 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 0 11148 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 11149 (*Inflate_state)(unsafe.Pointer(state)).Fhead = Gz_headerp(Z_NULL) 11150 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0) 11151 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 11152 (*Inflate_state)(unsafe.Pointer(state)).Flencode = libc.AssignPtrUintptr(state+112 /* &.distcode */, libc.AssignPtrUintptr(state+144 /* &.next */, state+1368 /* &.codes */)) 11153 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 11154 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 11155 11156 return Z_OK 11157 } 11158 11159 func XinflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:144:13: */ 11160 var state uintptr 11161 11162 if inflateStateCheck(tls, strm) != 0 { 11163 return -2 11164 } 11165 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11166 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(0) 11167 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 11168 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 11169 return XinflateResetKeep(tls, strm) 11170 } 11171 11172 func XinflateReset2(tls *libc.TLS, strm Z_streamp, windowBits int32) int32 { /* inflate.c:157:13: */ 11173 var wrap int32 11174 var state uintptr 11175 11176 // get the state 11177 if inflateStateCheck(tls, strm) != 0 { 11178 return -2 11179 } 11180 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11181 11182 // extract wrap request from windowBits parameter 11183 if windowBits < 0 { 11184 wrap = 0 11185 windowBits = -windowBits 11186 } else { 11187 wrap = ((windowBits >> 4) + 5) 11188 if windowBits < 48 { 11189 windowBits = windowBits & (15) 11190 } 11191 } 11192 11193 // set number of window bits, free window if different 11194 if (windowBits != 0) && ((windowBits < 8) || (windowBits > 15)) { 11195 return -2 11196 } 11197 if ((*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL)) && ((*Inflate_state)(unsafe.Pointer(state)).Fwbits != uint32(windowBits)) { 11198 (*struct { 11199 f func(*libc.TLS, Voidpf, Voidpf) 11200 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 11201 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 11202 } 11203 11204 // update state and reset the rest of it 11205 (*Inflate_state)(unsafe.Pointer(state)).Fwrap = wrap 11206 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(windowBits) 11207 return XinflateReset(tls, strm) 11208 } 11209 11210 func XinflateInit2_(tls *libc.TLS, strm Z_streamp, windowBits int32, version uintptr, stream_size int32) int32 { /* inflate.c:195:13: */ 11211 var ret int32 11212 var state uintptr 11213 11214 if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(*(*int8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) { 11215 return -6 11216 } 11217 if strm == uintptr(Z_NULL) { 11218 return -2 11219 } 11220 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 11221 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 11222 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 11223 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 11224 }{Xzcalloc})) 11225 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 11226 } 11227 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 11228 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 11229 f func(*libc.TLS, Voidpf, Voidpf) 11230 }{Xzcfree})) 11231 } 11232 state = (*struct { 11233 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 11234 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{}))) 11235 if state == uintptr(Z_NULL) { 11236 return -4 11237 } 11238 11239 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 11240 (*Inflate_state)(unsafe.Pointer(state)).Fstrm = strm 11241 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 11242 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD // to pass state test in inflateReset2() 11243 ret = XinflateReset2(tls, strm, windowBits) 11244 if ret != Z_OK { 11245 (*struct { 11246 f func(*libc.TLS, Voidpf, Voidpf) 11247 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, state) 11248 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 11249 } 11250 return ret 11251 } 11252 11253 func XinflateInit_(tls *libc.TLS, strm Z_streamp, version uintptr, stream_size int32) int32 { /* inflate.c:239:13: */ 11254 return XinflateInit2_(tls, strm, MAX_WBITS, version, stream_size) 11255 } 11256 11257 func XinflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* inflate.c:247:13: */ 11258 var state uintptr 11259 11260 if inflateStateCheck(tls, strm) != 0 { 11261 return -2 11262 } 11263 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11264 if bits < 0 { 11265 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0) 11266 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 11267 return Z_OK 11268 } 11269 if (bits > 16) || (((*Inflate_state)(unsafe.Pointer(state)).Fbits + UInt(bits)) > uint32(32)) { 11270 return -2 11271 } 11272 value = int32(int64(value) & ((int64(1) << bits) - int64(1))) 11273 *(*uint64)(unsafe.Pointer(state + 80 /* &.hold */)) += (uint64(uint32(value) << (*Inflate_state)(unsafe.Pointer(state)).Fbits)) 11274 *(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) += (UInt(bits)) 11275 return Z_OK 11276 } 11277 11278 // 11279 // Return state with length and distance decoding tables and index sizes set to 11280 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 11281 // If BUILDFIXED is defined, then instead this routine builds the tables the 11282 // first time it's called, and returns those tables the first time and 11283 // thereafter. This reduces the size of the code by about 2K bytes, in 11284 // exchange for a little execution time. However, BUILDFIXED should not be 11285 // used for threaded applications, since the rewriting of the tables and virgin 11286 // may not be thread-safe. 11287 // 11288 func fixedtables1(tls *libc.TLS, state uintptr) { /* inflate.c:278:12: */ 11289 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix1)) 11290 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 11291 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix1)) 11292 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 11293 } 11294 11295 var lenfix1 = [512]Code{ 11296 {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, 11297 {Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, 11298 {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, 11299 {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)}, 11300 {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, 11301 {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, 11302 {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, 11303 {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)}, 11304 {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, 11305 {Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, 11306 {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)}, 11307 {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)}, 11308 {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, 11309 {Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, 11310 {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, 11311 {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)}, 11312 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, 11313 {Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, 11314 {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, 11315 {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)}, 11316 {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, 11317 {Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, 11318 {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, 11319 {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)}, 11320 {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, 11321 {Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, 11322 {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)}, 11323 {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, 11324 {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, 11325 {Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, 11326 {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, 11327 {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)}, 11328 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, 11329 {Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, 11330 {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, 11331 {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)}, 11332 {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, 11333 {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, 11334 {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, 11335 {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)}, 11336 {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, 11337 {Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, 11338 {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)}, 11339 {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)}, 11340 {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, 11341 {Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, 11342 {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, 11343 {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)}, 11344 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, 11345 {Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, 11346 {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, 11347 {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)}, 11348 {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, 11349 {Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, 11350 {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)}, 11351 {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)}, 11352 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, 11353 {Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, 11354 {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)}, 11355 {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, 11356 {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, 11357 {Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, 11358 {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, 11359 {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)}, 11360 {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, 11361 {Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, 11362 {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, 11363 {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)}, 11364 {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, 11365 {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, 11366 {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, 11367 {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)}, 11368 {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, 11369 {Fbits: uint8(9), Fval: uint16(255)}, 11370 } /* inffixed.h:10:23 */ 11371 var distfix1 = [32]Code{ 11372 {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)}, 11373 {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)}, 11374 {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)}, 11375 {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)}, 11376 {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)}, 11377 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 11378 } /* inffixed.h:87:23 */ 11379 11380 // 11381 // Update the window with the last wsize (normally 32K) bytes written before 11382 // returning. If window does not exist yet, create it. This is only called 11383 // when a window is already in use, or when output has been written during this 11384 // inflate call, but the end of the deflate stream has not been reached yet. 11385 // It is also called to create a window for dictionary data when a dictionary 11386 // is loaded. 11387 // 11388 // Providing output buffers larger than 32K to inflate() should provide a speed 11389 // advantage, since only the last 32K of output is copied to the sliding window 11390 // upon return from inflate(), and since all distances after the first 32K of 11391 // output will fall in the output data, making match copies simpler and faster. 11392 // The advantage may be dependent on the size of the processor's data caches. 11393 // 11394 func updatewindow(tls *libc.TLS, strm Z_streamp, end uintptr, copy uint32) int32 { /* inflate.c:396:11: */ 11395 var state uintptr 11396 var dist uint32 11397 11398 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11399 11400 // if it hasn't been done already, allocate space for the window 11401 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 11402 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = (*struct { 11403 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 11404 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0)))) 11405 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 11406 return 1 11407 } 11408 } 11409 11410 // if window not in use yet, initialize 11411 if (*Inflate_state)(unsafe.Pointer(state)).Fwsize == uint32(0) { 11412 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits) 11413 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 11414 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 11415 } 11416 11417 // copy state->wsize or less output bytes into the circular window 11418 if copy >= (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 11419 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize)), uint64((*Inflate_state)(unsafe.Pointer(state)).Fwsize)) 11420 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 11421 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 11422 } else { 11423 dist = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Fwnext) 11424 if dist > copy { 11425 dist = copy 11426 } 11427 libc.Xmemcpy(tls, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), (end - uintptr(copy)), uint64(dist)) 11428 copy = copy - (dist) 11429 if copy != 0 { 11430 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr(copy)), uint64(copy)) 11431 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = copy 11432 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 11433 } else { 11434 *(*uint32)(unsafe.Pointer(state + 68 /* &.wnext */)) += (dist) 11435 if (*Inflate_state)(unsafe.Pointer(state)).Fwnext == (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 11436 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 11437 } 11438 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 11439 *(*uint32)(unsafe.Pointer(state + 64 /* &.whave */)) += (dist) 11440 } 11441 } 11442 } 11443 return 0 11444 } 11445 11446 // Macros for inflate(): 11447 11448 // check function to use adler32() for zlib or crc32() for gzip 11449 11450 // check macros for header crc 11451 11452 // Load registers with state in inflate() for speed 11453 11454 // Restore state from registers in inflate() 11455 11456 // Clear the input bit accumulator 11457 11458 // Get a byte of input into the bit accumulator, or return from inflate() 11459 // if there is no input available. 11460 11461 // Assure that there are at least n bits in the bit accumulator. If there is 11462 // not enough available input to do that, then return from inflate(). 11463 11464 // Return the low n bits of the bit accumulator (n < 16) 11465 11466 // Remove n bits from the bit accumulator 11467 11468 // Remove zero to seven bits as needed to go to a byte boundary 11469 11470 // 11471 // inflate() uses a state machine to process as much input data and generate as 11472 // much output data as possible before returning. The state machine is 11473 // structured roughly as follows: 11474 // 11475 // for (;;) switch (state) { 11476 // ... 11477 // case STATEn: 11478 // if (not enough input data or output space to make progress) 11479 // return; 11480 // ... make progress ... 11481 // state = STATEm; 11482 // break; 11483 // ... 11484 // } 11485 // 11486 // so when inflate() is called again, the same case is attempted again, and 11487 // if the appropriate resources are provided, the machine proceeds to the 11488 // next state. The NEEDBITS() macro is usually the way the state evaluates 11489 // whether it can proceed or should return. NEEDBITS() does the return if 11490 // the requested bits are not available. The typical use of the BITS macros 11491 // is: 11492 // 11493 // NEEDBITS(n); 11494 // ... do something with BITS(n) ... 11495 // DROPBITS(n); 11496 // 11497 // where NEEDBITS(n) either returns from inflate() if there isn't enough 11498 // input left to load n bits into the accumulator, or it continues. BITS(n) 11499 // gives the low n bits in the accumulator. When done, DROPBITS(n) drops 11500 // the low n bits off the accumulator. INITBITS() clears the accumulator 11501 // and sets the number of available bits to zero. BYTEBITS() discards just 11502 // enough bits to put the accumulator on a byte boundary. After BYTEBITS() 11503 // and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. 11504 // 11505 // NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return 11506 // if there is no input available. The decoding of variable length codes uses 11507 // PULLBYTE() directly in order to pull just enough bytes to decode the next 11508 // code, and no more. 11509 // 11510 // Some states loop until they get enough input, making sure that enough 11511 // state information is maintained to continue the loop where it left off 11512 // if NEEDBITS() returns in the loop. For example, want, need, and keep 11513 // would all have to actually be part of the saved state in case NEEDBITS() 11514 // returns: 11515 // 11516 // case STATEw: 11517 // while (want < need) { 11518 // NEEDBITS(n); 11519 // keep[want++] = BITS(n); 11520 // DROPBITS(n); 11521 // } 11522 // state = STATEx; 11523 // case STATEx: 11524 // 11525 // As shown above, if the next state is also the next case, then the break 11526 // is omitted. 11527 // 11528 // A state may also return if there is not enough output space available to 11529 // complete that state. Those states are copying stored data, writing a 11530 // literal byte, and copying a matching string. 11531 // 11532 // When returning, a "goto inf_leave" is used to update the total counters, 11533 // update the check value, and determine whether any progress has been made 11534 // during that inflate() call in order to return the proper return code. 11535 // Progress is defined as a change in either strm->avail_in or strm->avail_out. 11536 // When there is a window, goto inf_leave will update the window with the last 11537 // output written. If a goto inf_leave occurs in the middle of decompression 11538 // and there is no window currently, goto inf_leave will create one and copy 11539 // output to the window for the next call of inflate(). 11540 // 11541 // In this implementation, the flush parameter of inflate() only affects the 11542 // return code (per zlib.h). inflate() always writes as much as possible to 11543 // strm->next_out, given the space available and the provided input--the effect 11544 // documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers 11545 // the allocation of and copying into a sliding window until necessary, which 11546 // provides the effect documented in zlib.h for Z_FINISH when the entire input 11547 // stream available. So the only thing the flush parameter actually does is: 11548 // when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it 11549 // will return Z_BUF_ERROR if it has not reached the end of the stream. 11550 // 11551 11552 func Xinflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* inflate.c:622:13: */ 11553 bp := tls.Alloc(4) 11554 defer tls.Free(4) 11555 11556 var state uintptr 11557 var next uintptr // next input 11558 var put uintptr // next output 11559 var have uint32 11560 var left uint32 // available input and output 11561 var hold uint64 // bit buffer 11562 var bits uint32 // bits in bit buffer 11563 var in uint32 11564 var out uint32 // save starting available input and output 11565 var copy uint32 // number of stored or match bytes to copy 11566 var from uintptr // where to copy match bytes from 11567 var here Code // current decoding table entry 11568 var last Code // parent table entry 11569 var len uint32 // length to copy for repeats, bits to drop 11570 var ret int32 // return code 11571 // var hbuf [4]uint8 at bp, 4 11572 11573 if !(((inflateStateCheck(tls, strm) != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL))) || (((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)))) { 11574 goto __1 11575 } 11576 return -2 11577 __1: 11578 ; 11579 11580 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 11581 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 11582 goto __2 11583 } 11584 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 11585 __2: 11586 ; // skip check 11587 __3: 11588 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 11589 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 11590 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 11591 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 11592 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 11593 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 11594 goto __4 11595 __4: 11596 if 0 != 0 { 11597 goto __3 11598 } 11599 goto __5 11600 __5: 11601 ; 11602 in = have 11603 out = left 11604 ret = Z_OK 11605 __6: 11606 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 11607 case HEAD: 11608 goto __10 11609 case FLAGS: 11610 goto __11 11611 case TIME: 11612 goto __12 11613 case OS: 11614 goto __13 11615 case EXLEN: 11616 goto __14 11617 case EXTRA: 11618 goto __15 11619 case NAME: 11620 goto __16 11621 case COMMENT: 11622 goto __17 11623 case HCRC: 11624 goto __18 11625 case DICTID: 11626 goto __19 11627 case DICT: 11628 goto __20 11629 case TYPE: 11630 goto __21 11631 case TYPEDO: 11632 goto __22 11633 case STORED: 11634 goto __23 11635 case COPY_: 11636 goto __24 11637 case COPY: 11638 goto __25 11639 case TABLE: 11640 goto __26 11641 case LENLENS: 11642 goto __27 11643 case CODELENS: 11644 goto __28 11645 case LEN_: 11646 goto __29 11647 case LEN: 11648 goto __30 11649 case LENEXT: 11650 goto __31 11651 case DIST: 11652 goto __32 11653 case DISTEXT: 11654 goto __33 11655 case MATCH: 11656 goto __34 11657 case LIT: 11658 goto __35 11659 case CHECK: 11660 goto __36 11661 case LENGTH: 11662 goto __37 11663 case DONE: 11664 goto __38 11665 case BAD: 11666 goto __39 11667 case MEM: 11668 goto __40 11669 case SYNC: 11670 goto __41 11671 default: 11672 goto __42 11673 } 11674 goto __9 11675 __10: 11676 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap == 0) { 11677 goto __43 11678 } 11679 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 11680 goto __9 11681 __43: 11682 ; 11683 __44: 11684 __47: 11685 if !(bits < (uint32(16))) { 11686 goto __48 11687 } 11688 __49: 11689 if !(have == uint32(0)) { 11690 goto __52 11691 } 11692 goto inf_leave 11693 __52: 11694 ; 11695 have-- 11696 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 11697 bits = bits + (uint32(8)) 11698 goto __50 11699 __50: 11700 if 0 != 0 { 11701 goto __49 11702 } 11703 goto __51 11704 __51: 11705 ; 11706 goto __47 11707 __48: 11708 ; 11709 goto __45 11710 __45: 11711 if 0 != 0 { 11712 goto __44 11713 } 11714 goto __46 11715 __46: 11716 ; 11717 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) != 0) && (hold == uint64(0x8b1f))) { 11718 goto __53 11719 } // gzip header 11720 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 11721 goto __54 11722 } 11723 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(15) 11724 __54: 11725 ; 11726 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 11727 __55: 11728 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 11729 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 11730 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 11731 goto __56 11732 __56: 11733 if 0 != 0 { 11734 goto __55 11735 } 11736 goto __57 11737 __57: 11738 ; 11739 __58: 11740 hold = uint64(0) 11741 bits = uint32(0) 11742 goto __59 11743 __59: 11744 if 0 != 0 { 11745 goto __58 11746 } 11747 goto __60 11748 __60: 11749 ; 11750 (*Inflate_state)(unsafe.Pointer(state)).Fmode = FLAGS 11751 goto __9 11752 __53: 11753 ; 11754 (*Inflate_state)(unsafe.Pointer(state)).Fflags = 0 // expect zlib header 11755 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 11756 goto __61 11757 } 11758 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = -1 11759 __61: 11760 ; 11761 if !(!(((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1) != 0) || ((((uint64((uint32(hold) & ((uint32(1) << (8)) - uint32(1))) << 8)) + (hold >> 8)) % uint64(31)) != 0)) { 11762 goto __62 11763 } 11764 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 669 /* "incorrect header..." */ 11765 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11766 goto __9 11767 __62: 11768 ; 11769 if !((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) != uint32(Z_DEFLATED)) { 11770 goto __63 11771 } 11772 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 11773 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11774 goto __9 11775 __63: 11776 ; 11777 __64: 11778 hold >>= 4 11779 bits = bits - (uint32(4)) 11780 goto __65 11781 __65: 11782 if 0 != 0 { 11783 goto __64 11784 } 11785 goto __66 11786 __66: 11787 ; 11788 len = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(8)) 11789 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 11790 goto __67 11791 } 11792 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = len 11793 __67: 11794 ; 11795 if !((len > uint32(15)) || (len > (*Inflate_state)(unsafe.Pointer(state)).Fwbits)) { 11796 goto __68 11797 } 11798 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 719 /* "invalid window s..." */ 11799 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11800 goto __9 11801 __68: 11802 ; 11803 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = (uint32(1) << len) 11804 11805 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 11806 (*Inflate_state)(unsafe.Pointer(state)).Fmode = func() uint32 { 11807 if (hold & uint64(0x200)) != 0 { 11808 return DICTID 11809 } 11810 return TYPE 11811 }() 11812 __69: 11813 hold = uint64(0) 11814 bits = uint32(0) 11815 goto __70 11816 __70: 11817 if 0 != 0 { 11818 goto __69 11819 } 11820 goto __71 11821 __71: 11822 ; 11823 goto __9 11824 __11: 11825 __72: 11826 __75: 11827 if !(bits < (uint32(16))) { 11828 goto __76 11829 } 11830 __77: 11831 if !(have == uint32(0)) { 11832 goto __80 11833 } 11834 goto inf_leave 11835 __80: 11836 ; 11837 have-- 11838 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 11839 bits = bits + (uint32(8)) 11840 goto __78 11841 __78: 11842 if 0 != 0 { 11843 goto __77 11844 } 11845 goto __79 11846 __79: 11847 ; 11848 goto __75 11849 __76: 11850 ; 11851 goto __73 11852 __73: 11853 if 0 != 0 { 11854 goto __72 11855 } 11856 goto __74 11857 __74: 11858 ; 11859 (*Inflate_state)(unsafe.Pointer(state)).Fflags = int32(hold) 11860 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xff) != Z_DEFLATED) { 11861 goto __81 11862 } 11863 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 11864 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11865 goto __9 11866 __81: 11867 ; 11868 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xe000) != 0) { 11869 goto __82 11870 } 11871 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 739 /* "unknown header f..." */ 11872 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11873 goto __9 11874 __82: 11875 ; 11876 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 11877 goto __83 11878 } 11879 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftext = (int32((hold >> 8) & uint64(1))) 11880 __83: 11881 ; 11882 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 11883 goto __84 11884 } 11885 __85: 11886 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 11887 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 11888 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 11889 goto __86 11890 __86: 11891 if 0 != 0 { 11892 goto __85 11893 } 11894 goto __87 11895 __87: 11896 ; 11897 __84: 11898 ; 11899 __88: 11900 hold = uint64(0) 11901 bits = uint32(0) 11902 goto __89 11903 __89: 11904 if 0 != 0 { 11905 goto __88 11906 } 11907 goto __90 11908 __90: 11909 ; 11910 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TIME 11911 __12: 11912 __91: 11913 __94: 11914 if !(bits < (uint32(32))) { 11915 goto __95 11916 } 11917 __96: 11918 if !(have == uint32(0)) { 11919 goto __99 11920 } 11921 goto inf_leave 11922 __99: 11923 ; 11924 have-- 11925 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 11926 bits = bits + (uint32(8)) 11927 goto __97 11928 __97: 11929 if 0 != 0 { 11930 goto __96 11931 } 11932 goto __98 11933 __98: 11934 ; 11935 goto __94 11936 __95: 11937 ; 11938 goto __92 11939 __92: 11940 if 0 != 0 { 11941 goto __91 11942 } 11943 goto __93 11944 __93: 11945 ; 11946 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 11947 goto __100 11948 } 11949 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftime = hold 11950 __100: 11951 ; 11952 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 11953 goto __101 11954 } 11955 __102: 11956 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 11957 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 11958 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 2)) = (uint8((hold) >> 16)) 11959 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 3)) = (uint8((hold) >> 24)) 11960 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(4)) 11961 goto __103 11962 __103: 11963 if 0 != 0 { 11964 goto __102 11965 } 11966 goto __104 11967 __104: 11968 ; 11969 __101: 11970 ; 11971 __105: 11972 hold = uint64(0) 11973 bits = uint32(0) 11974 goto __106 11975 __106: 11976 if 0 != 0 { 11977 goto __105 11978 } 11979 goto __107 11980 __107: 11981 ; 11982 (*Inflate_state)(unsafe.Pointer(state)).Fmode = OS 11983 __13: 11984 __108: 11985 __111: 11986 if !(bits < (uint32(16))) { 11987 goto __112 11988 } 11989 __113: 11990 if !(have == uint32(0)) { 11991 goto __116 11992 } 11993 goto inf_leave 11994 __116: 11995 ; 11996 have-- 11997 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 11998 bits = bits + (uint32(8)) 11999 goto __114 12000 __114: 12001 if 0 != 0 { 12002 goto __113 12003 } 12004 goto __115 12005 __115: 12006 ; 12007 goto __111 12008 __112: 12009 ; 12010 goto __109 12011 __109: 12012 if 0 != 0 { 12013 goto __108 12014 } 12015 goto __110 12016 __110: 12017 ; 12018 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12019 goto __117 12020 } 12021 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fxflags = (int32(hold & uint64(0xff))) 12022 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fos = (int32(hold >> 8)) 12023 __117: 12024 ; 12025 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 12026 goto __118 12027 } 12028 __119: 12029 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 12030 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 12031 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 12032 goto __120 12033 __120: 12034 if 0 != 0 { 12035 goto __119 12036 } 12037 goto __121 12038 __121: 12039 ; 12040 __118: 12041 ; 12042 __122: 12043 hold = uint64(0) 12044 bits = uint32(0) 12045 goto __123 12046 __123: 12047 if 0 != 0 { 12048 goto __122 12049 } 12050 goto __124 12051 __124: 12052 ; 12053 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXLEN 12054 __14: 12055 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) { 12056 goto __125 12057 } 12058 __127: 12059 __130: 12060 if !(bits < (uint32(16))) { 12061 goto __131 12062 } 12063 __132: 12064 if !(have == uint32(0)) { 12065 goto __135 12066 } 12067 goto inf_leave 12068 __135: 12069 ; 12070 have-- 12071 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12072 bits = bits + (uint32(8)) 12073 goto __133 12074 __133: 12075 if 0 != 0 { 12076 goto __132 12077 } 12078 goto __134 12079 __134: 12080 ; 12081 goto __130 12082 __131: 12083 ; 12084 goto __128 12085 __128: 12086 if 0 != 0 { 12087 goto __127 12088 } 12089 goto __129 12090 __129: 12091 ; 12092 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold) 12093 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12094 goto __136 12095 } 12096 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len = uint32(hold) 12097 __136: 12098 ; 12099 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 12100 goto __137 12101 } 12102 __138: 12103 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 12104 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 12105 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 12106 goto __139 12107 __139: 12108 if 0 != 0 { 12109 goto __138 12110 } 12111 goto __140 12112 __140: 12113 ; 12114 __137: 12115 ; 12116 __141: 12117 hold = uint64(0) 12118 bits = uint32(0) 12119 goto __142 12120 __142: 12121 if 0 != 0 { 12122 goto __141 12123 } 12124 goto __143 12125 __143: 12126 ; 12127 goto __126 12128 __125: 12129 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12130 goto __144 12131 } 12132 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra = uintptr(Z_NULL) 12133 __144: 12134 ; 12135 __126: 12136 ; 12137 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXTRA 12138 __15: 12139 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) { 12140 goto __145 12141 } 12142 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 12143 if !(copy > have) { 12144 goto __146 12145 } 12146 copy = have 12147 __146: 12148 ; 12149 if !(copy != 0) { 12150 goto __147 12151 } 12152 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra != uintptr(Z_NULL))) { 12153 goto __148 12154 } 12155 len = ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len - (*Inflate_state)(unsafe.Pointer(state)).Flength) 12156 libc.Xmemcpy(tls, ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra + uintptr(len)), next, 12157 func() uint64 { 12158 if (len + copy) > (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max { 12159 return (uint64((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max - len)) 12160 } 12161 return uint64(copy) 12162 }()) 12163 __148: 12164 ; 12165 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 12166 goto __149 12167 } 12168 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 12169 __149: 12170 ; 12171 have = have - (copy) 12172 next += uintptr(copy) 12173 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy) 12174 __147: 12175 ; 12176 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != 0) { 12177 goto __150 12178 } 12179 goto inf_leave 12180 __150: 12181 ; 12182 __145: 12183 ; 12184 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 12185 (*Inflate_state)(unsafe.Pointer(state)).Fmode = NAME 12186 __16: 12187 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0800) != 0) { 12188 goto __151 12189 } 12190 if !(have == uint32(0)) { 12191 goto __153 12192 } 12193 goto inf_leave 12194 __153: 12195 ; 12196 copy = uint32(0) 12197 __154: 12198 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 12199 if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname_max)) { 12200 goto __157 12201 } 12202 *(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len) 12203 __157: 12204 ; 12205 goto __155 12206 __155: 12207 if (len != 0) && (copy < have) { 12208 goto __154 12209 } 12210 goto __156 12211 __156: 12212 ; 12213 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 12214 goto __158 12215 } 12216 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 12217 __158: 12218 ; 12219 have = have - (copy) 12220 next += uintptr(copy) 12221 if !(len != 0) { 12222 goto __159 12223 } 12224 goto inf_leave 12225 __159: 12226 ; 12227 goto __152 12228 __151: 12229 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12230 goto __160 12231 } 12232 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname = uintptr(Z_NULL) 12233 __160: 12234 ; 12235 __152: 12236 ; 12237 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 12238 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COMMENT 12239 __17: 12240 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x1000) != 0) { 12241 goto __161 12242 } 12243 if !(have == uint32(0)) { 12244 goto __163 12245 } 12246 goto inf_leave 12247 __163: 12248 ; 12249 copy = uint32(0) 12250 __164: 12251 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 12252 if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomm_max)) { 12253 goto __167 12254 } 12255 *(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len) 12256 __167: 12257 ; 12258 goto __165 12259 __165: 12260 if (len != 0) && (copy < have) { 12261 goto __164 12262 } 12263 goto __166 12264 __166: 12265 ; 12266 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 12267 goto __168 12268 } 12269 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 12270 __168: 12271 ; 12272 have = have - (copy) 12273 next += uintptr(copy) 12274 if !(len != 0) { 12275 goto __169 12276 } 12277 goto inf_leave 12278 __169: 12279 ; 12280 goto __162 12281 __161: 12282 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12283 goto __170 12284 } 12285 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment = uintptr(Z_NULL) 12286 __170: 12287 ; 12288 __162: 12289 ; 12290 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HCRC 12291 __18: 12292 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) { 12293 goto __171 12294 } 12295 __172: 12296 __175: 12297 if !(bits < (uint32(16))) { 12298 goto __176 12299 } 12300 __177: 12301 if !(have == uint32(0)) { 12302 goto __180 12303 } 12304 goto inf_leave 12305 __180: 12306 ; 12307 have-- 12308 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12309 bits = bits + (uint32(8)) 12310 goto __178 12311 __178: 12312 if 0 != 0 { 12313 goto __177 12314 } 12315 goto __179 12316 __179: 12317 ; 12318 goto __175 12319 __176: 12320 ; 12321 goto __173 12322 __173: 12323 if 0 != 0 { 12324 goto __172 12325 } 12326 goto __174 12327 __174: 12328 ; 12329 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (hold != ((*Inflate_state)(unsafe.Pointer(state)).Fcheck & uint64(0xffff)))) { 12330 goto __181 12331 } 12332 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 764 /* "header crc misma..." */ 12333 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12334 goto __9 12335 __181: 12336 ; 12337 __182: 12338 hold = uint64(0) 12339 bits = uint32(0) 12340 goto __183 12341 __183: 12342 if 0 != 0 { 12343 goto __182 12344 } 12345 goto __184 12346 __184: 12347 ; 12348 __171: 12349 ; 12350 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 12351 goto __185 12352 } 12353 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fhcrc = (((*Inflate_state)(unsafe.Pointer(state)).Fflags >> 9) & 1) 12354 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = 1 12355 __185: 12356 ; 12357 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 12358 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12359 goto __9 12360 __19: 12361 __186: 12362 __189: 12363 if !(bits < (uint32(32))) { 12364 goto __190 12365 } 12366 __191: 12367 if !(have == uint32(0)) { 12368 goto __194 12369 } 12370 goto inf_leave 12371 __194: 12372 ; 12373 have-- 12374 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12375 bits = bits + (uint32(8)) 12376 goto __192 12377 __192: 12378 if 0 != 0 { 12379 goto __191 12380 } 12381 goto __193 12382 __193: 12383 ; 12384 goto __189 12385 __190: 12386 ; 12387 goto __187 12388 __187: 12389 if 0 != 0 { 12390 goto __186 12391 } 12392 goto __188 12393 __188: 12394 ; 12395 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, ((((((hold) >> 24) & uint64(0xff)) + (((hold) >> 8) & uint64(0xff00))) + (((hold) & uint64(0xff00)) << 8)) + (((hold) & uint64(0xff)) << 24))) 12396 __195: 12397 hold = uint64(0) 12398 bits = uint32(0) 12399 goto __196 12400 __196: 12401 if 0 != 0 { 12402 goto __195 12403 } 12404 goto __197 12405 __197: 12406 ; 12407 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DICT 12408 __20: 12409 if !((*Inflate_state)(unsafe.Pointer(state)).Fhavedict == 0) { 12410 goto __198 12411 } 12412 __199: 12413 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 12414 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 12415 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 12416 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 12417 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 12418 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 12419 goto __200 12420 __200: 12421 if 0 != 0 { 12422 goto __199 12423 } 12424 goto __201 12425 __201: 12426 ; 12427 return Z_NEED_DICT 12428 __198: 12429 ; 12430 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 12431 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12432 __21: 12433 if !((flush == Z_BLOCK) || (flush == Z_TREES)) { 12434 goto __202 12435 } 12436 goto inf_leave 12437 __202: 12438 ; 12439 __22: 12440 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 12441 goto __203 12442 } 12443 __204: 12444 hold >>= (bits & uint32(7)) 12445 bits = bits - (bits & uint32(7)) 12446 goto __205 12447 __205: 12448 if 0 != 0 { 12449 goto __204 12450 } 12451 goto __206 12452 __206: 12453 ; 12454 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CHECK 12455 goto __9 12456 __203: 12457 ; 12458 __207: 12459 __210: 12460 if !(bits < (uint32(3))) { 12461 goto __211 12462 } 12463 __212: 12464 if !(have == uint32(0)) { 12465 goto __215 12466 } 12467 goto inf_leave 12468 __215: 12469 ; 12470 have-- 12471 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12472 bits = bits + (uint32(8)) 12473 goto __213 12474 __213: 12475 if 0 != 0 { 12476 goto __212 12477 } 12478 goto __214 12479 __214: 12480 ; 12481 goto __210 12482 __211: 12483 ; 12484 goto __208 12485 __208: 12486 if 0 != 0 { 12487 goto __207 12488 } 12489 goto __209 12490 __209: 12491 ; 12492 (*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1)))) 12493 __216: 12494 hold >>= 1 12495 bits = bits - (uint32(1)) 12496 goto __217 12497 __217: 12498 if 0 != 0 { 12499 goto __216 12500 } 12501 goto __218 12502 __218: 12503 ; 12504 switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) { 12505 case uint32(0): 12506 goto __220 12507 case uint32(1): 12508 goto __221 12509 case uint32(2): 12510 goto __222 12511 case uint32(3): 12512 goto __223 12513 } 12514 goto __219 12515 __220: // stored block 12516 ; 12517 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 12518 goto __219 12519 __221: // fixed block 12520 fixedtables1(tls, state) 12521 12522 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ // decode codes 12523 if !(flush == Z_TREES) { 12524 goto __224 12525 } 12526 __225: 12527 hold >>= 2 12528 bits = bits - (uint32(2)) 12529 goto __226 12530 __226: 12531 if 0 != 0 { 12532 goto __225 12533 } 12534 goto __227 12535 __227: 12536 ; 12537 goto inf_leave 12538 __224: 12539 ; 12540 goto __219 12541 __222: // dynamic block 12542 ; 12543 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 12544 goto __219 12545 __223: 12546 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 12547 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12548 __219: 12549 ; 12550 __228: 12551 hold >>= 2 12552 bits = bits - (uint32(2)) 12553 goto __229 12554 __229: 12555 if 0 != 0 { 12556 goto __228 12557 } 12558 goto __230 12559 __230: 12560 ; 12561 goto __9 12562 __23: 12563 __231: 12564 hold >>= (bits & uint32(7)) 12565 bits = bits - (bits & uint32(7)) 12566 goto __232 12567 __232: 12568 if 0 != 0 { 12569 goto __231 12570 } 12571 goto __233 12572 __233: 12573 ; // go to byte boundary 12574 __234: 12575 __237: 12576 if !(bits < (uint32(32))) { 12577 goto __238 12578 } 12579 __239: 12580 if !(have == uint32(0)) { 12581 goto __242 12582 } 12583 goto inf_leave 12584 __242: 12585 ; 12586 have-- 12587 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12588 bits = bits + (uint32(8)) 12589 goto __240 12590 __240: 12591 if 0 != 0 { 12592 goto __239 12593 } 12594 goto __241 12595 __241: 12596 ; 12597 goto __237 12598 __238: 12599 ; 12600 goto __235 12601 __235: 12602 if 0 != 0 { 12603 goto __234 12604 } 12605 goto __236 12606 __236: 12607 ; 12608 if !((hold & uint64(0xffff)) != ((hold >> 16) ^ uint64(0xffff))) { 12609 goto __243 12610 } 12611 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 12612 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12613 goto __9 12614 __243: 12615 ; 12616 (*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff)) 12617 12618 __244: 12619 hold = uint64(0) 12620 bits = uint32(0) 12621 goto __245 12622 __245: 12623 if 0 != 0 { 12624 goto __244 12625 } 12626 goto __246 12627 __246: 12628 ; 12629 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY_ 12630 if !(flush == Z_TREES) { 12631 goto __247 12632 } 12633 goto inf_leave 12634 __247: 12635 ; 12636 __24: 12637 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY 12638 __25: 12639 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 12640 if !(copy != 0) { 12641 goto __248 12642 } 12643 if !(copy > have) { 12644 goto __249 12645 } 12646 copy = have 12647 __249: 12648 ; 12649 if !(copy > left) { 12650 goto __250 12651 } 12652 copy = left 12653 __250: 12654 ; 12655 if !(copy == uint32(0)) { 12656 goto __251 12657 } 12658 goto inf_leave 12659 __251: 12660 ; 12661 libc.Xmemcpy(tls, put, next, uint64(copy)) 12662 have = have - (copy) 12663 next += uintptr(copy) 12664 left = left - (copy) 12665 put += uintptr(copy) 12666 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy) 12667 goto __9 12668 __248: 12669 ; 12670 12671 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12672 goto __9 12673 __26: 12674 __252: 12675 __255: 12676 if !(bits < (uint32(14))) { 12677 goto __256 12678 } 12679 __257: 12680 if !(have == uint32(0)) { 12681 goto __260 12682 } 12683 goto inf_leave 12684 __260: 12685 ; 12686 have-- 12687 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12688 bits = bits + (uint32(8)) 12689 goto __258 12690 __258: 12691 if 0 != 0 { 12692 goto __257 12693 } 12694 goto __259 12695 __259: 12696 ; 12697 goto __255 12698 __256: 12699 ; 12700 goto __253 12701 __253: 12702 if 0 != 0 { 12703 goto __252 12704 } 12705 goto __254 12706 __254: 12707 ; 12708 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257)) 12709 __261: 12710 hold >>= 5 12711 bits = bits - (uint32(5)) 12712 goto __262 12713 __262: 12714 if 0 != 0 { 12715 goto __261 12716 } 12717 goto __263 12718 __263: 12719 ; 12720 (*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1)) 12721 __264: 12722 hold >>= 5 12723 bits = bits - (uint32(5)) 12724 goto __265 12725 __265: 12726 if 0 != 0 { 12727 goto __264 12728 } 12729 goto __266 12730 __266: 12731 ; 12732 (*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4)) 12733 __267: 12734 hold >>= 4 12735 bits = bits - (uint32(4)) 12736 goto __268 12737 __268: 12738 if 0 != 0 { 12739 goto __267 12740 } 12741 goto __269 12742 __269: 12743 ; 12744 if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) { 12745 goto __270 12746 } 12747 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 12748 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12749 goto __9 12750 __270: 12751 ; 12752 12753 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 12754 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENLENS 12755 __27: 12756 __271: 12757 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 12758 goto __272 12759 } 12760 __273: 12761 __276: 12762 if !(bits < (uint32(3))) { 12763 goto __277 12764 } 12765 __278: 12766 if !(have == uint32(0)) { 12767 goto __281 12768 } 12769 goto inf_leave 12770 __281: 12771 ; 12772 have-- 12773 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12774 bits = bits + (uint32(8)) 12775 goto __279 12776 __279: 12777 if 0 != 0 { 12778 goto __278 12779 } 12780 goto __280 12781 __280: 12782 ; 12783 goto __276 12784 __277: 12785 ; 12786 goto __274 12787 __274: 12788 if 0 != 0 { 12789 goto __273 12790 } 12791 goto __275 12792 __275: 12793 ; 12794 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 12795 __282: 12796 hold >>= 3 12797 bits = bits - (uint32(3)) 12798 goto __283 12799 __283: 12800 if 0 != 0 { 12801 goto __282 12802 } 12803 goto __284 12804 __284: 12805 ; 12806 goto __271 12807 __272: 12808 ; 12809 __285: 12810 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 12811 goto __286 12812 } 12813 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 12814 goto __285 12815 __286: 12816 ; 12817 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 12818 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 12819 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 12820 ret = Xinflate_table(tls, CODES, state+152 /* &.lens */, uint32(19), (state + 144 /* &.next */), 12821 (state + 120 /* &.lenbits */), state+792 /* &.work */) 12822 if !(ret != 0) { 12823 goto __287 12824 } 12825 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 12826 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12827 goto __9 12828 __287: 12829 ; 12830 12831 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 12832 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CODELENS 12833 __28: 12834 __288: 12835 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 12836 goto __289 12837 } 12838 __290: 12839 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 12840 if !((uint32(here.Fbits)) <= bits) { 12841 goto __293 12842 } 12843 goto __292 12844 __293: 12845 ; 12846 __294: 12847 if !(have == uint32(0)) { 12848 goto __297 12849 } 12850 goto inf_leave 12851 __297: 12852 ; 12853 have-- 12854 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12855 bits = bits + (uint32(8)) 12856 goto __295 12857 __295: 12858 if 0 != 0 { 12859 goto __294 12860 } 12861 goto __296 12862 __296: 12863 ; 12864 goto __291 12865 __291: 12866 goto __290 12867 goto __292 12868 __292: 12869 ; 12870 if !(int32(here.Fval) < 16) { 12871 goto __298 12872 } 12873 __300: 12874 hold >>= int32(here.Fbits) 12875 bits = bits - (uint32(here.Fbits)) 12876 goto __301 12877 __301: 12878 if 0 != 0 { 12879 goto __300 12880 } 12881 goto __302 12882 __302: 12883 ; 12884 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 12885 goto __299 12886 __298: 12887 if !(int32(here.Fval) == 16) { 12888 goto __303 12889 } 12890 __305: 12891 __308: 12892 if !(bits < (uint32(int32(here.Fbits) + 2))) { 12893 goto __309 12894 } 12895 __310: 12896 if !(have == uint32(0)) { 12897 goto __313 12898 } 12899 goto inf_leave 12900 __313: 12901 ; 12902 have-- 12903 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12904 bits = bits + (uint32(8)) 12905 goto __311 12906 __311: 12907 if 0 != 0 { 12908 goto __310 12909 } 12910 goto __312 12911 __312: 12912 ; 12913 goto __308 12914 __309: 12915 ; 12916 goto __306 12917 __306: 12918 if 0 != 0 { 12919 goto __305 12920 } 12921 goto __307 12922 __307: 12923 ; 12924 __314: 12925 hold >>= int32(here.Fbits) 12926 bits = bits - (uint32(here.Fbits)) 12927 goto __315 12928 __315: 12929 if 0 != 0 { 12930 goto __314 12931 } 12932 goto __316 12933 __316: 12934 ; 12935 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 12936 goto __317 12937 } 12938 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 12939 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12940 goto __289 12941 __317: 12942 ; 12943 len = uint32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2))) 12944 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1)))) 12945 __318: 12946 hold >>= 2 12947 bits = bits - (uint32(2)) 12948 goto __319 12949 __319: 12950 if 0 != 0 { 12951 goto __318 12952 } 12953 goto __320 12954 __320: 12955 ; 12956 goto __304 12957 __303: 12958 if !(int32(here.Fval) == 17) { 12959 goto __321 12960 } 12961 __323: 12962 __326: 12963 if !(bits < (uint32(int32(here.Fbits) + 3))) { 12964 goto __327 12965 } 12966 __328: 12967 if !(have == uint32(0)) { 12968 goto __331 12969 } 12970 goto inf_leave 12971 __331: 12972 ; 12973 have-- 12974 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 12975 bits = bits + (uint32(8)) 12976 goto __329 12977 __329: 12978 if 0 != 0 { 12979 goto __328 12980 } 12981 goto __330 12982 __330: 12983 ; 12984 goto __326 12985 __327: 12986 ; 12987 goto __324 12988 __324: 12989 if 0 != 0 { 12990 goto __323 12991 } 12992 goto __325 12993 __325: 12994 ; 12995 __332: 12996 hold >>= int32(here.Fbits) 12997 bits = bits - (uint32(here.Fbits)) 12998 goto __333 12999 __333: 13000 if 0 != 0 { 13001 goto __332 13002 } 13003 goto __334 13004 __334: 13005 ; 13006 len = uint32(0) 13007 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 13008 __335: 13009 hold >>= 3 13010 bits = bits - (uint32(3)) 13011 goto __336 13012 __336: 13013 if 0 != 0 { 13014 goto __335 13015 } 13016 goto __337 13017 __337: 13018 ; 13019 goto __322 13020 __321: 13021 __338: 13022 __341: 13023 if !(bits < (uint32(int32(here.Fbits) + 7))) { 13024 goto __342 13025 } 13026 __343: 13027 if !(have == uint32(0)) { 13028 goto __346 13029 } 13030 goto inf_leave 13031 __346: 13032 ; 13033 have-- 13034 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13035 bits = bits + (uint32(8)) 13036 goto __344 13037 __344: 13038 if 0 != 0 { 13039 goto __343 13040 } 13041 goto __345 13042 __345: 13043 ; 13044 goto __341 13045 __342: 13046 ; 13047 goto __339 13048 __339: 13049 if 0 != 0 { 13050 goto __338 13051 } 13052 goto __340 13053 __340: 13054 ; 13055 __347: 13056 hold >>= int32(here.Fbits) 13057 bits = bits - (uint32(here.Fbits)) 13058 goto __348 13059 __348: 13060 if 0 != 0 { 13061 goto __347 13062 } 13063 goto __349 13064 __349: 13065 ; 13066 len = uint32(0) 13067 copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1)))) 13068 __350: 13069 hold >>= 7 13070 bits = bits - (uint32(7)) 13071 goto __351 13072 __351: 13073 if 0 != 0 { 13074 goto __350 13075 } 13076 goto __352 13077 __352: 13078 ; 13079 __322: 13080 ; 13081 __304: 13082 ; 13083 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 13084 goto __353 13085 } 13086 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 13087 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13088 goto __289 13089 __353: 13090 ; 13091 __354: 13092 if !(libc.PostDecUint32(©, 1) != 0) { 13093 goto __355 13094 } 13095 *(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 13096 goto __354 13097 __355: 13098 ; 13099 __299: 13100 ; 13101 goto __288 13102 __289: 13103 ; 13104 13105 // handle error breaks in while 13106 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 13107 goto __356 13108 } 13109 goto __9 13110 __356: 13111 ; 13112 13113 // check for end-of-block code (better have one) 13114 if !(int32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + 256*2))) == 0) { 13115 goto __357 13116 } 13117 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 13118 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13119 goto __9 13120 __357: 13121 ; 13122 13123 // build code tables -- note: do not change the lenbits or distbits 13124 // values here (9 and 6) without reading the comments in inftrees.h 13125 // concerning the ENOUGH constants, which depend on those values 13126 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 13127 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 13128 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 13129 ret = Xinflate_table(tls, LENS, state+152 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 144 /* &.next */), 13130 (state + 120 /* &.lenbits */), state+792 /* &.work */) 13131 if !(ret != 0) { 13132 goto __358 13133 } 13134 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 13135 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13136 goto __9 13137 __358: 13138 ; 13139 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 13140 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 13141 ret = Xinflate_table(tls, DISTS, ((state + 152 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist, 13142 (state + 144 /* &.next */), (state + 124 /* &.distbits */), state+792 /* &.work */) 13143 if !(ret != 0) { 13144 goto __359 13145 } 13146 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 13147 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13148 goto __9 13149 __359: 13150 ; 13151 13152 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ 13153 if !(flush == Z_TREES) { 13154 goto __360 13155 } 13156 goto inf_leave 13157 __360: 13158 ; 13159 __29: 13160 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 13161 __30: 13162 if !((have >= uint32(6)) && (left >= uint32(258))) { 13163 goto __361 13164 } 13165 __362: 13166 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 13167 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 13168 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 13169 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 13170 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 13171 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 13172 goto __363 13173 __363: 13174 if 0 != 0 { 13175 goto __362 13176 } 13177 goto __364 13178 __364: 13179 ; 13180 Xinflate_fast(tls, strm, out) 13181 __365: 13182 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 13183 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 13184 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 13185 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 13186 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 13187 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 13188 goto __366 13189 __366: 13190 if 0 != 0 { 13191 goto __365 13192 } 13193 goto __367 13194 __367: 13195 ; 13196 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 13197 goto __368 13198 } 13199 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 13200 __368: 13201 ; 13202 goto __9 13203 __361: 13204 ; 13205 (*Inflate_state)(unsafe.Pointer(state)).Fback = 0 13206 __369: 13207 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 13208 if !((uint32(here.Fbits)) <= bits) { 13209 goto __372 13210 } 13211 goto __371 13212 __372: 13213 ; 13214 __373: 13215 if !(have == uint32(0)) { 13216 goto __376 13217 } 13218 goto inf_leave 13219 __376: 13220 ; 13221 have-- 13222 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13223 bits = bits + (uint32(8)) 13224 goto __374 13225 __374: 13226 if 0 != 0 { 13227 goto __373 13228 } 13229 goto __375 13230 __375: 13231 ; 13232 goto __370 13233 __370: 13234 goto __369 13235 goto __371 13236 __371: 13237 ; 13238 if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) { 13239 goto __377 13240 } 13241 last = here 13242 __378: 13243 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4)) 13244 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 13245 goto __381 13246 } 13247 goto __380 13248 __381: 13249 ; 13250 __382: 13251 if !(have == uint32(0)) { 13252 goto __385 13253 } 13254 goto inf_leave 13255 __385: 13256 ; 13257 have-- 13258 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13259 bits = bits + (uint32(8)) 13260 goto __383 13261 __383: 13262 if 0 != 0 { 13263 goto __382 13264 } 13265 goto __384 13266 __384: 13267 ; 13268 goto __379 13269 __379: 13270 goto __378 13271 goto __380 13272 __380: 13273 ; 13274 __386: 13275 hold >>= int32(last.Fbits) 13276 bits = bits - (uint32(last.Fbits)) 13277 goto __387 13278 __387: 13279 if 0 != 0 { 13280 goto __386 13281 } 13282 goto __388 13283 __388: 13284 ; 13285 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(last.Fbits)) 13286 __377: 13287 ; 13288 __389: 13289 hold >>= int32(here.Fbits) 13290 bits = bits - (uint32(here.Fbits)) 13291 goto __390 13292 __390: 13293 if 0 != 0 { 13294 goto __389 13295 } 13296 goto __391 13297 __391: 13298 ; 13299 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(here.Fbits)) 13300 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 13301 if !((int32(here.Fop)) == 0) { 13302 goto __392 13303 } 13304 13305 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LIT 13306 goto __9 13307 __392: 13308 ; 13309 if !((int32(here.Fop) & 32) != 0) { 13310 goto __393 13311 } 13312 13313 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 13314 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 13315 goto __9 13316 __393: 13317 ; 13318 if !((int32(here.Fop) & 64) != 0) { 13319 goto __394 13320 } 13321 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 13322 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13323 goto __9 13324 __394: 13325 ; 13326 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 13327 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENEXT 13328 __31: 13329 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 13330 goto __395 13331 } 13332 __396: 13333 __399: 13334 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 13335 goto __400 13336 } 13337 __401: 13338 if !(have == uint32(0)) { 13339 goto __404 13340 } 13341 goto inf_leave 13342 __404: 13343 ; 13344 have-- 13345 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13346 bits = bits + (uint32(8)) 13347 goto __402 13348 __402: 13349 if 0 != 0 { 13350 goto __401 13351 } 13352 goto __403 13353 __403: 13354 ; 13355 goto __399 13356 __400: 13357 ; 13358 goto __397 13359 __397: 13360 if 0 != 0 { 13361 goto __396 13362 } 13363 goto __398 13364 __398: 13365 ; 13366 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 13367 __405: 13368 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 13369 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 13370 goto __406 13371 __406: 13372 if 0 != 0 { 13373 goto __405 13374 } 13375 goto __407 13376 __407: 13377 ; 13378 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra)) 13379 __395: 13380 ; 13381 13382 (*Inflate_state)(unsafe.Pointer(state)).Fwas = (*Inflate_state)(unsafe.Pointer(state)).Flength 13383 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DIST 13384 __32: 13385 __408: 13386 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4)) 13387 if !((uint32(here.Fbits)) <= bits) { 13388 goto __411 13389 } 13390 goto __410 13391 __411: 13392 ; 13393 __412: 13394 if !(have == uint32(0)) { 13395 goto __415 13396 } 13397 goto inf_leave 13398 __415: 13399 ; 13400 have-- 13401 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13402 bits = bits + (uint32(8)) 13403 goto __413 13404 __413: 13405 if 0 != 0 { 13406 goto __412 13407 } 13408 goto __414 13409 __414: 13410 ; 13411 goto __409 13412 __409: 13413 goto __408 13414 goto __410 13415 __410: 13416 ; 13417 if !((int32(here.Fop) & 0xf0) == 0) { 13418 goto __416 13419 } 13420 last = here 13421 __417: 13422 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4)) 13423 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 13424 goto __420 13425 } 13426 goto __419 13427 __420: 13428 ; 13429 __421: 13430 if !(have == uint32(0)) { 13431 goto __424 13432 } 13433 goto inf_leave 13434 __424: 13435 ; 13436 have-- 13437 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13438 bits = bits + (uint32(8)) 13439 goto __422 13440 __422: 13441 if 0 != 0 { 13442 goto __421 13443 } 13444 goto __423 13445 __423: 13446 ; 13447 goto __418 13448 __418: 13449 goto __417 13450 goto __419 13451 __419: 13452 ; 13453 __425: 13454 hold >>= int32(last.Fbits) 13455 bits = bits - (uint32(last.Fbits)) 13456 goto __426 13457 __426: 13458 if 0 != 0 { 13459 goto __425 13460 } 13461 goto __427 13462 __427: 13463 ; 13464 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(last.Fbits)) 13465 __416: 13466 ; 13467 __428: 13468 hold >>= int32(here.Fbits) 13469 bits = bits - (uint32(here.Fbits)) 13470 goto __429 13471 __429: 13472 if 0 != 0 { 13473 goto __428 13474 } 13475 goto __430 13476 __430: 13477 ; 13478 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(here.Fbits)) 13479 if !((int32(here.Fop) & 64) != 0) { 13480 goto __431 13481 } 13482 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 13483 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13484 goto __9 13485 __431: 13486 ; 13487 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 13488 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 13489 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DISTEXT 13490 __33: 13491 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 13492 goto __432 13493 } 13494 __433: 13495 __436: 13496 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 13497 goto __437 13498 } 13499 __438: 13500 if !(have == uint32(0)) { 13501 goto __441 13502 } 13503 goto inf_leave 13504 __441: 13505 ; 13506 have-- 13507 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13508 bits = bits + (uint32(8)) 13509 goto __439 13510 __439: 13511 if 0 != 0 { 13512 goto __438 13513 } 13514 goto __440 13515 __440: 13516 ; 13517 goto __436 13518 __437: 13519 ; 13520 goto __434 13521 __434: 13522 if 0 != 0 { 13523 goto __433 13524 } 13525 goto __435 13526 __435: 13527 ; 13528 *(*uint32)(unsafe.Pointer(state + 96 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 13529 __442: 13530 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 13531 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 13532 goto __443 13533 __443: 13534 if 0 != 0 { 13535 goto __442 13536 } 13537 goto __444 13538 __444: 13539 ; 13540 *(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra)) 13541 __432: 13542 ; 13543 13544 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MATCH 13545 __34: 13546 if !(left == uint32(0)) { 13547 goto __445 13548 } 13549 goto inf_leave 13550 __445: 13551 ; 13552 copy = (out - left) 13553 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > copy) { 13554 goto __446 13555 } // copy from window 13556 copy = ((*Inflate_state)(unsafe.Pointer(state)).Foffset - copy) 13557 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwhave) { 13558 goto __448 13559 } 13560 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 13561 goto __449 13562 } 13563 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 13564 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13565 goto __9 13566 __449: 13567 ; 13568 __448: 13569 ; 13570 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwnext) { 13571 goto __450 13572 } 13573 copy = copy - ((*Inflate_state)(unsafe.Pointer(state)).Fwnext) 13574 from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwsize - copy))) 13575 goto __451 13576 __450: 13577 from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwnext - copy))) 13578 __451: 13579 ; 13580 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 13581 goto __452 13582 } 13583 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 13584 __452: 13585 ; 13586 goto __447 13587 __446: // copy from output 13588 from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset)) 13589 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 13590 __447: 13591 ; 13592 if !(copy > left) { 13593 goto __453 13594 } 13595 copy = left 13596 __453: 13597 ; 13598 left = left - (copy) 13599 *(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy) 13600 __454: 13601 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 13602 goto __455 13603 __455: 13604 if libc.PreDecUint32(©, 1) != 0 { 13605 goto __454 13606 } 13607 goto __456 13608 __456: 13609 ; 13610 if !((*Inflate_state)(unsafe.Pointer(state)).Flength == uint32(0)) { 13611 goto __457 13612 } 13613 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 13614 __457: 13615 ; 13616 goto __9 13617 __35: 13618 if !(left == uint32(0)) { 13619 goto __458 13620 } 13621 goto inf_leave 13622 __458: 13623 ; 13624 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 13625 left-- 13626 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 13627 goto __9 13628 __36: 13629 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) { 13630 goto __459 13631 } 13632 __460: 13633 __463: 13634 if !(bits < (uint32(32))) { 13635 goto __464 13636 } 13637 __465: 13638 if !(have == uint32(0)) { 13639 goto __468 13640 } 13641 goto inf_leave 13642 __468: 13643 ; 13644 have-- 13645 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13646 bits = bits + (uint32(8)) 13647 goto __466 13648 __466: 13649 if 0 != 0 { 13650 goto __465 13651 } 13652 goto __467 13653 __467: 13654 ; 13655 goto __463 13656 __464: 13657 ; 13658 goto __461 13659 __461: 13660 if 0 != 0 { 13661 goto __460 13662 } 13663 goto __462 13664 __462: 13665 ; 13666 out = out - (left) 13667 *(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(out)) 13668 *(*uint64)(unsafe.Pointer(state + 40 /* &.total */)) += (uint64(out)) 13669 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) { 13670 goto __469 13671 } 13672 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, func() uint64 { 13673 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 13674 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out) 13675 } 13676 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out) 13677 }()) 13678 __469: 13679 ; 13680 out = left 13681 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && ((func() uint64 { 13682 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 13683 return hold 13684 } 13685 return ((((((hold) >> 24) & uint64(0xff)) + (((hold) >> 8) & uint64(0xff00))) + (((hold) & uint64(0xff00)) << 8)) + (((hold) & uint64(0xff)) << 24)) 13686 }()) != (*Inflate_state)(unsafe.Pointer(state)).Fcheck)) { 13687 goto __470 13688 } 13689 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 784 /* "incorrect data c..." */ 13690 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13691 goto __9 13692 __470: 13693 ; 13694 __471: 13695 hold = uint64(0) 13696 bits = uint32(0) 13697 goto __472 13698 __472: 13699 if 0 != 0 { 13700 goto __471 13701 } 13702 goto __473 13703 __473: 13704 ; 13705 13706 __459: 13707 ; 13708 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENGTH 13709 __37: 13710 if !(((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fflags != 0)) { 13711 goto __474 13712 } 13713 __475: 13714 __478: 13715 if !(bits < (uint32(32))) { 13716 goto __479 13717 } 13718 __480: 13719 if !(have == uint32(0)) { 13720 goto __483 13721 } 13722 goto inf_leave 13723 __483: 13724 ; 13725 have-- 13726 hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13727 bits = bits + (uint32(8)) 13728 goto __481 13729 __481: 13730 if 0 != 0 { 13731 goto __480 13732 } 13733 goto __482 13734 __482: 13735 ; 13736 goto __478 13737 __479: 13738 ; 13739 goto __476 13740 __476: 13741 if 0 != 0 { 13742 goto __475 13743 } 13744 goto __477 13745 __477: 13746 ; 13747 if !(hold != ((*Inflate_state)(unsafe.Pointer(state)).Ftotal & 0xffffffff)) { 13748 goto __484 13749 } 13750 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 805 /* "incorrect length..." */ 13751 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13752 goto __9 13753 __484: 13754 ; 13755 __485: 13756 hold = uint64(0) 13757 bits = uint32(0) 13758 goto __486 13759 __486: 13760 if 0 != 0 { 13761 goto __485 13762 } 13763 goto __487 13764 __487: 13765 ; 13766 13767 __474: 13768 ; 13769 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 13770 __38: 13771 ret = Z_STREAM_END 13772 goto inf_leave 13773 __39: 13774 ret = -3 13775 goto inf_leave 13776 __40: 13777 return -4 13778 __41: 13779 __42: 13780 return -2 13781 __9: 13782 ; 13783 goto __7 13784 __7: 13785 goto __6 13786 goto __8 13787 __8: 13788 ; 13789 13790 // 13791 // Return from inflate(), updating the total counts and the check value. 13792 // If there was no progress during the inflate() call, return a buffer 13793 // error. Call updatewindow() to create and/or update the window state. 13794 // Note: a memory error from inflate() is non-recoverable. 13795 // 13796 inf_leave: 13797 __488: 13798 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 13799 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 13800 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 13801 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 13802 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 13803 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 13804 goto __489 13805 __489: 13806 if 0 != 0 { 13807 goto __488 13808 } 13809 goto __490 13810 __490: 13811 ; 13812 if !(((*Inflate_state)(unsafe.Pointer(state)).Fwsize != 0) || (((out != (*Z_stream)(unsafe.Pointer(strm)).Favail_out) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode < BAD)) && (((*Inflate_state)(unsafe.Pointer(state)).Fmode < CHECK) || (flush != Z_FINISH)))) { 13813 goto __491 13814 } 13815 if !(updatewindow(tls, strm, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (out-(*Z_stream)(unsafe.Pointer(strm)).Favail_out)) != 0) { 13816 goto __492 13817 } 13818 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 13819 return -4 13820 __492: 13821 ; 13822 __491: 13823 ; 13824 in = in - ((*Z_stream)(unsafe.Pointer(strm)).Favail_in) 13825 out = out - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out) 13826 *(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(in)) 13827 *(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(out)) 13828 *(*uint64)(unsafe.Pointer(state + 40 /* &.total */)) += (uint64(out)) 13829 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) { 13830 goto __493 13831 } 13832 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, func() uint64 { 13833 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 13834 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out) 13835 } 13836 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out) 13837 }()) 13838 __493: 13839 ; 13840 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = (((int32((*Inflate_state)(unsafe.Pointer(state)).Fbits) + (func() int32 { 13841 if (*Inflate_state)(unsafe.Pointer(state)).Flast != 0 { 13842 return 64 13843 } 13844 return 0 13845 }())) + (func() int32 { 13846 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE { 13847 return 128 13848 } 13849 return 0 13850 }())) + (func() int32 { 13851 if ((*Inflate_state)(unsafe.Pointer(state)).Fmode == LEN_) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY_) { 13852 return 256 13853 } 13854 return 0 13855 }())) 13856 if !((((in == uint32(0)) && (out == uint32(0))) || (flush == Z_FINISH)) && (ret == Z_OK)) { 13857 goto __494 13858 } 13859 ret = -5 13860 __494: 13861 ; 13862 return ret 13863 } 13864 13865 var order1 = // permutation of code lengths 13866 [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* inflate.c:642:33 */ 13867 13868 func XinflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1277:13: */ 13869 var state uintptr 13870 if inflateStateCheck(tls, strm) != 0 { 13871 return -2 13872 } 13873 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13874 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 13875 (*struct { 13876 f func(*libc.TLS, Voidpf, Voidpf) 13877 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 13878 } 13879 (*struct { 13880 f func(*libc.TLS, Voidpf, Voidpf) 13881 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 13882 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 13883 13884 return Z_OK 13885 } 13886 13887 func XinflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* inflate.c:1291:13: */ 13888 var state uintptr 13889 13890 // check state 13891 if inflateStateCheck(tls, strm) != 0 { 13892 return -2 13893 } 13894 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13895 13896 // copy dictionary 13897 if ((*Inflate_state)(unsafe.Pointer(state)).Fwhave != 0) && (dictionary != uintptr(Z_NULL)) { 13898 libc.Xmemcpy(tls, dictionary, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), 13899 (uint64((*Inflate_state)(unsafe.Pointer(state)).Fwhave - (*Inflate_state)(unsafe.Pointer(state)).Fwnext))) 13900 libc.Xmemcpy(tls, ((dictionary + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwhave)) - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), 13901 (*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64((*Inflate_state)(unsafe.Pointer(state)).Fwnext)) 13902 } 13903 if dictLength != uintptr(Z_NULL) { 13904 *(*UInt)(unsafe.Pointer(dictLength)) = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 13905 } 13906 return Z_OK 13907 } 13908 13909 func XinflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* inflate.c:1314:13: */ 13910 var state uintptr 13911 var dictid uint64 13912 var ret int32 13913 13914 // check state 13915 if inflateStateCheck(tls, strm) != 0 { 13916 return -2 13917 } 13918 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13919 if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode != DICT) { 13920 return -2 13921 } 13922 13923 // check for correct dictionary identifier 13924 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == DICT { 13925 dictid = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 13926 dictid = Xadler32(tls, dictid, dictionary, dictLength) 13927 if dictid != (*Inflate_state)(unsafe.Pointer(state)).Fcheck { 13928 return -3 13929 } 13930 } 13931 13932 // copy dictionary to window using updatewindow(), which will amend the 13933 // existing dictionary if appropriate 13934 ret = updatewindow(tls, strm, (dictionary + uintptr(dictLength)), dictLength) 13935 if ret != 0 { 13936 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 13937 return -4 13938 } 13939 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 1 13940 13941 return Z_OK 13942 } 13943 13944 func XinflateGetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* inflate.c:1349:13: */ 13945 var state uintptr 13946 13947 // check state 13948 if inflateStateCheck(tls, strm) != 0 { 13949 return -2 13950 } 13951 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13952 if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) == 0 { 13953 return -2 13954 } 13955 13956 // save header structure 13957 (*Inflate_state)(unsafe.Pointer(state)).Fhead = head 13958 (*Gz_header)(unsafe.Pointer(head)).Fdone = 0 13959 return Z_OK 13960 } 13961 13962 // 13963 // Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found 13964 // or when out of input. When called, *have is the number of pattern bytes 13965 // found in order so far, in 0..3. On return *have is updated to the new 13966 // state. If on return *have equals four, then the pattern was found and the 13967 // return value is how many bytes were read including the last byte of the 13968 // pattern. If *have is less than four, then the pattern has not been found 13969 // yet and the return value is len. In the latter case, syncsearch() can be 13970 // called again with more data and the *have state. *have is initialized to 13971 // zero for the first call. 13972 // 13973 func syncsearch(tls *libc.TLS, have uintptr, buf uintptr, len uint32) uint32 { /* inflate.c:1377:16: */ 13974 var got uint32 13975 var next uint32 13976 13977 got = *(*uint32)(unsafe.Pointer(have)) 13978 next = uint32(0) 13979 for (next < len) && (got < uint32(4)) { 13980 if (int32(*(*uint8)(unsafe.Pointer(buf + uintptr(next))))) == (func() int32 { 13981 if got < uint32(2) { 13982 return 0 13983 } 13984 return 0xff 13985 }()) { 13986 got++ 13987 } else if *(*uint8)(unsafe.Pointer(buf + uintptr(next))) != 0 { 13988 got = uint32(0) 13989 } else { 13990 got = (uint32(4) - got) 13991 } 13992 next++ 13993 } 13994 *(*uint32)(unsafe.Pointer(have)) = got 13995 return next 13996 } 13997 13998 func XinflateSync(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1400:13: */ 13999 bp := tls.Alloc(4) 14000 defer tls.Free(4) 14001 14002 var len uint32 // number of bytes to look at or looked at 14003 var in uint64 14004 var out uint64 // temporary to save total_in and total_out 14005 // var buf [4]uint8 at bp, 4 14006 // to restore bit buffer to byte string 14007 var state uintptr 14008 14009 // check parameters 14010 if inflateStateCheck(tls, strm) != 0 { 14011 return -2 14012 } 14013 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14014 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits < uint32(8)) { 14015 return -5 14016 } 14017 14018 // if first time, start search in bit buffer 14019 if (*Inflate_state)(unsafe.Pointer(state)).Fmode != SYNC { 14020 (*Inflate_state)(unsafe.Pointer(state)).Fmode = SYNC 14021 libc.AssignShlPtrUint64(state+80 /* &.hold */, int(((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7)))) 14022 *(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) -= ((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7)) 14023 len = uint32(0) 14024 for (*Inflate_state)(unsafe.Pointer(state)).Fbits >= uint32(8) { 14025 *(*uint8)(unsafe.Pointer(bp /* &buf[0] */ + uintptr(libc.PostIncUint32(&len, 1)))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Fhold) 14026 libc.AssignShrPtrUint64(state+80 /* &.hold */, int(8)) 14027 *(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) -= (uint32(8)) 14028 } 14029 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 14030 syncsearch(tls, (state + 140 /* &.have */), bp /* &buf[0] */, len) 14031 } 14032 14033 // search available input 14034 len = syncsearch(tls, (state + 140 /* &.have */), (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in) 14035 *(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (len) 14036 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len)) 14037 *(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(len)) 14038 14039 // return no joy or set up to restart inflate() on a new block 14040 if (*Inflate_state)(unsafe.Pointer(state)).Fhave != uint32(4) { 14041 return -3 14042 } 14043 in = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in 14044 out = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out 14045 XinflateReset(tls, strm) 14046 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = in 14047 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out = out 14048 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14049 return Z_OK 14050 } 14051 14052 // 14053 // Returns true if inflate is currently at the end of a block generated by 14054 // Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP 14055 // implementation to provide an additional safety check. PPP uses 14056 // Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored 14057 // block. When decompressing, PPP checks that at the end of input packet, 14058 // inflate is waiting for these length bytes. 14059 // 14060 func XinflateSyncPoint(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1451:13: */ 14061 var state uintptr 14062 14063 if inflateStateCheck(tls, strm) != 0 { 14064 return -2 14065 } 14066 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14067 return (libc.Bool32(((*Inflate_state)(unsafe.Pointer(state)).Fmode == STORED) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits == uint32(0)))) 14068 } 14069 14070 func XinflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* inflate.c:1461:13: */ 14071 var state uintptr 14072 var copy uintptr 14073 var window uintptr 14074 var wsize uint32 14075 14076 // check input 14077 if (inflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) { 14078 return -2 14079 } 14080 state = (*Z_stream)(unsafe.Pointer(source)).Fstate 14081 14082 // allocate space 14083 copy = (*struct { 14084 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 14085 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{}))) 14086 if copy == uintptr(Z_NULL) { 14087 return -4 14088 } 14089 window = uintptr(Z_NULL) 14090 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 14091 window = (*struct { 14092 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 14093 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0)))) 14094 if window == uintptr(Z_NULL) { 14095 (*struct { 14096 f func(*libc.TLS, Voidpf, Voidpf) 14097 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, copy) 14098 return -4 14099 } 14100 } 14101 14102 // copy state 14103 libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{}))) 14104 libc.Xmemcpy(tls, copy, state, uint64(unsafe.Sizeof(Inflate_state{}))) 14105 (*Inflate_state)(unsafe.Pointer(copy)).Fstrm = dest 14106 if ((*Inflate_state)(unsafe.Pointer(state)).Flencode >= state+1368 /* &.codes */) && ((*Inflate_state)(unsafe.Pointer(state)).Flencode <= (((state + 1368 /* &.codes */) + uintptr((ENOUGH_LENS+ENOUGH_DISTS))*4) - uintptr(1)*4)) { 14107 (*Inflate_state)(unsafe.Pointer(copy)).Flencode = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Flencode-(state+1368 /* &.codes */))/4)))*4) 14108 (*Inflate_state)(unsafe.Pointer(copy)).Fdistcode = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Fdistcode-(state+1368 /* &.codes */))/4)))*4) 14109 } 14110 (*Inflate_state)(unsafe.Pointer(copy)).Fnext = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext-(state+1368 /* &.codes */))/4)))*4) 14111 if window != uintptr(Z_NULL) { 14112 wsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits) 14113 libc.Xmemcpy(tls, window, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64(wsize)) 14114 } 14115 (*Inflate_state)(unsafe.Pointer(copy)).Fwindow = window 14116 (*Z_stream)(unsafe.Pointer(dest)).Fstate = copy 14117 return Z_OK 14118 } 14119 14120 func XinflateUndermine(tls *libc.TLS, strm Z_streamp, subvert int32) int32 { /* inflate.c:1508:13: */ 14121 var state uintptr 14122 14123 if inflateStateCheck(tls, strm) != 0 { 14124 return -2 14125 } 14126 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14127 _ = subvert 14128 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 14129 return -3 14130 } 14131 14132 func XinflateValidate(tls *libc.TLS, strm Z_streamp, check int32) int32 { /* inflate.c:1526:13: */ 14133 var state uintptr 14134 14135 if inflateStateCheck(tls, strm) != 0 { 14136 return -2 14137 } 14138 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14139 if check != 0 { 14140 *(*int32)(unsafe.Pointer(state + 16 /* &.wrap */)) |= (4) 14141 } else { 14142 *(*int32)(unsafe.Pointer(state + 16 /* &.wrap */)) &= (libc.CplInt32(4)) 14143 } 14144 return Z_OK 14145 } 14146 14147 func XinflateMark(tls *libc.TLS, strm Z_streamp) int64 { /* inflate.c:1541:14: */ 14148 var state uintptr 14149 14150 if inflateStateCheck(tls, strm) != 0 { 14151 return -(int64(1) << 16) 14152 } 14153 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14154 return ((int64((uint64(int64((*Inflate_state)(unsafe.Pointer(state)).Fback))) << 16)) + (func() int64 { 14155 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY { 14156 return int64((*Inflate_state)(unsafe.Pointer(state)).Flength) 14157 } 14158 return func() int64 { 14159 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == MATCH { 14160 return (int64((*Inflate_state)(unsafe.Pointer(state)).Fwas - (*Inflate_state)(unsafe.Pointer(state)).Flength)) 14161 } 14162 return int64(0) 14163 }() 14164 }())) 14165 } 14166 14167 func XinflateCodesUsed(tls *libc.TLS, strm Z_streamp) uint64 { /* inflate.c:1554:23: */ 14168 var state uintptr 14169 if inflateStateCheck(tls, strm) != 0 { 14170 return libc.Uint64(libc.Uint64FromInt32(-1)) 14171 } 14172 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 14173 return (uint64(int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext - (state + 1368 /* &.codes */)) / 4))) 14174 } 14175 14176 var Xinflate_copyright = *(*[48]int8)(unsafe.Pointer(ts + 828 /* " inflate 1.2.11 ..." */)) /* inftrees.c:11:12 */ 14177 14178 // 14179 // If you use the zlib library in a product, an acknowledgment is welcome 14180 // in the documentation of your product. If for some reason you cannot 14181 // include such an acknowledgment, I would appreciate that you keep this 14182 // copyright string in the executable of your product. 14183 // 14184 14185 // 14186 // Build a set of tables to decode the provided canonical Huffman code. 14187 // The code lengths are lens[0..codes-1]. The result starts at *table, 14188 // whose indices are 0..2^bits-1. work is a writable array of at least 14189 // lens shorts, which is used as a work area. type is the type of code 14190 // to be generated, CODES, LENS, or DISTS. On return, zero is success, 14191 // -1 is an invalid code, and +1 means that ENOUGH isn't enough. table 14192 // on return points to the next available entry's address. bits is the 14193 // requested root table index bits, and on return it is the actual root 14194 // table index bits. It will differ if the request is greater than the 14195 // longest code or if it is less than the shortest code. 14196 // 14197 func Xinflate_table(tls *libc.TLS, type1 Codetype, lens uintptr, codes uint32, table uintptr, bits uintptr, work uintptr) int32 { /* inftrees.c:32:19: */ 14198 bp := tls.Alloc(64) 14199 defer tls.Free(64) 14200 14201 var len uint32 // a code's length in bits 14202 var sym uint32 // index of code symbols 14203 var min uint32 14204 var max uint32 // minimum and maximum code lengths 14205 var root uint32 // number of index bits for root table 14206 var curr uint32 // number of index bits for current table 14207 var drop uint32 // code bits to drop for sub-table 14208 var left int32 // number of prefix codes available 14209 var used uint32 // code entries in table used 14210 var huff uint32 // Huffman code 14211 var incr uint32 // for incrementing code, index 14212 var fill uint32 // index for replicating entries 14213 var low uint32 // low bits for current root entry 14214 var mask uint32 // mask for low root bits 14215 var here Code // table entry for duplication 14216 var next uintptr // next available space in table 14217 var base uintptr // base value table to use 14218 var extra uintptr // extra bits table to use 14219 var match uint32 // use base and extra for symbol >= match 14220 // var count [16]uint16 at bp, 32 14221 // number of codes of each length 14222 // var offs [16]uint16 at bp+32, 32 14223 14224 // 14225 // Process a set of code lengths to create a canonical Huffman code. The 14226 // code lengths are lens[0..codes-1]. Each length corresponds to the 14227 // symbols 0..codes-1. The Huffman code is generated by first sorting the 14228 // symbols by length from short to long, and retaining the symbol order 14229 // for codes with equal lengths. Then the code starts with all zero bits 14230 // for the first code of the shortest length, and the codes are integer 14231 // increments for the same length, and zeros are appended as the length 14232 // increases. For the deflate format, these bits are stored backwards 14233 // from their more natural integer increment ordering, and so when the 14234 // decoding tables are built in the large loop below, the integer codes 14235 // are incremented backwards. 14236 // 14237 // This routine assumes, but does not check, that all of the entries in 14238 // lens[] are in the range 0..MAXBITS. The caller must assure this. 14239 // 1..MAXBITS is interpreted as that code length. zero means that that 14240 // symbol does not occur in this code. 14241 // 14242 // The codes are sorted by computing a count of codes for each length, 14243 // creating from that a table of starting indices for each length in the 14244 // sorted table, and then entering the symbols in order in the sorted 14245 // table. The sorted table is work[], with that space being provided by 14246 // the caller. 14247 // 14248 // The length counts are used for other purposes as well, i.e. finding 14249 // the minimum and maximum length codes, determining if there are any 14250 // codes at all, checking for a valid set of lengths, and looking ahead 14251 // at length counts to determine sub-table sizes when building the 14252 // decoding tables. 14253 // 14254 14255 // accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) 14256 for len = uint32(0); len <= uint32(MAXBITS); len++ { 14257 *(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)) = uint16(0) 14258 } 14259 for sym = uint32(0); sym < codes; sym++ { 14260 *(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2))++ 14261 } 14262 14263 // bound code lengths, force root to be within code lengths 14264 root = *(*uint32)(unsafe.Pointer(bits)) 14265 for max = uint32(MAXBITS); max >= uint32(1); max-- { 14266 if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(max)*2))) != 0 { 14267 break 14268 } 14269 } 14270 if root > max { 14271 root = max 14272 } 14273 if max == uint32(0) { // no symbols to code at all 14274 here.Fop = uint8(64) // invalid code marker 14275 here.Fbits = uint8(1) 14276 here.Fval = uint16(0) 14277 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here // make a table to force an error 14278 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here 14279 *(*uint32)(unsafe.Pointer(bits)) = uint32(1) 14280 return 0 // no symbols, but wait for decoding to report error 14281 } 14282 for min = uint32(1); min < max; min++ { 14283 if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(min)*2))) != 0 { 14284 break 14285 } 14286 } 14287 if root < min { 14288 root = min 14289 } 14290 14291 // check for an over-subscribed or incomplete set of lengths 14292 left = 1 14293 for len = uint32(1); len <= uint32(MAXBITS); len++ { 14294 left <<= 1 14295 left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)))) 14296 if left < 0 { 14297 return -1 14298 } // over-subscribed 14299 } 14300 if (left > 0) && ((type1 == CODES) || (max != uint32(1))) { 14301 return -1 14302 } // incomplete set 14303 14304 // generate offsets into symbol table for each length for sorting 14305 *(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + 1*2)) = uint16(0) 14306 for len = uint32(1); len < uint32(MAXBITS); len++ { 14307 *(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr((len+uint32(1)))*2)) = (uint16(int32(*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(len)*2))) + int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))))) 14308 } 14309 14310 // sort symbols by length, by symbol order within each length 14311 for sym = uint32(0); sym < codes; sym++ { 14312 if int32(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2))) != 0 { 14313 *(*uint16)(unsafe.Pointer(work + uintptr(libc.PostIncUint16(&*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2)), 1))*2)) = uint16(sym) 14314 } 14315 } 14316 14317 // 14318 // Create and fill in decoding tables. In this loop, the table being 14319 // filled is at next and has curr index bits. The code being used is huff 14320 // with length len. That code is converted to an index by dropping drop 14321 // bits off of the bottom. For codes where len is less than drop + curr, 14322 // those top drop + curr - len bits are incremented through all values to 14323 // fill the table with replicated entries. 14324 // 14325 // root is the number of index bits for the root table. When len exceeds 14326 // root, sub-tables are created pointed to by the root entry with an index 14327 // of the low root bits of huff. This is saved in low to check for when a 14328 // new sub-table should be started. drop is zero when the root table is 14329 // being filled, and drop is root when sub-tables are being filled. 14330 // 14331 // When a new sub-table is needed, it is necessary to look ahead in the 14332 // code lengths to determine what size sub-table is needed. The length 14333 // counts are used for this, and so count[] is decremented as codes are 14334 // entered in the tables. 14335 // 14336 // used keeps track of how many table entries have been allocated from the 14337 // provided *table space. It is checked for LENS and DIST tables against 14338 // the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in 14339 // the initial root table size constants. See the comments in inftrees.h 14340 // for more information. 14341 // 14342 // sym increments through all symbols, and the loop terminates when 14343 // all codes of length max, i.e. all codes, have been processed. This 14344 // routine permits incomplete codes, so another loop after this one fills 14345 // in the rest of the decoding tables with invalid code markers. 14346 // 14347 14348 // set up for code type 14349 switch type1 { 14350 case CODES: 14351 base = libc.AssignUintptr(&extra, work) // dummy value--not used 14352 match = uint32(20) 14353 break 14354 case LENS: 14355 base = uintptr(unsafe.Pointer(&lbase)) 14356 extra = uintptr(unsafe.Pointer(&lext)) 14357 match = uint32(257) 14358 break 14359 default: // DISTS 14360 base = uintptr(unsafe.Pointer(&dbase)) 14361 extra = uintptr(unsafe.Pointer(&dext)) 14362 match = uint32(0) 14363 } 14364 14365 // initialize state for loop 14366 huff = uint32(0) // starting code 14367 sym = uint32(0) // starting code symbol 14368 len = min // starting code length 14369 next = *(*uintptr)(unsafe.Pointer(table)) // current table to fill in 14370 curr = root // current table index bits 14371 drop = uint32(0) // current bits to drop from code for index 14372 low = libc.Uint32(libc.Uint32FromInt32(-1)) // trigger new sub-table when len > root 14373 used = (uint32(1) << root) // use root table entries 14374 mask = (used - uint32(1)) // mask for comparing low 14375 14376 // check available table space 14377 if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) { 14378 return 1 14379 } 14380 14381 // process all codes and make table entries 14382 for { 14383 // create table entry 14384 here.Fbits = (uint8(len - drop)) 14385 if (uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) + 1) < match { 14386 here.Fop = uint8(0) 14387 here.Fval = *(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)) 14388 } else if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) >= match { 14389 here.Fop = uint8(*(*uint16)(unsafe.Pointer(extra + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2))) 14390 here.Fval = *(*uint16)(unsafe.Pointer(base + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2)) 14391 } else { 14392 here.Fop = (uint8(32 + 64)) // end of block 14393 here.Fval = uint16(0) 14394 } 14395 14396 // replicate for those indices with low len bits equal to huff 14397 incr = (uint32(1) << (len - drop)) 14398 fill = (uint32(1) << curr) 14399 min = fill // save offset to next table 14400 for ok := true; ok; ok = (fill != uint32(0)) { 14401 fill = fill - (incr) 14402 *(*Code)(unsafe.Pointer(next + uintptr(((huff>>drop)+fill))*4)) = here 14403 } 14404 14405 // backwards increment the len-bit code huff 14406 incr = (uint32(1) << (len - uint32(1))) 14407 for (huff & incr) != 0 { 14408 incr >>= 1 14409 } 14410 if incr != uint32(0) { 14411 huff = huff & (incr - uint32(1)) 14412 huff = huff + (incr) 14413 } else { 14414 huff = uint32(0) 14415 } 14416 14417 // go to next symbol, update count, len 14418 sym++ 14419 if int32(libc.PreDecUint16(&(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))), 1)) == 0 { 14420 if len == max { 14421 break 14422 } 14423 len = uint32(*(*uint16)(unsafe.Pointer(lens + uintptr(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))*2))) 14424 } 14425 14426 // create new sub-table if needed 14427 if (len > root) && ((huff & mask) != low) { 14428 // if first time, transition to sub-tables 14429 if drop == uint32(0) { 14430 drop = root 14431 } 14432 14433 // increment past last table 14434 next += 4 * (uintptr(min)) // here min is 1 << curr 14435 14436 // determine length of next table 14437 curr = (len - drop) 14438 left = (int32(1) << curr) 14439 for (curr + drop) < max { 14440 left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr((curr+drop))*2)))) 14441 if left <= 0 { 14442 break 14443 } 14444 curr++ 14445 left <<= 1 14446 } 14447 14448 // check for enough space 14449 used = used + (uint32(1) << curr) 14450 if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) { 14451 return 1 14452 } 14453 14454 // point entry in root table to sub-table 14455 low = (huff & mask) 14456 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fop = uint8(curr) 14457 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fbits = uint8(root) 14458 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fval = (uint16((int64(next) - int64(*(*uintptr)(unsafe.Pointer(table)))) / 4)) 14459 } 14460 } 14461 14462 // fill in remaining table entry if code is incomplete (guaranteed to have 14463 // at most one remaining entry, since if the code is incomplete, the 14464 // maximum code length that was allowed to get this far is one bit) 14465 if huff != uint32(0) { 14466 here.Fop = uint8(64) // invalid code marker 14467 here.Fbits = (uint8(len - drop)) 14468 here.Fval = uint16(0) 14469 *(*Code)(unsafe.Pointer(next + uintptr(huff)*4)) = here 14470 } 14471 14472 // set return parameters 14473 *(*uintptr)(unsafe.Pointer(table)) += (uintptr(used)) * 4 14474 *(*uint32)(unsafe.Pointer(bits)) = root 14475 return 0 14476 } 14477 14478 var lbase = [31]uint16{ // Length codes 257..285 base 14479 uint16(3), uint16(4), uint16(5), uint16(6), uint16(7), uint16(8), uint16(9), uint16(10), uint16(11), uint16(13), uint16(15), uint16(17), uint16(19), uint16(23), uint16(27), uint16(31), 14480 uint16(35), uint16(43), uint16(51), uint16(59), uint16(67), uint16(83), uint16(99), uint16(115), uint16(131), uint16(163), uint16(195), uint16(227), uint16(258), uint16(0), uint16(0)} /* inftrees.c:60:33 */ 14481 var lext = [31]uint16{ // Length codes 257..285 extra 14482 uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(17), uint16(17), uint16(18), uint16(18), uint16(18), uint16(18), 14483 uint16(19), uint16(19), uint16(19), uint16(19), uint16(20), uint16(20), uint16(20), uint16(20), uint16(21), uint16(21), uint16(21), uint16(21), uint16(16), uint16(77), uint16(202)} /* inftrees.c:63:33 */ 14484 var dbase = [32]uint16{ // Distance codes 0..29 base 14485 uint16(1), uint16(2), uint16(3), uint16(4), uint16(5), uint16(7), uint16(9), uint16(13), uint16(17), uint16(25), uint16(33), uint16(49), uint16(65), uint16(97), uint16(129), uint16(193), 14486 uint16(257), uint16(385), uint16(513), uint16(769), uint16(1025), uint16(1537), uint16(2049), uint16(3073), uint16(4097), uint16(6145), 14487 uint16(8193), uint16(12289), uint16(16385), uint16(24577), uint16(0), uint16(0)} /* inftrees.c:66:33 */ 14488 var dext = [32]uint16{ // Distance codes 0..29 extra 14489 uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(18), uint16(18), uint16(19), uint16(19), uint16(20), uint16(20), uint16(21), uint16(21), uint16(22), uint16(22), 14490 uint16(23), uint16(23), uint16(24), uint16(24), uint16(25), uint16(25), uint16(26), uint16(26), uint16(27), uint16(27), 14491 uint16(28), uint16(28), uint16(29), uint16(29), uint16(64), uint16(64)} /* inftrees.c:70:33 */ 14492 14493 type Static_tree_desc = Static_tree_desc_s /* deflate.h:84:36 */ 14494 14495 // =========================================================================== 14496 // Constants 14497 14498 // Bit length codes must not exceed MAX_BL_BITS bits 14499 14500 // end of block literal code 14501 14502 // repeat previous bit length 3-6 times (2 bits of repeat count) 14503 14504 // repeat a zero length 3-10 times (3 bits of repeat count) 14505 14506 // repeat a zero length 11-138 times (7 bits of repeat count) 14507 14508 var extra_lbits = [29]int32{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0} /* trees.c:62:17 */ 14509 14510 var extra_dbits = [30]int32{0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13} /* trees.c:65:17 */ 14511 14512 var extra_blbits = [19]int32{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7} /* trees.c:68:17 */ 14513 14514 var bl_order = [19]Uch{Uch(16), Uch(17), Uch(18), Uch(0), Uch(8), Uch(7), Uch(9), Uch(6), Uch(10), Uch(5), Uch(11), Uch(4), Uch(12), Uch(3), Uch(13), Uch(2), Uch(14), Uch(1), Uch(15)} /* trees.c:71:17 */ 14515 // The lengths of the bit length codes are sent in order of decreasing 14516 // probability, to avoid transmitting the lengths for unused bit length codes. 14517 14518 // =========================================================================== 14519 // Local data. These are initialized only once. 14520 14521 // header created automatically with -DGEN_TREES_H 14522 14523 var static_ltree = [288]Ct_data{{Ffc: func() (r struct{ Ffreq Ush }) { 14524 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 14525 return r 14526 }(), Fdl: func() (r struct{ Fdad Ush }) { 14527 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14528 return r 14529 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14530 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(140) 14531 return r 14532 }(), Fdl: func() (r struct{ Fdad Ush }) { 14533 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14534 return r 14535 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14536 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(76) 14537 return r 14538 }(), Fdl: func() (r struct{ Fdad Ush }) { 14539 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14540 return r 14541 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14542 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(204) 14543 return r 14544 }(), Fdl: func() (r struct{ Fdad Ush }) { 14545 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14546 return r 14547 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14548 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(44) 14549 return r 14550 }(), Fdl: func() (r struct{ Fdad Ush }) { 14551 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14552 return r 14553 }()}, 14554 {Ffc: func() (r struct{ Ffreq Ush }) { 14555 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(172) 14556 return r 14557 }(), Fdl: func() (r struct{ Fdad Ush }) { 14558 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14559 return r 14560 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14561 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(108) 14562 return r 14563 }(), Fdl: func() (r struct{ Fdad Ush }) { 14564 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14565 return r 14566 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14567 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(236) 14568 return r 14569 }(), Fdl: func() (r struct{ Fdad Ush }) { 14570 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14571 return r 14572 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14573 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 14574 return r 14575 }(), Fdl: func() (r struct{ Fdad Ush }) { 14576 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14577 return r 14578 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14579 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(156) 14580 return r 14581 }(), Fdl: func() (r struct{ Fdad Ush }) { 14582 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14583 return r 14584 }()}, 14585 {Ffc: func() (r struct{ Ffreq Ush }) { 14586 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(92) 14587 return r 14588 }(), Fdl: func() (r struct{ Fdad Ush }) { 14589 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14590 return r 14591 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14592 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(220) 14593 return r 14594 }(), Fdl: func() (r struct{ Fdad Ush }) { 14595 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14596 return r 14597 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14598 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(60) 14599 return r 14600 }(), Fdl: func() (r struct{ Fdad Ush }) { 14601 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14602 return r 14603 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14604 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(188) 14605 return r 14606 }(), Fdl: func() (r struct{ Fdad Ush }) { 14607 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14608 return r 14609 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14610 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(124) 14611 return r 14612 }(), Fdl: func() (r struct{ Fdad Ush }) { 14613 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14614 return r 14615 }()}, 14616 {Ffc: func() (r struct{ Ffreq Ush }) { 14617 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(252) 14618 return r 14619 }(), Fdl: func() (r struct{ Fdad Ush }) { 14620 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14621 return r 14622 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14623 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 14624 return r 14625 }(), Fdl: func() (r struct{ Fdad Ush }) { 14626 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14627 return r 14628 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14629 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(130) 14630 return r 14631 }(), Fdl: func() (r struct{ Fdad Ush }) { 14632 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14633 return r 14634 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14635 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(66) 14636 return r 14637 }(), Fdl: func() (r struct{ Fdad Ush }) { 14638 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14639 return r 14640 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14641 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(194) 14642 return r 14643 }(), Fdl: func() (r struct{ Fdad Ush }) { 14644 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14645 return r 14646 }()}, 14647 {Ffc: func() (r struct{ Ffreq Ush }) { 14648 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(34) 14649 return r 14650 }(), Fdl: func() (r struct{ Fdad Ush }) { 14651 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14652 return r 14653 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14654 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(162) 14655 return r 14656 }(), Fdl: func() (r struct{ Fdad Ush }) { 14657 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14658 return r 14659 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14660 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(98) 14661 return r 14662 }(), Fdl: func() (r struct{ Fdad Ush }) { 14663 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14664 return r 14665 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14666 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(226) 14667 return r 14668 }(), Fdl: func() (r struct{ Fdad Ush }) { 14669 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14670 return r 14671 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14672 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 14673 return r 14674 }(), Fdl: func() (r struct{ Fdad Ush }) { 14675 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14676 return r 14677 }()}, 14678 {Ffc: func() (r struct{ Ffreq Ush }) { 14679 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(146) 14680 return r 14681 }(), Fdl: func() (r struct{ Fdad Ush }) { 14682 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14683 return r 14684 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14685 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(82) 14686 return r 14687 }(), Fdl: func() (r struct{ Fdad Ush }) { 14688 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14689 return r 14690 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14691 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(210) 14692 return r 14693 }(), Fdl: func() (r struct{ Fdad Ush }) { 14694 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14695 return r 14696 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14697 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(50) 14698 return r 14699 }(), Fdl: func() (r struct{ Fdad Ush }) { 14700 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14701 return r 14702 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14703 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(178) 14704 return r 14705 }(), Fdl: func() (r struct{ Fdad Ush }) { 14706 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14707 return r 14708 }()}, 14709 {Ffc: func() (r struct{ Ffreq Ush }) { 14710 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(114) 14711 return r 14712 }(), Fdl: func() (r struct{ Fdad Ush }) { 14713 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14714 return r 14715 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14716 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(242) 14717 return r 14718 }(), Fdl: func() (r struct{ Fdad Ush }) { 14719 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14720 return r 14721 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14722 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 14723 return r 14724 }(), Fdl: func() (r struct{ Fdad Ush }) { 14725 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14726 return r 14727 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14728 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(138) 14729 return r 14730 }(), Fdl: func() (r struct{ Fdad Ush }) { 14731 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14732 return r 14733 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14734 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(74) 14735 return r 14736 }(), Fdl: func() (r struct{ Fdad Ush }) { 14737 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14738 return r 14739 }()}, 14740 {Ffc: func() (r struct{ Ffreq Ush }) { 14741 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(202) 14742 return r 14743 }(), Fdl: func() (r struct{ Fdad Ush }) { 14744 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14745 return r 14746 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14747 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(42) 14748 return r 14749 }(), Fdl: func() (r struct{ Fdad Ush }) { 14750 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14751 return r 14752 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14753 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(170) 14754 return r 14755 }(), Fdl: func() (r struct{ Fdad Ush }) { 14756 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14757 return r 14758 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14759 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(106) 14760 return r 14761 }(), Fdl: func() (r struct{ Fdad Ush }) { 14762 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14763 return r 14764 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14765 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(234) 14766 return r 14767 }(), Fdl: func() (r struct{ Fdad Ush }) { 14768 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14769 return r 14770 }()}, 14771 {Ffc: func() (r struct{ Ffreq Ush }) { 14772 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 14773 return r 14774 }(), Fdl: func() (r struct{ Fdad Ush }) { 14775 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14776 return r 14777 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14778 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(154) 14779 return r 14780 }(), Fdl: func() (r struct{ Fdad Ush }) { 14781 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14782 return r 14783 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14784 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(90) 14785 return r 14786 }(), Fdl: func() (r struct{ Fdad Ush }) { 14787 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14788 return r 14789 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14790 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(218) 14791 return r 14792 }(), Fdl: func() (r struct{ Fdad Ush }) { 14793 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14794 return r 14795 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14796 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(58) 14797 return r 14798 }(), Fdl: func() (r struct{ Fdad Ush }) { 14799 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14800 return r 14801 }()}, 14802 {Ffc: func() (r struct{ Ffreq Ush }) { 14803 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(186) 14804 return r 14805 }(), Fdl: func() (r struct{ Fdad Ush }) { 14806 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14807 return r 14808 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14809 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(122) 14810 return r 14811 }(), Fdl: func() (r struct{ Fdad Ush }) { 14812 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14813 return r 14814 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14815 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(250) 14816 return r 14817 }(), Fdl: func() (r struct{ Fdad Ush }) { 14818 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14819 return r 14820 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14821 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 14822 return r 14823 }(), Fdl: func() (r struct{ Fdad Ush }) { 14824 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14825 return r 14826 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14827 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(134) 14828 return r 14829 }(), Fdl: func() (r struct{ Fdad Ush }) { 14830 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14831 return r 14832 }()}, 14833 {Ffc: func() (r struct{ Ffreq Ush }) { 14834 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(70) 14835 return r 14836 }(), Fdl: func() (r struct{ Fdad Ush }) { 14837 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14838 return r 14839 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14840 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(198) 14841 return r 14842 }(), Fdl: func() (r struct{ Fdad Ush }) { 14843 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14844 return r 14845 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14846 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(38) 14847 return r 14848 }(), Fdl: func() (r struct{ Fdad Ush }) { 14849 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14850 return r 14851 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14852 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(166) 14853 return r 14854 }(), Fdl: func() (r struct{ Fdad Ush }) { 14855 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14856 return r 14857 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14858 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(102) 14859 return r 14860 }(), Fdl: func() (r struct{ Fdad Ush }) { 14861 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14862 return r 14863 }()}, 14864 {Ffc: func() (r struct{ Ffreq Ush }) { 14865 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(230) 14866 return r 14867 }(), Fdl: func() (r struct{ Fdad Ush }) { 14868 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14869 return r 14870 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14871 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 14872 return r 14873 }(), Fdl: func() (r struct{ Fdad Ush }) { 14874 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14875 return r 14876 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14877 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(150) 14878 return r 14879 }(), Fdl: func() (r struct{ Fdad Ush }) { 14880 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14881 return r 14882 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14883 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(86) 14884 return r 14885 }(), Fdl: func() (r struct{ Fdad Ush }) { 14886 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14887 return r 14888 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14889 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(214) 14890 return r 14891 }(), Fdl: func() (r struct{ Fdad Ush }) { 14892 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14893 return r 14894 }()}, 14895 {Ffc: func() (r struct{ Ffreq Ush }) { 14896 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(54) 14897 return r 14898 }(), Fdl: func() (r struct{ Fdad Ush }) { 14899 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14900 return r 14901 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14902 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(182) 14903 return r 14904 }(), Fdl: func() (r struct{ Fdad Ush }) { 14905 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14906 return r 14907 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14908 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(118) 14909 return r 14910 }(), Fdl: func() (r struct{ Fdad Ush }) { 14911 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14912 return r 14913 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14914 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(246) 14915 return r 14916 }(), Fdl: func() (r struct{ Fdad Ush }) { 14917 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14918 return r 14919 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14920 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 14921 return r 14922 }(), Fdl: func() (r struct{ Fdad Ush }) { 14923 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14924 return r 14925 }()}, 14926 {Ffc: func() (r struct{ Ffreq Ush }) { 14927 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(142) 14928 return r 14929 }(), Fdl: func() (r struct{ Fdad Ush }) { 14930 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14931 return r 14932 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14933 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(78) 14934 return r 14935 }(), Fdl: func() (r struct{ Fdad Ush }) { 14936 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14937 return r 14938 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14939 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(206) 14940 return r 14941 }(), Fdl: func() (r struct{ Fdad Ush }) { 14942 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14943 return r 14944 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14945 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(46) 14946 return r 14947 }(), Fdl: func() (r struct{ Fdad Ush }) { 14948 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14949 return r 14950 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14951 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(174) 14952 return r 14953 }(), Fdl: func() (r struct{ Fdad Ush }) { 14954 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14955 return r 14956 }()}, 14957 {Ffc: func() (r struct{ Ffreq Ush }) { 14958 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(110) 14959 return r 14960 }(), Fdl: func() (r struct{ Fdad Ush }) { 14961 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14962 return r 14963 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14964 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(238) 14965 return r 14966 }(), Fdl: func() (r struct{ Fdad Ush }) { 14967 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14968 return r 14969 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14970 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 14971 return r 14972 }(), Fdl: func() (r struct{ Fdad Ush }) { 14973 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14974 return r 14975 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14976 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(158) 14977 return r 14978 }(), Fdl: func() (r struct{ Fdad Ush }) { 14979 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14980 return r 14981 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14982 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(94) 14983 return r 14984 }(), Fdl: func() (r struct{ Fdad Ush }) { 14985 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14986 return r 14987 }()}, 14988 {Ffc: func() (r struct{ Ffreq Ush }) { 14989 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(222) 14990 return r 14991 }(), Fdl: func() (r struct{ Fdad Ush }) { 14992 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14993 return r 14994 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 14995 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(62) 14996 return r 14997 }(), Fdl: func() (r struct{ Fdad Ush }) { 14998 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 14999 return r 15000 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15001 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(190) 15002 return r 15003 }(), Fdl: func() (r struct{ Fdad Ush }) { 15004 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15005 return r 15006 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15007 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(126) 15008 return r 15009 }(), Fdl: func() (r struct{ Fdad Ush }) { 15010 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15011 return r 15012 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15013 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(254) 15014 return r 15015 }(), Fdl: func() (r struct{ Fdad Ush }) { 15016 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15017 return r 15018 }()}, 15019 {Ffc: func() (r struct{ Ffreq Ush }) { 15020 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 15021 return r 15022 }(), Fdl: func() (r struct{ Fdad Ush }) { 15023 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15024 return r 15025 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15026 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(129) 15027 return r 15028 }(), Fdl: func() (r struct{ Fdad Ush }) { 15029 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15030 return r 15031 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15032 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(65) 15033 return r 15034 }(), Fdl: func() (r struct{ Fdad Ush }) { 15035 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15036 return r 15037 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15038 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(193) 15039 return r 15040 }(), Fdl: func() (r struct{ Fdad Ush }) { 15041 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15042 return r 15043 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15044 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(33) 15045 return r 15046 }(), Fdl: func() (r struct{ Fdad Ush }) { 15047 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15048 return r 15049 }()}, 15050 {Ffc: func() (r struct{ Ffreq Ush }) { 15051 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(161) 15052 return r 15053 }(), Fdl: func() (r struct{ Fdad Ush }) { 15054 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15055 return r 15056 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15057 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(97) 15058 return r 15059 }(), Fdl: func() (r struct{ Fdad Ush }) { 15060 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15061 return r 15062 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15063 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(225) 15064 return r 15065 }(), Fdl: func() (r struct{ Fdad Ush }) { 15066 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15067 return r 15068 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15069 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 15070 return r 15071 }(), Fdl: func() (r struct{ Fdad Ush }) { 15072 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15073 return r 15074 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15075 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(145) 15076 return r 15077 }(), Fdl: func() (r struct{ Fdad Ush }) { 15078 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15079 return r 15080 }()}, 15081 {Ffc: func() (r struct{ Ffreq Ush }) { 15082 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(81) 15083 return r 15084 }(), Fdl: func() (r struct{ Fdad Ush }) { 15085 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15086 return r 15087 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15088 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(209) 15089 return r 15090 }(), Fdl: func() (r struct{ Fdad Ush }) { 15091 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15092 return r 15093 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15094 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(49) 15095 return r 15096 }(), Fdl: func() (r struct{ Fdad Ush }) { 15097 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15098 return r 15099 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15100 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(177) 15101 return r 15102 }(), Fdl: func() (r struct{ Fdad Ush }) { 15103 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15104 return r 15105 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15106 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(113) 15107 return r 15108 }(), Fdl: func() (r struct{ Fdad Ush }) { 15109 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15110 return r 15111 }()}, 15112 {Ffc: func() (r struct{ Ffreq Ush }) { 15113 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(241) 15114 return r 15115 }(), Fdl: func() (r struct{ Fdad Ush }) { 15116 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15117 return r 15118 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15119 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15120 return r 15121 }(), Fdl: func() (r struct{ Fdad Ush }) { 15122 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15123 return r 15124 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15125 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(137) 15126 return r 15127 }(), Fdl: func() (r struct{ Fdad Ush }) { 15128 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15129 return r 15130 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15131 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(73) 15132 return r 15133 }(), Fdl: func() (r struct{ Fdad Ush }) { 15134 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15135 return r 15136 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15137 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(201) 15138 return r 15139 }(), Fdl: func() (r struct{ Fdad Ush }) { 15140 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15141 return r 15142 }()}, 15143 {Ffc: func() (r struct{ Ffreq Ush }) { 15144 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(41) 15145 return r 15146 }(), Fdl: func() (r struct{ Fdad Ush }) { 15147 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15148 return r 15149 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15150 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(169) 15151 return r 15152 }(), Fdl: func() (r struct{ Fdad Ush }) { 15153 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15154 return r 15155 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15156 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(105) 15157 return r 15158 }(), Fdl: func() (r struct{ Fdad Ush }) { 15159 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15160 return r 15161 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15162 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(233) 15163 return r 15164 }(), Fdl: func() (r struct{ Fdad Ush }) { 15165 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15166 return r 15167 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15168 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 15169 return r 15170 }(), Fdl: func() (r struct{ Fdad Ush }) { 15171 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15172 return r 15173 }()}, 15174 {Ffc: func() (r struct{ Ffreq Ush }) { 15175 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(153) 15176 return r 15177 }(), Fdl: func() (r struct{ Fdad Ush }) { 15178 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15179 return r 15180 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15181 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(89) 15182 return r 15183 }(), Fdl: func() (r struct{ Fdad Ush }) { 15184 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15185 return r 15186 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15187 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(217) 15188 return r 15189 }(), Fdl: func() (r struct{ Fdad Ush }) { 15190 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15191 return r 15192 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15193 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(57) 15194 return r 15195 }(), Fdl: func() (r struct{ Fdad Ush }) { 15196 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15197 return r 15198 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15199 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(185) 15200 return r 15201 }(), Fdl: func() (r struct{ Fdad Ush }) { 15202 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15203 return r 15204 }()}, 15205 {Ffc: func() (r struct{ Ffreq Ush }) { 15206 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(121) 15207 return r 15208 }(), Fdl: func() (r struct{ Fdad Ush }) { 15209 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15210 return r 15211 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15212 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(249) 15213 return r 15214 }(), Fdl: func() (r struct{ Fdad Ush }) { 15215 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15216 return r 15217 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15218 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 15219 return r 15220 }(), Fdl: func() (r struct{ Fdad Ush }) { 15221 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15222 return r 15223 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15224 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(133) 15225 return r 15226 }(), Fdl: func() (r struct{ Fdad Ush }) { 15227 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15228 return r 15229 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15230 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(69) 15231 return r 15232 }(), Fdl: func() (r struct{ Fdad Ush }) { 15233 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15234 return r 15235 }()}, 15236 {Ffc: func() (r struct{ Ffreq Ush }) { 15237 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(197) 15238 return r 15239 }(), Fdl: func() (r struct{ Fdad Ush }) { 15240 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15241 return r 15242 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15243 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(37) 15244 return r 15245 }(), Fdl: func() (r struct{ Fdad Ush }) { 15246 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15247 return r 15248 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15249 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(165) 15250 return r 15251 }(), Fdl: func() (r struct{ Fdad Ush }) { 15252 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15253 return r 15254 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15255 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(101) 15256 return r 15257 }(), Fdl: func() (r struct{ Fdad Ush }) { 15258 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15259 return r 15260 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15261 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(229) 15262 return r 15263 }(), Fdl: func() (r struct{ Fdad Ush }) { 15264 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15265 return r 15266 }()}, 15267 {Ffc: func() (r struct{ Ffreq Ush }) { 15268 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 15269 return r 15270 }(), Fdl: func() (r struct{ Fdad Ush }) { 15271 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15272 return r 15273 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15274 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(149) 15275 return r 15276 }(), Fdl: func() (r struct{ Fdad Ush }) { 15277 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15278 return r 15279 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15280 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(85) 15281 return r 15282 }(), Fdl: func() (r struct{ Fdad Ush }) { 15283 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15284 return r 15285 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15286 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(213) 15287 return r 15288 }(), Fdl: func() (r struct{ Fdad Ush }) { 15289 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15290 return r 15291 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15292 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(53) 15293 return r 15294 }(), Fdl: func() (r struct{ Fdad Ush }) { 15295 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15296 return r 15297 }()}, 15298 {Ffc: func() (r struct{ Ffreq Ush }) { 15299 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(181) 15300 return r 15301 }(), Fdl: func() (r struct{ Fdad Ush }) { 15302 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15303 return r 15304 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15305 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(117) 15306 return r 15307 }(), Fdl: func() (r struct{ Fdad Ush }) { 15308 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15309 return r 15310 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15311 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(245) 15312 return r 15313 }(), Fdl: func() (r struct{ Fdad Ush }) { 15314 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15315 return r 15316 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15317 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 15318 return r 15319 }(), Fdl: func() (r struct{ Fdad Ush }) { 15320 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15321 return r 15322 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15323 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(141) 15324 return r 15325 }(), Fdl: func() (r struct{ Fdad Ush }) { 15326 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15327 return r 15328 }()}, 15329 {Ffc: func() (r struct{ Ffreq Ush }) { 15330 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(77) 15331 return r 15332 }(), Fdl: func() (r struct{ Fdad Ush }) { 15333 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15334 return r 15335 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15336 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(205) 15337 return r 15338 }(), Fdl: func() (r struct{ Fdad Ush }) { 15339 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15340 return r 15341 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15342 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(45) 15343 return r 15344 }(), Fdl: func() (r struct{ Fdad Ush }) { 15345 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15346 return r 15347 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15348 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(173) 15349 return r 15350 }(), Fdl: func() (r struct{ Fdad Ush }) { 15351 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15352 return r 15353 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15354 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(109) 15355 return r 15356 }(), Fdl: func() (r struct{ Fdad Ush }) { 15357 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15358 return r 15359 }()}, 15360 {Ffc: func() (r struct{ Ffreq Ush }) { 15361 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(237) 15362 return r 15363 }(), Fdl: func() (r struct{ Fdad Ush }) { 15364 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15365 return r 15366 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15367 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 15368 return r 15369 }(), Fdl: func() (r struct{ Fdad Ush }) { 15370 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15371 return r 15372 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15373 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(157) 15374 return r 15375 }(), Fdl: func() (r struct{ Fdad Ush }) { 15376 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15377 return r 15378 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15379 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(93) 15380 return r 15381 }(), Fdl: func() (r struct{ Fdad Ush }) { 15382 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15383 return r 15384 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15385 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(221) 15386 return r 15387 }(), Fdl: func() (r struct{ Fdad Ush }) { 15388 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15389 return r 15390 }()}, 15391 {Ffc: func() (r struct{ Ffreq Ush }) { 15392 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(61) 15393 return r 15394 }(), Fdl: func() (r struct{ Fdad Ush }) { 15395 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15396 return r 15397 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15398 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(189) 15399 return r 15400 }(), Fdl: func() (r struct{ Fdad Ush }) { 15401 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15402 return r 15403 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15404 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(125) 15405 return r 15406 }(), Fdl: func() (r struct{ Fdad Ush }) { 15407 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15408 return r 15409 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15410 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(253) 15411 return r 15412 }(), Fdl: func() (r struct{ Fdad Ush }) { 15413 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15414 return r 15415 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15416 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 15417 return r 15418 }(), Fdl: func() (r struct{ Fdad Ush }) { 15419 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15420 return r 15421 }()}, 15422 {Ffc: func() (r struct{ Ffreq Ush }) { 15423 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(275) 15424 return r 15425 }(), Fdl: func() (r struct{ Fdad Ush }) { 15426 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15427 return r 15428 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15429 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(147) 15430 return r 15431 }(), Fdl: func() (r struct{ Fdad Ush }) { 15432 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15433 return r 15434 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15435 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(403) 15436 return r 15437 }(), Fdl: func() (r struct{ Fdad Ush }) { 15438 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15439 return r 15440 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15441 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(83) 15442 return r 15443 }(), Fdl: func() (r struct{ Fdad Ush }) { 15444 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15445 return r 15446 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15447 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(339) 15448 return r 15449 }(), Fdl: func() (r struct{ Fdad Ush }) { 15450 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15451 return r 15452 }()}, 15453 {Ffc: func() (r struct{ Ffreq Ush }) { 15454 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(211) 15455 return r 15456 }(), Fdl: func() (r struct{ Fdad Ush }) { 15457 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15458 return r 15459 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15460 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(467) 15461 return r 15462 }(), Fdl: func() (r struct{ Fdad Ush }) { 15463 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15464 return r 15465 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15466 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(51) 15467 return r 15468 }(), Fdl: func() (r struct{ Fdad Ush }) { 15469 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15470 return r 15471 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15472 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(307) 15473 return r 15474 }(), Fdl: func() (r struct{ Fdad Ush }) { 15475 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15476 return r 15477 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15478 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(179) 15479 return r 15480 }(), Fdl: func() (r struct{ Fdad Ush }) { 15481 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15482 return r 15483 }()}, 15484 {Ffc: func() (r struct{ Ffreq Ush }) { 15485 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(435) 15486 return r 15487 }(), Fdl: func() (r struct{ Fdad Ush }) { 15488 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15489 return r 15490 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15491 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(115) 15492 return r 15493 }(), Fdl: func() (r struct{ Fdad Ush }) { 15494 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15495 return r 15496 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15497 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(371) 15498 return r 15499 }(), Fdl: func() (r struct{ Fdad Ush }) { 15500 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15501 return r 15502 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15503 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(243) 15504 return r 15505 }(), Fdl: func() (r struct{ Fdad Ush }) { 15506 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15507 return r 15508 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15509 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(499) 15510 return r 15511 }(), Fdl: func() (r struct{ Fdad Ush }) { 15512 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15513 return r 15514 }()}, 15515 {Ffc: func() (r struct{ Ffreq Ush }) { 15516 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 15517 return r 15518 }(), Fdl: func() (r struct{ Fdad Ush }) { 15519 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15520 return r 15521 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15522 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(267) 15523 return r 15524 }(), Fdl: func() (r struct{ Fdad Ush }) { 15525 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15526 return r 15527 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15528 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(139) 15529 return r 15530 }(), Fdl: func() (r struct{ Fdad Ush }) { 15531 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15532 return r 15533 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15534 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(395) 15535 return r 15536 }(), Fdl: func() (r struct{ Fdad Ush }) { 15537 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15538 return r 15539 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15540 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(75) 15541 return r 15542 }(), Fdl: func() (r struct{ Fdad Ush }) { 15543 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15544 return r 15545 }()}, 15546 {Ffc: func() (r struct{ Ffreq Ush }) { 15547 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(331) 15548 return r 15549 }(), Fdl: func() (r struct{ Fdad Ush }) { 15550 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15551 return r 15552 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15553 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(203) 15554 return r 15555 }(), Fdl: func() (r struct{ Fdad Ush }) { 15556 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15557 return r 15558 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15559 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(459) 15560 return r 15561 }(), Fdl: func() (r struct{ Fdad Ush }) { 15562 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15563 return r 15564 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15565 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(43) 15566 return r 15567 }(), Fdl: func() (r struct{ Fdad Ush }) { 15568 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15569 return r 15570 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15571 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(299) 15572 return r 15573 }(), Fdl: func() (r struct{ Fdad Ush }) { 15574 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15575 return r 15576 }()}, 15577 {Ffc: func() (r struct{ Ffreq Ush }) { 15578 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(171) 15579 return r 15580 }(), Fdl: func() (r struct{ Fdad Ush }) { 15581 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15582 return r 15583 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15584 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(427) 15585 return r 15586 }(), Fdl: func() (r struct{ Fdad Ush }) { 15587 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15588 return r 15589 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15590 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(107) 15591 return r 15592 }(), Fdl: func() (r struct{ Fdad Ush }) { 15593 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15594 return r 15595 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15596 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(363) 15597 return r 15598 }(), Fdl: func() (r struct{ Fdad Ush }) { 15599 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15600 return r 15601 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15602 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(235) 15603 return r 15604 }(), Fdl: func() (r struct{ Fdad Ush }) { 15605 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15606 return r 15607 }()}, 15608 {Ffc: func() (r struct{ Ffreq Ush }) { 15609 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(491) 15610 return r 15611 }(), Fdl: func() (r struct{ Fdad Ush }) { 15612 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15613 return r 15614 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15615 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 15616 return r 15617 }(), Fdl: func() (r struct{ Fdad Ush }) { 15618 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15619 return r 15620 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15621 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(283) 15622 return r 15623 }(), Fdl: func() (r struct{ Fdad Ush }) { 15624 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15625 return r 15626 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15627 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(155) 15628 return r 15629 }(), Fdl: func() (r struct{ Fdad Ush }) { 15630 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15631 return r 15632 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15633 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(411) 15634 return r 15635 }(), Fdl: func() (r struct{ Fdad Ush }) { 15636 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15637 return r 15638 }()}, 15639 {Ffc: func() (r struct{ Ffreq Ush }) { 15640 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(91) 15641 return r 15642 }(), Fdl: func() (r struct{ Fdad Ush }) { 15643 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15644 return r 15645 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15646 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(347) 15647 return r 15648 }(), Fdl: func() (r struct{ Fdad Ush }) { 15649 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15650 return r 15651 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15652 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(219) 15653 return r 15654 }(), Fdl: func() (r struct{ Fdad Ush }) { 15655 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15656 return r 15657 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15658 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(475) 15659 return r 15660 }(), Fdl: func() (r struct{ Fdad Ush }) { 15661 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15662 return r 15663 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15664 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(59) 15665 return r 15666 }(), Fdl: func() (r struct{ Fdad Ush }) { 15667 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15668 return r 15669 }()}, 15670 {Ffc: func() (r struct{ Ffreq Ush }) { 15671 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(315) 15672 return r 15673 }(), Fdl: func() (r struct{ Fdad Ush }) { 15674 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15675 return r 15676 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15677 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(187) 15678 return r 15679 }(), Fdl: func() (r struct{ Fdad Ush }) { 15680 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15681 return r 15682 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15683 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(443) 15684 return r 15685 }(), Fdl: func() (r struct{ Fdad Ush }) { 15686 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15687 return r 15688 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15689 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(123) 15690 return r 15691 }(), Fdl: func() (r struct{ Fdad Ush }) { 15692 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15693 return r 15694 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15695 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(379) 15696 return r 15697 }(), Fdl: func() (r struct{ Fdad Ush }) { 15698 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15699 return r 15700 }()}, 15701 {Ffc: func() (r struct{ Ffreq Ush }) { 15702 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(251) 15703 return r 15704 }(), Fdl: func() (r struct{ Fdad Ush }) { 15705 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15706 return r 15707 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15708 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(507) 15709 return r 15710 }(), Fdl: func() (r struct{ Fdad Ush }) { 15711 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15712 return r 15713 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15714 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 15715 return r 15716 }(), Fdl: func() (r struct{ Fdad Ush }) { 15717 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15718 return r 15719 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15720 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(263) 15721 return r 15722 }(), Fdl: func() (r struct{ Fdad Ush }) { 15723 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15724 return r 15725 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15726 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(135) 15727 return r 15728 }(), Fdl: func() (r struct{ Fdad Ush }) { 15729 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15730 return r 15731 }()}, 15732 {Ffc: func() (r struct{ Ffreq Ush }) { 15733 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(391) 15734 return r 15735 }(), Fdl: func() (r struct{ Fdad Ush }) { 15736 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15737 return r 15738 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15739 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(71) 15740 return r 15741 }(), Fdl: func() (r struct{ Fdad Ush }) { 15742 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15743 return r 15744 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15745 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(327) 15746 return r 15747 }(), Fdl: func() (r struct{ Fdad Ush }) { 15748 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15749 return r 15750 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15751 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(199) 15752 return r 15753 }(), Fdl: func() (r struct{ Fdad Ush }) { 15754 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15755 return r 15756 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15757 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(455) 15758 return r 15759 }(), Fdl: func() (r struct{ Fdad Ush }) { 15760 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15761 return r 15762 }()}, 15763 {Ffc: func() (r struct{ Ffreq Ush }) { 15764 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(39) 15765 return r 15766 }(), Fdl: func() (r struct{ Fdad Ush }) { 15767 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15768 return r 15769 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15770 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(295) 15771 return r 15772 }(), Fdl: func() (r struct{ Fdad Ush }) { 15773 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15774 return r 15775 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15776 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(167) 15777 return r 15778 }(), Fdl: func() (r struct{ Fdad Ush }) { 15779 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15780 return r 15781 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15782 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(423) 15783 return r 15784 }(), Fdl: func() (r struct{ Fdad Ush }) { 15785 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15786 return r 15787 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15788 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(103) 15789 return r 15790 }(), Fdl: func() (r struct{ Fdad Ush }) { 15791 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15792 return r 15793 }()}, 15794 {Ffc: func() (r struct{ Ffreq Ush }) { 15795 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(359) 15796 return r 15797 }(), Fdl: func() (r struct{ Fdad Ush }) { 15798 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15799 return r 15800 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15801 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(231) 15802 return r 15803 }(), Fdl: func() (r struct{ Fdad Ush }) { 15804 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15805 return r 15806 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15807 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(487) 15808 return r 15809 }(), Fdl: func() (r struct{ Fdad Ush }) { 15810 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15811 return r 15812 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15813 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 15814 return r 15815 }(), Fdl: func() (r struct{ Fdad Ush }) { 15816 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15817 return r 15818 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15819 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(279) 15820 return r 15821 }(), Fdl: func() (r struct{ Fdad Ush }) { 15822 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15823 return r 15824 }()}, 15825 {Ffc: func() (r struct{ Ffreq Ush }) { 15826 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(151) 15827 return r 15828 }(), Fdl: func() (r struct{ Fdad Ush }) { 15829 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15830 return r 15831 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15832 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(407) 15833 return r 15834 }(), Fdl: func() (r struct{ Fdad Ush }) { 15835 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15836 return r 15837 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15838 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(87) 15839 return r 15840 }(), Fdl: func() (r struct{ Fdad Ush }) { 15841 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15842 return r 15843 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15844 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(343) 15845 return r 15846 }(), Fdl: func() (r struct{ Fdad Ush }) { 15847 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15848 return r 15849 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15850 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(215) 15851 return r 15852 }(), Fdl: func() (r struct{ Fdad Ush }) { 15853 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15854 return r 15855 }()}, 15856 {Ffc: func() (r struct{ Ffreq Ush }) { 15857 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(471) 15858 return r 15859 }(), Fdl: func() (r struct{ Fdad Ush }) { 15860 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15861 return r 15862 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15863 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(55) 15864 return r 15865 }(), Fdl: func() (r struct{ Fdad Ush }) { 15866 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15867 return r 15868 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15869 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(311) 15870 return r 15871 }(), Fdl: func() (r struct{ Fdad Ush }) { 15872 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15873 return r 15874 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15875 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(183) 15876 return r 15877 }(), Fdl: func() (r struct{ Fdad Ush }) { 15878 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15879 return r 15880 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15881 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(439) 15882 return r 15883 }(), Fdl: func() (r struct{ Fdad Ush }) { 15884 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15885 return r 15886 }()}, 15887 {Ffc: func() (r struct{ Ffreq Ush }) { 15888 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(119) 15889 return r 15890 }(), Fdl: func() (r struct{ Fdad Ush }) { 15891 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15892 return r 15893 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15894 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(375) 15895 return r 15896 }(), Fdl: func() (r struct{ Fdad Ush }) { 15897 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15898 return r 15899 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15900 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(247) 15901 return r 15902 }(), Fdl: func() (r struct{ Fdad Ush }) { 15903 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15904 return r 15905 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15906 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(503) 15907 return r 15908 }(), Fdl: func() (r struct{ Fdad Ush }) { 15909 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15910 return r 15911 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15912 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(15) 15913 return r 15914 }(), Fdl: func() (r struct{ Fdad Ush }) { 15915 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15916 return r 15917 }()}, 15918 {Ffc: func() (r struct{ Ffreq Ush }) { 15919 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(271) 15920 return r 15921 }(), Fdl: func() (r struct{ Fdad Ush }) { 15922 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15923 return r 15924 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15925 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(143) 15926 return r 15927 }(), Fdl: func() (r struct{ Fdad Ush }) { 15928 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15929 return r 15930 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15931 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(399) 15932 return r 15933 }(), Fdl: func() (r struct{ Fdad Ush }) { 15934 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15935 return r 15936 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15937 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(79) 15938 return r 15939 }(), Fdl: func() (r struct{ Fdad Ush }) { 15940 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15941 return r 15942 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15943 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(335) 15944 return r 15945 }(), Fdl: func() (r struct{ Fdad Ush }) { 15946 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15947 return r 15948 }()}, 15949 {Ffc: func() (r struct{ Ffreq Ush }) { 15950 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(207) 15951 return r 15952 }(), Fdl: func() (r struct{ Fdad Ush }) { 15953 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15954 return r 15955 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15956 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(463) 15957 return r 15958 }(), Fdl: func() (r struct{ Fdad Ush }) { 15959 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15960 return r 15961 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15962 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(47) 15963 return r 15964 }(), Fdl: func() (r struct{ Fdad Ush }) { 15965 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15966 return r 15967 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15968 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(303) 15969 return r 15970 }(), Fdl: func() (r struct{ Fdad Ush }) { 15971 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15972 return r 15973 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15974 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(175) 15975 return r 15976 }(), Fdl: func() (r struct{ Fdad Ush }) { 15977 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15978 return r 15979 }()}, 15980 {Ffc: func() (r struct{ Ffreq Ush }) { 15981 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(431) 15982 return r 15983 }(), Fdl: func() (r struct{ Fdad Ush }) { 15984 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15985 return r 15986 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15987 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(111) 15988 return r 15989 }(), Fdl: func() (r struct{ Fdad Ush }) { 15990 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15991 return r 15992 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15993 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(367) 15994 return r 15995 }(), Fdl: func() (r struct{ Fdad Ush }) { 15996 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 15997 return r 15998 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15999 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(239) 16000 return r 16001 }(), Fdl: func() (r struct{ Fdad Ush }) { 16002 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16003 return r 16004 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16005 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(495) 16006 return r 16007 }(), Fdl: func() (r struct{ Fdad Ush }) { 16008 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16009 return r 16010 }()}, 16011 {Ffc: func() (r struct{ Ffreq Ush }) { 16012 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(31) 16013 return r 16014 }(), Fdl: func() (r struct{ Fdad Ush }) { 16015 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16016 return r 16017 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16018 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(287) 16019 return r 16020 }(), Fdl: func() (r struct{ Fdad Ush }) { 16021 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16022 return r 16023 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16024 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(159) 16025 return r 16026 }(), Fdl: func() (r struct{ Fdad Ush }) { 16027 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16028 return r 16029 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16030 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(415) 16031 return r 16032 }(), Fdl: func() (r struct{ Fdad Ush }) { 16033 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16034 return r 16035 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16036 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(95) 16037 return r 16038 }(), Fdl: func() (r struct{ Fdad Ush }) { 16039 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16040 return r 16041 }()}, 16042 {Ffc: func() (r struct{ Ffreq Ush }) { 16043 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(351) 16044 return r 16045 }(), Fdl: func() (r struct{ Fdad Ush }) { 16046 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16047 return r 16048 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16049 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(223) 16050 return r 16051 }(), Fdl: func() (r struct{ Fdad Ush }) { 16052 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16053 return r 16054 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16055 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(479) 16056 return r 16057 }(), Fdl: func() (r struct{ Fdad Ush }) { 16058 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16059 return r 16060 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16061 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(63) 16062 return r 16063 }(), Fdl: func() (r struct{ Fdad Ush }) { 16064 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16065 return r 16066 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16067 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(319) 16068 return r 16069 }(), Fdl: func() (r struct{ Fdad Ush }) { 16070 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16071 return r 16072 }()}, 16073 {Ffc: func() (r struct{ Ffreq Ush }) { 16074 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(191) 16075 return r 16076 }(), Fdl: func() (r struct{ Fdad Ush }) { 16077 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16078 return r 16079 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16080 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(447) 16081 return r 16082 }(), Fdl: func() (r struct{ Fdad Ush }) { 16083 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16084 return r 16085 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16086 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(127) 16087 return r 16088 }(), Fdl: func() (r struct{ Fdad Ush }) { 16089 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16090 return r 16091 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16092 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(383) 16093 return r 16094 }(), Fdl: func() (r struct{ Fdad Ush }) { 16095 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16096 return r 16097 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16098 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(255) 16099 return r 16100 }(), Fdl: func() (r struct{ Fdad Ush }) { 16101 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16102 return r 16103 }()}, 16104 {Ffc: func() (r struct{ Ffreq Ush }) { 16105 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(511) 16106 return r 16107 }(), Fdl: func() (r struct{ Fdad Ush }) { 16108 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16109 return r 16110 }()}, {Fdl: func() (r struct{ Fdad Ush }) { 16111 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16112 return r 16113 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16114 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(64) 16115 return r 16116 }(), Fdl: func() (r struct{ Fdad Ush }) { 16117 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16118 return r 16119 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16120 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(32) 16121 return r 16122 }(), Fdl: func() (r struct{ Fdad Ush }) { 16123 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16124 return r 16125 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16126 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(96) 16127 return r 16128 }(), Fdl: func() (r struct{ Fdad Ush }) { 16129 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16130 return r 16131 }()}, 16132 {Ffc: func() (r struct{ Ffreq Ush }) { 16133 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 16134 return r 16135 }(), Fdl: func() (r struct{ Fdad Ush }) { 16136 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16137 return r 16138 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16139 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(80) 16140 return r 16141 }(), Fdl: func() (r struct{ Fdad Ush }) { 16142 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16143 return r 16144 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16145 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(48) 16146 return r 16147 }(), Fdl: func() (r struct{ Fdad Ush }) { 16148 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16149 return r 16150 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16151 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(112) 16152 return r 16153 }(), Fdl: func() (r struct{ Fdad Ush }) { 16154 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16155 return r 16156 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16157 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16158 return r 16159 }(), Fdl: func() (r struct{ Fdad Ush }) { 16160 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16161 return r 16162 }()}, 16163 {Ffc: func() (r struct{ Ffreq Ush }) { 16164 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(72) 16165 return r 16166 }(), Fdl: func() (r struct{ Fdad Ush }) { 16167 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16168 return r 16169 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16170 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(40) 16171 return r 16172 }(), Fdl: func() (r struct{ Fdad Ush }) { 16173 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16174 return r 16175 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16176 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(104) 16177 return r 16178 }(), Fdl: func() (r struct{ Fdad Ush }) { 16179 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16180 return r 16181 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16182 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 16183 return r 16184 }(), Fdl: func() (r struct{ Fdad Ush }) { 16185 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16186 return r 16187 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16188 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(88) 16189 return r 16190 }(), Fdl: func() (r struct{ Fdad Ush }) { 16191 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16192 return r 16193 }()}, 16194 {Ffc: func() (r struct{ Ffreq Ush }) { 16195 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(56) 16196 return r 16197 }(), Fdl: func() (r struct{ Fdad Ush }) { 16198 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16199 return r 16200 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16201 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(120) 16202 return r 16203 }(), Fdl: func() (r struct{ Fdad Ush }) { 16204 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16205 return r 16206 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16207 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 16208 return r 16209 }(), Fdl: func() (r struct{ Fdad Ush }) { 16210 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16211 return r 16212 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16213 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(68) 16214 return r 16215 }(), Fdl: func() (r struct{ Fdad Ush }) { 16216 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16217 return r 16218 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16219 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(36) 16220 return r 16221 }(), Fdl: func() (r struct{ Fdad Ush }) { 16222 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16223 return r 16224 }()}, 16225 {Ffc: func() (r struct{ Ffreq Ush }) { 16226 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(100) 16227 return r 16228 }(), Fdl: func() (r struct{ Fdad Ush }) { 16229 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16230 return r 16231 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16232 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 16233 return r 16234 }(), Fdl: func() (r struct{ Fdad Ush }) { 16235 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16236 return r 16237 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16238 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(84) 16239 return r 16240 }(), Fdl: func() (r struct{ Fdad Ush }) { 16241 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16242 return r 16243 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16244 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(52) 16245 return r 16246 }(), Fdl: func() (r struct{ Fdad Ush }) { 16247 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16248 return r 16249 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16250 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(116) 16251 return r 16252 }(), Fdl: func() (r struct{ Fdad Ush }) { 16253 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16254 return r 16255 }()}, 16256 {Ffc: func() (r struct{ Ffreq Ush }) { 16257 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 16258 return r 16259 }(), Fdl: func() (r struct{ Fdad Ush }) { 16260 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16261 return r 16262 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16263 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(131) 16264 return r 16265 }(), Fdl: func() (r struct{ Fdad Ush }) { 16266 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16267 return r 16268 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16269 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(67) 16270 return r 16271 }(), Fdl: func() (r struct{ Fdad Ush }) { 16272 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16273 return r 16274 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16275 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(195) 16276 return r 16277 }(), Fdl: func() (r struct{ Fdad Ush }) { 16278 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16279 return r 16280 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16281 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(35) 16282 return r 16283 }(), Fdl: func() (r struct{ Fdad Ush }) { 16284 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16285 return r 16286 }()}, 16287 {Ffc: func() (r struct{ Ffreq Ush }) { 16288 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(163) 16289 return r 16290 }(), Fdl: func() (r struct{ Fdad Ush }) { 16291 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16292 return r 16293 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16294 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(99) 16295 return r 16296 }(), Fdl: func() (r struct{ Fdad Ush }) { 16297 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16298 return r 16299 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16300 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(227) 16301 return r 16302 }(), Fdl: func() (r struct{ Fdad Ush }) { 16303 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16304 return r 16305 }()}} /* trees.h:3:21 */ 16306 16307 var static_dtree = [30]Ct_data{{Fdl: func() (r struct{ Fdad Ush }) { 16308 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16309 return r 16310 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16311 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 16312 return r 16313 }(), Fdl: func() (r struct{ Fdad Ush }) { 16314 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16315 return r 16316 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16317 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16318 return r 16319 }(), Fdl: func() (r struct{ Fdad Ush }) { 16320 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16321 return r 16322 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16323 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 16324 return r 16325 }(), Fdl: func() (r struct{ Fdad Ush }) { 16326 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16327 return r 16328 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16329 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 16330 return r 16331 }(), Fdl: func() (r struct{ Fdad Ush }) { 16332 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16333 return r 16334 }()}, 16335 {Ffc: func() (r struct{ Ffreq Ush }) { 16336 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 16337 return r 16338 }(), Fdl: func() (r struct{ Fdad Ush }) { 16339 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16340 return r 16341 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16342 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 16343 return r 16344 }(), Fdl: func() (r struct{ Fdad Ush }) { 16345 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16346 return r 16347 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16348 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 16349 return r 16350 }(), Fdl: func() (r struct{ Fdad Ush }) { 16351 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16352 return r 16353 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16354 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 16355 return r 16356 }(), Fdl: func() (r struct{ Fdad Ush }) { 16357 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16358 return r 16359 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16360 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 16361 return r 16362 }(), Fdl: func() (r struct{ Fdad Ush }) { 16363 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16364 return r 16365 }()}, 16366 {Ffc: func() (r struct{ Ffreq Ush }) { 16367 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 16368 return r 16369 }(), Fdl: func() (r struct{ Fdad Ush }) { 16370 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16371 return r 16372 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16373 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 16374 return r 16375 }(), Fdl: func() (r struct{ Fdad Ush }) { 16376 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16377 return r 16378 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16379 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 16380 return r 16381 }(), Fdl: func() (r struct{ Fdad Ush }) { 16382 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16383 return r 16384 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16385 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 16386 return r 16387 }(), Fdl: func() (r struct{ Fdad Ush }) { 16388 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16389 return r 16390 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16391 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 16392 return r 16393 }(), Fdl: func() (r struct{ Fdad Ush }) { 16394 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16395 return r 16396 }()}, 16397 {Ffc: func() (r struct{ Ffreq Ush }) { 16398 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 16399 return r 16400 }(), Fdl: func() (r struct{ Fdad Ush }) { 16401 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16402 return r 16403 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16404 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 16405 return r 16406 }(), Fdl: func() (r struct{ Fdad Ush }) { 16407 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16408 return r 16409 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16410 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 16411 return r 16412 }(), Fdl: func() (r struct{ Fdad Ush }) { 16413 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16414 return r 16415 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16416 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16417 return r 16418 }(), Fdl: func() (r struct{ Fdad Ush }) { 16419 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16420 return r 16421 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16422 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 16423 return r 16424 }(), Fdl: func() (r struct{ Fdad Ush }) { 16425 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16426 return r 16427 }()}, 16428 {Ffc: func() (r struct{ Ffreq Ush }) { 16429 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16430 return r 16431 }(), Fdl: func() (r struct{ Fdad Ush }) { 16432 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16433 return r 16434 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16435 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 16436 return r 16437 }(), Fdl: func() (r struct{ Fdad Ush }) { 16438 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16439 return r 16440 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16441 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 16442 return r 16443 }(), Fdl: func() (r struct{ Fdad Ush }) { 16444 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16445 return r 16446 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16447 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 16448 return r 16449 }(), Fdl: func() (r struct{ Fdad Ush }) { 16450 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16451 return r 16452 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16453 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 16454 return r 16455 }(), Fdl: func() (r struct{ Fdad Ush }) { 16456 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16457 return r 16458 }()}, 16459 {Ffc: func() (r struct{ Ffreq Ush }) { 16460 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 16461 return r 16462 }(), Fdl: func() (r struct{ Fdad Ush }) { 16463 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16464 return r 16465 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16466 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 16467 return r 16468 }(), Fdl: func() (r struct{ Fdad Ush }) { 16469 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16470 return r 16471 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16472 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 16473 return r 16474 }(), Fdl: func() (r struct{ Fdad Ush }) { 16475 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16476 return r 16477 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16478 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 16479 return r 16480 }(), Fdl: func() (r struct{ Fdad Ush }) { 16481 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16482 return r 16483 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16484 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 16485 return r 16486 }(), Fdl: func() (r struct{ Fdad Ush }) { 16487 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16488 return r 16489 }()}} /* trees.h:64:21 */ 16490 16491 var X_dist_code = [512]Uch{ 16492 Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(4), Uch(5), Uch(5), Uch(6), Uch(6), Uch(6), Uch(6), Uch(7), Uch(7), Uch(7), Uch(7), Uch(8), Uch(8), Uch(8), Uch(8), 16493 Uch(8), Uch(8), Uch(8), Uch(8), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), 16494 Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), 16495 Uch(11), Uch(11), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), 16496 Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(13), Uch(13), Uch(13), Uch(13), 16497 Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), 16498 Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), 16499 Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), 16500 Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), 16501 Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), 16502 Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), 16503 Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), 16504 Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(0), Uch(0), Uch(16), Uch(17), 16505 Uch(18), Uch(18), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), 16506 Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), 16507 Uch(24), Uch(24), Uch(24), Uch(24), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), 16508 Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), 16509 Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), 16510 Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), 16511 Uch(27), Uch(27), Uch(27), Uch(27), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), 16512 Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), 16513 Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), 16514 Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 16515 Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 16516 Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 16517 Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 16518 } /* trees.h:73:25 */ 16519 16520 var X_length_code = [256]Uch{ 16521 Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(5), Uch(6), Uch(7), Uch(8), Uch(8), Uch(9), Uch(9), Uch(10), Uch(10), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12), 16522 Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), 16523 Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(19), Uch(19), Uch(19), Uch(19), 16524 Uch(19), Uch(19), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), 16525 Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22), 16526 Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), 16527 Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), 16528 Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), 16529 Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), 16530 Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), 16531 Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), 16532 Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), 16533 Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(28), 16534 } /* trees.h:102:25 */ 16535 16536 var base_length = [29]int32{ 16537 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 16538 64, 80, 96, 112, 128, 160, 192, 224, 0, 16539 } /* trees.h:118:17 */ 16540 16541 var base_dist = [30]int32{ 16542 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 16543 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 16544 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 16545 } /* trees.h:123:17 */ 16546 16547 var static_l_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Fextra_base: (LITERALS + 1), Felems: ((LITERALS + 1) + LENGTH_CODES), Fmax_length: MAX_BITS} /* trees.c:125:31 */ 16548 16549 var static_d_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Felems: D_CODES, Fmax_length: MAX_BITS} /* trees.c:128:31 */ 16550 16551 var static_bl_desc = Static_tree_desc{Fextra_bits: 0, Felems: BL_CODES, Fmax_length: MAX_BL_BITS} /* trees.c:131:31 */ 16552 16553 // Send a code of the given tree. c and tree must not have side effects 16554 16555 // =========================================================================== 16556 // Output a short LSB first on the stream. 16557 // IN assertion: there is enough room in pendingBuf. 16558 16559 // =========================================================================== 16560 // Send a value on a given number of bits. 16561 // IN assertion: length <= 16 and value fits in length bits. 16562 16563 // the arguments must not have side effects 16564 16565 // =========================================================================== 16566 // Initialize the various 'constant' tables. 16567 func tr_static_init(tls *libc.TLS) { /* trees.c:232:12: */ 16568 } 16569 16570 // =========================================================================== 16571 // Genererate the file trees.h describing the static trees. 16572 16573 // =========================================================================== 16574 // Initialize the tree data structures for a new zlib stream. 16575 func X_tr_init(tls *libc.TLS, s uintptr) { /* trees.c:379:20: */ 16576 tr_static_init(tls) 16577 16578 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fdyn_tree = s + 212 /* &.dyn_ltree */ 16579 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_l_desc)) 16580 16581 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fdyn_tree = s + 2504 /* &.dyn_dtree */ 16582 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_d_desc)) 16583 16584 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fdyn_tree = s + 2748 /* &.bl_tree */ 16585 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_bl_desc)) 16586 16587 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 16588 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 16589 16590 // Initialize the first block of the first file: 16591 init_block(tls, s) 16592 } 16593 16594 // =========================================================================== 16595 // Initialize a new block. 16596 func init_block(tls *libc.TLS, s uintptr) { /* trees.c:407:12: */ 16597 var n int32 // iterates over tree elements 16598 16599 // Initialize the trees. 16600 for n = 0; n < ((LITERALS + 1) + LENGTH_CODES); n++ { 16601 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 16602 } 16603 for n = 0; n < D_CODES; n++ { 16604 *(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 16605 } 16606 for n = 0; n < BL_CODES; n++ { 16607 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 16608 } 16609 16610 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 256*4 /* &.fc */)) = Ush(1) 16611 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len = libc.AssignPtrUint64(s+5920 /* &.static_len */, uint64(0)) 16612 (*Deflate_state)(unsafe.Pointer(s)).Flast_lit = libc.AssignPtrUint32(s+5928 /* &.matches */, UInt(0)) 16613 } 16614 16615 // Index within the heap array of least frequent node in the Huffman tree 16616 16617 // =========================================================================== 16618 // Remove the smallest element from the heap and recreate the heap with 16619 // one less element. Updates heap and heap_len. 16620 16621 // =========================================================================== 16622 // Compares to subtrees, using the tree depth as tie breaker when 16623 // the subtrees have equal frequency. This minimizes the worst case length. 16624 16625 // =========================================================================== 16626 // Restore the heap property by moving down the tree starting at node k, 16627 // exchanging a node with the smallest of its two sons if necessary, stopping 16628 // when the heap property is re-established (each father smaller than its 16629 // two sons). 16630 func pqdownheap(tls *libc.TLS, s uintptr, tree uintptr, k int32) { /* trees.c:451:12: */ 16631 var v int32 = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4)) 16632 var j int32 = (k << 1) // left son of k 16633 for j <= (*Deflate_state)(unsafe.Pointer(s)).Fheap_len { 16634 // Set j to the smallest of the two sons: 16635 if (j < (*Deflate_state)(unsafe.Pointer(s)).Fheap_len) && ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))))) <= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4))))))))) { 16636 j++ 16637 } 16638 // Exit if v is smaller than both sons 16639 if (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(v)))) <= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))))))) { 16640 break 16641 } 16642 16643 // Exchange v with the smallest son 16644 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)) 16645 k = j 16646 16647 // And continue down the tree, setting j to the left son of k 16648 j <<= 1 16649 } 16650 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4)) = v 16651 } 16652 16653 // =========================================================================== 16654 // Compute the optimal bit lengths for a tree and update the total bit length 16655 // for the current block. 16656 // IN assertion: the fields freq and dad are set, heap[heap_max] and 16657 // above are the tree nodes sorted by increasing frequency. 16658 // OUT assertions: the field len is set to the optimal bit length, the 16659 // array bl_count contains the frequencies for each bit length. 16660 // The length opt_len is updated; static_len is also updated if stree is 16661 // not null. 16662 func gen_bitlen(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:486:12: */ 16663 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 16664 var max_code int32 = (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code 16665 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 16666 var extra uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_bits 16667 var base int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_base 16668 var max_length int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fmax_length 16669 var h int32 // heap index 16670 var n int32 16671 var m int32 // iterate over the tree elements 16672 var bits int32 // bit length 16673 var xbits int32 // extra bits 16674 var f Ush // frequency 16675 var overflow int32 = 0 // number of elements with bit length too large 16676 16677 for bits = 0; bits <= MAX_BITS; bits++ { 16678 *(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2)) = Ush(0) 16679 } 16680 16681 // In a first pass, compute the optimal bit lengths (which may 16682 // overflow in the case of the bit length tree). 16683 *(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fheap_max)*4)))*4 + 2 /* &.dl */)) = Ush(0) // root of the heap 16684 16685 for h = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_max + 1); h < ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1); h++ { 16686 n = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(h)*4)) 16687 bits = (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))*4 + 2 /* &.dl */))) + 1) 16688 if bits > max_length { 16689 bits = max_length 16690 overflow++ 16691 } 16692 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(bits) 16693 // We overwrite tree[n].Dad which is no longer needed 16694 16695 if n > max_code { 16696 continue 16697 } // not a leaf node 16698 16699 *(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))++ 16700 xbits = 0 16701 if n >= base { 16702 xbits = *(*Intf)(unsafe.Pointer(extra + uintptr((n-base))*4)) 16703 } 16704 f = *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */)) 16705 *(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += (Ulg(f) * Ulg((uint32(bits + xbits)))) 16706 if stree != 0 { 16707 *(*Ulg)(unsafe.Pointer(s + 5920 /* &.static_len */)) += (Ulg(f) * Ulg((uint32(int32(*(*Ush)(unsafe.Pointer(stree + uintptr(n)*4 + 2 /* &.dl */))) + xbits)))) 16708 } 16709 } 16710 if overflow == 0 { 16711 return 16712 } 16713 16714 // This happens for example on obj2 and pic of the Calgary corpus 16715 16716 // Find the first bit length which could increase: 16717 for ok := true; ok; ok = (overflow > 0) { 16718 bits = (max_length - 1) 16719 for int32(*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))) == 0 { 16720 bits-- 16721 } 16722 *(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))-- // move one leaf down the tree 16723 *(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr((bits+1))*2)) += Ush((2)) // move one overflow item as its brother 16724 *(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(max_length)*2))-- 16725 // The brother of the overflow item also moves one step up, 16726 // but this does not affect bl_count[max_length] 16727 overflow = overflow - (2) 16728 } 16729 16730 // Now recompute all bit lengths, scanning in increasing frequency. 16731 // h is still equal to HEAP_SIZE. (It is simpler to reconstruct all 16732 // lengths instead of fixing only the wrong ones. This idea is taken 16733 // from 'ar' written by Haruhiko Okumura.) 16734 for bits = max_length; bits != 0; bits-- { 16735 n = int32(*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))) 16736 for n != 0 { 16737 m = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&h, 1))*4)) 16738 if m > max_code { 16739 continue 16740 } 16741 if uint32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */))) != uint32(bits) { 16742 16743 *(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += ((Ulg(bits) - Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)))) * Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */)))) 16744 *(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)) = Ush(bits) 16745 } 16746 n-- 16747 } 16748 } 16749 } 16750 16751 // =========================================================================== 16752 // Generate the codes for a given tree and bit counts (which need not be 16753 // optimal). 16754 // IN assertion: the array bl_count contains the bit length statistics for 16755 // the given tree and the field len is set for all tree elements. 16756 // OUT assertion: the field code is set for all tree elements of non 16757 // zero code length. 16758 func gen_codes(tls *libc.TLS, tree uintptr, max_code int32, bl_count uintptr) { /* trees.c:572:12: */ 16759 bp := tls.Alloc(32) 16760 defer tls.Free(32) 16761 16762 // var next_code [16]Ush at bp, 32 16763 // next code value for each bit length 16764 var code uint32 = uint32(0) // running code value 16765 var bits int32 // bit index 16766 var n int32 // code index 16767 16768 // The distribution counts are first used to generate the code values 16769 // without bit reversal. 16770 for bits = 1; bits <= MAX_BITS; bits++ { 16771 code = ((code + uint32(*(*Ushf)(unsafe.Pointer(bl_count + uintptr((bits-1))*2)))) << 1) 16772 *(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(bits)*2)) = Ush(code) 16773 } 16774 // Check that the bit counts in bl_count are consistent. The last code 16775 // must be all ones. 16776 16777 for n = 0; n <= max_code; n++ { 16778 var len int32 = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */))) 16779 if len == 0 { 16780 continue 16781 } 16782 // Now reverse the bits 16783 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */)) = Ush(bi_reverse(tls, uint32(libc.PostIncUint16(&*(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(len)*2)), 1)), len)) 16784 16785 } 16786 } 16787 16788 // =========================================================================== 16789 // Construct one Huffman tree and assigns the code bit strings and lengths. 16790 // Update the total bit length for the current block. 16791 // IN assertion: the field freq is set for all tree elements. 16792 // OUT assertions: the fields len and code are set to the optimal bit length 16793 // and corresponding code. The length opt_len is updated; static_len is 16794 // also updated if stree is not null. The field max_code is set. 16795 func build_tree(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:615:12: */ 16796 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 16797 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 16798 var elems int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Felems 16799 var n int32 16800 var m int32 // iterate over heap elements 16801 var max_code int32 = -1 // largest code with non zero frequency 16802 var node int32 // new node being created 16803 16804 // Construct the initial heap, with least frequent element in 16805 // heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. 16806 // heap[0] is not used. 16807 (*Deflate_state)(unsafe.Pointer(s)).Fheap_len = 0 16808 (*Deflate_state)(unsafe.Pointer(s)).Fheap_max = ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1) 16809 16810 for n = 0; n < elems; n++ { 16811 if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) != 0 { 16812 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4)) = libc.AssignInt32(&max_code, n) 16813 *(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n))) = Uch(0) 16814 } else { 16815 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(0) 16816 } 16817 } 16818 16819 // The pkzip format requires that at least one distance code exists, 16820 // and that at least one bit should be sent even if there is only one 16821 // possible code. So to avoid special checks later on we force at least 16822 // two codes of non zero frequency. 16823 for (*Deflate_state)(unsafe.Pointer(s)).Fheap_len < 2 { 16824 node = libc.AssignPtrInt32((s+3008 /* &.heap */)+uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4, func() int32 { 16825 if max_code < 2 { 16826 return libc.PreIncInt32(&max_code, 1) 16827 } 16828 return 0 16829 }()) 16830 *(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = Ush(1) 16831 *(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(node))) = Uch(0) 16832 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len-- 16833 if stree != 0 { 16834 *(*Ulg)(unsafe.Pointer(s + 5920 /* &.static_len */)) -= (Ulg(*(*Ush)(unsafe.Pointer(stree + uintptr(node)*4 + 2 /* &.dl */)))) 16835 } 16836 // node is 0 or 1 so it does not have extra bits 16837 } 16838 (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code = max_code 16839 16840 // The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, 16841 // establish sub-heaps of increasing lengths: 16842 for n = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len / 2); n >= 1; n-- { 16843 pqdownheap(tls, s, tree, n) 16844 } 16845 16846 // Construct the Huffman tree by repeatedly combining the least two 16847 // frequent nodes. 16848 node = elems // next internal node of the tree 16849 for ok := true; ok; ok = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len >= 2) { 16850 { 16851 n = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) 16852 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PostDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4)) 16853 pqdownheap(tls, s, tree, SMALLEST) 16854 } 16855 // n = node of least frequency 16856 m = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) // m = node of next least frequency 16857 16858 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = n // keep the nodes sorted by frequency 16859 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = m 16860 16861 // Create a new node father of n and m 16862 *(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = (Ush(int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) + int32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */))))) 16863 *(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(node))) = (Uch((func() int32 { 16864 if int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n)))) >= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(m)))) { 16865 return int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n)))) 16866 } 16867 return int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(m)))) 16868 }()) + 1)) 16869 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = libc.AssignPtrUint16(tree+uintptr(m)*4+2 /* &.dl */ /* &.dad */, Ush(node)) 16870 // and insert the new node in the heap 16871 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) = libc.PostIncInt32(&node, 1) 16872 pqdownheap(tls, s, tree, SMALLEST) 16873 16874 } 16875 16876 *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) 16877 16878 // At this point, the fields freq and dad are set. We can now 16879 // generate the bit lengths. 16880 gen_bitlen(tls, s, desc) 16881 16882 // The field len is now set, we can generate the bit codes 16883 gen_codes(tls, tree, max_code, s+2976 /* &.bl_count */) 16884 } 16885 16886 // =========================================================================== 16887 // Scan a literal or distance tree to determine the frequencies of the codes 16888 // in the bit length tree. 16889 func scan_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:703:12: */ 16890 var n int32 // iterates over all tree elements 16891 var prevlen int32 = -1 // last emitted length 16892 var curlen int32 // length of current code 16893 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code 16894 var count int32 = 0 // repeat count of the current code 16895 var max_count int32 = 7 // max repeat count 16896 var min_count int32 = 4 // min repeat count 16897 16898 if nextlen == 0 { 16899 max_count = 138 16900 min_count = 3 16901 } 16902 *(*Ush)(unsafe.Pointer(tree + uintptr((max_code+1))*4 + 2 /* &.dl */)) = Ush(0xffff) // guard 16903 16904 for n = 0; n <= max_code; n++ { 16905 curlen = nextlen 16906 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */))) 16907 if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) { 16908 continue 16909 } else if count < min_count { 16910 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */ /* &.freq */)) += Ush((count)) 16911 } else if curlen != 0 { 16912 if curlen != prevlen { 16913 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))++ 16914 } 16915 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */))++ 16916 } else if count <= 10 { 16917 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */))++ 16918 } else { 16919 *(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */))++ 16920 } 16921 count = 0 16922 prevlen = curlen 16923 if nextlen == 0 { 16924 max_count = 138 16925 min_count = 3 16926 } else if curlen == nextlen { 16927 max_count = 6 16928 min_count = 3 16929 } else { 16930 max_count = 7 16931 min_count = 4 16932 } 16933 } 16934 } 16935 16936 // =========================================================================== 16937 // Send a literal or distance tree in compressed form, using the codes in 16938 // bl_tree. 16939 func send_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:748:12: */ 16940 var n int32 // iterates over all tree elements 16941 var prevlen int32 = -1 // last emitted length 16942 var curlen int32 // length of current code 16943 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code 16944 var count int32 = 0 // repeat count of the current code 16945 var max_count int32 = 7 // max repeat count 16946 var min_count int32 = 4 // min repeat count 16947 16948 /* tree[max_code+1].Len = -1; */ // guard already set 16949 if nextlen == 0 { 16950 max_count = 138 16951 min_count = 3 16952 } 16953 16954 for n = 0; n <= max_code; n++ { 16955 curlen = nextlen 16956 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */))) 16957 if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) { 16958 continue 16959 } else if count < min_count { 16960 for ok := true; ok; ok = (libc.PreDecInt32(&count, 1) != 0) { 16961 { 16962 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */))) 16963 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 16964 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))) 16965 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 16966 { 16967 { 16968 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 16969 } 16970 { 16971 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 16972 } 16973 16974 } 16975 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 16976 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 16977 } else { 16978 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 16979 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 16980 } 16981 } 16982 } 16983 16984 } else if curlen != 0 { 16985 if curlen != prevlen { 16986 { 16987 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */))) 16988 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 16989 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))) 16990 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 16991 { 16992 { 16993 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 16994 } 16995 { 16996 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 16997 } 16998 16999 } 17000 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17001 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17002 } else { 17003 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17004 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17005 } 17006 } 17007 count-- 17008 } 17009 17010 { 17011 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 + 2 /* &.dl */))) 17012 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17013 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */))) 17014 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17015 { 17016 { 17017 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17018 } 17019 { 17020 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17021 } 17022 17023 } 17024 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17025 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17026 } else { 17027 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17028 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17029 } 17030 } 17031 { 17032 var len int32 = 2 17033 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17034 var val int32 = (count - 3) 17035 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17036 { 17037 { 17038 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17039 } 17040 { 17041 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17042 } 17043 17044 } 17045 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17046 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17047 } else { 17048 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17049 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17050 } 17051 } 17052 17053 } else if count <= 10 { 17054 { 17055 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 + 2 /* &.dl */))) 17056 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17057 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */))) 17058 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17059 { 17060 { 17061 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17062 } 17063 { 17064 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17065 } 17066 17067 } 17068 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17069 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17070 } else { 17071 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17072 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17073 } 17074 } 17075 { 17076 var len int32 = 3 17077 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17078 var val int32 = (count - 3) 17079 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17080 { 17081 { 17082 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17083 } 17084 { 17085 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17086 } 17087 17088 } 17089 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17090 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17091 } else { 17092 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17093 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17094 } 17095 } 17096 17097 } else { 17098 { 17099 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 + 2 /* &.dl */))) 17100 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17101 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */))) 17102 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17103 { 17104 { 17105 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17106 } 17107 { 17108 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17109 } 17110 17111 } 17112 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17113 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17114 } else { 17115 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17116 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17117 } 17118 } 17119 { 17120 var len int32 = 7 17121 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17122 var val int32 = (count - 11) 17123 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17124 { 17125 { 17126 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17127 } 17128 { 17129 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17130 } 17131 17132 } 17133 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17134 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17135 } else { 17136 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 11))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17137 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17138 } 17139 } 17140 17141 } 17142 count = 0 17143 prevlen = curlen 17144 if nextlen == 0 { 17145 max_count = 138 17146 min_count = 3 17147 } else if curlen == nextlen { 17148 max_count = 6 17149 min_count = 3 17150 } else { 17151 max_count = 7 17152 min_count = 4 17153 } 17154 } 17155 } 17156 17157 // =========================================================================== 17158 // Construct the Huffman tree for the bit lengths and return the index in 17159 // bl_order of the last bit length code to send. 17160 func build_bl_tree(tls *libc.TLS, s uintptr) int32 { /* trees.c:799:11: */ 17161 var max_blindex int32 // index of last bit length code of non zero freq 17162 17163 // Determine the bit length frequencies for literal and distance trees 17164 scan_tree(tls, s, s+212 /* &.dyn_ltree */, (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code) 17165 scan_tree(tls, s, s+2504 /* &.dyn_dtree */, (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code) 17166 17167 // Build the bit length tree: 17168 build_tree(tls, s, (s + 2952 /* &.bl_desc */)) 17169 // opt_len now includes the length of the tree representations, except 17170 // the lengths of the bit lengths codes and the 5+5+4 bits for the counts. 17171 17172 // Determine the number of bit length codes to send. The pkzip format 17173 // requires that at least 4 bit length codes be sent. (appnote.txt says 17174 // 3 but the actual value used is 4.) 17175 for max_blindex = (BL_CODES - 1); max_blindex >= 3; max_blindex-- { 17176 if int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[max_blindex])*4 + 2 /* &.dl */))) != 0 { 17177 break 17178 } 17179 } 17180 // Update opt_len to include the bit length tree and counts 17181 *(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += ((((uint64(3) * (Ulg(max_blindex) + uint64(1))) + uint64(5)) + uint64(5)) + uint64(4)) 17182 17183 return max_blindex 17184 } 17185 17186 // =========================================================================== 17187 // Send the header for a block using dynamic Huffman trees: the counts, the 17188 // lengths of the bit length codes, the literal tree and the distance tree. 17189 // IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. 17190 func send_all_trees(tls *libc.TLS, s uintptr, lcodes int32, dcodes int32, blcodes int32) { /* trees.c:834:12: */ 17191 var rank int32 // index in bl_order 17192 17193 { 17194 var len int32 = 5 17195 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17196 var val int32 = (lcodes - 257) 17197 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17198 { 17199 { 17200 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17201 } 17202 { 17203 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17204 } 17205 17206 } 17207 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17208 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17209 } else { 17210 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(lcodes - 257))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17211 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17212 } 17213 } 17214 /* not +255 as stated in appnote.txt */ 17215 { 17216 var len int32 = 5 17217 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17218 var val int32 = (dcodes - 1) 17219 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17220 { 17221 { 17222 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17223 } 17224 { 17225 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17226 } 17227 17228 } 17229 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17230 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17231 } else { 17232 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(dcodes - 1))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17233 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17234 } 17235 } 17236 17237 { 17238 var len int32 = 4 17239 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17240 var val int32 = (blcodes - 4) 17241 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17242 { 17243 { 17244 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17245 } 17246 { 17247 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17248 } 17249 17250 } 17251 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17252 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17253 } else { 17254 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(blcodes - 4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17255 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17256 } 17257 } 17258 // not -3 as stated in appnote.txt 17259 for rank = 0; rank < blcodes; rank++ { 17260 17261 { 17262 var len int32 = 3 17263 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17264 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */))) 17265 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17266 { 17267 { 17268 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17269 } 17270 { 17271 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17272 } 17273 17274 } 17275 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17276 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17277 } else { 17278 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17279 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17280 } 17281 } 17282 17283 } 17284 17285 send_tree(tls, s, s+212 /* &.dyn_ltree */, (lcodes - 1)) // literal tree 17286 17287 send_tree(tls, s, s+2504 /* &.dyn_dtree */, (dcodes - 1)) // distance tree 17288 17289 } 17290 17291 // =========================================================================== 17292 // Send a stored block 17293 func X_tr_stored_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:863:20: */ 17294 { 17295 var len int32 = 3 17296 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17297 var val int32 = ((int32(STORED_BLOCK) << 1) + last) 17298 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17299 { 17300 { 17301 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17302 } 17303 { 17304 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17305 } 17306 17307 } 17308 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17309 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17310 } else { 17311 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STORED_BLOCK) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17312 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17313 } 17314 } 17315 // send block type 17316 bi_windup(tls, s) /* align on byte boundary */ 17317 { 17318 { 17319 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(stored_len))) & 0xff)) 17320 } 17321 { 17322 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(stored_len))) >> 8)) 17323 } 17324 17325 } 17326 17327 { 17328 { 17329 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(^stored_len))) & 0xff)) 17330 } 17331 { 17332 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(^stored_len))) >> 8)) 17333 } 17334 17335 } 17336 17337 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), buf, stored_len) 17338 *(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) += (stored_len) 17339 } 17340 17341 // =========================================================================== 17342 // Flush the bits in the bit buffer to pending output (leaves at most 7 bits) 17343 func X_tr_flush_bits(tls *libc.TLS, s uintptr) { /* trees.c:886:20: */ 17344 bi_flush(tls, s) 17345 } 17346 17347 // =========================================================================== 17348 // Send one empty static block to give enough lookahead for inflate. 17349 // This takes 10 bits, of which 7 may remain in the bit buffer. 17350 func X_tr_align(tls *libc.TLS, s uintptr) { /* trees.c:896:20: */ 17351 { 17352 var len int32 = 3 17353 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17354 var val int32 = (int32(STATIC_TREES) << 1) 17355 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17356 { 17357 { 17358 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17359 } 17360 { 17361 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17362 } 17363 17364 } 17365 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17366 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17367 } else { 17368 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(int32((Ush(int32(STATIC_TREES) << 1)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17369 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17370 } 17371 } 17372 17373 { 17374 var len int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 + 2 /* &.dl */))) 17375 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17376 var val int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */))) 17377 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17378 { 17379 { 17380 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17381 } 17382 { 17383 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17384 } 17385 17386 } 17387 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17388 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17389 } else { 17390 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17391 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17392 } 17393 } 17394 17395 bi_flush(tls, s) 17396 } 17397 17398 // =========================================================================== 17399 // Determine the best encoding for the current block: dynamic trees, static 17400 // trees or store, and write out the encoded block. 17401 func X_tr_flush_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:911:20: */ 17402 var opt_lenb Ulg 17403 var static_lenb Ulg // opt_len and static_len in bytes 17404 var max_blindex int32 = 0 // index of last bit length code of non zero freq 17405 17406 // Build the Huffman trees unless a stored block is forced 17407 if (*Deflate_state)(unsafe.Pointer(s)).Flevel > 0 { 17408 17409 // Check if the file is binary or text 17410 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type == Z_UNKNOWN { 17411 (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type = detect_data_type(tls, s) 17412 } 17413 17414 // Construct the literal and distance trees 17415 build_tree(tls, s, (s + 2904 /* &.l_desc */)) 17416 17417 build_tree(tls, s, (s + 2928 /* &.d_desc */)) 17418 17419 // At this point, opt_len and static_len are the total bit lengths of 17420 // the compressed block data, excluding the tree representations. 17421 17422 // Build the bit length tree for the above two trees, and get the index 17423 // in bl_order of the last bit length code to send. 17424 max_blindex = build_bl_tree(tls, s) 17425 17426 // Determine the best encoding. Compute the block lengths in bytes. 17427 opt_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fopt_len + uint64(3)) + uint64(7)) >> 3) 17428 static_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fstatic_len + uint64(3)) + uint64(7)) >> 3) 17429 17430 if static_lenb <= opt_lenb { 17431 opt_lenb = static_lenb 17432 } 17433 17434 } else { 17435 17436 opt_lenb = libc.AssignUint64(&static_lenb, (stored_len + uint64(5))) // force a stored block 17437 } 17438 17439 if ((stored_len + uint64(4)) <= opt_lenb) && (buf != uintptr(0)) { 17440 // 4: two words for the lengths 17441 // The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. 17442 // Otherwise we can't have processed more than WSIZE input bytes since 17443 // the last block flush, because compression would have been 17444 // successful. If LIT_BUFSIZE <= WSIZE, it is never too late to 17445 // transform a block into a stored block. 17446 X_tr_stored_block(tls, s, buf, stored_len, last) 17447 17448 } else if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FIXED) || (static_lenb == opt_lenb) { 17449 { 17450 var len int32 = 3 17451 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17452 var val int32 = ((int32(STATIC_TREES) << 1) + last) 17453 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17454 { 17455 { 17456 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17457 } 17458 { 17459 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17460 } 17461 17462 } 17463 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17464 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17465 } else { 17466 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STATIC_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17467 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17468 } 17469 } 17470 17471 compress_block(tls, s, uintptr(uintptr(unsafe.Pointer(&static_ltree))), 17472 uintptr(uintptr(unsafe.Pointer(&static_dtree)))) 17473 } else { 17474 { 17475 var len int32 = 3 17476 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17477 var val int32 = ((int32(DYN_TREES) << 1) + last) 17478 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17479 { 17480 { 17481 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17482 } 17483 { 17484 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17485 } 17486 17487 } 17488 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17489 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17490 } else { 17491 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(DYN_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17492 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17493 } 17494 } 17495 17496 send_all_trees(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code + 1), ((*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code + 1), 17497 (max_blindex + 1)) 17498 compress_block(tls, s, s+212, /* &.dyn_ltree */ 17499 s+2504 /* &.dyn_dtree */) 17500 } 17501 17502 // The above check is made mod 2^32, for files larger than 512 MB 17503 // and uLong implemented on 32 bits. 17504 init_block(tls, s) 17505 17506 if last != 0 { 17507 bi_windup(tls, s) 17508 } 17509 17510 } 17511 17512 // =========================================================================== 17513 // Save the match info and tally the frequency counts. Return true if 17514 // the current block must be flushed. 17515 func X_tr_tally(tls *libc.TLS, s uintptr, dist uint32, lc uint32) int32 { /* trees.c:1014:19: */ 17516 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ush(dist) 17517 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = Uch(lc) 17518 if dist == uint32(0) { 17519 // lc is the unmatched char 17520 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(lc)*4 /* &.fc */))++ 17521 } else { 17522 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 17523 // Here, lc is the match length - MIN_MATCH 17524 dist-- // dist = match distance - 1 17525 17526 *(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[lc])+LITERALS)+1))*4 /* &.fc */))++ 17527 *(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 { 17528 if (dist) < uint32(256) { 17529 return int32(X_dist_code[dist]) 17530 } 17531 return int32(X_dist_code[(uint32(256) + ((dist) >> 7))]) 17532 }()))*4 /* &.fc */))++ 17533 } 17534 17535 return (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 17536 // We avoid equality with lit_bufsize because of wraparound at 64K 17537 // on 16 bit machines and because stored blocks are restricted to 17538 // 64K-1 bytes. 17539 } 17540 17541 // =========================================================================== 17542 // Send the block data compressed using the given Huffman trees 17543 func compress_block(tls *libc.TLS, s uintptr, ltree uintptr, dtree uintptr) { /* trees.c:1064:12: */ 17544 var dist uint32 // distance of matched string 17545 var lc int32 // match length or unmatched char (if dist == 0) 17546 var lx uint32 = uint32(0) // running index in l_buf 17547 var code uint32 // the code to send 17548 var extra int32 // number of extra bits to send 17549 17550 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != UInt(0) { 17551 for ok := true; ok; ok = (lx < (*Deflate_state)(unsafe.Pointer(s)).Flast_lit) { 17552 dist = uint32(*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr(lx)*2))) 17553 lc = int32(*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&lx, 1))))) 17554 if dist == uint32(0) { 17555 { 17556 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 + 2 /* &.dl */))) 17557 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17558 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */))) 17559 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17560 { 17561 { 17562 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17563 } 17564 { 17565 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17566 } 17567 17568 } 17569 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17570 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17571 } else { 17572 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17573 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17574 } 17575 } 17576 // send a literal byte 17577 17578 } else { 17579 // Here, lc is the match length - MIN_MATCH 17580 code = uint32(X_length_code[lc]) 17581 { 17582 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 + 2 /* &.dl */))) 17583 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17584 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */))) 17585 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17586 { 17587 { 17588 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17589 } 17590 { 17591 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17592 } 17593 17594 } 17595 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17596 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17597 } else { 17598 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17599 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17600 } 17601 } 17602 // send the length code 17603 extra = extra_lbits[code] 17604 if extra != 0 { 17605 lc = lc - (base_length[code]) 17606 { 17607 var len int32 = extra 17608 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17609 var val int32 = lc 17610 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17611 { 17612 { 17613 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17614 } 17615 { 17616 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17617 } 17618 17619 } 17620 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17621 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17622 } else { 17623 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(lc))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17624 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17625 } 17626 } 17627 // send the extra length bits 17628 } 17629 dist-- // dist is now the match distance - 1 17630 code = func() uint32 { 17631 if (dist) < uint32(256) { 17632 return uint32(X_dist_code[dist]) 17633 } 17634 return uint32(X_dist_code[(uint32(256) + ((dist) >> 7))]) 17635 }() 17636 17637 { 17638 var len int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 + 2 /* &.dl */))) 17639 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17640 var val int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */))) 17641 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17642 { 17643 { 17644 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17645 } 17646 { 17647 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17648 } 17649 17650 } 17651 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17652 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17653 } else { 17654 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17655 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17656 } 17657 } 17658 // send the distance code 17659 extra = extra_dbits[code] 17660 if extra != 0 { 17661 dist = dist - (uint32(base_dist[code])) 17662 { 17663 var len int32 = extra 17664 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17665 var val int32 = int32(dist) 17666 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17667 { 17668 { 17669 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17670 } 17671 { 17672 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17673 } 17674 17675 } 17676 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17677 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17678 } else { 17679 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(dist))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17680 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17681 } 17682 } 17683 // send the extra distance bits 17684 } 17685 } // literal or match pair ? 17686 17687 // Check that the overlay between pending_buf and d_buf+l_buf is ok: 17688 17689 } 17690 } 17691 17692 { 17693 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 + 2 /* &.dl */))) 17694 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 17695 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */))) 17696 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17697 { 17698 { 17699 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17700 } 17701 { 17702 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17703 } 17704 17705 } 17706 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 17707 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size) 17708 } else { 17709 *(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 17710 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len) 17711 } 17712 } 17713 17714 } 17715 17716 // =========================================================================== 17717 // Check if the data type is TEXT or BINARY, using the following algorithm: 17718 // - TEXT if the two conditions below are satisfied: 17719 // a) There are no non-portable control characters belonging to the 17720 // "black list" (0..6, 14..25, 28..31). 17721 // b) There is at least one printable character belonging to the 17722 // "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). 17723 // - BINARY otherwise. 17724 // - The following partially-portable control characters form a 17725 // "gray list" that is ignored in this detection algorithm: 17726 // (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). 17727 // IN assertion: the fields Freq of dyn_ltree are set. 17728 func detect_data_type(tls *libc.TLS, s uintptr) int32 { /* trees.c:1124:11: */ 17729 // black_mask is the bit mask of black-listed bytes 17730 // set bits 0..6, 14..25, and 28..31 17731 // 0xf3ffc07f = binary 11110011111111111100000001111111 17732 var black_mask uint64 = 0xf3ffc07f 17733 var n int32 17734 17735 // Check for non-textual ("black-listed") bytes. 17736 n = 0 17737 __1: 17738 if !(n <= 31) { 17739 goto __3 17740 } 17741 if ((black_mask & uint64(1)) != 0) && (int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0) { 17742 return Z_BINARY 17743 } 17744 goto __2 17745 __2: 17746 n++ 17747 black_mask >>= 1 17748 goto __1 17749 goto __3 17750 __3: 17751 ; 17752 17753 // Check for textual ("white-listed") bytes. 17754 if ((int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 9*4 /* &.fc */))) != 0) || (int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 10*4 /* &.fc */))) != 0)) || 17755 (int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 13*4 /* &.fc */))) != 0) { 17756 return Z_TEXT 17757 } 17758 for n = 32; n < LITERALS; n++ { 17759 if int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0 { 17760 return Z_TEXT 17761 } 17762 } 17763 17764 // There are no "black-listed" or "white-listed" bytes: 17765 // this stream either is empty or has tolerated ("gray-listed") bytes only. 17766 return Z_BINARY 17767 } 17768 17769 // =========================================================================== 17770 // Reverse the first len bits of a code, using straightforward code (a faster 17771 // method would use a table) 17772 // IN assertion: 1 <= len <= 15 17773 func bi_reverse(tls *libc.TLS, code uint32, len int32) uint32 { /* trees.c:1158:16: */ 17774 var res uint32 = uint32(0) 17775 for ok := true; ok; ok = (libc.PreDecInt32(&len, 1) > 0) { 17776 res = res | (code & uint32(1)) 17777 code >>= 1 17778 res <<= 1 17779 } 17780 return (res >> 1) 17781 } 17782 17783 // =========================================================================== 17784 // Flush the bit buffer, keeping at most 7 bits in it. 17785 func bi_flush(tls *libc.TLS, s uintptr) { /* trees.c:1173:12: */ 17786 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid == 16 { 17787 { 17788 { 17789 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17790 } 17791 { 17792 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17793 } 17794 17795 } 17796 17797 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 17798 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 17799 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid >= 8 { 17800 { 17801 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 17802 } 17803 17804 libc.AssignShrPtrUint16(s+5936 /* &.bi_buf */, int(8)) 17805 *(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) -= (8) 17806 } 17807 } 17808 17809 // =========================================================================== 17810 // Flush the bit buffer and align the output on a byte boundary 17811 func bi_windup(tls *libc.TLS, s uintptr) { /* trees.c:1190:12: */ 17812 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 8 { 17813 { 17814 { 17815 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 17816 } 17817 { 17818 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 17819 } 17820 17821 } 17822 17823 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 0 { 17824 { 17825 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 17826 } 17827 17828 } 17829 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 17830 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 17831 } 17832 17833 // =========================================================================== 17834 // Decompresses the source buffer into the destination buffer. *sourceLen is 17835 // the byte length of the source buffer. Upon entry, *destLen is the total size 17836 // of the destination buffer, which must be large enough to hold the entire 17837 // uncompressed data. (The size of the uncompressed data must have been saved 17838 // previously by the compressor and transmitted to the decompressor by some 17839 // mechanism outside the scope of this compression library.) Upon exit, 17840 // *destLen is the size of the decompressed data and *sourceLen is the number 17841 // of source bytes consumed. Upon return, source + *sourceLen points to the 17842 // first unused input byte. 17843 // 17844 // uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough 17845 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, or 17846 // Z_DATA_ERROR if the input data was corrupted, including if the input data is 17847 // an incomplete zlib stream. 17848 func Xuncompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen uintptr) int32 { /* uncompr.c:27:13: */ 17849 bp := tls.Alloc(120) 17850 defer tls.Free(120) 17851 17852 // var stream Z_stream at bp+8, 112 17853 17854 var err int32 17855 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 17856 var len ULong 17857 var left ULong 17858 // var buf [1]Byte at bp, 1 17859 // for detection of incomplete stream when *destLen == 0 17860 17861 len = *(*ULong)(unsafe.Pointer(sourceLen)) 17862 if *(*ULongf)(unsafe.Pointer(destLen)) != 0 { 17863 left = *(*ULongf)(unsafe.Pointer(destLen)) 17864 *(*ULongf)(unsafe.Pointer(destLen)) = uint64(0) 17865 } else { 17866 left = uint64(1) 17867 dest = bp /* &buf[0] */ 17868 } 17869 17870 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_in = source 17871 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = UInt(0) 17872 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzalloc = uintptr(0) 17873 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzfree = uintptr(0) 17874 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fopaque = uintptr(0) 17875 17876 err = XinflateInit_(tls, bp+8 /* &stream */, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) 17877 if err != Z_OK { 17878 return err 17879 } 17880 17881 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_out = dest 17882 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = UInt(0) 17883 17884 for ok := true; ok; ok = (err == Z_OK) { 17885 if (*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_out == UInt(0) { 17886 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = func() uint32 { 17887 if left > ULong(max) { 17888 return max 17889 } 17890 return UInt(left) 17891 }() 17892 left = left - (ULong((*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out)) 17893 } 17894 if (*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_in == UInt(0) { 17895 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = func() uint32 { 17896 if len > ULong(max) { 17897 return max 17898 } 17899 return UInt(len) 17900 }() 17901 len = len - (ULong((*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in)) 17902 } 17903 err = Xinflate(tls, bp+8 /* &stream */, Z_NO_FLUSH) 17904 } 17905 17906 *(*ULong)(unsafe.Pointer(sourceLen)) -= (len + ULong((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_in)) 17907 if dest != bp /* buf */ { 17908 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Ftotal_out 17909 } else if ((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Ftotal_out != 0) && (err == (-5)) { 17910 left = uint64(1) 17911 } 17912 17913 XinflateEnd(tls, bp+8 /* &stream */) 17914 if err == Z_STREAM_END { 17915 return Z_OK 17916 } 17917 if err == Z_NEED_DICT { 17918 return -3 17919 } 17920 if (err == (-5)) && ((left + ULong((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_out)) != 0) { 17921 return -3 17922 } 17923 return err 17924 } 17925 17926 func Xuncompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* uncompr.c:86:13: */ 17927 bp := tls.Alloc(8) 17928 defer tls.Free(8) 17929 *(*ULong)(unsafe.Pointer(bp)) = sourceLen 17930 17931 return Xuncompress2(tls, dest, destLen, source, bp /* &sourceLen */) 17932 } 17933 17934 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 17935 // value -- needed when comparing unsigned to z_off64_t, which is signed 17936 // (possible z_off64_t types off_t, off64_t, and long are all signed) 17937 17938 var Xz_errmsg = [10]uintptr{ 17939 uintptr(ts + 876 /* "need dictionary" */), // Z_NEED_DICT 2 17940 uintptr(ts + 892 /* "stream end" */), // Z_STREAM_END 1 17941 uintptr(ts + 101 /* "" */), // Z_OK 0 17942 uintptr(ts + 903 /* "file error" */), // Z_ERRNO (-1) 17943 uintptr(ts + 914 /* "stream error" */), // Z_STREAM_ERROR (-2) 17944 uintptr(ts + 927 /* "data error" */), // Z_DATA_ERROR (-3) 17945 uintptr(ts + 938 /* "insufficient mem..." */), // Z_MEM_ERROR (-4) 17946 uintptr(ts + 958 /* "buffer error" */), // Z_BUF_ERROR (-5) 17947 uintptr(ts + 971 /* "incompatible ver..." */), // Z_VERSION_ERROR (-6) 17948 uintptr(ts + 101 /* "" */), 17949 } /* zutil.c:13:14 */ 17950 17951 func XzlibVersion(tls *libc.TLS) uintptr { /* zutil.c:27:12: */ 17952 return ts /* "1.2.11" */ 17953 } 17954 17955 func XzlibCompileFlags(tls *libc.TLS) ULong { /* zutil.c:32:15: */ 17956 var flags ULong 17957 17958 flags = uint64(0) 17959 switch int32(unsafe.Sizeof(UInt(0))) { 17960 case 2: 17961 break 17962 case 4: 17963 flags = flags + (uint64(1)) 17964 break 17965 case 8: 17966 flags = flags + (uint64(2)) 17967 break 17968 default: 17969 flags = flags + (uint64(3)) 17970 } 17971 switch int32(unsafe.Sizeof(ULong(0))) { 17972 case 2: 17973 break 17974 case 4: 17975 flags = flags + (uint64(int32(1) << 2)) 17976 break 17977 case 8: 17978 flags = flags + (uint64(int32(2) << 2)) 17979 break 17980 default: 17981 flags = flags + (uint64(int32(3) << 2)) 17982 } 17983 switch int32(unsafe.Sizeof(Voidpf(0))) { 17984 case 2: 17985 break 17986 case 4: 17987 flags = flags + (uint64(int32(1) << 4)) 17988 break 17989 case 8: 17990 flags = flags + (uint64(int32(2) << 4)) 17991 break 17992 default: 17993 flags = flags + (uint64(int32(3) << 4)) 17994 } 17995 switch int32(unsafe.Sizeof(Off_t(0))) { 17996 case 2: 17997 break 17998 case 4: 17999 flags = flags + (uint64(int32(1) << 6)) 18000 break 18001 case 8: 18002 flags = flags + (uint64(int32(2) << 6)) 18003 break 18004 default: 18005 flags = flags + (uint64(int32(3) << 6)) 18006 } 18007 return flags 18008 } 18009 18010 // exported to allow conversion of error code to string for compress() and 18011 // uncompress() 18012 func XzError(tls *libc.TLS, err int32) uintptr { /* zutil.c:133:12: */ 18013 return Xz_errmsg[(Z_NEED_DICT - (err))] 18014 } 18015 18016 func Xzcalloc(tls *libc.TLS, opaque Voidpf, items uint32, size uint32) Voidpf { /* zutil.c:305:22: */ 18017 _ = opaque 18018 if uint64(unsafe.Sizeof(UInt(0))) > uint64(2) { 18019 return libc.Xmalloc(tls, (uint64(items * size))) 18020 } 18021 return libc.Xcalloc(tls, uint64(items), uint64(size)) 18022 } 18023 18024 func Xzcfree(tls *libc.TLS, opaque Voidpf, ptr Voidpf) { /* zutil.c:315:20: */ 18025 _ = opaque 18026 libc.Xfree(tls, ptr) 18027 } 18028 18029 func init() { 18030 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 8 /* .func */)) = deflate_stored // deflate.c:136:29: 18031 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 24 /* .func */)) = deflate_fast // deflate.c:137:29: 18032 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 40 /* .func */)) = deflate_fast // deflate.c:138:29: 18033 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 56 /* .func */)) = deflate_fast // deflate.c:139:29: 18034 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 72 /* .func */)) = deflate_slow // deflate.c:141:29: 18035 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 88 /* .func */)) = deflate_slow // deflate.c:142:29: 18036 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 104 /* .func */)) = deflate_slow // deflate.c:143:29: 18037 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 120 /* .func */)) = deflate_slow // deflate.c:144:29: 18038 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 136 /* .func */)) = deflate_slow // deflate.c:145:30: 18039 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 152 /* .func */)) = deflate_slow // deflate.c:146:30: 18040 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_bl_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_blbits)) // trees.c:132:22: 18041 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_dtree)) // trees.c:129:2: 18042 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_dbits)) // trees.c:129:16: 18043 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_ltree)) // trees.c:126:2: 18044 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_lbits)) // trees.c:126:16: 18045 } 18046 18047 var ts1 = "1.2.11\x00 deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler \x00%s\x00<fd:%d>\x00out of memory\x00\x00%s%s%s\x00: \x00unexpected end of file\x00internal error: inflate stream corrupt\x00compressed data error\x00request does not fit in an int\x00request does not fit in a size_t\x00out of room to push characters\x00internal error: deflate stream corrupt\x00requested length does not fit in int\x00invalid block type\x00invalid stored block lengths\x00too many length or distance symbols\x00invalid code lengths set\x00invalid bit length repeat\x00invalid code -- missing end-of-block\x00invalid literal/lengths set\x00invalid distances set\x00invalid literal/length code\x00invalid distance code\x00invalid distance too far back\x00incorrect header check\x00unknown compression method\x00invalid window size\x00unknown header flags set\x00header crc mismatch\x00incorrect data check\x00incorrect length check\x00 inflate 1.2.11 Copyright 1995-2017 Mark Adler \x00need dictionary\x00stream end\x00file error\x00stream error\x00data error\x00insufficient memory\x00buffer error\x00incompatible version\x00" 18048 var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data