modernc.org/z@v1.7.4/lib/z_linux_arm.go (about) 1 // Code generated by 'ccgo -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -o lib/z_linux_arm.go -pkgname z -trace-translation-units /tmp/go-generate-1705985058/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 AIO_PRIO_DELTA_MAX = 20 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 = 2048 31 CHAR_BIT = 8 32 CHAR_MAX = 255 33 CHAR_MIN = 0 34 COLL_WEIGHTS_MAX = 255 35 DEF_MEM_LEVEL = 8 36 DEF_WBITS = 15 37 DELAYTIMER_MAX = 2147483647 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 HAVE_HIDDEN = 1 50 HAVE_MEMCPY = 0 51 HOST_NAME_MAX = 64 52 INT_MAX = 2147483647 53 INT_MIN = -2147483648 54 LINE_MAX = 2048 55 LITTLE_ENDIAN = 1234 56 LLONG_MAX = 9223372036854775807 57 LLONG_MIN = -9223372036854775808 58 LOGIN_NAME_MAX = 256 59 LONG_MAX = 2147483647 60 LONG_MIN = -2147483648 61 L_INCR = 1 62 L_SET = 0 63 L_XTND = 2 64 MAX_CANON = 255 65 MAX_INPUT = 255 66 MAX_MATCH = 258 67 MAX_MEM_LEVEL = 9 68 MAX_WBITS = 15 69 MB_LEN_MAX = 16 70 MIN_MATCH = 3 71 MQ_PRIO_MAX = 32768 72 NAME_MAX = 255 73 NGROUPS_MAX = 65536 74 NMAX = 5552 75 OS_CODE = 3 76 PATH_MAX = 4096 77 PDP_ENDIAN = 3412 78 PIPE_BUF = 4096 79 PRESET_DICT = 0x20 80 PTHREAD_DESTRUCTOR_ITERATIONS = 4 81 PTHREAD_KEYS_MAX = 1024 82 PTHREAD_STACK_MIN = 16384 83 RAND_MAX = 2147483647 84 RE_DUP_MAX = 32767 85 RTSIG_MAX = 32 86 R_OK = 4 87 SCHAR_MAX = 127 88 SCHAR_MIN = -128 89 SEEK_CUR = 1 90 SEEK_END = 2 91 SEEK_SET = 0 92 SEM_VALUE_MAX = 2147483647 93 SHRT_MAX = 32767 94 SHRT_MIN = -32768 95 SSIZE_MAX = 2147483647 96 STATIC_TREES = 1 97 STDC = 0 98 STDC99 = 0 99 STDERR_FILENO = 2 100 STDIN_FILENO = 0 101 STDOUT_FILENO = 1 102 STORED_BLOCK = 0 103 TTY_NAME_MAX = 32 104 UCHAR_MAX = 255 105 UINT_MAX = 4294967295 106 ULLONG_MAX = 18446744073709551615 107 ULONG_MAX = 4294967295 108 USHRT_MAX = 65535 109 WCONTINUED = 8 110 WEXITED = 4 111 WNOHANG = 1 112 WNOWAIT = 0x01000000 113 WSTOPPED = 2 114 WUNTRACED = 2 115 W_OK = 2 116 XATTR_LIST_MAX = 65536 117 XATTR_NAME_MAX = 255 118 XATTR_SIZE_MAX = 65536 119 X_OK = 1 120 ZCONF_H = 0 121 ZEXPORT = 0 122 ZEXPORTVA = 0 123 ZLIB_H = 0 124 ZLIB_VERNUM = 0x12b0 125 ZLIB_VERSION = "1.2.11" 126 ZLIB_VER_MAJOR = 1 127 ZLIB_VER_MINOR = 2 128 ZLIB_VER_REVISION = 11 129 ZLIB_VER_SUBREVISION = 0 130 ZUTIL_H = 0 131 Z_ASCII = 1 132 Z_BEST_COMPRESSION = 9 133 Z_BEST_SPEED = 1 134 Z_BINARY = 0 135 Z_BLOCK = 5 136 Z_BUF_ERROR = -5 137 Z_DATA_ERROR = -3 138 Z_DEFAULT_COMPRESSION = -1 139 Z_DEFAULT_STRATEGY = 0 140 Z_DEFLATED = 8 141 Z_ERRNO = -1 142 Z_FILTERED = 1 143 Z_FINISH = 4 144 Z_FIXED = 4 145 Z_FULL_FLUSH = 3 146 Z_HAVE_STDARG_H = 0 147 Z_HAVE_UNISTD_H = 0 148 Z_HUFFMAN_ONLY = 2 149 Z_LARGE64 = 0 150 Z_LFS64 = 0 151 Z_MEM_ERROR = -4 152 Z_NEED_DICT = 2 153 Z_NO_COMPRESSION = 0 154 Z_NO_FLUSH = 0 155 Z_NULL = 0 156 Z_OK = 0 157 Z_PARTIAL_FLUSH = 1 158 Z_RLE = 3 159 Z_STREAM_END = 1 160 Z_STREAM_ERROR = -2 161 Z_SYNC_FLUSH = 2 162 Z_TEXT = 1 163 Z_TREES = 6 164 Z_UNKNOWN = 2 165 Z_VERSION_ERROR = -6 166 Z_WANT64 = 0 167 X_ALLOCA_H = 1 168 X_ANSI_STDARG_H_ = 0 169 X_ANSI_STDDEF_H = 0 170 X_ATFILE_SOURCE = 1 171 X_BITS_BYTESWAP_H = 1 172 X_BITS_ENDIANNESS_H = 1 173 X_BITS_ENDIAN_H = 1 174 X_BITS_FLOATN_COMMON_H = 0 175 X_BITS_POSIX1_LIM_H = 1 176 X_BITS_POSIX2_LIM_H = 1 177 X_BITS_POSIX_OPT_H = 1 178 X_BITS_PTHREADTYPES_ARCH_H = 1 179 X_BITS_PTHREADTYPES_COMMON_H = 1 180 X_BITS_STDINT_INTN_H = 1 181 X_BITS_TIME64_H = 1 182 X_BITS_TYPESIZES_H = 1 183 X_BITS_TYPES_H = 1 184 X_BITS_TYPES_LOCALE_T_H = 1 185 X_BITS_TYPES___LOCALE_T_H = 1 186 X_BITS_UINTN_IDENTITY_H = 1 187 X_BSD_PTRDIFF_T_ = 0 188 X_BSD_SIZE_T_ = 0 189 X_BSD_SIZE_T_DEFINED_ = 0 190 X_DEFAULT_SOURCE = 1 191 X_ENDIAN_H = 1 192 X_FEATURES_H = 1 193 X_FILE_OFFSET_BITS = 64 194 X_GCC_LIMITS_H_ = 0 195 X_GCC_MAX_ALIGN_T = 0 196 X_GCC_PTRDIFF_T = 0 197 X_GCC_SIZE_T = 0 198 X_GCC_WCHAR_T = 0 199 X_GETOPT_CORE_H = 1 200 X_GETOPT_POSIX_H = 1 201 X_LARGEFILE64_SOURCE = 1 202 X_LFS64_ASYNCHRONOUS_IO = 1 203 X_LFS64_LARGEFILE = 1 204 X_LFS64_STDIO = 1 205 X_LFS_ASYNCHRONOUS_IO = 1 206 X_LFS_LARGEFILE = 1 207 X_LIBC_LIMITS_H_ = 1 208 X_LIMITS_H___ = 0 209 X_LINUX_LIMITS_H = 0 210 X_POSIX2_BC_BASE_MAX = 99 211 X_POSIX2_BC_DIM_MAX = 2048 212 X_POSIX2_BC_SCALE_MAX = 99 213 X_POSIX2_BC_STRING_MAX = 1000 214 X_POSIX2_CHARCLASS_NAME_MAX = 14 215 X_POSIX2_CHAR_TERM = 200809 216 X_POSIX2_COLL_WEIGHTS_MAX = 2 217 X_POSIX2_C_BIND = 200809 218 X_POSIX2_C_DEV = 200809 219 X_POSIX2_C_VERSION = 200809 220 X_POSIX2_EXPR_NEST_MAX = 32 221 X_POSIX2_LINE_MAX = 2048 222 X_POSIX2_LOCALEDEF = 200809 223 X_POSIX2_RE_DUP_MAX = 255 224 X_POSIX2_SW_DEV = 200809 225 X_POSIX2_VERSION = 200809 226 X_POSIX_ADVISORY_INFO = 200809 227 X_POSIX_AIO_LISTIO_MAX = 2 228 X_POSIX_AIO_MAX = 1 229 X_POSIX_ARG_MAX = 4096 230 X_POSIX_ASYNCHRONOUS_IO = 200809 231 X_POSIX_ASYNC_IO = 1 232 X_POSIX_BARRIERS = 200809 233 X_POSIX_CHILD_MAX = 25 234 X_POSIX_CHOWN_RESTRICTED = 0 235 X_POSIX_CLOCKRES_MIN = 20000000 236 X_POSIX_CLOCK_SELECTION = 200809 237 X_POSIX_CPUTIME = 0 238 X_POSIX_C_SOURCE = 200809 239 X_POSIX_DELAYTIMER_MAX = 32 240 X_POSIX_FSYNC = 200809 241 X_POSIX_HOST_NAME_MAX = 255 242 X_POSIX_IPV6 = 200809 243 X_POSIX_JOB_CONTROL = 1 244 X_POSIX_LINK_MAX = 8 245 X_POSIX_LOGIN_NAME_MAX = 9 246 X_POSIX_MAPPED_FILES = 200809 247 X_POSIX_MAX_CANON = 255 248 X_POSIX_MAX_INPUT = 255 249 X_POSIX_MEMLOCK = 200809 250 X_POSIX_MEMLOCK_RANGE = 200809 251 X_POSIX_MEMORY_PROTECTION = 200809 252 X_POSIX_MESSAGE_PASSING = 200809 253 X_POSIX_MONOTONIC_CLOCK = 0 254 X_POSIX_MQ_OPEN_MAX = 8 255 X_POSIX_MQ_PRIO_MAX = 32 256 X_POSIX_NAME_MAX = 14 257 X_POSIX_NGROUPS_MAX = 8 258 X_POSIX_NO_TRUNC = 1 259 X_POSIX_OPEN_MAX = 20 260 X_POSIX_PATH_MAX = 256 261 X_POSIX_PIPE_BUF = 512 262 X_POSIX_PRIORITIZED_IO = 200809 263 X_POSIX_PRIORITY_SCHEDULING = 200809 264 X_POSIX_RAW_SOCKETS = 200809 265 X_POSIX_READER_WRITER_LOCKS = 200809 266 X_POSIX_REALTIME_SIGNALS = 200809 267 X_POSIX_REENTRANT_FUNCTIONS = 1 268 X_POSIX_REGEXP = 1 269 X_POSIX_RE_DUP_MAX = 255 270 X_POSIX_RTSIG_MAX = 8 271 X_POSIX_SAVED_IDS = 1 272 X_POSIX_SEMAPHORES = 200809 273 X_POSIX_SEM_NSEMS_MAX = 256 274 X_POSIX_SEM_VALUE_MAX = 32767 275 X_POSIX_SHARED_MEMORY_OBJECTS = 200809 276 X_POSIX_SHELL = 1 277 X_POSIX_SIGQUEUE_MAX = 32 278 X_POSIX_SOURCE = 1 279 X_POSIX_SPAWN = 200809 280 X_POSIX_SPIN_LOCKS = 200809 281 X_POSIX_SPORADIC_SERVER = -1 282 X_POSIX_SSIZE_MAX = 32767 283 X_POSIX_STREAM_MAX = 8 284 X_POSIX_SYMLINK_MAX = 255 285 X_POSIX_SYMLOOP_MAX = 8 286 X_POSIX_SYNCHRONIZED_IO = 200809 287 X_POSIX_THREADS = 200809 288 X_POSIX_THREAD_ATTR_STACKADDR = 200809 289 X_POSIX_THREAD_ATTR_STACKSIZE = 200809 290 X_POSIX_THREAD_CPUTIME = 0 291 X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4 292 X_POSIX_THREAD_KEYS_MAX = 128 293 X_POSIX_THREAD_PRIORITY_SCHEDULING = 200809 294 X_POSIX_THREAD_PRIO_INHERIT = 200809 295 X_POSIX_THREAD_PRIO_PROTECT = 200809 296 X_POSIX_THREAD_PROCESS_SHARED = 200809 297 X_POSIX_THREAD_ROBUST_PRIO_INHERIT = 200809 298 X_POSIX_THREAD_ROBUST_PRIO_PROTECT = -1 299 X_POSIX_THREAD_SAFE_FUNCTIONS = 200809 300 X_POSIX_THREAD_SPORADIC_SERVER = -1 301 X_POSIX_THREAD_THREADS_MAX = 64 302 X_POSIX_TIMEOUTS = 200809 303 X_POSIX_TIMERS = 200809 304 X_POSIX_TIMER_MAX = 32 305 X_POSIX_TRACE = -1 306 X_POSIX_TRACE_EVENT_FILTER = -1 307 X_POSIX_TRACE_INHERIT = -1 308 X_POSIX_TRACE_LOG = -1 309 X_POSIX_TTY_NAME_MAX = 9 310 X_POSIX_TYPED_MEMORY_OBJECTS = -1 311 X_POSIX_TZNAME_MAX = 6 312 X_POSIX_V6_ILP32_OFF32 = 1 313 X_POSIX_V6_ILP32_OFFBIG = 1 314 X_POSIX_V6_LP64_OFF64 = -1 315 X_POSIX_V6_LPBIG_OFFBIG = -1 316 X_POSIX_V7_ILP32_OFF32 = 1 317 X_POSIX_V7_ILP32_OFFBIG = 1 318 X_POSIX_V7_LP64_OFF64 = -1 319 X_POSIX_V7_LPBIG_OFFBIG = -1 320 X_POSIX_VDISABLE = 0 321 X_POSIX_VERSION = 200809 322 X_PTRDIFF_T = 0 323 X_PTRDIFF_T_ = 0 324 X_PTRDIFF_T_DECLARED = 0 325 X_SIZET_ = 0 326 X_SIZE_T = 0 327 X_SIZE_T_ = 0 328 X_SIZE_T_DECLARED = 0 329 X_SIZE_T_DEFINED = 0 330 X_SIZE_T_DEFINED_ = 0 331 X_STDARG_H = 0 332 X_STDC_PREDEF_H = 1 333 X_STDDEF_H = 0 334 X_STDDEF_H_ = 0 335 X_STDLIB_H = 1 336 X_STRINGS_H = 1 337 X_STRING_H = 1 338 X_STRUCT_TIMESPEC = 1 339 X_SYS_CDEFS_H = 1 340 X_SYS_SELECT_H = 1 341 X_SYS_SIZE_T_H = 0 342 X_SYS_TYPES_H = 1 343 X_THREAD_MUTEX_INTERNAL_H = 1 344 X_THREAD_SHARED_TYPES_H = 1 345 X_T_PTRDIFF = 0 346 X_T_PTRDIFF_ = 0 347 X_T_SIZE = 0 348 X_T_SIZE_ = 0 349 X_T_WCHAR = 0 350 X_T_WCHAR_ = 0 351 X_UNISTD_H = 1 352 X_VA_LIST = 0 353 X_VA_LIST_ = 0 354 X_VA_LIST_DEFINED = 0 355 X_VA_LIST_T_H = 0 356 X_WCHAR_T = 0 357 X_WCHAR_T_ = 0 358 X_WCHAR_T_DECLARED = 0 359 X_WCHAR_T_DEFINED = 0 360 X_WCHAR_T_DEFINED_ = 0 361 X_WCHAR_T_H = 0 362 X_XBS5_ILP32_OFF32 = 1 363 X_XBS5_ILP32_OFFBIG = 1 364 X_XBS5_LP64_OFF64 = -1 365 X_XBS5_LPBIG_OFFBIG = -1 366 X_XOPEN_ENH_I18N = 1 367 X_XOPEN_LEGACY = 1 368 X_XOPEN_REALTIME = 1 369 X_XOPEN_REALTIME_THREADS = 1 370 X_XOPEN_SHM = 1 371 X_XOPEN_UNIX = 1 372 X_XOPEN_VERSION = 700 373 X_XOPEN_XCU_VERSION = 4 374 X_XOPEN_XPG2 = 1 375 X_XOPEN_XPG3 = 1 376 X_XOPEN_XPG4 = 1 377 Linux = 1 378 Unix = 1 379 Z_const = 0 380 BYFOUR = 0 381 GF2_DIM = 32 382 TBLS = 8 383 BL_CODES = 19 384 BUSY_STATE = 113 385 Buf_size = 16 386 COMMENT_STATE = 91 387 DEFLATE_H = 0 388 D_CODES = 30 389 EXTRA_STATE = 69 390 FINISH_STATE = 666 391 GZIP = 0 392 GZIP_STATE = 57 393 HCRC_STATE = 103 394 HEAP_SIZE = 573 395 INIT_STATE = 42 396 LENGTH_CODES = 29 397 LITERALS = 256 398 L_CODES = 286 399 MAX_BITS = 15 400 MAX_STORED = 65535 401 MIN_LOOKAHEAD = 262 402 NAME_STATE = 73 403 NIL = 0 404 TOO_FAR = 4096 405 WIN_INIT = 258 406 AT_EACCESS = 0x200 407 AT_FDCWD = -100 408 AT_REMOVEDIR = 0x200 409 AT_SYMLINK_FOLLOW = 0x400 410 AT_SYMLINK_NOFOLLOW = 0x100 411 BUFSIZ = 8192 412 COPY1 = 1 413 E2BIG = 7 414 EACCES = 13 415 EADDRINUSE = 98 416 EADDRNOTAVAIL = 99 417 EADV = 68 418 EAFNOSUPPORT = 97 419 EAGAIN = 11 420 EALREADY = 114 421 EBADE = 52 422 EBADF = 9 423 EBADFD = 77 424 EBADMSG = 74 425 EBADR = 53 426 EBADRQC = 56 427 EBADSLT = 57 428 EBFONT = 59 429 EBUSY = 16 430 ECANCELED = 125 431 ECHILD = 10 432 ECHRNG = 44 433 ECOMM = 70 434 ECONNABORTED = 103 435 ECONNREFUSED = 111 436 ECONNRESET = 104 437 EDEADLK = 35 438 EDEADLOCK = 35 439 EDESTADDRREQ = 89 440 EDOM = 33 441 EDOTDOT = 73 442 EDQUOT = 122 443 EEXIST = 17 444 EFAULT = 14 445 EFBIG = 27 446 EHOSTDOWN = 112 447 EHOSTUNREACH = 113 448 EHWPOISON = 133 449 EIDRM = 43 450 EILSEQ = 84 451 EINPROGRESS = 115 452 EINTR = 4 453 EINVAL = 22 454 EIO = 5 455 EISCONN = 106 456 EISDIR = 21 457 EISNAM = 120 458 EKEYEXPIRED = 127 459 EKEYREJECTED = 129 460 EKEYREVOKED = 128 461 EL2HLT = 51 462 EL2NSYNC = 45 463 EL3HLT = 46 464 EL3RST = 47 465 ELIBACC = 79 466 ELIBBAD = 80 467 ELIBEXEC = 83 468 ELIBMAX = 82 469 ELIBSCN = 81 470 ELNRNG = 48 471 ELOOP = 40 472 EMEDIUMTYPE = 124 473 EMFILE = 24 474 EMLINK = 31 475 EMSGSIZE = 90 476 EMULTIHOP = 72 477 ENAMETOOLONG = 36 478 ENAVAIL = 119 479 ENETDOWN = 100 480 ENETRESET = 102 481 ENETUNREACH = 101 482 ENFILE = 23 483 ENOANO = 55 484 ENOBUFS = 105 485 ENOCSI = 50 486 ENODATA = 61 487 ENODEV = 19 488 ENOENT = 2 489 ENOEXEC = 8 490 ENOKEY = 126 491 ENOLCK = 37 492 ENOLINK = 67 493 ENOMEDIUM = 123 494 ENOMEM = 12 495 ENOMSG = 42 496 ENONET = 64 497 ENOPKG = 65 498 ENOPROTOOPT = 92 499 ENOSPC = 28 500 ENOSR = 63 501 ENOSTR = 60 502 ENOSYS = 38 503 ENOTBLK = 15 504 ENOTCONN = 107 505 ENOTDIR = 20 506 ENOTEMPTY = 39 507 ENOTNAM = 118 508 ENOTRECOVERABLE = 131 509 ENOTSOCK = 88 510 ENOTSUP = 95 511 ENOTTY = 25 512 ENOTUNIQ = 76 513 ENXIO = 6 514 EOF = -1 515 EOPNOTSUPP = 95 516 EOVERFLOW = 75 517 EOWNERDEAD = 130 518 EPERM = 1 519 EPFNOSUPPORT = 96 520 EPIPE = 32 521 EPROTO = 71 522 EPROTONOSUPPORT = 93 523 EPROTOTYPE = 91 524 ERANGE = 34 525 EREMCHG = 78 526 EREMOTE = 66 527 EREMOTEIO = 121 528 ERESTART = 85 529 ERFKILL = 132 530 EROFS = 30 531 ESHUTDOWN = 108 532 ESOCKTNOSUPPORT = 94 533 ESPIPE = 29 534 ESRCH = 3 535 ESRMNT = 69 536 ESTALE = 116 537 ESTRPIPE = 86 538 ETIME = 62 539 ETIMEDOUT = 110 540 ETOOMANYREFS = 109 541 ETXTBSY = 26 542 EUCLEAN = 117 543 EUNATCH = 49 544 EUSERS = 87 545 EWOULDBLOCK = 11 546 EXDEV = 18 547 EXFULL = 54 548 FAPPEND = 1024 549 FASYNC = 8192 550 FD_CLOEXEC = 1 551 FFSYNC = 1052672 552 FILENAME_MAX = 4096 553 FNDELAY = 2048 554 FNONBLOCK = 2048 555 FOPEN_MAX = 16 556 F_DUPFD = 0 557 F_DUPFD_CLOEXEC = 1030 558 F_EXLCK = 4 559 F_GETFD = 1 560 F_GETFL = 3 561 F_GETLK = 5 562 F_GETLK64 = 12 563 F_GETOWN = 9 564 F_RDLCK = 0 565 F_SETFD = 2 566 F_SETFL = 4 567 F_SETLK = 6 568 F_SETLK64 = 13 569 F_SETLKW = 7 570 F_SETLKW64 = 14 571 F_SETOWN = 8 572 F_SHLCK = 8 573 F_UNLCK = 2 574 F_WRLCK = 1 575 GZBUFSIZE = 8192 576 GZ_APPEND = 1 577 GZ_NONE = 0 578 GZ_READ = 7247 579 GZ_WRITE = 31153 580 HAVE_VSNPRINTF = 0 581 LOCK_EX = 2 582 LOCK_NB = 4 583 LOCK_SH = 1 584 LOCK_UN = 8 585 LOOK = 0 586 L_ctermid = 9 587 L_tmpnam = 20 588 O_ACCMODE = 0003 589 O_APPEND = 02000 590 O_ASYNC = 020000 591 O_CLOEXEC = 524288 592 O_CREAT = 0100 593 O_DIRECTORY = 16384 594 O_DSYNC = 4096 595 O_EXCL = 0200 596 O_FSYNC = 1052672 597 O_LARGEFILE = 131072 598 O_NDELAY = 2048 599 O_NOCTTY = 0400 600 O_NOFOLLOW = 32768 601 O_NONBLOCK = 04000 602 O_RDONLY = 00 603 O_RDWR = 02 604 O_RSYNC = 1052672 605 O_SYNC = 04010000 606 O_TRUNC = 01000 607 O_WRONLY = 01 608 POSIX_FADV_DONTNEED = 4 609 POSIX_FADV_NOREUSE = 5 610 POSIX_FADV_NORMAL = 0 611 POSIX_FADV_RANDOM = 1 612 POSIX_FADV_SEQUENTIAL = 2 613 POSIX_FADV_WILLNEED = 3 614 P_tmpdir = "/tmp" 615 S_IFBLK = 24576 616 S_IFCHR = 8192 617 S_IFDIR = 16384 618 S_IFIFO = 4096 619 S_IFLNK = 40960 620 S_IFMT = 61440 621 S_IFREG = 32768 622 S_IFSOCK = 49152 623 S_IRGRP = 32 624 S_IROTH = 4 625 S_IRUSR = 256 626 S_IRWXG = 56 627 S_IRWXO = 7 628 S_IRWXU = 448 629 S_ISGID = 1024 630 S_ISUID = 2048 631 S_ISVTX = 512 632 S_IWGRP = 16 633 S_IWOTH = 2 634 S_IWUSR = 128 635 S_IXGRP = 8 636 S_IXOTH = 1 637 S_IXUSR = 64 638 TMP_MAX = 238328 639 UTIME_NOW = 1073741823 640 UTIME_OMIT = 1073741822 641 X_ASM_GENERIC_ERRNO_BASE_H = 0 642 X_ASM_GENERIC_ERRNO_H = 0 643 X_BITS_ERRNO_H = 1 644 X_BITS_STAT_H = 1 645 X_BITS_STDIO_LIM_H = 1 646 X_ERRNO_H = 1 647 X_FCNTL_H = 1 648 X_IOFBF = 0 649 X_IOLBF = 1 650 X_IONBF = 2 651 X_IO_EOF_SEEN = 0x0010 652 X_IO_ERR_SEEN = 0x0020 653 X_IO_USER_LOCK = 0x8000 654 X_LARGEFILE_SOURCE = 1 655 X_MKNOD_VER = 1 656 X_MKNOD_VER_LINUX = 1 657 X_MKNOD_VER_SVR4 = 2 658 X_STATBUF_ST_BLKSIZE = 0 659 X_STATBUF_ST_NSEC = 0 660 X_STATBUF_ST_RDEV = 0 661 X_STAT_VER = 3 662 X_STAT_VER_KERNEL = 1 663 X_STAT_VER_LINUX = 3 664 X_STAT_VER_LINUX_OLD = 1 665 X_STAT_VER_SVR4 = 2 666 X_STDIO_H = 1 667 ENOUGH = 1444 668 ENOUGH_DISTS = 592 669 ENOUGH_LENS = 852 670 GUNZIP = 0 671 MAXBITS = 15 672 DIST_CODE_LEN = 512 673 END_BLOCK = 256 674 MAX_BL_BITS = 7 675 REPZ_11_138 = 18 676 REPZ_3_10 = 17 677 REP_3_6 = 16 678 SMALLEST = 1 679 ) 680 681 // Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; 682 // the `_SC_*' symbols for the NAME argument to `sysconf'; 683 // and the `_CS_*' symbols for the NAME argument to `confstr'. 684 // `sysconf', `pathconf', and `confstr' NAME values. Generic version. 685 // Copyright (C) 1993-2020 Free Software Foundation, Inc. 686 // This file is part of the GNU C Library. 687 // 688 // The GNU C Library is free software; you can redistribute it and/or 689 // modify it under the terms of the GNU Lesser General Public 690 // License as published by the Free Software Foundation; either 691 // version 2.1 of the License, or (at your option) any later version. 692 // 693 // The GNU C Library is distributed in the hope that it will be useful, 694 // but WITHOUT ANY WARRANTY; without even the implied warranty of 695 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 696 // Lesser General Public License for more details. 697 // 698 // You should have received a copy of the GNU Lesser General Public 699 // License along with the GNU C Library; if not, see 700 // <https://www.gnu.org/licenses/>. 701 702 // Values for the NAME argument to `pathconf' and `fpathconf'. 703 const ( /* confname.h:24:1: */ 704 X_PC_LINK_MAX = 0 705 X_PC_MAX_CANON = 1 706 X_PC_MAX_INPUT = 2 707 X_PC_NAME_MAX = 3 708 X_PC_PATH_MAX = 4 709 X_PC_PIPE_BUF = 5 710 X_PC_CHOWN_RESTRICTED = 6 711 X_PC_NO_TRUNC = 7 712 X_PC_VDISABLE = 8 713 X_PC_SYNC_IO = 9 714 X_PC_ASYNC_IO = 10 715 X_PC_PRIO_IO = 11 716 X_PC_SOCK_MAXBUF = 12 717 X_PC_FILESIZEBITS = 13 718 X_PC_REC_INCR_XFER_SIZE = 14 719 X_PC_REC_MAX_XFER_SIZE = 15 720 X_PC_REC_MIN_XFER_SIZE = 16 721 X_PC_REC_XFER_ALIGN = 17 722 X_PC_ALLOC_SIZE_MIN = 18 723 X_PC_SYMLINK_MAX = 19 724 X_PC_2_SYMLINKS = 20 725 ) 726 727 // Values for the NAME argument to `confstr'. 728 const ( /* confname.h:533:1: */ 729 X_CS_PATH = 0 // The default search path. 730 731 X_CS_V6_WIDTH_RESTRICTED_ENVS = 1 732 733 X_CS_GNU_LIBC_VERSION = 2 734 X_CS_GNU_LIBPTHREAD_VERSION = 3 735 736 X_CS_V5_WIDTH_RESTRICTED_ENVS = 4 737 738 X_CS_V7_WIDTH_RESTRICTED_ENVS = 5 739 740 X_CS_LFS_CFLAGS = 1000 741 X_CS_LFS_LDFLAGS = 1001 742 X_CS_LFS_LIBS = 1002 743 X_CS_LFS_LINTFLAGS = 1003 744 X_CS_LFS64_CFLAGS = 1004 745 X_CS_LFS64_LDFLAGS = 1005 746 X_CS_LFS64_LIBS = 1006 747 X_CS_LFS64_LINTFLAGS = 1007 748 749 X_CS_XBS5_ILP32_OFF32_CFLAGS = 1100 750 X_CS_XBS5_ILP32_OFF32_LDFLAGS = 1101 751 X_CS_XBS5_ILP32_OFF32_LIBS = 1102 752 X_CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103 753 X_CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104 754 X_CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105 755 X_CS_XBS5_ILP32_OFFBIG_LIBS = 1106 756 X_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107 757 X_CS_XBS5_LP64_OFF64_CFLAGS = 1108 758 X_CS_XBS5_LP64_OFF64_LDFLAGS = 1109 759 X_CS_XBS5_LP64_OFF64_LIBS = 1110 760 X_CS_XBS5_LP64_OFF64_LINTFLAGS = 1111 761 X_CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112 762 X_CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113 763 X_CS_XBS5_LPBIG_OFFBIG_LIBS = 1114 764 X_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115 765 766 X_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116 767 X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117 768 X_CS_POSIX_V6_ILP32_OFF32_LIBS = 1118 769 X_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119 770 X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120 771 X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121 772 X_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122 773 X_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123 774 X_CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124 775 X_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125 776 X_CS_POSIX_V6_LP64_OFF64_LIBS = 1126 777 X_CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127 778 X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128 779 X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129 780 X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130 781 X_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131 782 783 X_CS_POSIX_V7_ILP32_OFF32_CFLAGS = 1132 784 X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 1133 785 X_CS_POSIX_V7_ILP32_OFF32_LIBS = 1134 786 X_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS = 1135 787 X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 1136 788 X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 1137 789 X_CS_POSIX_V7_ILP32_OFFBIG_LIBS = 1138 790 X_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139 791 X_CS_POSIX_V7_LP64_OFF64_CFLAGS = 1140 792 X_CS_POSIX_V7_LP64_OFF64_LDFLAGS = 1141 793 X_CS_POSIX_V7_LP64_OFF64_LIBS = 1142 794 X_CS_POSIX_V7_LP64_OFF64_LINTFLAGS = 1143 795 X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 1144 796 X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 1145 797 X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 1146 798 X_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147 799 800 X_CS_V6_ENV = 1148 801 X_CS_V7_ENV = 1149 802 ) 803 804 // Values for the argument to `sysconf'. 805 const ( /* confname.h:71:1: */ 806 X_SC_ARG_MAX = 0 807 X_SC_CHILD_MAX = 1 808 X_SC_CLK_TCK = 2 809 X_SC_NGROUPS_MAX = 3 810 X_SC_OPEN_MAX = 4 811 X_SC_STREAM_MAX = 5 812 X_SC_TZNAME_MAX = 6 813 X_SC_JOB_CONTROL = 7 814 X_SC_SAVED_IDS = 8 815 X_SC_REALTIME_SIGNALS = 9 816 X_SC_PRIORITY_SCHEDULING = 10 817 X_SC_TIMERS = 11 818 X_SC_ASYNCHRONOUS_IO = 12 819 X_SC_PRIORITIZED_IO = 13 820 X_SC_SYNCHRONIZED_IO = 14 821 X_SC_FSYNC = 15 822 X_SC_MAPPED_FILES = 16 823 X_SC_MEMLOCK = 17 824 X_SC_MEMLOCK_RANGE = 18 825 X_SC_MEMORY_PROTECTION = 19 826 X_SC_MESSAGE_PASSING = 20 827 X_SC_SEMAPHORES = 21 828 X_SC_SHARED_MEMORY_OBJECTS = 22 829 X_SC_AIO_LISTIO_MAX = 23 830 X_SC_AIO_MAX = 24 831 X_SC_AIO_PRIO_DELTA_MAX = 25 832 X_SC_DELAYTIMER_MAX = 26 833 X_SC_MQ_OPEN_MAX = 27 834 X_SC_MQ_PRIO_MAX = 28 835 X_SC_VERSION = 29 836 X_SC_PAGESIZE = 30 837 X_SC_RTSIG_MAX = 31 838 X_SC_SEM_NSEMS_MAX = 32 839 X_SC_SEM_VALUE_MAX = 33 840 X_SC_SIGQUEUE_MAX = 34 841 X_SC_TIMER_MAX = 35 842 843 // Values for the argument to `sysconf' 844 // corresponding to _POSIX2_* symbols. 845 X_SC_BC_BASE_MAX = 36 846 X_SC_BC_DIM_MAX = 37 847 X_SC_BC_SCALE_MAX = 38 848 X_SC_BC_STRING_MAX = 39 849 X_SC_COLL_WEIGHTS_MAX = 40 850 X_SC_EQUIV_CLASS_MAX = 41 851 X_SC_EXPR_NEST_MAX = 42 852 X_SC_LINE_MAX = 43 853 X_SC_RE_DUP_MAX = 44 854 X_SC_CHARCLASS_NAME_MAX = 45 855 856 X_SC_2_VERSION = 46 857 X_SC_2_C_BIND = 47 858 X_SC_2_C_DEV = 48 859 X_SC_2_FORT_DEV = 49 860 X_SC_2_FORT_RUN = 50 861 X_SC_2_SW_DEV = 51 862 X_SC_2_LOCALEDEF = 52 863 864 X_SC_PII = 53 865 X_SC_PII_XTI = 54 866 X_SC_PII_SOCKET = 55 867 X_SC_PII_INTERNET = 56 868 X_SC_PII_OSI = 57 869 X_SC_POLL = 58 870 X_SC_SELECT = 59 871 X_SC_UIO_MAXIOV = 60 872 X_SC_IOV_MAX = 60 873 X_SC_PII_INTERNET_STREAM = 61 874 X_SC_PII_INTERNET_DGRAM = 62 875 X_SC_PII_OSI_COTS = 63 876 X_SC_PII_OSI_CLTS = 64 877 X_SC_PII_OSI_M = 65 878 X_SC_T_IOV_MAX = 66 879 880 // Values according to POSIX 1003.1c (POSIX threads). 881 X_SC_THREADS = 67 882 X_SC_THREAD_SAFE_FUNCTIONS = 68 883 X_SC_GETGR_R_SIZE_MAX = 69 884 X_SC_GETPW_R_SIZE_MAX = 70 885 X_SC_LOGIN_NAME_MAX = 71 886 X_SC_TTY_NAME_MAX = 72 887 X_SC_THREAD_DESTRUCTOR_ITERATIONS = 73 888 X_SC_THREAD_KEYS_MAX = 74 889 X_SC_THREAD_STACK_MIN = 75 890 X_SC_THREAD_THREADS_MAX = 76 891 X_SC_THREAD_ATTR_STACKADDR = 77 892 X_SC_THREAD_ATTR_STACKSIZE = 78 893 X_SC_THREAD_PRIORITY_SCHEDULING = 79 894 X_SC_THREAD_PRIO_INHERIT = 80 895 X_SC_THREAD_PRIO_PROTECT = 81 896 X_SC_THREAD_PROCESS_SHARED = 82 897 898 X_SC_NPROCESSORS_CONF = 83 899 X_SC_NPROCESSORS_ONLN = 84 900 X_SC_PHYS_PAGES = 85 901 X_SC_AVPHYS_PAGES = 86 902 X_SC_ATEXIT_MAX = 87 903 X_SC_PASS_MAX = 88 904 905 X_SC_XOPEN_VERSION = 89 906 X_SC_XOPEN_XCU_VERSION = 90 907 X_SC_XOPEN_UNIX = 91 908 X_SC_XOPEN_CRYPT = 92 909 X_SC_XOPEN_ENH_I18N = 93 910 X_SC_XOPEN_SHM = 94 911 912 X_SC_2_CHAR_TERM = 95 913 X_SC_2_C_VERSION = 96 914 X_SC_2_UPE = 97 915 916 X_SC_XOPEN_XPG2 = 98 917 X_SC_XOPEN_XPG3 = 99 918 X_SC_XOPEN_XPG4 = 100 919 920 X_SC_CHAR_BIT = 101 921 X_SC_CHAR_MAX = 102 922 X_SC_CHAR_MIN = 103 923 X_SC_INT_MAX = 104 924 X_SC_INT_MIN = 105 925 X_SC_LONG_BIT = 106 926 X_SC_WORD_BIT = 107 927 X_SC_MB_LEN_MAX = 108 928 X_SC_NZERO = 109 929 X_SC_SSIZE_MAX = 110 930 X_SC_SCHAR_MAX = 111 931 X_SC_SCHAR_MIN = 112 932 X_SC_SHRT_MAX = 113 933 X_SC_SHRT_MIN = 114 934 X_SC_UCHAR_MAX = 115 935 X_SC_UINT_MAX = 116 936 X_SC_ULONG_MAX = 117 937 X_SC_USHRT_MAX = 118 938 939 X_SC_NL_ARGMAX = 119 940 X_SC_NL_LANGMAX = 120 941 X_SC_NL_MSGMAX = 121 942 X_SC_NL_NMAX = 122 943 X_SC_NL_SETMAX = 123 944 X_SC_NL_TEXTMAX = 124 945 946 X_SC_XBS5_ILP32_OFF32 = 125 947 X_SC_XBS5_ILP32_OFFBIG = 126 948 X_SC_XBS5_LP64_OFF64 = 127 949 X_SC_XBS5_LPBIG_OFFBIG = 128 950 951 X_SC_XOPEN_LEGACY = 129 952 X_SC_XOPEN_REALTIME = 130 953 X_SC_XOPEN_REALTIME_THREADS = 131 954 955 X_SC_ADVISORY_INFO = 132 956 X_SC_BARRIERS = 133 957 X_SC_BASE = 134 958 X_SC_C_LANG_SUPPORT = 135 959 X_SC_C_LANG_SUPPORT_R = 136 960 X_SC_CLOCK_SELECTION = 137 961 X_SC_CPUTIME = 138 962 X_SC_THREAD_CPUTIME = 139 963 X_SC_DEVICE_IO = 140 964 X_SC_DEVICE_SPECIFIC = 141 965 X_SC_DEVICE_SPECIFIC_R = 142 966 X_SC_FD_MGMT = 143 967 X_SC_FIFO = 144 968 X_SC_PIPE = 145 969 X_SC_FILE_ATTRIBUTES = 146 970 X_SC_FILE_LOCKING = 147 971 X_SC_FILE_SYSTEM = 148 972 X_SC_MONOTONIC_CLOCK = 149 973 X_SC_MULTI_PROCESS = 150 974 X_SC_SINGLE_PROCESS = 151 975 X_SC_NETWORKING = 152 976 X_SC_READER_WRITER_LOCKS = 153 977 X_SC_SPIN_LOCKS = 154 978 X_SC_REGEXP = 155 979 X_SC_REGEX_VERSION = 156 980 X_SC_SHELL = 157 981 X_SC_SIGNALS = 158 982 X_SC_SPAWN = 159 983 X_SC_SPORADIC_SERVER = 160 984 X_SC_THREAD_SPORADIC_SERVER = 161 985 X_SC_SYSTEM_DATABASE = 162 986 X_SC_SYSTEM_DATABASE_R = 163 987 X_SC_TIMEOUTS = 164 988 X_SC_TYPED_MEMORY_OBJECTS = 165 989 X_SC_USER_GROUPS = 166 990 X_SC_USER_GROUPS_R = 167 991 X_SC_2_PBS = 168 992 X_SC_2_PBS_ACCOUNTING = 169 993 X_SC_2_PBS_LOCATE = 170 994 X_SC_2_PBS_MESSAGE = 171 995 X_SC_2_PBS_TRACK = 172 996 X_SC_SYMLOOP_MAX = 173 997 X_SC_STREAMS = 174 998 X_SC_2_PBS_CHECKPOINT = 175 999 1000 X_SC_V6_ILP32_OFF32 = 176 1001 X_SC_V6_ILP32_OFFBIG = 177 1002 X_SC_V6_LP64_OFF64 = 178 1003 X_SC_V6_LPBIG_OFFBIG = 179 1004 1005 X_SC_HOST_NAME_MAX = 180 1006 X_SC_TRACE = 181 1007 X_SC_TRACE_EVENT_FILTER = 182 1008 X_SC_TRACE_INHERIT = 183 1009 X_SC_TRACE_LOG = 184 1010 1011 X_SC_LEVEL1_ICACHE_SIZE = 185 1012 X_SC_LEVEL1_ICACHE_ASSOC = 186 1013 X_SC_LEVEL1_ICACHE_LINESIZE = 187 1014 X_SC_LEVEL1_DCACHE_SIZE = 188 1015 X_SC_LEVEL1_DCACHE_ASSOC = 189 1016 X_SC_LEVEL1_DCACHE_LINESIZE = 190 1017 X_SC_LEVEL2_CACHE_SIZE = 191 1018 X_SC_LEVEL2_CACHE_ASSOC = 192 1019 X_SC_LEVEL2_CACHE_LINESIZE = 193 1020 X_SC_LEVEL3_CACHE_SIZE = 194 1021 X_SC_LEVEL3_CACHE_ASSOC = 195 1022 X_SC_LEVEL3_CACHE_LINESIZE = 196 1023 X_SC_LEVEL4_CACHE_SIZE = 197 1024 X_SC_LEVEL4_CACHE_ASSOC = 198 1025 X_SC_LEVEL4_CACHE_LINESIZE = 199 1026 // Leave room here, maybe we need a few more cache levels some day. 1027 1028 X_SC_IPV6 = 235 1029 X_SC_RAW_SOCKETS = 236 1030 1031 X_SC_V7_ILP32_OFF32 = 237 1032 X_SC_V7_ILP32_OFFBIG = 238 1033 X_SC_V7_LP64_OFF64 = 239 1034 X_SC_V7_LPBIG_OFFBIG = 240 1035 1036 X_SC_SS_REPL_MAX = 241 1037 1038 X_SC_TRACE_EVENT_NAME_MAX = 242 1039 X_SC_TRACE_NAME_MAX = 243 1040 X_SC_TRACE_SYS_MAX = 244 1041 X_SC_TRACE_USER_EVENT_MAX = 245 1042 1043 X_SC_XOPEN_STREAMS = 246 1044 1045 X_SC_THREAD_ROBUST_PRIO_INHERIT = 247 1046 X_SC_THREAD_ROBUST_PRIO_PROTECT = 248 1047 ) 1048 1049 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1050 // This file is part of the GNU C Library. 1051 // 1052 // The GNU C Library is free software; you can redistribute it and/or 1053 // modify it under the terms of the GNU Lesser General Public 1054 // License as published by the Free Software Foundation; either 1055 // version 2.1 of the License, or (at your option) any later version. 1056 // 1057 // The GNU C Library is distributed in the hope that it will be useful, 1058 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1059 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1060 // Lesser General Public License for more details. 1061 // 1062 // You should have received a copy of the GNU Lesser General Public 1063 // License along with the GNU C Library; if not, see 1064 // <https://www.gnu.org/licenses/>. 1065 1066 // ISO C99 Standard: 7.20 General utilities <stdlib.h> 1067 1068 // Handle feature test macros at the start of a header. 1069 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 1070 // This file is part of the GNU C Library. 1071 // 1072 // The GNU C Library is free software; you can redistribute it and/or 1073 // modify it under the terms of the GNU Lesser General Public 1074 // License as published by the Free Software Foundation; either 1075 // version 2.1 of the License, or (at your option) any later version. 1076 // 1077 // The GNU C Library is distributed in the hope that it will be useful, 1078 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1079 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1080 // Lesser General Public License for more details. 1081 // 1082 // You should have received a copy of the GNU Lesser General Public 1083 // License along with the GNU C Library; if not, see 1084 // <https://www.gnu.org/licenses/>. 1085 1086 // This header is internal to glibc and should not be included outside 1087 // of glibc headers. Headers including it must define 1088 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 1089 // cannot have multiple include guards because ISO C feature test 1090 // macros depend on the definition of the macro when an affected 1091 // header is included, not when the first system header is 1092 // included. 1093 1094 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1095 // This file is part of the GNU C Library. 1096 // 1097 // The GNU C Library is free software; you can redistribute it and/or 1098 // modify it under the terms of the GNU Lesser General Public 1099 // License as published by the Free Software Foundation; either 1100 // version 2.1 of the License, or (at your option) any later version. 1101 // 1102 // The GNU C Library is distributed in the hope that it will be useful, 1103 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1104 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1105 // Lesser General Public License for more details. 1106 // 1107 // You should have received a copy of the GNU Lesser General Public 1108 // License along with the GNU C Library; if not, see 1109 // <https://www.gnu.org/licenses/>. 1110 1111 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 1112 // macro. 1113 1114 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 1115 // macro. Most but not all symbols enabled by that macro in TS 1116 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 1117 // still require that macro in C2X. 1118 1119 // ISO/IEC TS 18661-4:2015 defines the 1120 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 1121 // functions, the symbols from this TS are enabled unconditionally in 1122 // C2X. 1123 1124 // ISO/IEC TS 18661-3:2015 defines the 1125 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 1126 1127 // Get size_t, wchar_t and NULL from <stddef.h>. 1128 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 1129 // 1130 // This file is part of GCC. 1131 // 1132 // GCC is free software; you can redistribute it and/or modify 1133 // it under the terms of the GNU General Public License as published by 1134 // the Free Software Foundation; either version 3, or (at your option) 1135 // any later version. 1136 // 1137 // GCC is distributed in the hope that it will be useful, 1138 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1139 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1140 // GNU General Public License for more details. 1141 // 1142 // Under Section 7 of GPL version 3, you are granted additional 1143 // permissions described in the GCC Runtime Library Exception, version 1144 // 3.1, as published by the Free Software Foundation. 1145 // 1146 // You should have received a copy of the GNU General Public License and 1147 // a copy of the GCC Runtime Library Exception along with this program; 1148 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1149 // <http://www.gnu.org/licenses/>. 1150 1151 // ISO C Standard: 7.17 Common definitions <stddef.h> 1152 1153 // Any one of these symbols __need_* means that GNU libc 1154 // wants us just to define one data type. So don't define 1155 // the symbols that indicate this file's entire job has been done. 1156 1157 // This avoids lossage on SunOS but only if stdtypes.h comes first. 1158 // There's no way to win with the other order! Sun lossage. 1159 1160 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 1161 // Just ignore it. 1162 1163 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 1164 // _TYPE_size_t which will typedef size_t. fixincludes patched the 1165 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 1166 // not defined, and so that defining this macro defines _GCC_SIZE_T. 1167 // If we find that the macros are still defined at this point, we must 1168 // invoke them so that the type is defined as expected. 1169 1170 // In case nobody has defined these types, but we aren't running under 1171 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 1172 // __WCHAR_TYPE__ have reasonable values. This can happen if the 1173 // parts of GCC is compiled by an older compiler, that actually 1174 // include gstddef.h, such as collect2. 1175 1176 // Signed type of difference of two pointers. 1177 1178 // Define this type if we are doing the whole job, 1179 // or if we want this type in particular. 1180 1181 // If this symbol has done its job, get rid of it. 1182 1183 // Unsigned type of `sizeof' something. 1184 1185 // Define this type if we are doing the whole job, 1186 // or if we want this type in particular. 1187 1188 // Wide character type. 1189 // Locale-writers should change this as necessary to 1190 // be big enough to hold unique values not between 0 and 127, 1191 // and not (wchar_t) -1, for each defined multibyte character. 1192 1193 // Define this type if we are doing the whole job, 1194 // or if we want this type in particular. 1195 1196 // A null pointer constant. 1197 1198 // Offset of member MEMBER in a struct of type TYPE. 1199 1200 // XPG requires a few symbols from <sys/wait.h> being defined. 1201 // Definitions of flag bits for `waitpid' et al. 1202 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1203 // This file is part of the GNU C Library. 1204 // 1205 // The GNU C Library is free software; you can redistribute it and/or 1206 // modify it under the terms of the GNU Lesser General Public 1207 // License as published by the Free Software Foundation; either 1208 // version 2.1 of the License, or (at your option) any later version. 1209 // 1210 // The GNU C Library is distributed in the hope that it will be useful, 1211 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1212 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1213 // Lesser General Public License for more details. 1214 // 1215 // You should have received a copy of the GNU Lesser General Public 1216 // License along with the GNU C Library; if not, see 1217 // <https://www.gnu.org/licenses/>. 1218 1219 // Bits in the third argument to `waitpid'. 1220 1221 // Bits in the fourth argument to `waitid'. 1222 1223 // The following values are used by the `waitid' function. 1224 1225 // The Linux kernel defines these bare, rather than an enum, 1226 // which causes a conflict if the include order is reversed. 1227 1228 const ( /* waitflags.h:52:1: */ 1229 P_ALL = 0 // Wait for any child. 1230 P_PID = 1 // Wait for specified process. 1231 P_PGID = 2 1232 ) 1233 1234 // 1235 // If you use the zlib library in a product, an acknowledgment is welcome 1236 // in the documentation of your product. If for some reason you cannot 1237 // include such an acknowledgment, I would appreciate that you keep this 1238 // copyright string in the executable of your product. 1239 // 1240 1241 // =========================================================================== 1242 // Function prototypes. 1243 const ( /* deflate.c:66:1: */ 1244 Need_more = 0 // block not completed, need more input or more output 1245 Block_done = 1 // block flush performed 1246 Finish_started = 2 // finish started, need only more output at next deflate 1247 Finish_done = 3 1248 ) 1249 1250 // inflate.h -- internal inflate state definition 1251 // Copyright (C) 1995-2016 Mark Adler 1252 // For conditions of distribution and use, see copyright notice in zlib.h 1253 1254 // WARNING: this file should *not* be used by applications. It is 1255 // part of the implementation of the compression library and is 1256 // subject to change. Applications should only use zlib.h. 1257 // 1258 1259 // define NO_GZIP when compiling if you want to disable gzip header and 1260 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 1261 // the crc code when it is not needed. For shared libraries, gzip decoding 1262 // should be left enabled. 1263 1264 // Possible inflate modes between inflate() calls 1265 const ( /* inflate.h:20:1: */ 1266 HEAD = 16180 // i: waiting for magic header 1267 FLAGS = 16181 // i: waiting for method and flags (gzip) 1268 TIME = 16182 // i: waiting for modification time (gzip) 1269 OS = 16183 // i: waiting for extra flags and operating system (gzip) 1270 EXLEN = 16184 // i: waiting for extra length (gzip) 1271 EXTRA = 16185 // i: waiting for extra bytes (gzip) 1272 NAME = 16186 // i: waiting for end of file name (gzip) 1273 COMMENT = 16187 // i: waiting for end of comment (gzip) 1274 HCRC = 16188 // i: waiting for header crc (gzip) 1275 DICTID = 16189 // i: waiting for dictionary check value 1276 DICT = 16190 // waiting for inflateSetDictionary() call 1277 TYPE = 16191 // i: waiting for type bits, including last-flag bit 1278 TYPEDO = 16192 // i: same, but skip check to exit inflate on new block 1279 STORED = 16193 // i: waiting for stored size (length and complement) 1280 COPY_ = 16194 // i/o: same as COPY below, but only first time in 1281 COPY = 16195 // i/o: waiting for input or output to copy stored block 1282 TABLE = 16196 // i: waiting for dynamic block table lengths 1283 LENLENS = 16197 // i: waiting for code length code lengths 1284 CODELENS = 16198 // i: waiting for length/lit and distance code lengths 1285 LEN_ = 16199 // i: same as LEN below, but only first time in 1286 LEN = 16200 // i: waiting for length/lit/eob code 1287 LENEXT = 16201 // i: waiting for length extra bits 1288 DIST = 16202 // i: waiting for distance code 1289 DISTEXT = 16203 // i: waiting for distance extra bits 1290 MATCH = 16204 // o: waiting for output space to copy string 1291 LIT = 16205 // o: waiting for output space to write literal 1292 CHECK = 16206 // i: waiting for 32-bit check value 1293 LENGTH = 16207 // i: waiting for 32-bit length (gzip) 1294 DONE = 16208 // finished check, done -- remain here until reset 1295 BAD = 16209 // got a data error -- remain here until reset 1296 MEM = 16210 // got an inflate() memory error -- remain here until reset 1297 SYNC = 16211 1298 ) 1299 1300 // op values as set by inflate_table(): 1301 // 00000000 - literal 1302 // 0000tttt - table link, tttt != 0 is the number of table index bits 1303 // 0001eeee - length or distance, eeee is the number of extra bits 1304 // 01100000 - end of block 1305 // 01000000 - invalid code 1306 // 1307 1308 // Maximum size of the dynamic table. The maximum number of code structures is 1309 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 1310 // codes. These values were found by exhaustive searches using the program 1311 // examples/enough.c found in the zlib distribtution. The arguments to that 1312 // program are the number of symbols, the initial root table size, and the 1313 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 1314 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 1315 // The initial root table size (9 or 6) is found in the fifth argument of the 1316 // inflate_table() calls in inflate.c and infback.c. If the root table size is 1317 // changed, then these maximum sizes would be need to be recalculated and 1318 // updated. 1319 1320 // Type of code to build for inflate_table() 1321 const ( /* inftrees.h:54:1: */ 1322 CODES = 0 1323 LENS = 1 1324 DISTS = 2 1325 ) 1326 1327 type Ptrdiff_t = int32 /* <builtin>:3:26 */ 1328 1329 type Size_t = uint32 /* <builtin>:9:23 */ 1330 1331 type Wchar_t = uint32 /* <builtin>:15:24 */ 1332 1333 type X__builtin_va_list = uintptr /* <builtin>:46:14 */ 1334 type X__float128 = float64 /* <builtin>:47:21 */ 1335 1336 // A null pointer constant. 1337 1338 // Offset of member MEMBER in a struct of type TYPE. 1339 1340 // Type whose alignment is supported in every context and is at least 1341 // as great as that of any standard type not using alignment 1342 // specifiers. 1343 type Max_align_t = struct { 1344 F__max_align_ll int64 1345 F__max_align_ld float64 1346 } /* stddef.h:426:3 */ 1347 1348 type Z_size_t = Size_t /* zconf.h:248:21 */ 1349 1350 // Maximum value for memLevel in deflateInit2 1351 1352 // Maximum value for windowBits in deflateInit2 and inflateInit2. 1353 // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files 1354 // created by gzip. (Files created by minigzip can still be extracted by 1355 // gzip.) 1356 1357 // The memory requirements for deflate are (in bytes): 1358 // (1 << (windowBits+2)) + (1 << (memLevel+9)) 1359 // that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) 1360 // plus a few kilobytes for small objects. For example, if you want to reduce 1361 // the default memory requirements from 256K to 128K, compile with 1362 // make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" 1363 // Of course this will generally degrade compression (there's no free lunch). 1364 // 1365 // The memory requirements for inflate are (in bytes) 1 << windowBits 1366 // that is, 32K for windowBits=15 (default value) plus about 7 kilobytes 1367 // for small objects. 1368 1369 // Type declarations 1370 1371 // The following definitions for FAR are needed only for MSDOS mixed 1372 // model programming (small or medium model with some far allocations). 1373 // This was tested only with MSC; for other MSDOS compilers you may have 1374 // to define NO_MEMCPY in zutil.h. If you don't need the mixed model, 1375 // just define FAR to be empty. 1376 1377 type Byte = uint8 /* zconf.h:391:24 */ // 8 bits 1378 type UInt = uint32 /* zconf.h:393:24 */ // 16 bits or more 1379 type ULong = uint32 /* zconf.h:394:24 */ // 32 bits or more 1380 1381 type Bytef = Byte /* zconf.h:400:22 */ 1382 type Charf = uint8 /* zconf.h:402:19 */ 1383 type Intf = int32 /* zconf.h:403:19 */ 1384 type UIntf = UInt /* zconf.h:404:19 */ 1385 type ULongf = ULong /* zconf.h:405:19 */ 1386 1387 type Voidpc = uintptr /* zconf.h:408:23 */ 1388 type Voidpf = uintptr /* zconf.h:409:23 */ 1389 type Voidp = uintptr /* zconf.h:410:23 */ 1390 1391 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1392 // 1393 // This file is part of GCC. 1394 // 1395 // GCC is free software; you can redistribute it and/or modify it under 1396 // the terms of the GNU General Public License as published by the Free 1397 // Software Foundation; either version 3, or (at your option) any later 1398 // version. 1399 // 1400 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 1401 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 1402 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1403 // for more details. 1404 // 1405 // Under Section 7 of GPL version 3, you are granted additional 1406 // permissions described in the GCC Runtime Library Exception, version 1407 // 3.1, as published by the Free Software Foundation. 1408 // 1409 // You should have received a copy of the GNU General Public License and 1410 // a copy of the GCC Runtime Library Exception along with this program; 1411 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1412 // <http://www.gnu.org/licenses/>. 1413 1414 // This administrivia gets added to the beginning of limits.h 1415 // if the system has its own version of limits.h. 1416 1417 // We use _GCC_LIMITS_H_ because we want this not to match 1418 // any macros that the system's limits.h uses for its own purposes. 1419 1420 // Use "..." so that we find syslimits.h only in this same directory. 1421 // syslimits.h stands for the system's own limits.h file. 1422 // If we can use it ok unmodified, then we install this text. 1423 // If fixincludes fixes it, then the fixed version is installed 1424 // instead of this text. 1425 1426 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1427 // This file is part of the GNU C Library. 1428 // 1429 // The GNU C Library is free software; you can redistribute it and/or 1430 // modify it under the terms of the GNU Lesser General Public 1431 // License as published by the Free Software Foundation; either 1432 // version 2.1 of the License, or (at your option) any later version. 1433 // 1434 // The GNU C Library is distributed in the hope that it will be useful, 1435 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1436 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1437 // Lesser General Public License for more details. 1438 // 1439 // You should have received a copy of the GNU Lesser General Public 1440 // License along with the GNU C Library; if not, see 1441 // <https://www.gnu.org/licenses/>. 1442 1443 // ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h> 1444 1445 // Handle feature test macros at the start of a header. 1446 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 1447 // This file is part of the GNU C Library. 1448 // 1449 // The GNU C Library is free software; you can redistribute it and/or 1450 // modify it under the terms of the GNU Lesser General Public 1451 // License as published by the Free Software Foundation; either 1452 // version 2.1 of the License, or (at your option) any later version. 1453 // 1454 // The GNU C Library is distributed in the hope that it will be useful, 1455 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1456 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1457 // Lesser General Public License for more details. 1458 // 1459 // You should have received a copy of the GNU Lesser General Public 1460 // License along with the GNU C Library; if not, see 1461 // <https://www.gnu.org/licenses/>. 1462 1463 // This header is internal to glibc and should not be included outside 1464 // of glibc headers. Headers including it must define 1465 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 1466 // cannot have multiple include guards because ISO C feature test 1467 // macros depend on the definition of the macro when an affected 1468 // header is included, not when the first system header is 1469 // included. 1470 1471 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1472 // This file is part of the GNU C Library. 1473 // 1474 // The GNU C Library is free software; you can redistribute it and/or 1475 // modify it under the terms of the GNU Lesser General Public 1476 // License as published by the Free Software Foundation; either 1477 // version 2.1 of the License, or (at your option) any later version. 1478 // 1479 // The GNU C Library is distributed in the hope that it will be useful, 1480 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1481 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1482 // Lesser General Public License for more details. 1483 // 1484 // You should have received a copy of the GNU Lesser General Public 1485 // License along with the GNU C Library; if not, see 1486 // <https://www.gnu.org/licenses/>. 1487 1488 // These are defined by the user (or the compiler) 1489 // to specify the desired environment: 1490 // 1491 // __STRICT_ANSI__ ISO Standard C. 1492 // _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. 1493 // _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. 1494 // _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X. 1495 // __STDC_WANT_LIB_EXT2__ 1496 // Extensions to ISO C99 from TR 27431-2:2010. 1497 // __STDC_WANT_IEC_60559_BFP_EXT__ 1498 // Extensions to ISO C11 from TS 18661-1:2014. 1499 // __STDC_WANT_IEC_60559_FUNCS_EXT__ 1500 // Extensions to ISO C11 from TS 18661-4:2015. 1501 // __STDC_WANT_IEC_60559_TYPES_EXT__ 1502 // Extensions to ISO C11 from TS 18661-3:2015. 1503 // 1504 // _POSIX_SOURCE IEEE Std 1003.1. 1505 // _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; 1506 // if >=199309L, add IEEE Std 1003.1b-1993; 1507 // if >=199506L, add IEEE Std 1003.1c-1995; 1508 // if >=200112L, all of IEEE 1003.1-2004 1509 // if >=200809L, all of IEEE 1003.1-2008 1510 // _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if 1511 // Single Unix conformance is wanted, to 600 for the 1512 // sixth revision, to 700 for the seventh revision. 1513 // _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. 1514 // _LARGEFILE_SOURCE Some more functions for correct standard I/O. 1515 // _LARGEFILE64_SOURCE Additional functionality from LFS for large files. 1516 // _FILE_OFFSET_BITS=N Select default filesystem interface. 1517 // _ATFILE_SOURCE Additional *at interfaces. 1518 // _GNU_SOURCE All of the above, plus GNU extensions. 1519 // _DEFAULT_SOURCE The default set of features (taking precedence over 1520 // __STRICT_ANSI__). 1521 // 1522 // _FORTIFY_SOURCE Add security hardening to many library functions. 1523 // Set to 1 or 2; 2 performs stricter checks than 1. 1524 // 1525 // _REENTRANT, _THREAD_SAFE 1526 // Obsolete; equivalent to _POSIX_C_SOURCE=199506L. 1527 // 1528 // The `-ansi' switch to the GNU C compiler, and standards conformance 1529 // options such as `-std=c99', define __STRICT_ANSI__. If none of 1530 // these are defined, or if _DEFAULT_SOURCE is defined, the default is 1531 // to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 1532 // 200809L, as well as enabling miscellaneous functions from BSD and 1533 // SVID. If more than one of these are defined, they accumulate. For 1534 // example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together 1535 // give you ISO C, 1003.1, and 1003.2, but nothing else. 1536 // 1537 // These are defined by this file and are used by the 1538 // header files to decide what to declare or define: 1539 // 1540 // __GLIBC_USE (F) Define things from feature set F. This is defined 1541 // to 1 or 0; the subsequent macros are either defined 1542 // or undefined, and those tests should be moved to 1543 // __GLIBC_USE. 1544 // __USE_ISOC11 Define ISO C11 things. 1545 // __USE_ISOC99 Define ISO C99 things. 1546 // __USE_ISOC95 Define ISO C90 AMD1 (C95) things. 1547 // __USE_ISOCXX11 Define ISO C++11 things. 1548 // __USE_POSIX Define IEEE Std 1003.1 things. 1549 // __USE_POSIX2 Define IEEE Std 1003.2 things. 1550 // __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. 1551 // __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. 1552 // __USE_XOPEN Define XPG things. 1553 // __USE_XOPEN_EXTENDED Define X/Open Unix things. 1554 // __USE_UNIX98 Define Single Unix V2 things. 1555 // __USE_XOPEN2K Define XPG6 things. 1556 // __USE_XOPEN2KXSI Define XPG6 XSI things. 1557 // __USE_XOPEN2K8 Define XPG7 things. 1558 // __USE_XOPEN2K8XSI Define XPG7 XSI things. 1559 // __USE_LARGEFILE Define correct standard I/O things. 1560 // __USE_LARGEFILE64 Define LFS things with separate names. 1561 // __USE_FILE_OFFSET64 Define 64bit interface as default. 1562 // __USE_MISC Define things from 4.3BSD or System V Unix. 1563 // __USE_ATFILE Define *at interfaces and AT_* constants for them. 1564 // __USE_GNU Define GNU extensions. 1565 // __USE_FORTIFY_LEVEL Additional security measures used, according to level. 1566 // 1567 // The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are 1568 // defined by this file unconditionally. `__GNU_LIBRARY__' is provided 1569 // only for compatibility. All new code should use the other symbols 1570 // to test for features. 1571 // 1572 // All macros listed above as possibly being defined by this file are 1573 // explicitly undefined if they are not explicitly defined. 1574 // Feature-test macros that are not defined by the user or compiler 1575 // but are implied by the other feature-test macros defined (or by the 1576 // lack of any definitions) are defined by the file. 1577 // 1578 // ISO C feature test macros depend on the definition of the macro 1579 // when an affected header is included, not when the first system 1580 // header is included, and so they are handled in 1581 // <bits/libc-header-start.h>, which does not have a multiple include 1582 // guard. Feature test macros that can be handled from the first 1583 // system header included are handled here. 1584 1585 // Undefine everything, so we get a clean slate. 1586 1587 // Suppress kernel-name space pollution unless user expressedly asks 1588 // for it. 1589 1590 // Convenience macro to test the version of gcc. 1591 // Use like this: 1592 // #if __GNUC_PREREQ (2,8) 1593 // ... code requiring gcc 2.8 or later ... 1594 // #endif 1595 // Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was 1596 // added in 2.0. 1597 1598 // Similarly for clang. Features added to GCC after version 4.2 may 1599 // or may not also be available in clang, and clang's definitions of 1600 // __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such 1601 // features can be queried via __has_extension/__has_feature. 1602 1603 // Whether to use feature set F. 1604 1605 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for 1606 // _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not 1607 // issue a warning; the expectation is that the source is being 1608 // transitioned to use the new macro. 1609 1610 // If _GNU_SOURCE was defined by the user, turn on all the other features. 1611 1612 // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, 1613 // define _DEFAULT_SOURCE. 1614 1615 // This is to enable the ISO C2X extension. 1616 1617 // This is to enable the ISO C11 extension. 1618 1619 // This is to enable the ISO C99 extension. 1620 1621 // This is to enable the ISO C90 Amendment 1:1995 extension. 1622 1623 // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE 1624 // is defined, use POSIX.1-2008 (or another version depending on 1625 // _XOPEN_SOURCE). 1626 1627 // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be 1628 // defined in all multithreaded code. GNU libc has not required this 1629 // for many years. We now treat them as compatibility synonyms for 1630 // _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with 1631 // comprehensive support for multithreaded code. Using them never 1632 // lowers the selected level of POSIX conformance, only raises it. 1633 1634 // The function 'gets' existed in C89, but is impossible to use 1635 // safely. It has been removed from ISO C11 and ISO C++14. Note: for 1636 // compatibility with various implementations of <cstdio>, this test 1637 // must consider only the value of __cplusplus when compiling C++. 1638 1639 // GNU formerly extended the scanf functions with modified format 1640 // specifiers %as, %aS, and %a[...] that allocate a buffer for the 1641 // input using malloc. This extension conflicts with ISO C99, which 1642 // defines %a as a standalone format specifier that reads a floating- 1643 // point number; moreover, POSIX.1-2008 provides the same feature 1644 // using the modifier letter 'm' instead (%ms, %mS, %m[...]). 1645 // 1646 // We now follow C99 unless GNU extensions are active and the compiler 1647 // is specifically in C89 or C++98 mode (strict or not). For 1648 // instance, with GCC, -std=gnu11 will have C99-compliant scanf with 1649 // or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the 1650 // old extension. 1651 1652 // Get definitions of __STDC_* predefined macros, if the compiler has 1653 // not preincluded this header automatically. 1654 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1655 // This file is part of the GNU C Library. 1656 // 1657 // The GNU C Library is free software; you can redistribute it and/or 1658 // modify it under the terms of the GNU Lesser General Public 1659 // License as published by the Free Software Foundation; either 1660 // version 2.1 of the License, or (at your option) any later version. 1661 // 1662 // The GNU C Library is distributed in the hope that it will be useful, 1663 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1664 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1665 // Lesser General Public License for more details. 1666 // 1667 // You should have received a copy of the GNU Lesser General Public 1668 // License along with the GNU C Library; if not, see 1669 // <https://www.gnu.org/licenses/>. 1670 1671 // This macro indicates that the installed library is the GNU C Library. 1672 // For historic reasons the value now is 6 and this will stay from now 1673 // on. The use of this variable is deprecated. Use __GLIBC__ and 1674 // __GLIBC_MINOR__ now (see below) when you want to test for a specific 1675 // GNU C library version and use the values in <gnu/lib-names.h> to get 1676 // the sonames of the shared libraries. 1677 1678 // Major and minor version number of the GNU C library package. Use 1679 // these macros to test for features in specific releases. 1680 1681 // This is here only because every header file already includes this one. 1682 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1683 // This file is part of the GNU C Library. 1684 // 1685 // The GNU C Library is free software; you can redistribute it and/or 1686 // modify it under the terms of the GNU Lesser General Public 1687 // License as published by the Free Software Foundation; either 1688 // version 2.1 of the License, or (at your option) any later version. 1689 // 1690 // The GNU C Library is distributed in the hope that it will be useful, 1691 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1692 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1693 // Lesser General Public License for more details. 1694 // 1695 // You should have received a copy of the GNU Lesser General Public 1696 // License along with the GNU C Library; if not, see 1697 // <https://www.gnu.org/licenses/>. 1698 1699 // We are almost always included from features.h. 1700 1701 // The GNU libc does not support any K&R compilers or the traditional mode 1702 // of ISO C compilers anymore. Check for some of the combinations not 1703 // anymore supported. 1704 1705 // Some user header file might have defined this before. 1706 1707 // All functions, except those with callbacks or those that 1708 // synchronize memory, are leaf functions. 1709 1710 // GCC can always grok prototypes. For C++ programs we add throw() 1711 // to help it optimize the function calls. But this works only with 1712 // gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions 1713 // as non-throwing using a function attribute since programs can use 1714 // the -fexceptions options for C code as well. 1715 1716 // Compilers that are not clang may object to 1717 // #if defined __clang__ && __has_extension(...) 1718 // even though they do not need to evaluate the right-hand side of the &&. 1719 1720 // These two macros are not used in glibc anymore. They are kept here 1721 // only because some other projects expect the macros to be defined. 1722 1723 // For these things, GCC behaves the ANSI way normally, 1724 // and the non-ANSI way under -traditional. 1725 1726 // This is not a typedef so `const __ptr_t' does the right thing. 1727 1728 // C++ needs to know that types and declarations are C, not C++. 1729 1730 // Fortify support. 1731 1732 // Support for flexible arrays. 1733 // Headers that should use flexible arrays only if they're "real" 1734 // (e.g. only if they won't affect sizeof()) should test 1735 // #if __glibc_c99_flexarr_available. 1736 1737 // __asm__ ("xyz") is used throughout the headers to rename functions 1738 // at the assembly language level. This is wrapped by the __REDIRECT 1739 // macro, in order to support compilers that can do this some other 1740 // way. When compilers don't support asm-names at all, we have to do 1741 // preprocessor tricks instead (which don't have exactly the right 1742 // semantics, but it's the best we can do). 1743 // 1744 // Example: 1745 // int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); 1746 1747 // 1748 // #elif __SOME_OTHER_COMPILER__ 1749 // 1750 // # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias) 1751 1752 // GCC has various useful declarations that can be made with the 1753 // `__attribute__' syntax. All of the ways we use this do fine if 1754 // they are omitted for compilers that don't understand it. 1755 1756 // At some point during the gcc 2.96 development the `malloc' attribute 1757 // for functions was introduced. We don't want to use it unconditionally 1758 // (although this would be possible) since it generates warnings. 1759 1760 // Tell the compiler which arguments to an allocation function 1761 // indicate the size of the allocation. 1762 1763 // At some point during the gcc 2.96 development the `pure' attribute 1764 // for functions was introduced. We don't want to use it unconditionally 1765 // (although this would be possible) since it generates warnings. 1766 1767 // This declaration tells the compiler that the value is constant. 1768 1769 // At some point during the gcc 3.1 development the `used' attribute 1770 // for functions was introduced. We don't want to use it unconditionally 1771 // (although this would be possible) since it generates warnings. 1772 1773 // Since version 3.2, gcc allows marking deprecated functions. 1774 1775 // Since version 4.5, gcc also allows one to specify the message printed 1776 // when a deprecated function is used. clang claims to be gcc 4.2, but 1777 // may also support this feature. 1778 1779 // At some point during the gcc 2.8 development the `format_arg' attribute 1780 // for functions was introduced. We don't want to use it unconditionally 1781 // (although this would be possible) since it generates warnings. 1782 // If several `format_arg' attributes are given for the same function, in 1783 // gcc-3.0 and older, all but the last one are ignored. In newer gccs, 1784 // all designated arguments are considered. 1785 1786 // At some point during the gcc 2.97 development the `strfmon' format 1787 // attribute for functions was introduced. We don't want to use it 1788 // unconditionally (although this would be possible) since it 1789 // generates warnings. 1790 1791 // The nonull function attribute allows to mark pointer parameters which 1792 // must not be NULL. 1793 1794 // If fortification mode, we warn about unused results of certain 1795 // function calls which can lead to problems. 1796 1797 // Forces a function to be always inlined. 1798 // The Linux kernel defines __always_inline in stddef.h (283d7573), and 1799 // it conflicts with this definition. Therefore undefine it first to 1800 // allow either header to be included first. 1801 1802 // Associate error messages with the source location of the call site rather 1803 // than with the source location inside the function. 1804 1805 // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 1806 // inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ 1807 // or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions 1808 // older than 4.3 may define these macros and still not guarantee GNU inlining 1809 // semantics. 1810 // 1811 // clang++ identifies itself as gcc-4.2, but has support for GNU inlining 1812 // semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and 1813 // __GNUC_GNU_INLINE__ macro definitions. 1814 1815 // GCC 4.3 and above allow passing all anonymous arguments of an 1816 // __extern_always_inline function to some other vararg function. 1817 1818 // It is possible to compile containing GCC extensions even if GCC is 1819 // run in pedantic mode if the uses are carefully marked using the 1820 // `__extension__' keyword. But this is not generally available before 1821 // version 2.8. 1822 1823 // __restrict is known in EGCS 1.2 and above. 1824 1825 // ISO C99 also allows to declare arrays as non-overlapping. The syntax is 1826 // array_name[restrict] 1827 // GCC 3.1 supports this. 1828 1829 // Describes a char array whose address can safely be passed as the first 1830 // argument to strncpy and strncat, as the char array is not necessarily 1831 // a NUL-terminated string. 1832 1833 // Undefine (also defined in libc-symbols.h). 1834 // Copies attributes from the declaration or type referenced by 1835 // the argument. 1836 1837 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 1838 // This file is part of the GNU C Library. 1839 // 1840 // The GNU C Library is free software; you can redistribute it and/or 1841 // modify it under the terms of the GNU Lesser General Public 1842 // License as published by the Free Software Foundation; either 1843 // version 2.1 of the License, or (at your option) any later version. 1844 // 1845 // The GNU C Library is distributed in the hope that it will be useful, 1846 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1847 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1848 // Lesser General Public License for more details. 1849 // 1850 // You should have received a copy of the GNU Lesser General Public 1851 // License along with the GNU C Library; if not, see 1852 // <https://www.gnu.org/licenses/>. 1853 1854 // Properties of long double type. 1855 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 1856 // This file is part of the GNU C Library. 1857 // 1858 // The GNU C Library is free software; you can redistribute it and/or 1859 // modify it under the terms of the GNU Lesser General Public 1860 // License published by the Free Software Foundation; either 1861 // version 2.1 of the License, or (at your option) any later version. 1862 // 1863 // The GNU C Library is distributed in the hope that it will be useful, 1864 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1865 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1866 // Lesser General Public License for more details. 1867 // 1868 // You should have received a copy of the GNU Lesser General Public 1869 // License along with the GNU C Library; if not, see 1870 // <https://www.gnu.org/licenses/>. 1871 1872 // This header is included by <sys/cdefs.h>. 1873 // 1874 // If long double is ABI-compatible with double, it should define 1875 // __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave 1876 // __NO_LONG_DOUBLE_MATH undefined. 1877 // 1878 // If this build of the GNU C Library supports both long double 1879 // ABI-compatible with double and some other long double format not 1880 // ABI-compatible with double, it should define 1881 // __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave 1882 // __LONG_DOUBLE_MATH_OPTIONAL undefined. 1883 // 1884 // If __NO_LONG_DOUBLE_MATH is already defined, this header must not 1885 // define anything; this is needed to work with the definition of 1886 // __NO_LONG_DOUBLE_MATH in nldbl-compat.h. 1887 1888 // In the default version of this header, long double is 1889 // ABI-compatible with double. 1890 1891 // __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is 1892 // intended for use in preprocessor macros. 1893 // 1894 // Note: MESSAGE must be a _single_ string; concatenation of string 1895 // literals is not supported. 1896 1897 // Generic selection (ISO C11) is a C-only feature, available in GCC 1898 // since version 4.9. Previous versions do not provide generic 1899 // selection, even though they might set __STDC_VERSION__ to 201112L, 1900 // when in -std=c11 mode. Thus, we must check for !defined __GNUC__ 1901 // when testing __STDC_VERSION__ for generic selection support. 1902 // On the other hand, Clang also defines __GNUC__, so a clang-specific 1903 // check is required to enable the use of generic selection. 1904 1905 // If we don't have __REDIRECT, prototypes will be missing if 1906 // __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. 1907 1908 // Decide whether we can define 'extern inline' functions in headers. 1909 1910 // This is here only because every header file already includes this one. 1911 // Get the definitions of all the appropriate `__stub_FUNCTION' symbols. 1912 // <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub 1913 // that will always return failure (and set errno to ENOSYS). 1914 // This file is automatically generated. 1915 // This file selects the right generated file of `__stub_FUNCTION' macros 1916 // based on the architecture being compiled for. 1917 1918 // This file is automatically generated. 1919 // It defines a symbol `__stub_FUNCTION' for each function 1920 // in the C library which is a stub, meaning it will fail 1921 // every time called, usually setting errno to ENOSYS. 1922 1923 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 1924 // macro. 1925 1926 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 1927 // macro. Most but not all symbols enabled by that macro in TS 1928 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 1929 // still require that macro in C2X. 1930 1931 // ISO/IEC TS 18661-4:2015 defines the 1932 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 1933 // functions, the symbols from this TS are enabled unconditionally in 1934 // C2X. 1935 1936 // ISO/IEC TS 18661-3:2015 defines the 1937 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 1938 1939 // Maximum length of any multibyte character in any locale. 1940 // We define this value here since the gcc header does not define 1941 // the correct value. 1942 1943 // If we are not using GNU CC we have to define all the symbols ourself. 1944 // Otherwise use gcc's definitions (see below). 1945 1946 // Get the compiler's limits.h, which defines almost all the ISO constants. 1947 // 1948 // We put this #include_next outside the double inclusion check because 1949 // it should be possible to include this file more than once and still get 1950 // the definitions from gcc's header. 1951 1952 // The <limits.h> files in some gcc versions don't define LLONG_MIN, 1953 // LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for 1954 // ages are available. 1955 1956 // The integer width macros are not defined by GCC's <limits.h> before 1957 // GCC 7, or if _GNU_SOURCE rather than 1958 // __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. 1959 1960 // POSIX adds things to <limits.h>. 1961 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1962 // This file is part of the GNU C Library. 1963 // 1964 // The GNU C Library is free software; you can redistribute it and/or 1965 // modify it under the terms of the GNU Lesser General Public 1966 // License as published by the Free Software Foundation; either 1967 // version 2.1 of the License, or (at your option) any later version. 1968 // 1969 // The GNU C Library is distributed in the hope that it will be useful, 1970 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1971 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1972 // Lesser General Public License for more details. 1973 // 1974 // You should have received a copy of the GNU Lesser General Public 1975 // License along with the GNU C Library; if not, see 1976 // <https://www.gnu.org/licenses/>. 1977 1978 // POSIX Standard: 2.9.2 Minimum Values Added to <limits.h> 1979 // 1980 // Never include this file directly; use <limits.h> instead. 1981 1982 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 1983 // This file is part of the GNU C Library. 1984 // 1985 // The GNU C Library is free software; you can redistribute it and/or 1986 // modify it under the terms of the GNU Lesser General Public 1987 // License as published by the Free Software Foundation; either 1988 // version 2.1 of the License, or (at your option) any later version. 1989 // 1990 // The GNU C Library is distributed in the hope that it will be useful, 1991 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1992 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1993 // Lesser General Public License for more details. 1994 // 1995 // You should have received a copy of the GNU Lesser General Public 1996 // License along with the GNU C Library; if not, see 1997 // <https://www.gnu.org/licenses/>. 1998 1999 // These are the standard-mandated minimum values. 2000 2001 // Minimum number of operations in one list I/O call. 2002 2003 // Minimal number of outstanding asynchronous I/O operations. 2004 2005 // Maximum length of arguments to `execve', including environment. 2006 2007 // Maximum simultaneous processes per real user ID. 2008 2009 // Minimal number of timer expiration overruns. 2010 2011 // Maximum length of a host name (not including the terminating null) 2012 // as returned from the GETHOSTNAME function. 2013 2014 // Maximum link count of a file. 2015 2016 // Maximum length of login name. 2017 2018 // Number of bytes in a terminal canonical input queue. 2019 2020 // Number of bytes for which space will be 2021 // available in a terminal input queue. 2022 2023 // Maximum number of message queues open for a process. 2024 2025 // Maximum number of supported message priorities. 2026 2027 // Number of bytes in a filename. 2028 2029 // Number of simultaneous supplementary group IDs per process. 2030 2031 // Number of files one process can have open at once. 2032 2033 // Number of bytes in a pathname. 2034 2035 // Number of bytes than can be written atomically to a pipe. 2036 2037 // The number of repeated occurrences of a BRE permitted by the 2038 // REGEXEC and REGCOMP functions when using the interval notation. 2039 2040 // Minimal number of realtime signals reserved for the application. 2041 2042 // Number of semaphores a process can have. 2043 2044 // Maximal value of a semaphore. 2045 2046 // Number of pending realtime signals. 2047 2048 // Largest value of a `ssize_t'. 2049 2050 // Number of streams a process can have open at once. 2051 2052 // The number of bytes in a symbolic link. 2053 2054 // The number of symbolic links that can be traversed in the 2055 // resolution of a pathname in the absence of a loop. 2056 2057 // Number of timer for a process. 2058 2059 // Maximum number of characters in a tty name. 2060 2061 // Maximum length of a timezone name (element of `tzname'). 2062 2063 // Maximum clock resolution in nanoseconds. 2064 2065 // Get the implementation-specific values for the above. 2066 // Minimum guaranteed maximum values for system limits. Linux version. 2067 // Copyright (C) 1993-2020 Free Software Foundation, Inc. 2068 // This file is part of the GNU C Library. 2069 // 2070 // The GNU C Library is free software; you can redistribute it and/or 2071 // modify it under the terms of the GNU Lesser General Public License as 2072 // published by the Free Software Foundation; either version 2.1 of the 2073 // License, or (at your option) any later version. 2074 // 2075 // The GNU C Library is distributed in the hope that it will be useful, 2076 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2077 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2078 // Lesser General Public License for more details. 2079 // 2080 // You should have received a copy of the GNU Lesser General Public 2081 // License along with the GNU C Library; see the file COPYING.LIB. If 2082 // not, see <https://www.gnu.org/licenses/>. 2083 2084 // The kernel header pollutes the namespace with the NR_OPEN symbol 2085 // and defines LINK_MAX although filesystems have different maxima. A 2086 // similar thing is true for OPEN_MAX: the limit can be changed at 2087 // runtime and therefore the macro must not be defined. Remove this 2088 // after including the header if necessary. 2089 2090 // The kernel sources contain a file with all the needed information. 2091 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note 2092 2093 // Have to remove NR_OPEN? 2094 // Have to remove LINK_MAX? 2095 // Have to remove OPEN_MAX? 2096 // Have to remove ARG_MAX? 2097 2098 // The number of data keys per process. 2099 // This is the value this implementation supports. 2100 2101 // Controlling the iterations of destructors for thread-specific data. 2102 // Number of iterations this implementation does. 2103 2104 // The number of threads per process. 2105 // We have no predefined limit on the number of threads. 2106 2107 // Maximum amount by which a process can descrease its asynchronous I/O 2108 // priority level. 2109 2110 // Minimum size for a thread. We are free to choose a reasonable value. 2111 2112 // Maximum number of timer expiration overruns. 2113 2114 // Maximum tty name length. 2115 2116 // Maximum login name length. This is arbitrary. 2117 2118 // Maximum host name length. 2119 2120 // Maximum message queue priority level. 2121 2122 // Maximum value the semaphore can have. 2123 2124 // ssize_t is not formally required to be the signed type 2125 // corresponding to size_t, but it is for all configurations supported 2126 // by glibc. 2127 2128 // This value is a guaranteed minimum maximum. 2129 // The current maximum can be got from `sysconf'. 2130 2131 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2132 // This file is part of the GNU C Library. 2133 // 2134 // The GNU C Library is free software; you can redistribute it and/or 2135 // modify it under the terms of the GNU Lesser General Public 2136 // License as published by the Free Software Foundation; either 2137 // version 2.1 of the License, or (at your option) any later version. 2138 // 2139 // The GNU C Library is distributed in the hope that it will be useful, 2140 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2141 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2142 // Lesser General Public License for more details. 2143 // 2144 // You should have received a copy of the GNU Lesser General Public 2145 // License along with the GNU C Library; if not, see 2146 // <https://www.gnu.org/licenses/>. 2147 2148 // Never include this file directly; include <limits.h> instead. 2149 2150 // The maximum `ibase' and `obase' values allowed by the `bc' utility. 2151 2152 // The maximum number of elements allowed in an array by the `bc' utility. 2153 2154 // The maximum `scale' value allowed by the `bc' utility. 2155 2156 // The maximum length of a string constant accepted by the `bc' utility. 2157 2158 // The maximum number of weights that can be assigned to an entry of 2159 // the LC_COLLATE `order' keyword in the locale definition file. 2160 2161 // The maximum number of expressions that can be nested 2162 // within parentheses by the `expr' utility. 2163 2164 // The maximum length, in bytes, of an input line. 2165 2166 // The maximum number of repeated occurrences of a regular expression 2167 // permitted when using the interval notation `\{M,N\}'. 2168 2169 // The maximum number of bytes in a character class name. We have no 2170 // fixed limit, 2048 is a high number. 2171 2172 // These values are implementation-specific, 2173 // and may vary within the implementation. 2174 // Their precise values can be obtained from sysconf. 2175 2176 // This value is defined like this in regex.h. 2177 2178 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2179 // 2180 // This file is part of GCC. 2181 // 2182 // GCC is free software; you can redistribute it and/or modify it under 2183 // the terms of the GNU General Public License as published by the Free 2184 // Software Foundation; either version 3, or (at your option) any later 2185 // version. 2186 // 2187 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 2188 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 2189 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 2190 // for more details. 2191 // 2192 // Under Section 7 of GPL version 3, you are granted additional 2193 // permissions described in the GCC Runtime Library Exception, version 2194 // 3.1, as published by the Free Software Foundation. 2195 // 2196 // You should have received a copy of the GNU General Public License and 2197 // a copy of the GCC Runtime Library Exception along with this program; 2198 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2199 // <http://www.gnu.org/licenses/>. 2200 2201 // Number of bits in a `char'. 2202 2203 // Maximum length of a multibyte character. 2204 2205 // Minimum and maximum values a `signed char' can hold. 2206 2207 // Maximum value an `unsigned char' can hold. (Minimum is 0). 2208 2209 // Minimum and maximum values a `char' can hold. 2210 2211 // Minimum and maximum values a `signed short int' can hold. 2212 2213 // Maximum value an `unsigned short int' can hold. (Minimum is 0). 2214 2215 // Minimum and maximum values a `signed int' can hold. 2216 2217 // Maximum value an `unsigned int' can hold. (Minimum is 0). 2218 2219 // Minimum and maximum values a `signed long int' can hold. 2220 // (Same as `int'). 2221 2222 // Maximum value an `unsigned long int' can hold. (Minimum is 0). 2223 2224 // Minimum and maximum values a `signed long long int' can hold. 2225 2226 // Maximum value an `unsigned long long int' can hold. (Minimum is 0). 2227 2228 // This administrivia gets added to the end of limits.h 2229 // if the system has its own version of limits.h. 2230 2231 type Z_crc_t = uint32 /* zconf.h:429:17 */ 2232 2233 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2234 // This file is part of the GNU C Library. 2235 // 2236 // The GNU C Library is free software; you can redistribute it and/or 2237 // modify it under the terms of the GNU Lesser General Public 2238 // License as published by the Free Software Foundation; either 2239 // version 2.1 of the License, or (at your option) any later version. 2240 // 2241 // The GNU C Library is distributed in the hope that it will be useful, 2242 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2243 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2244 // Lesser General Public License for more details. 2245 // 2246 // You should have received a copy of the GNU Lesser General Public 2247 // License along with the GNU C Library; if not, see 2248 // <https://www.gnu.org/licenses/>. 2249 2250 // POSIX Standard: 2.6 Primitive System Data Types <sys/types.h> 2251 2252 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2253 // This file is part of the GNU C Library. 2254 // 2255 // The GNU C Library is free software; you can redistribute it and/or 2256 // modify it under the terms of the GNU Lesser General Public 2257 // License as published by the Free Software Foundation; either 2258 // version 2.1 of the License, or (at your option) any later version. 2259 // 2260 // The GNU C Library is distributed in the hope that it will be useful, 2261 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2262 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2263 // Lesser General Public License for more details. 2264 // 2265 // You should have received a copy of the GNU Lesser General Public 2266 // License along with the GNU C Library; if not, see 2267 // <https://www.gnu.org/licenses/>. 2268 2269 // bits/types.h -- definitions of __*_t types underlying *_t types. 2270 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2271 // This file is part of the GNU C Library. 2272 // 2273 // The GNU C Library is free software; you can redistribute it and/or 2274 // modify it under the terms of the GNU Lesser General Public 2275 // License as published by the Free Software Foundation; either 2276 // version 2.1 of the License, or (at your option) any later version. 2277 // 2278 // The GNU C Library is distributed in the hope that it will be useful, 2279 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2280 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2281 // Lesser General Public License for more details. 2282 // 2283 // You should have received a copy of the GNU Lesser General Public 2284 // License along with the GNU C Library; if not, see 2285 // <https://www.gnu.org/licenses/>. 2286 2287 // Never include this file directly; use <sys/types.h> instead. 2288 2289 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2290 // This file is part of the GNU C Library. 2291 // 2292 // The GNU C Library is free software; you can redistribute it and/or 2293 // modify it under the terms of the GNU Lesser General Public 2294 // License as published by the Free Software Foundation; either 2295 // version 2.1 of the License, or (at your option) any later version. 2296 // 2297 // The GNU C Library is distributed in the hope that it will be useful, 2298 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2299 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2300 // Lesser General Public License for more details. 2301 // 2302 // You should have received a copy of the GNU Lesser General Public 2303 // License along with the GNU C Library; if not, see 2304 // <https://www.gnu.org/licenses/>. 2305 2306 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 2307 // This file is part of the GNU C Library. 2308 // 2309 // The GNU C Library is free software; you can redistribute it and/or 2310 // modify it under the terms of the GNU Lesser General Public 2311 // License as published by the Free Software Foundation; either 2312 // version 2.1 of the License, or (at your option) any later version. 2313 // 2314 // The GNU C Library is distributed in the hope that it will be useful, 2315 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2316 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2317 // Lesser General Public License for more details. 2318 // 2319 // You should have received a copy of the GNU Lesser General Public 2320 // License along with the GNU C Library; if not, see 2321 // <https://www.gnu.org/licenses/>. 2322 2323 // Bit size of the time_t type at glibc build time, general case. 2324 // Copyright (C) 2018-2020 Free Software Foundation, Inc. 2325 // This file is part of the GNU C Library. 2326 // 2327 // The GNU C Library is free software; you can redistribute it and/or 2328 // modify it under the terms of the GNU Lesser General Public 2329 // License as published by the Free Software Foundation; either 2330 // version 2.1 of the License, or (at your option) any later version. 2331 // 2332 // The GNU C Library is distributed in the hope that it will be useful, 2333 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2334 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2335 // Lesser General Public License for more details. 2336 // 2337 // You should have received a copy of the GNU Lesser General Public 2338 // License along with the GNU C Library; if not, see 2339 // <https://www.gnu.org/licenses/>. 2340 2341 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 2342 // This file is part of the GNU C Library. 2343 // 2344 // The GNU C Library is free software; you can redistribute it and/or 2345 // modify it under the terms of the GNU Lesser General Public 2346 // License as published by the Free Software Foundation; either 2347 // version 2.1 of the License, or (at your option) any later version. 2348 // 2349 // The GNU C Library is distributed in the hope that it will be useful, 2350 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2351 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2352 // Lesser General Public License for more details. 2353 // 2354 // You should have received a copy of the GNU Lesser General Public 2355 // License along with the GNU C Library; if not, see 2356 // <https://www.gnu.org/licenses/>. 2357 2358 // Size in bits of the 'time_t' type of the default ABI. 2359 2360 // Convenience types. 2361 type X__u_char = uint8 /* types.h:31:23 */ 2362 type X__u_short = uint16 /* types.h:32:28 */ 2363 type X__u_int = uint32 /* types.h:33:22 */ 2364 type X__u_long = uint32 /* types.h:34:27 */ 2365 2366 // Fixed-size types, underlying types depend on word size and compiler. 2367 type X__int8_t = int8 /* types.h:37:21 */ 2368 type X__uint8_t = uint8 /* types.h:38:23 */ 2369 type X__int16_t = int16 /* types.h:39:26 */ 2370 type X__uint16_t = uint16 /* types.h:40:28 */ 2371 type X__int32_t = int32 /* types.h:41:20 */ 2372 type X__uint32_t = uint32 /* types.h:42:22 */ 2373 type X__int64_t = int64 /* types.h:47:44 */ 2374 type X__uint64_t = uint64 /* types.h:48:46 */ 2375 2376 // Smallest types with at least a given width. 2377 type X__int_least8_t = X__int8_t /* types.h:52:18 */ 2378 type X__uint_least8_t = X__uint8_t /* types.h:53:19 */ 2379 type X__int_least16_t = X__int16_t /* types.h:54:19 */ 2380 type X__uint_least16_t = X__uint16_t /* types.h:55:20 */ 2381 type X__int_least32_t = X__int32_t /* types.h:56:19 */ 2382 type X__uint_least32_t = X__uint32_t /* types.h:57:20 */ 2383 type X__int_least64_t = X__int64_t /* types.h:58:19 */ 2384 type X__uint_least64_t = X__uint64_t /* types.h:59:20 */ 2385 2386 // quad_t is also 64 bits. 2387 type X__quad_t = int64 /* types.h:66:37 */ 2388 type X__u_quad_t = uint64 /* types.h:67:46 */ 2389 2390 // Largest integral types. 2391 type X__intmax_t = int64 /* types.h:75:37 */ 2392 type X__uintmax_t = uint64 /* types.h:76:46 */ 2393 2394 // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE 2395 // macros for each of the OS types we define below. The definitions 2396 // of those macros must use the following macros for underlying types. 2397 // We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned 2398 // variants of each of the following integer types on this machine. 2399 // 2400 // 16 -- "natural" 16-bit type (always short) 2401 // 32 -- "natural" 32-bit type (always int) 2402 // 64 -- "natural" 64-bit type (long or long long) 2403 // LONG32 -- 32-bit type, traditionally long 2404 // QUAD -- 64-bit type, traditionally long long 2405 // WORD -- natural type of __WORDSIZE bits (int or long) 2406 // LONGWORD -- type of __WORDSIZE bits, traditionally long 2407 // 2408 // We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the 2409 // conventional uses of `long' or `long long' type modifiers match the 2410 // types we define, even when a less-adorned type would be the same size. 2411 // This matters for (somewhat) portably writing printf/scanf formats for 2412 // these types, where using the appropriate l or ll format modifiers can 2413 // make the typedefs and the formats match up across all GNU platforms. If 2414 // we used `long' when it's 64 bits where `long long' is expected, then the 2415 // compiler would warn about the formats not matching the argument types, 2416 // and the programmer changing them to shut up the compiler would break the 2417 // program's portability. 2418 // 2419 // Here we assume what is presently the case in all the GCC configurations 2420 // we support: long long is always 64 bits, long is always word/address size, 2421 // and int is always 32 bits. 2422 2423 // We want __extension__ before typedef's that use nonstandard base types 2424 // such as `long long' in C89 mode. 2425 // bits/typesizes.h -- underlying types for *_t. Generic version. 2426 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2427 // This file is part of the GNU C Library. 2428 // 2429 // The GNU C Library is free software; you can redistribute it and/or 2430 // modify it under the terms of the GNU Lesser General Public 2431 // License as published by the Free Software Foundation; either 2432 // version 2.1 of the License, or (at your option) any later version. 2433 // 2434 // The GNU C Library is distributed in the hope that it will be useful, 2435 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2436 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2437 // Lesser General Public License for more details. 2438 // 2439 // You should have received a copy of the GNU Lesser General Public 2440 // License along with the GNU C Library; if not, see 2441 // <https://www.gnu.org/licenses/>. 2442 2443 // See <bits/types.h> for the meaning of these macros. This file exists so 2444 // that <bits/types.h> need not vary across different GNU platforms. 2445 2446 // Number of descriptors that can fit in an `fd_set'. 2447 2448 // bits/time64.h -- underlying types for __time64_t. Generic version. 2449 // Copyright (C) 2018-2020 Free Software Foundation, Inc. 2450 // This file is part of the GNU C Library. 2451 // 2452 // The GNU C Library is free software; you can redistribute it and/or 2453 // modify it under the terms of the GNU Lesser General Public 2454 // License as published by the Free Software Foundation; either 2455 // version 2.1 of the License, or (at your option) any later version. 2456 // 2457 // The GNU C Library is distributed in the hope that it will be useful, 2458 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2459 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2460 // Lesser General Public License for more details. 2461 // 2462 // You should have received a copy of the GNU Lesser General Public 2463 // License along with the GNU C Library; if not, see 2464 // <https://www.gnu.org/licenses/>. 2465 2466 // Define __TIME64_T_TYPE so that it is always a 64-bit type. 2467 2468 // Define a 64-bit time type alongsize the 32-bit one. 2469 2470 type X__dev_t = X__uint64_t /* types.h:145:25 */ // Type of device numbers. 2471 type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications. 2472 type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications. 2473 type X__ino_t = uint32 /* types.h:148:25 */ // Type of file serial numbers. 2474 type X__ino64_t = X__uint64_t /* types.h:149:27 */ // Type of file serial numbers (LFS). 2475 type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks. 2476 type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts. 2477 type X__off_t = int32 /* types.h:152:25 */ // Type of file sizes and offsets. 2478 type X__off64_t = X__int64_t /* types.h:153:27 */ // Type of file sizes and offsets (LFS). 2479 type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications. 2480 type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs. 2481 type X__clock_t = int32 /* types.h:156:27 */ // Type of CPU usage counts. 2482 type X__rlim_t = uint32 /* types.h:157:26 */ // Type for resource measurement. 2483 type X__rlim64_t = X__uint64_t /* types.h:158:28 */ // Type for resource measurement (LFS). 2484 type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs. 2485 type X__time_t = int32 /* types.h:160:26 */ // Seconds since the Epoch. 2486 type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds. 2487 type X__suseconds_t = int32 /* types.h:162:31 */ // Signed count of microseconds. 2488 2489 type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address. 2490 type X__key_t = int32 /* types.h:165:25 */ // Type of an IPC key. 2491 2492 // Clock ID used in clock and timer functions. 2493 type X__clockid_t = int32 /* types.h:168:29 */ 2494 2495 // Timer ID returned by `timer_create'. 2496 type X__timer_t = uintptr /* types.h:171:12 */ 2497 2498 // Type to represent block size. 2499 type X__blksize_t = int32 /* types.h:174:29 */ 2500 2501 // Types from the Large File Support interface. 2502 2503 // Type to count number of disk blocks. 2504 type X__blkcnt_t = int32 /* types.h:179:28 */ 2505 type X__blkcnt64_t = X__int64_t /* types.h:180:30 */ 2506 2507 // Type to count file system blocks. 2508 type X__fsblkcnt_t = uint32 /* types.h:183:30 */ 2509 type X__fsblkcnt64_t = X__uint64_t /* types.h:184:32 */ 2510 2511 // Type to count file system nodes. 2512 type X__fsfilcnt_t = uint32 /* types.h:187:30 */ 2513 type X__fsfilcnt64_t = X__uint64_t /* types.h:188:32 */ 2514 2515 // Type of miscellaneous file system fields. 2516 type X__fsword_t = int32 /* types.h:191:28 */ 2517 2518 type X__ssize_t = int32 /* types.h:193:27 */ // Type of a byte count, or error. 2519 2520 // Signed long type used in system calls. 2521 type X__syscall_slong_t = int32 /* types.h:196:33 */ 2522 // Unsigned long type used in system calls. 2523 type X__syscall_ulong_t = uint32 /* types.h:198:33 */ 2524 2525 // These few don't really vary by system, they always correspond 2526 // to one of the other defined types. 2527 type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS). 2528 type X__caddr_t = uintptr /* types.h:203:14 */ 2529 2530 // Duplicates info from stdint.h but this is used in unistd.h. 2531 type X__intptr_t = int32 /* types.h:206:25 */ 2532 2533 // Duplicate info from sys/socket.h. 2534 type X__socklen_t = uint32 /* types.h:209:23 */ 2535 2536 // C99: An integer type that can be accessed as an atomic entity, 2537 // even in the presence of asynchronous interrupts. 2538 // It is not currently necessary for this to be machine-specific. 2539 type X__sig_atomic_t = int32 /* types.h:214:13 */ 2540 2541 // Seconds since the Epoch, visible to user code when time_t is too 2542 // narrow only for consistency with the old way of widening too-narrow 2543 // types. User code should never use __time64_t. 2544 type X__time64_t = X__int64_t /* types.h:222:28 */ 2545 2546 type U_char = X__u_char /* types.h:33:18 */ 2547 type U_short = X__u_short /* types.h:34:19 */ 2548 type U_int = X__u_int /* types.h:35:17 */ 2549 type U_long = X__u_long /* types.h:36:18 */ 2550 type Quad_t = X__quad_t /* types.h:37:18 */ 2551 type U_quad_t = X__u_quad_t /* types.h:38:20 */ 2552 type Fsid_t = X__fsid_t /* types.h:39:18 */ 2553 type Loff_t = X__loff_t /* types.h:42:18 */ 2554 2555 type Ino_t = X__ino64_t /* types.h:49:19 */ 2556 type Ino64_t = X__ino64_t /* types.h:54:19 */ 2557 2558 type Dev_t = X__dev_t /* types.h:59:17 */ 2559 2560 type Gid_t = X__gid_t /* types.h:64:17 */ 2561 2562 type Mode_t = X__mode_t /* types.h:69:18 */ 2563 2564 type Nlink_t = X__nlink_t /* types.h:74:19 */ 2565 2566 type Uid_t = X__uid_t /* types.h:79:17 */ 2567 2568 type Off_t = X__off64_t /* types.h:87:19 */ 2569 type Off64_t = X__off64_t /* types.h:92:19 */ 2570 2571 type Pid_t = X__pid_t /* types.h:97:17 */ 2572 2573 type Id_t = X__id_t /* types.h:103:16 */ 2574 2575 type Ssize_t = X__ssize_t /* types.h:108:19 */ 2576 2577 type Daddr_t = X__daddr_t /* types.h:114:19 */ 2578 type Caddr_t = X__caddr_t /* types.h:115:19 */ 2579 2580 type Key_t = X__key_t /* types.h:121:17 */ 2581 2582 // bits/types.h -- definitions of __*_t types underlying *_t types. 2583 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2584 // This file is part of the GNU C Library. 2585 // 2586 // The GNU C Library is free software; you can redistribute it and/or 2587 // modify it under the terms of the GNU Lesser General Public 2588 // License as published by the Free Software Foundation; either 2589 // version 2.1 of the License, or (at your option) any later version. 2590 // 2591 // The GNU C Library is distributed in the hope that it will be useful, 2592 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2593 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2594 // Lesser General Public License for more details. 2595 // 2596 // You should have received a copy of the GNU Lesser General Public 2597 // License along with the GNU C Library; if not, see 2598 // <https://www.gnu.org/licenses/>. 2599 2600 // Never include this file directly; use <sys/types.h> instead. 2601 2602 // Returned by `clock'. 2603 type Clock_t = X__clock_t /* clock_t.h:7:19 */ 2604 2605 // bits/types.h -- definitions of __*_t types underlying *_t types. 2606 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2607 // This file is part of the GNU C Library. 2608 // 2609 // The GNU C Library is free software; you can redistribute it and/or 2610 // modify it under the terms of the GNU Lesser General Public 2611 // License as published by the Free Software Foundation; either 2612 // version 2.1 of the License, or (at your option) any later version. 2613 // 2614 // The GNU C Library is distributed in the hope that it will be useful, 2615 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2616 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2617 // Lesser General Public License for more details. 2618 // 2619 // You should have received a copy of the GNU Lesser General Public 2620 // License along with the GNU C Library; if not, see 2621 // <https://www.gnu.org/licenses/>. 2622 2623 // Never include this file directly; use <sys/types.h> instead. 2624 2625 // Clock ID used in clock and timer functions. 2626 type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */ 2627 2628 // bits/types.h -- definitions of __*_t types underlying *_t types. 2629 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2630 // This file is part of the GNU C Library. 2631 // 2632 // The GNU C Library is free software; you can redistribute it and/or 2633 // modify it under the terms of the GNU Lesser General Public 2634 // License as published by the Free Software Foundation; either 2635 // version 2.1 of the License, or (at your option) any later version. 2636 // 2637 // The GNU C Library is distributed in the hope that it will be useful, 2638 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2639 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2640 // Lesser General Public License for more details. 2641 // 2642 // You should have received a copy of the GNU Lesser General Public 2643 // License along with the GNU C Library; if not, see 2644 // <https://www.gnu.org/licenses/>. 2645 2646 // Never include this file directly; use <sys/types.h> instead. 2647 2648 // Returned by `time'. 2649 type Time_t = X__time_t /* time_t.h:7:18 */ 2650 2651 // bits/types.h -- definitions of __*_t types underlying *_t types. 2652 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2653 // This file is part of the GNU C Library. 2654 // 2655 // The GNU C Library is free software; you can redistribute it and/or 2656 // modify it under the terms of the GNU Lesser General Public 2657 // License as published by the Free Software Foundation; either 2658 // version 2.1 of the License, or (at your option) any later version. 2659 // 2660 // The GNU C Library is distributed in the hope that it will be useful, 2661 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2662 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2663 // Lesser General Public License for more details. 2664 // 2665 // You should have received a copy of the GNU Lesser General Public 2666 // License along with the GNU C Library; if not, see 2667 // <https://www.gnu.org/licenses/>. 2668 2669 // Never include this file directly; use <sys/types.h> instead. 2670 2671 // Timer ID returned by `timer_create'. 2672 type Timer_t = X__timer_t /* timer_t.h:7:19 */ 2673 2674 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 2675 // 2676 // This file is part of GCC. 2677 // 2678 // GCC is free software; you can redistribute it and/or modify 2679 // it under the terms of the GNU General Public License as published by 2680 // the Free Software Foundation; either version 3, or (at your option) 2681 // any later version. 2682 // 2683 // GCC is distributed in the hope that it will be useful, 2684 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2685 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2686 // GNU General Public License for more details. 2687 // 2688 // Under Section 7 of GPL version 3, you are granted additional 2689 // permissions described in the GCC Runtime Library Exception, version 2690 // 3.1, as published by the Free Software Foundation. 2691 // 2692 // You should have received a copy of the GNU General Public License and 2693 // a copy of the GCC Runtime Library Exception along with this program; 2694 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2695 // <http://www.gnu.org/licenses/>. 2696 2697 // ISO C Standard: 7.17 Common definitions <stddef.h> 2698 2699 // Any one of these symbols __need_* means that GNU libc 2700 // wants us just to define one data type. So don't define 2701 // the symbols that indicate this file's entire job has been done. 2702 2703 // This avoids lossage on SunOS but only if stdtypes.h comes first. 2704 // There's no way to win with the other order! Sun lossage. 2705 2706 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 2707 // Just ignore it. 2708 2709 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 2710 // _TYPE_size_t which will typedef size_t. fixincludes patched the 2711 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 2712 // not defined, and so that defining this macro defines _GCC_SIZE_T. 2713 // If we find that the macros are still defined at this point, we must 2714 // invoke them so that the type is defined as expected. 2715 2716 // In case nobody has defined these types, but we aren't running under 2717 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 2718 // __WCHAR_TYPE__ have reasonable values. This can happen if the 2719 // parts of GCC is compiled by an older compiler, that actually 2720 // include gstddef.h, such as collect2. 2721 2722 // Signed type of difference of two pointers. 2723 2724 // Define this type if we are doing the whole job, 2725 // or if we want this type in particular. 2726 2727 // If this symbol has done its job, get rid of it. 2728 2729 // Unsigned type of `sizeof' something. 2730 2731 // Define this type if we are doing the whole job, 2732 // or if we want this type in particular. 2733 2734 // Wide character type. 2735 // Locale-writers should change this as necessary to 2736 // be big enough to hold unique values not between 0 and 127, 2737 // and not (wchar_t) -1, for each defined multibyte character. 2738 2739 // Define this type if we are doing the whole job, 2740 // or if we want this type in particular. 2741 2742 // A null pointer constant. 2743 2744 // Offset of member MEMBER in a struct of type TYPE. 2745 2746 // Old compatibility names for C types. 2747 type Ulong = uint32 /* types.h:148:27 */ 2748 type Ushort = uint16 /* types.h:149:28 */ 2749 type Uint = uint32 /* types.h:150:22 */ 2750 2751 // These size-specific names are used by some of the inet code. 2752 2753 // Define intN_t types. 2754 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 2755 // This file is part of the GNU C Library. 2756 // 2757 // The GNU C Library is free software; you can redistribute it and/or 2758 // modify it under the terms of the GNU Lesser General Public 2759 // License as published by the Free Software Foundation; either 2760 // version 2.1 of the License, or (at your option) any later version. 2761 // 2762 // The GNU C Library is distributed in the hope that it will be useful, 2763 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2764 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2765 // Lesser General Public License for more details. 2766 // 2767 // You should have received a copy of the GNU Lesser General Public 2768 // License along with the GNU C Library; if not, see 2769 // <https://www.gnu.org/licenses/>. 2770 2771 // bits/types.h -- definitions of __*_t types underlying *_t types. 2772 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2773 // This file is part of the GNU C Library. 2774 // 2775 // The GNU C Library is free software; you can redistribute it and/or 2776 // modify it under the terms of the GNU Lesser General Public 2777 // License as published by the Free Software Foundation; either 2778 // version 2.1 of the License, or (at your option) any later version. 2779 // 2780 // The GNU C Library is distributed in the hope that it will be useful, 2781 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2782 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2783 // Lesser General Public License for more details. 2784 // 2785 // You should have received a copy of the GNU Lesser General Public 2786 // License along with the GNU C Library; if not, see 2787 // <https://www.gnu.org/licenses/>. 2788 2789 // Never include this file directly; use <sys/types.h> instead. 2790 2791 type Int8_t = X__int8_t /* stdint-intn.h:24:18 */ 2792 type Int16_t = X__int16_t /* stdint-intn.h:25:19 */ 2793 type Int32_t = X__int32_t /* stdint-intn.h:26:19 */ 2794 type Int64_t = X__int64_t /* stdint-intn.h:27:19 */ 2795 2796 // These were defined by ISO C without the first `_'. 2797 type U_int8_t = X__uint8_t /* types.h:158:19 */ 2798 type U_int16_t = X__uint16_t /* types.h:159:20 */ 2799 type U_int32_t = X__uint32_t /* types.h:160:20 */ 2800 type U_int64_t = X__uint64_t /* types.h:161:20 */ 2801 2802 type Register_t = int32 /* types.h:164:13 */ 2803 2804 // It also defines `fd_set' and the FD_* macros for `select'. 2805 // `fd_set' type and related macros, and `select'/`pselect' declarations. 2806 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 2807 // This file is part of the GNU C Library. 2808 // 2809 // The GNU C Library is free software; you can redistribute it and/or 2810 // modify it under the terms of the GNU Lesser General Public 2811 // License as published by the Free Software Foundation; either 2812 // version 2.1 of the License, or (at your option) any later version. 2813 // 2814 // The GNU C Library is distributed in the hope that it will be useful, 2815 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2816 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2817 // Lesser General Public License for more details. 2818 // 2819 // You should have received a copy of the GNU Lesser General Public 2820 // License along with the GNU C Library; if not, see 2821 // <https://www.gnu.org/licenses/>. 2822 2823 // POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> 2824 2825 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 2826 // This file is part of the GNU C Library. 2827 // 2828 // The GNU C Library is free software; you can redistribute it and/or 2829 // modify it under the terms of the GNU Lesser General Public 2830 // License as published by the Free Software Foundation; either 2831 // version 2.1 of the License, or (at your option) any later version. 2832 // 2833 // The GNU C Library is distributed in the hope that it will be useful, 2834 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2835 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2836 // Lesser General Public License for more details. 2837 // 2838 // You should have received a copy of the GNU Lesser General Public 2839 // License along with the GNU C Library; if not, see 2840 // <https://www.gnu.org/licenses/>. 2841 2842 // Get definition of needed basic types. 2843 // bits/types.h -- definitions of __*_t types underlying *_t types. 2844 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2845 // This file is part of the GNU C Library. 2846 // 2847 // The GNU C Library is free software; you can redistribute it and/or 2848 // modify it under the terms of the GNU Lesser General Public 2849 // License as published by the Free Software Foundation; either 2850 // version 2.1 of the License, or (at your option) any later version. 2851 // 2852 // The GNU C Library is distributed in the hope that it will be useful, 2853 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2854 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2855 // Lesser General Public License for more details. 2856 // 2857 // You should have received a copy of the GNU Lesser General Public 2858 // License along with the GNU C Library; if not, see 2859 // <https://www.gnu.org/licenses/>. 2860 2861 // Never include this file directly; use <sys/types.h> instead. 2862 2863 // Get __FD_* definitions. 2864 // Copyright (C) 1997-2020 Free Software Foundation, Inc. 2865 // This file is part of the GNU C Library. 2866 // 2867 // The GNU C Library is free software; you can redistribute it and/or 2868 // modify it under the terms of the GNU Lesser General Public 2869 // License as published by the Free Software Foundation; either 2870 // version 2.1 of the License, or (at your option) any later version. 2871 // 2872 // The GNU C Library is distributed in the hope that it will be useful, 2873 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2874 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2875 // Lesser General Public License for more details. 2876 // 2877 // You should have received a copy of the GNU Lesser General Public 2878 // License along with the GNU C Library; if not, see 2879 // <https://www.gnu.org/licenses/>. 2880 2881 // We don't use `memset' because this would require a prototype and 2882 // the array isn't too big. 2883 2884 // Get sigset_t. 2885 2886 type X__sigset_t = struct{ F__val [32]uint32 } /* __sigset_t.h:8:3 */ 2887 2888 // A set of signals to be blocked, unblocked, or waited for. 2889 type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */ 2890 2891 // Get definition of timer specification structures. 2892 2893 // bits/types.h -- definitions of __*_t types underlying *_t types. 2894 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2895 // This file is part of the GNU C Library. 2896 // 2897 // The GNU C Library is free software; you can redistribute it and/or 2898 // modify it under the terms of the GNU Lesser General Public 2899 // License as published by the Free Software Foundation; either 2900 // version 2.1 of the License, or (at your option) any later version. 2901 // 2902 // The GNU C Library is distributed in the hope that it will be useful, 2903 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2904 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2905 // Lesser General Public License for more details. 2906 // 2907 // You should have received a copy of the GNU Lesser General Public 2908 // License along with the GNU C Library; if not, see 2909 // <https://www.gnu.org/licenses/>. 2910 2911 // Never include this file directly; use <sys/types.h> instead. 2912 2913 // A time value that is accurate to the nearest 2914 // microsecond but also has a range of years. 2915 type Timeval = struct { 2916 Ftv_sec X__time_t 2917 Ftv_usec X__suseconds_t 2918 } /* struct_timeval.h:8:1 */ 2919 2920 // NB: Include guard matches what <linux/time.h> uses. 2921 2922 // bits/types.h -- definitions of __*_t types underlying *_t types. 2923 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 2924 // This file is part of the GNU C Library. 2925 // 2926 // The GNU C Library is free software; you can redistribute it and/or 2927 // modify it under the terms of the GNU Lesser General Public 2928 // License as published by the Free Software Foundation; either 2929 // version 2.1 of the License, or (at your option) any later version. 2930 // 2931 // The GNU C Library is distributed in the hope that it will be useful, 2932 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2933 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2934 // Lesser General Public License for more details. 2935 // 2936 // You should have received a copy of the GNU Lesser General Public 2937 // License along with the GNU C Library; if not, see 2938 // <https://www.gnu.org/licenses/>. 2939 2940 // Never include this file directly; use <sys/types.h> instead. 2941 2942 // Endian macros for string.h functions 2943 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 2944 // This file is part of the GNU C Library. 2945 // 2946 // The GNU C Library is free software; you can redistribute it and/or 2947 // modify it under the terms of the GNU Lesser General Public 2948 // License as published by the Free Software Foundation; either 2949 // version 2.1 of the License, or (at your option) any later version. 2950 // 2951 // The GNU C Library is distributed in the hope that it will be useful, 2952 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2953 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2954 // Lesser General Public License for more details. 2955 // 2956 // You should have received a copy of the GNU Lesser General Public 2957 // License along with the GNU C Library; if not, see 2958 // <http://www.gnu.org/licenses/>. 2959 2960 // POSIX.1b structure for a time value. This is like a `struct timeval' but 2961 // has nanoseconds instead of microseconds. 2962 type Timespec = struct { 2963 Ftv_sec X__time_t 2964 Ftv_nsec X__syscall_slong_t 2965 } /* struct_timespec.h:10:1 */ 2966 2967 type Suseconds_t = X__suseconds_t /* select.h:43:23 */ 2968 2969 // The fd_set member is required to be an array of longs. 2970 type X__fd_mask = int32 /* select.h:49:18 */ 2971 2972 // Some versions of <linux/posix_types.h> define this macros. 2973 // It's easier to assume 8-bit bytes than to get CHAR_BIT. 2974 2975 // fd_set for select and pselect. 2976 type Fd_set = struct{ F__fds_bits [32]X__fd_mask } /* select.h:70:5 */ 2977 2978 // Maximum number of file descriptors in `fd_set'. 2979 2980 // Sometimes the fd_set member is assumed to have this type. 2981 type Fd_mask = X__fd_mask /* select.h:77:19 */ 2982 2983 // Define some inlines helping to catch common problems. 2984 2985 type Blksize_t = X__blksize_t /* types.h:185:21 */ 2986 2987 // Types from the Large File Support interface. 2988 type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks. 2989 type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks. 2990 type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes. 2991 2992 type Blkcnt64_t = X__blkcnt64_t /* types.h:219:22 */ // Type to count number of disk blocks. 2993 type Fsblkcnt64_t = X__fsblkcnt64_t /* types.h:220:24 */ // Type to count file system blocks. 2994 type Fsfilcnt64_t = X__fsfilcnt64_t /* types.h:221:24 */ // Type to count file system inodes. 2995 2996 // Now add the thread types. 2997 // Declaration of common pthread types for all architectures. 2998 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 2999 // This file is part of the GNU C Library. 3000 // 3001 // The GNU C Library is free software; you can redistribute it and/or 3002 // modify it under the terms of the GNU Lesser General Public 3003 // License as published by the Free Software Foundation; either 3004 // version 2.1 of the License, or (at your option) any later version. 3005 // 3006 // The GNU C Library is distributed in the hope that it will be useful, 3007 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3008 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3009 // Lesser General Public License for more details. 3010 // 3011 // You should have received a copy of the GNU Lesser General Public 3012 // License along with the GNU C Library; if not, see 3013 // <https://www.gnu.org/licenses/>. 3014 3015 // For internal mutex and condition variable definitions. 3016 // Common threading primitives definitions for both POSIX and C11. 3017 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 3018 // This file is part of the GNU C Library. 3019 // 3020 // The GNU C Library is free software; you can redistribute it and/or 3021 // modify it under the terms of the GNU Lesser General Public 3022 // License as published by the Free Software Foundation; either 3023 // version 2.1 of the License, or (at your option) any later version. 3024 // 3025 // The GNU C Library is distributed in the hope that it will be useful, 3026 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3027 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3028 // Lesser General Public License for more details. 3029 // 3030 // You should have received a copy of the GNU Lesser General Public 3031 // License along with the GNU C Library; if not, see 3032 // <https://www.gnu.org/licenses/>. 3033 3034 // Arch-specific definitions. Each architecture must define the following 3035 // macros to define the expected sizes of pthread data types: 3036 // 3037 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 3038 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 3039 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 3040 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 3041 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 3042 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 3043 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 3044 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 3045 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 3046 // 3047 // The additional macro defines any constraint for the lock alignment 3048 // inside the thread structures: 3049 // 3050 // __LOCK_ALIGNMENT - for internal lock/futex usage. 3051 // 3052 // Same idea but for the once locking primitive: 3053 // 3054 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 3055 3056 // Machine-specific pthread type layouts. Generic version. 3057 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 3058 // 3059 // This file is part of the GNU C Library. 3060 // 3061 // The GNU C Library is free software; you can redistribute it and/or 3062 // modify it under the terms of the GNU Lesser General Public 3063 // License as published by the Free Software Foundation; either 3064 // version 2.1 of the License, or (at your option) any later version. 3065 // 3066 // The GNU C Library is distributed in the hope that it will be useful, 3067 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3068 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3069 // Lesser General Public License for more details. 3070 // 3071 // You should have received a copy of the GNU Lesser General Public 3072 // License along with the GNU C Library; if not, see 3073 // <http://www.gnu.org/licenses/>. 3074 3075 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 3076 // This file is part of the GNU C Library. 3077 // 3078 // The GNU C Library is free software; you can redistribute it and/or 3079 // modify it under the terms of the GNU Lesser General Public 3080 // License as published by the Free Software Foundation; either 3081 // version 2.1 of the License, or (at your option) any later version. 3082 // 3083 // The GNU C Library is distributed in the hope that it will be useful, 3084 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3085 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3086 // Lesser General Public License for more details. 3087 // 3088 // You should have received a copy of the GNU Lesser General Public 3089 // License along with the GNU C Library; if not, see 3090 // <https://www.gnu.org/licenses/>. 3091 3092 // Common definition of pthread_mutex_t. 3093 3094 type X__pthread_internal_list = struct { 3095 F__prev uintptr 3096 F__next uintptr 3097 } /* thread-shared-types.h:49:9 */ 3098 3099 // Type to count file system inodes. 3100 3101 // Now add the thread types. 3102 // Declaration of common pthread types for all architectures. 3103 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 3104 // This file is part of the GNU C Library. 3105 // 3106 // The GNU C Library is free software; you can redistribute it and/or 3107 // modify it under the terms of the GNU Lesser General Public 3108 // License as published by the Free Software Foundation; either 3109 // version 2.1 of the License, or (at your option) any later version. 3110 // 3111 // The GNU C Library is distributed in the hope that it will be useful, 3112 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3113 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3114 // Lesser General Public License for more details. 3115 // 3116 // You should have received a copy of the GNU Lesser General Public 3117 // License along with the GNU C Library; if not, see 3118 // <https://www.gnu.org/licenses/>. 3119 3120 // For internal mutex and condition variable definitions. 3121 // Common threading primitives definitions for both POSIX and C11. 3122 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 3123 // This file is part of the GNU C Library. 3124 // 3125 // The GNU C Library is free software; you can redistribute it and/or 3126 // modify it under the terms of the GNU Lesser General Public 3127 // License as published by the Free Software Foundation; either 3128 // version 2.1 of the License, or (at your option) any later version. 3129 // 3130 // The GNU C Library is distributed in the hope that it will be useful, 3131 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3132 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3133 // Lesser General Public License for more details. 3134 // 3135 // You should have received a copy of the GNU Lesser General Public 3136 // License along with the GNU C Library; if not, see 3137 // <https://www.gnu.org/licenses/>. 3138 3139 // Arch-specific definitions. Each architecture must define the following 3140 // macros to define the expected sizes of pthread data types: 3141 // 3142 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 3143 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 3144 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 3145 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 3146 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 3147 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 3148 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 3149 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 3150 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 3151 // 3152 // The additional macro defines any constraint for the lock alignment 3153 // inside the thread structures: 3154 // 3155 // __LOCK_ALIGNMENT - for internal lock/futex usage. 3156 // 3157 // Same idea but for the once locking primitive: 3158 // 3159 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 3160 3161 // Machine-specific pthread type layouts. Generic version. 3162 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 3163 // 3164 // This file is part of the GNU C Library. 3165 // 3166 // The GNU C Library is free software; you can redistribute it and/or 3167 // modify it under the terms of the GNU Lesser General Public 3168 // License as published by the Free Software Foundation; either 3169 // version 2.1 of the License, or (at your option) any later version. 3170 // 3171 // The GNU C Library is distributed in the hope that it will be useful, 3172 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3173 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3174 // Lesser General Public License for more details. 3175 // 3176 // You should have received a copy of the GNU Lesser General Public 3177 // License along with the GNU C Library; if not, see 3178 // <http://www.gnu.org/licenses/>. 3179 3180 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 3181 // This file is part of the GNU C Library. 3182 // 3183 // The GNU C Library is free software; you can redistribute it and/or 3184 // modify it under the terms of the GNU Lesser General Public 3185 // License as published by the Free Software Foundation; either 3186 // version 2.1 of the License, or (at your option) any later version. 3187 // 3188 // The GNU C Library is distributed in the hope that it will be useful, 3189 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3190 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3191 // Lesser General Public License for more details. 3192 // 3193 // You should have received a copy of the GNU Lesser General Public 3194 // License along with the GNU C Library; if not, see 3195 // <https://www.gnu.org/licenses/>. 3196 3197 // Common definition of pthread_mutex_t. 3198 3199 type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */ 3200 3201 type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */ 3202 3203 type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */ 3204 3205 // Arch-specific mutex definitions. A generic implementation is provided 3206 // by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture 3207 // can override it by defining: 3208 // 3209 // 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t 3210 // definition). It should contains at least the internal members 3211 // defined in the generic version. 3212 // 3213 // 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with 3214 // atomic operations. 3215 // 3216 // 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. 3217 // It should initialize the mutex internal flag. 3218 3219 // Default mutex implementation struct definitions. 3220 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 3221 // This file is part of the GNU C Library. 3222 // 3223 // The GNU C Library is free software; you can redistribute it and/or 3224 // modify it under the terms of the GNU Lesser General Public 3225 // License as published by the Free Software Foundation; either 3226 // version 2.1 of the License, or (at your option) any later version. 3227 // 3228 // The GNU C Library is distributed in the hope that it will be useful, 3229 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3230 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3231 // Lesser General Public License for more details. 3232 // 3233 // You should have received a copy of the GNU Lesser General Public 3234 // License along with the GNU C Library; if not, see 3235 // <http://www.gnu.org/licenses/>. 3236 3237 // Generic struct for both POSIX and C11 mutexes. New ports are expected 3238 // to use the default layout, however architecture can redefine it to 3239 // add arch-specific extension (such as lock-elision). The struct have 3240 // a size of 32 bytes on LP32 and 40 bytes on LP64 architectures. 3241 3242 type X__pthread_mutex_s = struct { 3243 F__lock int32 3244 F__count uint32 3245 F__owner int32 3246 F__kind int32 3247 F__nusers uint32 3248 F__20 struct{ F__spins int32 } 3249 } /* struct_mutex.h:27:1 */ 3250 3251 // Arch-sepecific read-write lock definitions. A generic implementation is 3252 // provided by struct_rwlock.h. If required, an architecture can override it 3253 // by defining: 3254 // 3255 // 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). 3256 // It should contain at least the internal members defined in the 3257 // generic version. 3258 // 3259 // 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. 3260 // It should initialize the rwlock internal type. 3261 3262 // Default read-write lock implementation struct definitions. 3263 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 3264 // This file is part of the GNU C Library. 3265 // 3266 // The GNU C Library is free software; you can redistribute it and/or 3267 // modify it under the terms of the GNU Lesser General Public 3268 // License as published by the Free Software Foundation; either 3269 // version 2.1 of the License, or (at your option) any later version. 3270 // 3271 // The GNU C Library is distributed in the hope that it will be useful, 3272 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3273 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3274 // Lesser General Public License for more details. 3275 // 3276 // You should have received a copy of the GNU Lesser General Public 3277 // License along with the GNU C Library; if not, see 3278 // <http://www.gnu.org/licenses/>. 3279 3280 // Endian macros for string.h functions 3281 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 3282 // This file is part of the GNU C Library. 3283 // 3284 // The GNU C Library is free software; you can redistribute it and/or 3285 // modify it under the terms of the GNU Lesser General Public 3286 // License as published by the Free Software Foundation; either 3287 // version 2.1 of the License, or (at your option) any later version. 3288 // 3289 // The GNU C Library is distributed in the hope that it will be useful, 3290 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3291 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3292 // Lesser General Public License for more details. 3293 // 3294 // You should have received a copy of the GNU Lesser General Public 3295 // License along with the GNU C Library; if not, see 3296 // <http://www.gnu.org/licenses/>. 3297 3298 // Generic struct for both POSIX read-write lock. New ports are expected 3299 // to use the default layout, however archictetures can redefine it to add 3300 // arch-specific extensions (such as lock-elision). The struct have a size 3301 // of 32 bytes on both LP32 and LP64 architectures. 3302 3303 type X__pthread_rwlock_arch_t = struct { 3304 F__readers uint32 3305 F__writers uint32 3306 F__wrphase_futex uint32 3307 F__writers_futex uint32 3308 F__pad3 uint32 3309 F__pad4 uint32 3310 F__flags uint8 3311 F__shared uint8 3312 F__pad1 uint8 3313 F__pad2 uint8 3314 F__cur_writer int32 3315 } /* struct_rwlock.h:29:1 */ 3316 3317 // Common definition of pthread_cond_t. 3318 3319 type X__pthread_cond_s = struct { 3320 F__0 struct{ F__wseq uint64 } 3321 F__8 struct{ F__g1_start uint64 } 3322 F__g_refs [2]uint32 3323 F__g_size [2]uint32 3324 F__g1_orig_size uint32 3325 F__wrefs uint32 3326 F__g_signals [2]uint32 3327 } /* thread-shared-types.h:92:1 */ 3328 3329 // Thread identifiers. The structure of the attribute type is not 3330 // exposed on purpose. 3331 type Pthread_t = uint32 /* pthreadtypes.h:27:27 */ 3332 3333 // Data structures for mutex handling. The structure of the attribute 3334 // type is not exposed on purpose. 3335 type Pthread_mutexattr_t = struct { 3336 F__ccgo_pad1 [0]uint32 3337 F__size [4]uint8 3338 } /* pthreadtypes.h:36:3 */ 3339 3340 // Data structure for condition variable handling. The structure of 3341 // the attribute type is not exposed on purpose. 3342 type Pthread_condattr_t = struct { 3343 F__ccgo_pad1 [0]uint32 3344 F__size [4]uint8 3345 } /* pthreadtypes.h:45:3 */ 3346 3347 // Keys for thread-specific data 3348 type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */ 3349 3350 // Once-only execution 3351 type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */ 3352 3353 type Pthread_attr_t1 = struct { 3354 F__ccgo_pad1 [0]uint32 3355 F__size [36]uint8 3356 } /* pthreadtypes.h:56:1 */ 3357 3358 type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */ 3359 3360 type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */ 3361 3362 type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */ 3363 3364 // Data structure for reader-writer lock variable handling. The 3365 // structure of the attribute type is deliberately not exposed. 3366 type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */ 3367 3368 type Pthread_rwlockattr_t = struct { 3369 F__ccgo_pad1 [0]uint32 3370 F__size [8]uint8 3371 } /* pthreadtypes.h:97:3 */ 3372 3373 // POSIX spinlock data type. 3374 type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */ 3375 3376 // POSIX barriers data type. The structure of the type is 3377 // deliberately not exposed. 3378 type Pthread_barrier_t = struct { 3379 F__ccgo_pad1 [0]uint32 3380 F__size [20]uint8 3381 } /* pthreadtypes.h:112:3 */ 3382 3383 type Pthread_barrierattr_t = struct { 3384 F__ccgo_pad1 [0]uint32 3385 F__size [4]uint8 3386 } /* pthreadtypes.h:118:3 */ 3387 3388 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 3389 // 3390 // This file is part of GCC. 3391 // 3392 // GCC is free software; you can redistribute it and/or modify 3393 // it under the terms of the GNU General Public License as published by 3394 // the Free Software Foundation; either version 3, or (at your option) 3395 // any later version. 3396 // 3397 // GCC is distributed in the hope that it will be useful, 3398 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3399 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 3400 // GNU General Public License for more details. 3401 // 3402 // Under Section 7 of GPL version 3, you are granted additional 3403 // permissions described in the GCC Runtime Library Exception, version 3404 // 3.1, as published by the Free Software Foundation. 3405 // 3406 // You should have received a copy of the GNU General Public License and 3407 // a copy of the GCC Runtime Library Exception along with this program; 3408 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 3409 // <http://www.gnu.org/licenses/>. 3410 3411 // ISO C Standard: 7.15 Variable arguments <stdarg.h> 3412 3413 // Define __gnuc_va_list. 3414 3415 type X__gnuc_va_list = X__builtin_va_list /* stdarg.h:40:27 */ 3416 3417 // Define the standard macros for the user, 3418 // if this invocation was from the user program. 3419 3420 // Define va_list, if desired, from __gnuc_va_list. 3421 // We deliberately do not define va_list when called from 3422 // stdio.h, because ANSI C says that stdio.h is not supposed to define 3423 // va_list. stdio.h needs to have access to that data type, 3424 // but must not use that name. It should use the name __gnuc_va_list, 3425 // which is safe because it is reserved for the implementation. 3426 3427 // The macro _VA_LIST_ is the same thing used by this file in Ultrix. 3428 // But on BSD NET2 we must not test or define or undef it. 3429 // (Note that the comments in NET 2's ansi.h 3430 // are incorrect for _VA_LIST_--see stdio.h!) 3431 // The macro _VA_LIST_DEFINED is used in Windows NT 3.5 3432 // The macro _VA_LIST is used in SCO Unix 3.2. 3433 // The macro _VA_LIST_T_H is used in the Bull dpx2 3434 // The macro __va_list__ is used by BeOS. 3435 type Va_list = X__gnuc_va_list /* stdarg.h:99:24 */ 3436 3437 // a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and 3438 // "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even 3439 // though the former does not conform to the LFS document), but considering 3440 // both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as 3441 // equivalently requesting no 64-bit operations 3442 3443 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 3444 // This file is part of the GNU C Library. 3445 // 3446 // The GNU C Library is free software; you can redistribute it and/or 3447 // modify it under the terms of the GNU Lesser General Public 3448 // License as published by the Free Software Foundation; either 3449 // version 2.1 of the License, or (at your option) any later version. 3450 // 3451 // The GNU C Library is distributed in the hope that it will be useful, 3452 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3453 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3454 // Lesser General Public License for more details. 3455 // 3456 // You should have received a copy of the GNU Lesser General Public 3457 // License along with the GNU C Library; if not, see 3458 // <https://www.gnu.org/licenses/>. 3459 3460 // POSIX Standard: 2.10 Symbolic Constants <unistd.h> 3461 3462 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 3463 // This file is part of the GNU C Library. 3464 // 3465 // The GNU C Library is free software; you can redistribute it and/or 3466 // modify it under the terms of the GNU Lesser General Public 3467 // License as published by the Free Software Foundation; either 3468 // version 2.1 of the License, or (at your option) any later version. 3469 // 3470 // The GNU C Library is distributed in the hope that it will be useful, 3471 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3472 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3473 // Lesser General Public License for more details. 3474 // 3475 // You should have received a copy of the GNU Lesser General Public 3476 // License along with the GNU C Library; if not, see 3477 // <https://www.gnu.org/licenses/>. 3478 3479 // These may be used to determine what facilities are present at compile time. 3480 // Their values can be obtained at run time from `sysconf'. 3481 3482 // POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. 3483 3484 // These are not #ifdef __USE_POSIX2 because they are 3485 // in the theoretically application-owned namespace. 3486 3487 // The utilities on GNU systems also correspond to this version. 3488 3489 // The utilities on GNU systems also correspond to this version. 3490 3491 // This symbol was required until the 2001 edition of POSIX. 3492 3493 // If defined, the implementation supports the 3494 // C Language Bindings Option. 3495 3496 // If defined, the implementation supports the 3497 // C Language Development Utilities Option. 3498 3499 // If defined, the implementation supports the 3500 // Software Development Utilities Option. 3501 3502 // If defined, the implementation supports the 3503 // creation of locales with the localedef utility. 3504 3505 // X/Open version number to which the library conforms. It is selectable. 3506 3507 // Commands and utilities from XPG4 are available. 3508 3509 // We are compatible with the old published standards as well. 3510 3511 // The X/Open Unix extensions are available. 3512 3513 // The enhanced internationalization capabilities according to XPG4.2 3514 // are present. 3515 3516 // The legacy interfaces are also available. 3517 3518 // Get values of POSIX options: 3519 // 3520 // If these symbols are defined, the corresponding features are 3521 // always available. If not, they may be available sometimes. 3522 // The current values can be obtained with `sysconf'. 3523 // 3524 // _POSIX_JOB_CONTROL Job control is supported. 3525 // _POSIX_SAVED_IDS Processes have a saved set-user-ID 3526 // and a saved set-group-ID. 3527 // _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. 3528 // _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. 3529 // _POSIX_TIMERS POSIX.4 clocks and timers are supported. 3530 // _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported. 3531 // _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported. 3532 // _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported. 3533 // _POSIX_FSYNC The fsync function is present. 3534 // _POSIX_MAPPED_FILES Mapping of files to memory is supported. 3535 // _POSIX_MEMLOCK Locking of all memory is supported. 3536 // _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported. 3537 // _POSIX_MEMORY_PROTECTION Setting of memory protections is supported. 3538 // _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported. 3539 // _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported. 3540 // _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported. 3541 // _POSIX_THREADS POSIX.1c pthreads are supported. 3542 // _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported. 3543 // _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported. 3544 // _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported. 3545 // _POSIX_THREAD_PRIORITY_SCHEDULING 3546 // POSIX.1c thread execution scheduling supported. 3547 // _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported. 3548 // _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported. 3549 // _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported. 3550 // _POSIX_PII Protocol-independent interfaces are supported. 3551 // _POSIX_PII_XTI XTI protocol-indep. interfaces are supported. 3552 // _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported. 3553 // _POSIX_PII_INTERNET Internet family of protocols supported. 3554 // _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported. 3555 // _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported. 3556 // _POSIX_PII_OSI ISO/OSI family of protocols supported. 3557 // _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported. 3558 // _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported. 3559 // _POSIX_POLL Implementation supports `poll' function. 3560 // _POSIX_SELECT Implementation supports `select' and `pselect'. 3561 // 3562 // _XOPEN_REALTIME X/Open realtime support is available. 3563 // _XOPEN_REALTIME_THREADS X/Open realtime thread support is available. 3564 // _XOPEN_SHM Shared memory interface according to XPG4.2. 3565 // 3566 // _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit 3567 // int, long, pointer, and off_t types. 3568 // _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit 3569 // int, long, and pointer and off_t with at least 3570 // 64 bits. 3571 // _XBS5_LP64_OFF64 Implementation provides environment with 32-bit 3572 // int, and 64-bit long, pointer, and off_t types. 3573 // _XBS5_LPBIG_OFFBIG Implementation provides environment with at 3574 // least 32 bits int and long, pointer, and off_t 3575 // with at least 64 bits. 3576 // 3577 // If any of these symbols is defined as -1, the corresponding option is not 3578 // true for any file. If any is defined as other than -1, the corresponding 3579 // option is true for all files. If a symbol is not defined at all, the value 3580 // for a specific file can be obtained from `pathconf' and `fpathconf'. 3581 // 3582 // _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change 3583 // the owner of a file. `chown' can only be used 3584 // to change the group ID of a file to a group of 3585 // which the calling process is a member. 3586 // _POSIX_NO_TRUNC Pathname components longer than 3587 // NAME_MAX generate an error. 3588 // _POSIX_VDISABLE If defined, if the value of an element of the 3589 // `c_cc' member of `struct termios' is 3590 // _POSIX_VDISABLE, no character will have the 3591 // effect associated with that element. 3592 // _POSIX_SYNC_IO Synchronous I/O may be performed. 3593 // _POSIX_ASYNC_IO Asynchronous I/O may be performed. 3594 // _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed. 3595 // 3596 // Support for the Large File Support interface is not generally available. 3597 // If it is available the following constants are defined to one. 3598 // _LFS64_LARGEFILE Low-level I/O supports large files. 3599 // _LFS64_STDIO Standard I/O supports large files. 3600 // 3601 3602 // Define POSIX options for Linux. 3603 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 3604 // This file is part of the GNU C Library. 3605 // 3606 // The GNU C Library is free software; you can redistribute it and/or 3607 // modify it under the terms of the GNU Lesser General Public License as 3608 // published by the Free Software Foundation; either version 2.1 of the 3609 // License, or (at your option) any later version. 3610 // 3611 // The GNU C Library is distributed in the hope that it will be useful, 3612 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3613 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3614 // Lesser General Public License for more details. 3615 // 3616 // You should have received a copy of the GNU Lesser General Public 3617 // License along with the GNU C Library; see the file COPYING.LIB. If 3618 // not, see <https://www.gnu.org/licenses/>. 3619 3620 // Job control is supported. 3621 3622 // Processes have a saved set-user-ID and a saved set-group-ID. 3623 3624 // Priority scheduling is not supported with the correct semantics, 3625 // but GNU/Linux applications expect that the corresponding interfaces 3626 // are available, even though the semantics do not meet the POSIX 3627 // requirements. See glibc bug 14829. 3628 3629 // Synchronizing file data is supported. 3630 3631 // The fsync function is present. 3632 3633 // Mapping of files to memory is supported. 3634 3635 // Locking of all memory is supported. 3636 3637 // Locking of ranges of memory is supported. 3638 3639 // Setting of memory protections is supported. 3640 3641 // Some filesystems allow all users to change file ownership. 3642 3643 // `c_cc' member of 'struct termios' structure can be disabled by 3644 // using the value _POSIX_VDISABLE. 3645 3646 // Filenames are not silently truncated. 3647 3648 // X/Open realtime support is available. 3649 3650 // X/Open thread realtime support is available. 3651 3652 // XPG4.2 shared memory is supported. 3653 3654 // Tell we have POSIX threads. 3655 3656 // We have the reentrant functions described in POSIX. 3657 3658 // We provide priority scheduling for threads. 3659 3660 // We support user-defined stack sizes. 3661 3662 // We support user-defined stacks. 3663 3664 // We support priority inheritence. 3665 3666 // We support priority protection, though only for non-robust 3667 // mutexes. 3668 3669 // We support priority inheritence for robust mutexes. 3670 3671 // We do not support priority protection for robust mutexes. 3672 3673 // We support POSIX.1b semaphores. 3674 3675 // Real-time signals are supported. 3676 3677 // We support asynchronous I/O. 3678 // Alternative name for Unix98. 3679 // Support for prioritization is also available. 3680 3681 // The LFS support in asynchronous I/O is also available. 3682 3683 // The rest of the LFS is also available. 3684 3685 // POSIX shared memory objects are implemented. 3686 3687 // CPU-time clocks support needs to be checked at runtime. 3688 3689 // Clock support in threads must be also checked at runtime. 3690 3691 // GNU libc provides regular expression handling. 3692 3693 // Reader/Writer locks are available. 3694 3695 // We have a POSIX shell. 3696 3697 // We support the Timeouts option. 3698 3699 // We support spinlocks. 3700 3701 // The `spawn' function family is supported. 3702 3703 // We have POSIX timers. 3704 3705 // The barrier functions are available. 3706 3707 // POSIX message queues are available. 3708 3709 // Thread process-shared synchronization is supported. 3710 3711 // The monotonic clock might be available. 3712 3713 // The clock selection interfaces are available. 3714 3715 // Advisory information interfaces are available. 3716 3717 // IPv6 support is available. 3718 3719 // Raw socket support is available. 3720 3721 // We have at least one terminal. 3722 3723 // Neither process nor thread sporadic server interfaces is available. 3724 3725 // trace.h is not available. 3726 3727 // Typed memory objects are not available. 3728 3729 // Get the environment definitions from Unix98. 3730 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 3731 // This file is part of the GNU C Library. 3732 // 3733 // The GNU C Library is free software; you can redistribute it and/or 3734 // modify it under the terms of the GNU Lesser General Public 3735 // License as published by the Free Software Foundation; either 3736 // version 2.1 of the License, or (at your option) any later version. 3737 // 3738 // The GNU C Library is distributed in the hope that it will be useful, 3739 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3740 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3741 // Lesser General Public License for more details. 3742 // 3743 // You should have received a copy of the GNU Lesser General Public 3744 // License along with the GNU C Library; if not, see 3745 // <https://www.gnu.org/licenses/>. 3746 3747 // Copyright (C) 1999-2020 Free Software Foundation, Inc. 3748 // This file is part of the GNU C Library. 3749 // 3750 // The GNU C Library is free software; you can redistribute it and/or 3751 // modify it under the terms of the GNU Lesser General Public 3752 // License as published by the Free Software Foundation; either 3753 // version 2.1 of the License, or (at your option) any later version. 3754 // 3755 // The GNU C Library is distributed in the hope that it will be useful, 3756 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3757 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3758 // Lesser General Public License for more details. 3759 // 3760 // You should have received a copy of the GNU Lesser General Public 3761 // License along with the GNU C Library; if not, see 3762 // <https://www.gnu.org/licenses/>. 3763 3764 // This header should define the following symbols under the described 3765 // situations. A value `1' means that the model is always supported, 3766 // `-1' means it is never supported. Undefined means it cannot be 3767 // statically decided. 3768 // 3769 // _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type 3770 // _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type 3771 // 3772 // _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type 3773 // _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type 3774 // 3775 // The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, 3776 // _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, 3777 // _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were 3778 // used in previous versions of the Unix standard and are available 3779 // only for compatibility. 3780 3781 // By default we have 32-bit wide `int', `long int', pointers and `off_t' 3782 // and all platforms support LFS. 3783 3784 // We optionally provide an environment with the above size but an 64-bit 3785 // side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. 3786 3787 // We can never provide environments with 64-bit wide pointers. 3788 3789 // CFLAGS. 3790 3791 // Standard file descriptors. 3792 3793 // All functions that are not declared anywhere else. 3794 3795 // bits/types.h -- definitions of __*_t types underlying *_t types. 3796 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 3797 // This file is part of the GNU C Library. 3798 // 3799 // The GNU C Library is free software; you can redistribute it and/or 3800 // modify it under the terms of the GNU Lesser General Public 3801 // License as published by the Free Software Foundation; either 3802 // version 2.1 of the License, or (at your option) any later version. 3803 // 3804 // The GNU C Library is distributed in the hope that it will be useful, 3805 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3806 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3807 // Lesser General Public License for more details. 3808 // 3809 // You should have received a copy of the GNU Lesser General Public 3810 // License along with the GNU C Library; if not, see 3811 // <https://www.gnu.org/licenses/>. 3812 3813 // Never include this file directly; use <sys/types.h> instead. 3814 3815 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 3816 // 3817 // This file is part of GCC. 3818 // 3819 // GCC is free software; you can redistribute it and/or modify 3820 // it under the terms of the GNU General Public License as published by 3821 // the Free Software Foundation; either version 3, or (at your option) 3822 // any later version. 3823 // 3824 // GCC is distributed in the hope that it will be useful, 3825 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3826 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 3827 // GNU General Public License for more details. 3828 // 3829 // Under Section 7 of GPL version 3, you are granted additional 3830 // permissions described in the GCC Runtime Library Exception, version 3831 // 3.1, as published by the Free Software Foundation. 3832 // 3833 // You should have received a copy of the GNU General Public License and 3834 // a copy of the GCC Runtime Library Exception along with this program; 3835 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 3836 // <http://www.gnu.org/licenses/>. 3837 3838 // ISO C Standard: 7.17 Common definitions <stddef.h> 3839 3840 // Any one of these symbols __need_* means that GNU libc 3841 // wants us just to define one data type. So don't define 3842 // the symbols that indicate this file's entire job has been done. 3843 3844 // This avoids lossage on SunOS but only if stdtypes.h comes first. 3845 // There's no way to win with the other order! Sun lossage. 3846 3847 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 3848 // Just ignore it. 3849 3850 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 3851 // _TYPE_size_t which will typedef size_t. fixincludes patched the 3852 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 3853 // not defined, and so that defining this macro defines _GCC_SIZE_T. 3854 // If we find that the macros are still defined at this point, we must 3855 // invoke them so that the type is defined as expected. 3856 3857 // In case nobody has defined these types, but we aren't running under 3858 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 3859 // __WCHAR_TYPE__ have reasonable values. This can happen if the 3860 // parts of GCC is compiled by an older compiler, that actually 3861 // include gstddef.h, such as collect2. 3862 3863 // Signed type of difference of two pointers. 3864 3865 // Define this type if we are doing the whole job, 3866 // or if we want this type in particular. 3867 3868 // If this symbol has done its job, get rid of it. 3869 3870 // Unsigned type of `sizeof' something. 3871 3872 // Define this type if we are doing the whole job, 3873 // or if we want this type in particular. 3874 3875 // Wide character type. 3876 // Locale-writers should change this as necessary to 3877 // be big enough to hold unique values not between 0 and 127, 3878 // and not (wchar_t) -1, for each defined multibyte character. 3879 3880 // Define this type if we are doing the whole job, 3881 // or if we want this type in particular. 3882 3883 // A null pointer constant. 3884 3885 // Offset of member MEMBER in a struct of type TYPE. 3886 3887 // The Single Unix specification says that some more types are 3888 // available here. 3889 3890 type Useconds_t = X__useconds_t /* unistd.h:255:22 */ 3891 3892 type Intptr_t = X__intptr_t /* unistd.h:267:20 */ 3893 3894 type Socklen_t = X__socklen_t /* unistd.h:274:21 */ 3895 3896 // Define some macros helping to catch buffer overflows. 3897 3898 // System-specific extensions. 3899 // System-specific extensions of <unistd.h>, Linux version. 3900 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 3901 // This file is part of the GNU C Library. 3902 // 3903 // The GNU C Library is free software; you can redistribute it and/or 3904 // modify it under the terms of the GNU Lesser General Public 3905 // License as published by the Free Software Foundation; either 3906 // version 2.1 of the License, or (at your option) any later version. 3907 // 3908 // The GNU C Library is distributed in the hope that it will be useful, 3909 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3910 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3911 // Lesser General Public License for more details. 3912 // 3913 // You should have received a copy of the GNU Lesser General Public 3914 // License along with the GNU C Library; if not, see 3915 // <https://www.gnu.org/licenses/>. 3916 3917 // MVS linker does not support external names larger than 8 bytes 3918 3919 // 3920 // The 'zlib' compression library provides in-memory compression and 3921 // decompression functions, including integrity checks of the uncompressed data. 3922 // This version of the library supports only one compression method (deflation) 3923 // but other algorithms will be added later and will have the same stream 3924 // interface. 3925 // 3926 // Compression can be done in a single step if the buffers are large enough, 3927 // or can be done by repeated calls of the compression function. In the latter 3928 // case, the application must provide more input and/or consume the output 3929 // (providing more output space) before each call. 3930 // 3931 // The compressed data format used by default by the in-memory functions is 3932 // the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped 3933 // around a deflate stream, which is itself documented in RFC 1951. 3934 // 3935 // The library also supports reading and writing files in gzip (.gz) format 3936 // with an interface similar to that of stdio using the functions that start 3937 // with "gz". The gzip format is different from the zlib format. gzip is a 3938 // gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. 3939 // 3940 // This library can optionally read and write gzip and raw deflate streams in 3941 // memory as well. 3942 // 3943 // The zlib format was designed to be compact and fast for use in memory 3944 // and on communications channels. The gzip format was designed for single- 3945 // file compression on file systems, has a larger header than zlib to maintain 3946 // directory information, and uses a different, slower check method than zlib. 3947 // 3948 // The library does not install any signal handler. The decoder checks 3949 // the consistency of the compressed data, so the library should never crash 3950 // even in the case of corrupted input. 3951 3952 type Alloc_func = uintptr /* zlib.h:81:16 */ 3953 type Free_func = uintptr /* zlib.h:82:16 */ 3954 3955 type Internal_state = struct { 3956 Fstrm Z_streamp 3957 Fstatus int32 3958 Fpending_buf uintptr 3959 Fpending_buf_size Ulg 3960 Fpending_out uintptr 3961 Fpending Ulg 3962 Fwrap int32 3963 Fgzhead Gz_headerp 3964 Fgzindex Ulg 3965 Fmethod Byte 3966 F__ccgo_pad1 [3]byte 3967 Flast_flush int32 3968 Fw_size UInt 3969 Fw_bits UInt 3970 Fw_mask UInt 3971 Fwindow uintptr 3972 Fwindow_size Ulg 3973 Fprev uintptr 3974 Fhead uintptr 3975 Fins_h UInt 3976 Fhash_size UInt 3977 Fhash_bits UInt 3978 Fhash_mask UInt 3979 Fhash_shift UInt 3980 Fblock_start int32 3981 Fmatch_length UInt 3982 Fprev_match IPos 3983 Fmatch_available int32 3984 Fstrstart UInt 3985 Fmatch_start UInt 3986 Flookahead UInt 3987 Fprev_length UInt 3988 Fmax_chain_length UInt 3989 Fmax_lazy_match UInt 3990 Flevel int32 3991 Fstrategy int32 3992 Fgood_match UInt 3993 Fnice_match int32 3994 Fdyn_ltree [573]struct { 3995 Ffc struct{ Ffreq Ush } 3996 Fdl struct{ Fdad Ush } 3997 } 3998 Fdyn_dtree [61]struct { 3999 Ffc struct{ Ffreq Ush } 4000 Fdl struct{ Fdad Ush } 4001 } 4002 Fbl_tree [39]struct { 4003 Ffc struct{ Ffreq Ush } 4004 Fdl struct{ Fdad Ush } 4005 } 4006 Fl_desc struct { 4007 Fdyn_tree uintptr 4008 Fmax_code int32 4009 Fstat_desc uintptr 4010 } 4011 Fd_desc struct { 4012 Fdyn_tree uintptr 4013 Fmax_code int32 4014 Fstat_desc uintptr 4015 } 4016 Fbl_desc struct { 4017 Fdyn_tree uintptr 4018 Fmax_code int32 4019 Fstat_desc uintptr 4020 } 4021 Fbl_count [16]Ush 4022 Fheap [573]int32 4023 Fheap_len int32 4024 Fheap_max int32 4025 Fdepth [573]Uch 4026 F__ccgo_pad2 [3]byte 4027 Fl_buf uintptr 4028 Flit_bufsize UInt 4029 Flast_lit UInt 4030 Fd_buf uintptr 4031 Fopt_len Ulg 4032 Fstatic_len Ulg 4033 Fmatches UInt 4034 Finsert UInt 4035 Fbi_buf Ush 4036 F__ccgo_pad3 [2]byte 4037 Fbi_valid int32 4038 Fhigh_water Ulg 4039 } /* zlib.h:84:1 */ 4040 4041 type Z_stream_s = struct { 4042 Fnext_in uintptr 4043 Favail_in UInt 4044 Ftotal_in ULong 4045 Fnext_out uintptr 4046 Favail_out UInt 4047 Ftotal_out ULong 4048 Fmsg uintptr 4049 Fstate uintptr 4050 Fzalloc Alloc_func 4051 Fzfree Free_func 4052 Fopaque Voidpf 4053 Fdata_type int32 4054 Fadler ULong 4055 Freserved ULong 4056 } /* zlib.h:86:9 */ 4057 4058 type Z_stream = Z_stream_s /* zlib.h:106:3 */ 4059 4060 type Z_streamp = uintptr /* zlib.h:108:22 */ 4061 4062 // 4063 // gzip header information passed to and from zlib routines. See RFC 1952 4064 // for more details on the meanings of these fields. 4065 type Gz_header_s = struct { 4066 Ftext int32 4067 Ftime ULong 4068 Fxflags int32 4069 Fos int32 4070 Fextra uintptr 4071 Fextra_len UInt 4072 Fextra_max UInt 4073 Fname uintptr 4074 Fname_max UInt 4075 Fcomment uintptr 4076 Fcomm_max UInt 4077 Fhcrc int32 4078 Fdone int32 4079 } /* zlib.h:114:9 */ 4080 4081 // 4082 // gzip header information passed to and from zlib routines. See RFC 1952 4083 // for more details on the meanings of these fields. 4084 type Gz_header = Gz_header_s /* zlib.h:129:3 */ 4085 4086 type Gz_headerp = uintptr /* zlib.h:131:23 */ 4087 // 4088 // inflateGetHeader() requests that gzip header information be stored in the 4089 // provided gz_header structure. inflateGetHeader() may be called after 4090 // inflateInit2() or inflateReset(), and before the first call of inflate(). 4091 // As inflate() processes the gzip stream, head->done is zero until the header 4092 // is completed, at which time head->done is set to one. If a zlib stream is 4093 // being decoded, then head->done is set to -1 to indicate that there will be 4094 // no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be 4095 // used to force inflate() to return immediately after header processing is 4096 // complete and before any actual data is decompressed. 4097 // 4098 // The text, time, xflags, and os fields are filled in with the gzip header 4099 // contents. hcrc is set to true if there is a header CRC. (The header CRC 4100 // was valid if done is set to one.) If extra is not Z_NULL, then extra_max 4101 // contains the maximum number of bytes to write to extra. Once done is true, 4102 // extra_len contains the actual extra field length, and extra contains the 4103 // extra field, or that field truncated if extra_max is less than extra_len. 4104 // If name is not Z_NULL, then up to name_max characters are written there, 4105 // terminated with a zero unless the length is greater than name_max. If 4106 // comment is not Z_NULL, then up to comm_max characters are written there, 4107 // terminated with a zero unless the length is greater than comm_max. When any 4108 // of extra, name, or comment are not Z_NULL and the respective field is not 4109 // present in the header, then that field is set to Z_NULL to signal its 4110 // absence. This allows the use of deflateSetHeader() with the returned 4111 // structure to duplicate the header. However if those fields are set to 4112 // allocated memory, then the application will need to save those pointers 4113 // elsewhere so that they can be eventually freed. 4114 // 4115 // If inflateGetHeader is not used, then the header information is simply 4116 // discarded. The header is always checked for validity, including the header 4117 // CRC if present. inflateReset() will reset the process to discard the header 4118 // information. The application would need to call inflateGetHeader() again to 4119 // retrieve the header from the next gzip stream. 4120 // 4121 // inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source 4122 // stream state was inconsistent. 4123 4124 // 4125 // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, 4126 // unsigned char FAR *window)); 4127 // 4128 // Initialize the internal stream state for decompression using inflateBack() 4129 // calls. The fields zalloc, zfree and opaque in strm must be initialized 4130 // before the call. If zalloc and zfree are Z_NULL, then the default library- 4131 // derived memory allocation routines are used. windowBits is the base two 4132 // logarithm of the window size, in the range 8..15. window is a caller 4133 // supplied buffer of that size. Except for special applications where it is 4134 // assured that deflate was used with small window sizes, windowBits must be 15 4135 // and a 32K byte window must be supplied to be able to decompress general 4136 // deflate streams. 4137 // 4138 // See inflateBack() for the usage of these routines. 4139 // 4140 // inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of 4141 // the parameters are invalid, Z_MEM_ERROR if the internal state could not be 4142 // allocated, or Z_VERSION_ERROR if the version of the library does not match 4143 // the version of the header file. 4144 4145 type In_func = uintptr /* zlib.h:1092:18 */ 4146 type Out_func = uintptr /* zlib.h:1094:13 */ 4147 // 4148 // Same as uncompress, except that sourceLen is a pointer, where the 4149 // length of the source is *sourceLen. On return, *sourceLen is the number of 4150 // source bytes consumed. 4151 4152 // gzip file access functions 4153 4154 // 4155 // This library supports reading and writing files in gzip (.gz) format with 4156 // an interface similar to that of stdio, using the functions that start with 4157 // "gz". The gzip format is different from the zlib format. gzip is a gzip 4158 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 4159 4160 type GzFile_s = struct { 4161 Fhave uint32 4162 Fnext uintptr 4163 Fpos Off64_t 4164 } /* zlib.h:1300:9 */ 4165 4166 // 4167 // Same as uncompress, except that sourceLen is a pointer, where the 4168 // length of the source is *sourceLen. On return, *sourceLen is the number of 4169 // source bytes consumed. 4170 4171 // gzip file access functions 4172 4173 // 4174 // This library supports reading and writing files in gzip (.gz) format with 4175 // an interface similar to that of stdio, using the functions that start with 4176 // "gz". The gzip format is different from the zlib format. gzip is a gzip 4177 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 4178 4179 type GzFile = uintptr /* zlib.h:1300:25 */ 4180 4181 // POSIX.1-2008 extended locale interface (see locale.h). 4182 // Definition of locale_t. 4183 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 4184 // This file is part of the GNU C Library. 4185 // 4186 // The GNU C Library is free software; you can redistribute it and/or 4187 // modify it under the terms of the GNU Lesser General Public 4188 // License as published by the Free Software Foundation; either 4189 // version 2.1 of the License, or (at your option) any later version. 4190 // 4191 // The GNU C Library is distributed in the hope that it will be useful, 4192 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4193 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4194 // Lesser General Public License for more details. 4195 // 4196 // You should have received a copy of the GNU Lesser General Public 4197 // License along with the GNU C Library; if not, see 4198 // <https://www.gnu.org/licenses/>. 4199 4200 // Definition of struct __locale_struct and __locale_t. 4201 // Copyright (C) 1997-2020 Free Software Foundation, Inc. 4202 // This file is part of the GNU C Library. 4203 // Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. 4204 // 4205 // The GNU C Library is free software; you can redistribute it and/or 4206 // modify it under the terms of the GNU Lesser General Public 4207 // License as published by the Free Software Foundation; either 4208 // version 2.1 of the License, or (at your option) any later version. 4209 // 4210 // The GNU C Library is distributed in the hope that it will be useful, 4211 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4212 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4213 // Lesser General Public License for more details. 4214 // 4215 // You should have received a copy of the GNU Lesser General Public 4216 // License along with the GNU C Library; if not, see 4217 // <https://www.gnu.org/licenses/>. 4218 4219 // POSIX.1-2008: the locale_t type, representing a locale context 4220 // (implementation-namespace version). This type should be treated 4221 // as opaque by applications; some details are exposed for the sake of 4222 // efficiency in e.g. ctype functions. 4223 4224 type X__locale_struct = struct { 4225 F__locales [13]uintptr 4226 F__ctype_b uintptr 4227 F__ctype_tolower uintptr 4228 F__ctype_toupper uintptr 4229 F__names [13]uintptr 4230 } /* __locale_t.h:28:1 */ 4231 4232 type X__locale_t = uintptr /* __locale_t.h:42:32 */ 4233 4234 type Locale_t = X__locale_t /* locale_t.h:24:20 */ 4235 4236 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 4237 // This file is part of the GNU C Library. 4238 // 4239 // The GNU C Library is free software; you can redistribute it and/or 4240 // modify it under the terms of the GNU Lesser General Public 4241 // License as published by the Free Software Foundation; either 4242 // version 2.1 of the License, or (at your option) any later version. 4243 // 4244 // The GNU C Library is distributed in the hope that it will be useful, 4245 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4246 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4247 // Lesser General Public License for more details. 4248 // 4249 // You should have received a copy of the GNU Lesser General Public 4250 // License along with the GNU C Library; if not, see 4251 // <https://www.gnu.org/licenses/>. 4252 4253 // ISO C99 Standard: 7.20 General utilities <stdlib.h> 4254 4255 // Handle feature test macros at the start of a header. 4256 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 4257 // This file is part of the GNU C Library. 4258 // 4259 // The GNU C Library is free software; you can redistribute it and/or 4260 // modify it under the terms of the GNU Lesser General Public 4261 // License as published by the Free Software Foundation; either 4262 // version 2.1 of the License, or (at your option) any later version. 4263 // 4264 // The GNU C Library is distributed in the hope that it will be useful, 4265 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4266 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4267 // Lesser General Public License for more details. 4268 // 4269 // You should have received a copy of the GNU Lesser General Public 4270 // License along with the GNU C Library; if not, see 4271 // <https://www.gnu.org/licenses/>. 4272 4273 // This header is internal to glibc and should not be included outside 4274 // of glibc headers. Headers including it must define 4275 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 4276 // cannot have multiple include guards because ISO C feature test 4277 // macros depend on the definition of the macro when an affected 4278 // header is included, not when the first system header is 4279 // included. 4280 4281 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 4282 // This file is part of the GNU C Library. 4283 // 4284 // The GNU C Library is free software; you can redistribute it and/or 4285 // modify it under the terms of the GNU Lesser General Public 4286 // License as published by the Free Software Foundation; either 4287 // version 2.1 of the License, or (at your option) any later version. 4288 // 4289 // The GNU C Library is distributed in the hope that it will be useful, 4290 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4291 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4292 // Lesser General Public License for more details. 4293 // 4294 // You should have received a copy of the GNU Lesser General Public 4295 // License along with the GNU C Library; if not, see 4296 // <https://www.gnu.org/licenses/>. 4297 4298 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 4299 // macro. 4300 4301 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 4302 // macro. Most but not all symbols enabled by that macro in TS 4303 // 18661-1 are enabled unconditionally in C2X; the symbols in Annex F 4304 // still require that macro in C2X. 4305 4306 // ISO/IEC TS 18661-4:2015 defines the 4307 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 4308 // functions, the symbols from this TS are enabled unconditionally in 4309 // C2X. 4310 4311 // ISO/IEC TS 18661-3:2015 defines the 4312 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 4313 4314 // Get size_t, wchar_t and NULL from <stddef.h>. 4315 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 4316 // 4317 // This file is part of GCC. 4318 // 4319 // GCC is free software; you can redistribute it and/or modify 4320 // it under the terms of the GNU General Public License as published by 4321 // the Free Software Foundation; either version 3, or (at your option) 4322 // any later version. 4323 // 4324 // GCC is distributed in the hope that it will be useful, 4325 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4326 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 4327 // GNU General Public License for more details. 4328 // 4329 // Under Section 7 of GPL version 3, you are granted additional 4330 // permissions described in the GCC Runtime Library Exception, version 4331 // 3.1, as published by the Free Software Foundation. 4332 // 4333 // You should have received a copy of the GNU General Public License and 4334 // a copy of the GCC Runtime Library Exception along with this program; 4335 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 4336 // <http://www.gnu.org/licenses/>. 4337 4338 // ISO C Standard: 7.17 Common definitions <stddef.h> 4339 4340 // Any one of these symbols __need_* means that GNU libc 4341 // wants us just to define one data type. So don't define 4342 // the symbols that indicate this file's entire job has been done. 4343 4344 // This avoids lossage on SunOS but only if stdtypes.h comes first. 4345 // There's no way to win with the other order! Sun lossage. 4346 4347 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 4348 // Just ignore it. 4349 4350 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 4351 // _TYPE_size_t which will typedef size_t. fixincludes patched the 4352 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 4353 // not defined, and so that defining this macro defines _GCC_SIZE_T. 4354 // If we find that the macros are still defined at this point, we must 4355 // invoke them so that the type is defined as expected. 4356 4357 // In case nobody has defined these types, but we aren't running under 4358 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 4359 // __WCHAR_TYPE__ have reasonable values. This can happen if the 4360 // parts of GCC is compiled by an older compiler, that actually 4361 // include gstddef.h, such as collect2. 4362 4363 // Signed type of difference of two pointers. 4364 4365 // Define this type if we are doing the whole job, 4366 // or if we want this type in particular. 4367 4368 // If this symbol has done its job, get rid of it. 4369 4370 // Unsigned type of `sizeof' something. 4371 4372 // Define this type if we are doing the whole job, 4373 // or if we want this type in particular. 4374 4375 // Wide character type. 4376 // Locale-writers should change this as necessary to 4377 // be big enough to hold unique values not between 0 and 127, 4378 // and not (wchar_t) -1, for each defined multibyte character. 4379 4380 // Define this type if we are doing the whole job, 4381 // or if we want this type in particular. 4382 4383 // A null pointer constant. 4384 4385 // Offset of member MEMBER in a struct of type TYPE. 4386 4387 // XPG requires a few symbols from <sys/wait.h> being defined. 4388 // Definitions of flag bits for `waitpid' et al. 4389 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 4390 // This file is part of the GNU C Library. 4391 // 4392 // The GNU C Library is free software; you can redistribute it and/or 4393 // modify it under the terms of the GNU Lesser General Public 4394 // License as published by the Free Software Foundation; either 4395 // version 2.1 of the License, or (at your option) any later version. 4396 // 4397 // The GNU C Library is distributed in the hope that it will be useful, 4398 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4399 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4400 // Lesser General Public License for more details. 4401 // 4402 // You should have received a copy of the GNU Lesser General Public 4403 // License along with the GNU C Library; if not, see 4404 // <https://www.gnu.org/licenses/>. 4405 4406 // Bits in the third argument to `waitpid'. 4407 4408 // Bits in the fourth argument to `waitid'. 4409 4410 // The following values are used by the `waitid' function. 4411 4412 // The Linux kernel defines these bare, rather than an enum, 4413 // which causes a conflict if the include order is reversed. 4414 4415 type Idtype_t = uint32 /* waitflags.h:57:3 */ 4416 // Definitions of status bits for `wait' et al. 4417 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 4418 // This file is part of the GNU C Library. 4419 // 4420 // The GNU C Library is free software; you can redistribute it and/or 4421 // modify it under the terms of the GNU Lesser General Public 4422 // License as published by the Free Software Foundation; either 4423 // version 2.1 of the License, or (at your option) any later version. 4424 // 4425 // The GNU C Library is distributed in the hope that it will be useful, 4426 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4427 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4428 // Lesser General Public License for more details. 4429 // 4430 // You should have received a copy of the GNU Lesser General Public 4431 // License along with the GNU C Library; if not, see 4432 // <https://www.gnu.org/licenses/>. 4433 4434 // Everything extant so far uses these same bits. 4435 4436 // If WIFEXITED(STATUS), the low-order 8 bits of the status. 4437 4438 // If WIFSIGNALED(STATUS), the terminating signal. 4439 4440 // If WIFSTOPPED(STATUS), the signal that stopped the child. 4441 4442 // Nonzero if STATUS indicates normal termination. 4443 4444 // Nonzero if STATUS indicates termination by a signal. 4445 4446 // Nonzero if STATUS indicates the child is stopped. 4447 4448 // Nonzero if STATUS indicates the child continued after a stop. We only 4449 // define this if <bits/waitflags.h> provides the WCONTINUED flag bit. 4450 4451 // Nonzero if STATUS indicates the child dumped core. 4452 4453 // Macros for constructing status values. 4454 4455 // Define the macros <sys/wait.h> also would define this way. 4456 4457 // _FloatN API tests for enablement. 4458 // Macros to control TS 18661-3 glibc features. 4459 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 4460 // This file is part of the GNU C Library. 4461 // 4462 // The GNU C Library is free software; you can redistribute it and/or 4463 // modify it under the terms of the GNU Lesser General Public 4464 // License as published by the Free Software Foundation; either 4465 // version 2.1 of the License, or (at your option) any later version. 4466 // 4467 // The GNU C Library is distributed in the hope that it will be useful, 4468 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4469 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4470 // Lesser General Public License for more details. 4471 // 4472 // You should have received a copy of the GNU Lesser General Public 4473 // License along with the GNU C Library; if not, see 4474 // <https://www.gnu.org/licenses/>. 4475 4476 // Defined to 1 if the current compiler invocation provides a 4477 // floating-point type with the IEEE 754 binary128 format, and this glibc 4478 // includes corresponding *f128 interfaces for it. 4479 4480 // Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct 4481 // from the default float, double and long double types in this glibc. 4482 4483 // Defined to 1 if the current compiler invocation provides a 4484 // floating-point type with the right format for _Float64x, and this 4485 // glibc includes corresponding *f64x interfaces for it. 4486 4487 // Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format 4488 // of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has 4489 // the format of _Float128, which must be different from that of long 4490 // double. 4491 4492 // Defined to concatenate the literal suffix to be used with _Float128 4493 // types, if __HAVE_FLOAT128 is 1. 4494 // E.g.: #define __f128(x) x##f128. 4495 4496 // Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. 4497 // E.g.: #define __CFLOAT128 _Complex _Float128. 4498 4499 // Macros to control TS 18661-3 glibc features where the same 4500 // definitions are appropriate for all platforms. 4501 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 4502 // This file is part of the GNU C Library. 4503 // 4504 // The GNU C Library is free software; you can redistribute it and/or 4505 // modify it under the terms of the GNU Lesser General Public 4506 // License as published by the Free Software Foundation; either 4507 // version 2.1 of the License, or (at your option) any later version. 4508 // 4509 // The GNU C Library is distributed in the hope that it will be useful, 4510 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4511 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4512 // Lesser General Public License for more details. 4513 // 4514 // You should have received a copy of the GNU Lesser General Public 4515 // License along with the GNU C Library; if not, see 4516 // <https://www.gnu.org/licenses/>. 4517 4518 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 4519 // This file is part of the GNU C Library. 4520 // 4521 // The GNU C Library is free software; you can redistribute it and/or 4522 // modify it under the terms of the GNU Lesser General Public 4523 // License as published by the Free Software Foundation; either 4524 // version 2.1 of the License, or (at your option) any later version. 4525 // 4526 // The GNU C Library is distributed in the hope that it will be useful, 4527 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4528 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4529 // Lesser General Public License for more details. 4530 // 4531 // You should have received a copy of the GNU Lesser General Public 4532 // License along with the GNU C Library; if not, see 4533 // <https://www.gnu.org/licenses/>. 4534 4535 // Properties of long double type. 4536 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 4537 // This file is part of the GNU C Library. 4538 // 4539 // The GNU C Library is free software; you can redistribute it and/or 4540 // modify it under the terms of the GNU Lesser General Public 4541 // License published by the Free Software Foundation; either 4542 // version 2.1 of the License, or (at your option) any later version. 4543 // 4544 // The GNU C Library is distributed in the hope that it will be useful, 4545 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4546 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4547 // Lesser General Public License for more details. 4548 // 4549 // You should have received a copy of the GNU Lesser General Public 4550 // License along with the GNU C Library; if not, see 4551 // <https://www.gnu.org/licenses/>. 4552 4553 // This header is included by <sys/cdefs.h>. 4554 // 4555 // If long double is ABI-compatible with double, it should define 4556 // __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave 4557 // __NO_LONG_DOUBLE_MATH undefined. 4558 // 4559 // If this build of the GNU C Library supports both long double 4560 // ABI-compatible with double and some other long double format not 4561 // ABI-compatible with double, it should define 4562 // __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave 4563 // __LONG_DOUBLE_MATH_OPTIONAL undefined. 4564 // 4565 // If __NO_LONG_DOUBLE_MATH is already defined, this header must not 4566 // define anything; this is needed to work with the definition of 4567 // __NO_LONG_DOUBLE_MATH in nldbl-compat.h. 4568 4569 // In the default version of this header, long double is 4570 // ABI-compatible with double. 4571 4572 // This header should be included at the bottom of each bits/floatn.h. 4573 // It defines the following macros for each _FloatN and _FloatNx type, 4574 // where the same definitions, or definitions based only on the macros 4575 // in bits/floatn.h, are appropriate for all glibc configurations. 4576 4577 // Defined to 1 if the current compiler invocation provides a 4578 // floating-point type with the right format for this type, and this 4579 // glibc includes corresponding *fN or *fNx interfaces for it. 4580 4581 // Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the 4582 // type is the first with its format in the sequence of (the default 4583 // choices for) float, double, long double, _Float16, _Float32, 4584 // _Float64, _Float128, _Float32x, _Float64x, _Float128x for this 4585 // glibc; that is, if functions present once per floating-point format 4586 // rather than once per type are present for this type. 4587 // 4588 // All configurations supported by glibc have _Float32 the same format 4589 // as float, _Float64 and _Float32x the same format as double, the 4590 // _Float64x the same format as either long double or _Float128. No 4591 // configurations support _Float128x or, as of GCC 7, have compiler 4592 // support for a type meeting the requirements for _Float128x. 4593 4594 // Defined to 1 if the corresponding _FloatN type is not binary compatible 4595 // with the corresponding ISO C type in the current compilation unit as 4596 // opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built 4597 // in glibc. 4598 4599 // Defined to 1 if any _FloatN or _FloatNx types that are not 4600 // ABI-distinct are however distinct types at the C language level (so 4601 // for the purposes of __builtin_types_compatible_p and _Generic). 4602 4603 // Defined to concatenate the literal suffix to be used with _FloatN 4604 // or _FloatNx types, if __HAVE_<type> is 1. The corresponding 4605 // literal suffixes exist since GCC 7, for C only. 4606 4607 // Defined to a complex type if __HAVE_<type> is 1. 4608 4609 // The remaining of this file provides support for older compilers. 4610 4611 // If double, long double and _Float64 all have the same set of 4612 // values, TS 18661-3 requires the usual arithmetic conversions on 4613 // long double and _Float64 to produce _Float64. For this to be the 4614 // case when building with a compiler without a distinct _Float64 4615 // type, _Float64 must be a typedef for long double, not for 4616 // double. 4617 4618 // Returned by `div'. 4619 type Div_t = struct { 4620 Fquot int32 4621 Frem int32 4622 } /* stdlib.h:62:5 */ 4623 4624 // Returned by `ldiv'. 4625 type Ldiv_t = struct { 4626 Fquot int32 4627 Frem int32 4628 } /* stdlib.h:70:5 */ 4629 4630 // Returned by `lldiv'. 4631 type Lldiv_t = struct { 4632 Fquot int64 4633 Frem int64 4634 } /* stdlib.h:80:5 */ 4635 4636 // Reentrant versions of the `random' family of functions. 4637 // These functions all use the following data structure to contain 4638 // state, rather than global state variables. 4639 4640 type Random_data = struct { 4641 Ffptr uintptr 4642 Frptr uintptr 4643 Fstate uintptr 4644 Frand_type int32 4645 Frand_deg int32 4646 Frand_sep int32 4647 Fend_ptr uintptr 4648 } /* stdlib.h:423:1 */ 4649 4650 // Data structure for communication with thread safe versions. This 4651 // type is to be regarded as opaque. It's only exported because users 4652 // have to allocate objects of this type. 4653 type Drand48_data = struct { 4654 F__x [3]uint16 4655 F__old_x [3]uint16 4656 F__c uint16 4657 F__init uint16 4658 F__a uint64 4659 } /* stdlib.h:490:1 */ 4660 4661 // Shorthand for type of comparison functions. 4662 type X__compar_fn_t = uintptr /* stdlib.h:808:13 */ 4663 4664 // Floating-point inline functions for stdlib.h. 4665 // Copyright (C) 2012-2020 Free Software Foundation, Inc. 4666 // This file is part of the GNU C Library. 4667 // 4668 // The GNU C Library is free software; you can redistribute it and/or 4669 // modify it under the terms of the GNU Lesser General Public 4670 // License as published by the Free Software Foundation; either 4671 // version 2.1 of the License, or (at your option) any later version. 4672 // 4673 // The GNU C Library is distributed in the hope that it will be useful, 4674 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4675 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4676 // Lesser General Public License for more details. 4677 // 4678 // You should have received a copy of the GNU Lesser General Public 4679 // License along with the GNU C Library; if not, see 4680 // <https://www.gnu.org/licenses/>. 4681 4682 // Define some macros helping to catch buffer overflows. 4683 4684 // since "static" is used to mean two completely different things in C, we 4685 // define "local" for the non-static meaning of "static", for readability 4686 // (compile with -Dlocal if your debugger can't find static symbols) 4687 4688 type Uch = uint8 /* zutil.h:43:24 */ 4689 type Uchf = Uch /* zutil.h:44:17 */ 4690 type Ush = uint16 /* zutil.h:45:24 */ 4691 type Ushf = Ush /* zutil.h:46:17 */ 4692 type Ulg = uint32 /* zutil.h:47:24 */ 4693 4694 // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 4695 4696 // use NO_DIVIDE if your processor does not do division in hardware -- 4697 // try it both ways to see which is faster 4698 4699 // ========================================================================= 4700 func Xadler32_z(tls *libc.TLS, adler ULong, buf uintptr, len Z_size_t) ULong { /* adler32.c:63:15: */ 4701 var sum2 uint32 4702 var n uint32 4703 4704 // split Adler-32 into component sums 4705 sum2 = ((adler >> 16) & ULong(0xffff)) 4706 adler = adler & (ULong(0xffff)) 4707 4708 // in case user likes doing a byte at a time, keep it fast 4709 if len == Z_size_t(1) { 4710 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(buf)))) 4711 if adler >= BASE { 4712 adler = adler - (BASE) 4713 } 4714 sum2 = sum2 + (adler) 4715 if sum2 >= BASE { 4716 sum2 = sum2 - (BASE) 4717 } 4718 return (adler | (sum2 << 16)) 4719 } 4720 4721 // initial Adler-32 value (deferred check for len == 1 speed) 4722 if buf == uintptr(Z_NULL) { 4723 return ULong(1) 4724 } 4725 4726 // in case short lengths are provided, keep it somewhat fast 4727 if len < Z_size_t(16) { 4728 for libc.PostDecUint32(&len, 1) != 0 { 4729 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))) 4730 sum2 = sum2 + (adler) 4731 } 4732 if adler >= BASE { 4733 adler = adler - (BASE) 4734 } 4735 sum2 = sum2 % (BASE) // only added so many BASE's 4736 return (adler | (sum2 << 16)) 4737 } 4738 4739 // do length NMAX blocks -- requires just one modulo operation 4740 for len >= Z_size_t(NMAX) { 4741 len = len - (Z_size_t(NMAX)) 4742 n = (uint32(NMAX / 16)) // NMAX is divisible by 16 4743 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 4744 { 4745 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf))))) 4746 sum2 = sum2 + (adler) 4747 } 4748 { 4749 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1)))) 4750 sum2 = sum2 + (adler) 4751 } 4752 4753 { 4754 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2)))) 4755 sum2 = sum2 + (adler) 4756 } 4757 { 4758 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3)))) 4759 sum2 = sum2 + (adler) 4760 } 4761 4762 { 4763 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4)))) 4764 sum2 = sum2 + (adler) 4765 } 4766 { 4767 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5)))) 4768 sum2 = sum2 + (adler) 4769 } 4770 4771 { 4772 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6)))) 4773 sum2 = sum2 + (adler) 4774 } 4775 { 4776 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7)))) 4777 sum2 = sum2 + (adler) 4778 } 4779 4780 { 4781 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8)))) 4782 sum2 = sum2 + (adler) 4783 } 4784 { 4785 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9)))) 4786 sum2 = sum2 + (adler) 4787 } 4788 4789 { 4790 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10)))) 4791 sum2 = sum2 + (adler) 4792 } 4793 { 4794 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11)))) 4795 sum2 = sum2 + (adler) 4796 } 4797 4798 { 4799 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12)))) 4800 sum2 = sum2 + (adler) 4801 } 4802 { 4803 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13)))) 4804 sum2 = sum2 + (adler) 4805 } 4806 4807 { 4808 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14)))) 4809 sum2 = sum2 + (adler) 4810 } 4811 { 4812 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15)))) 4813 sum2 = sum2 + (adler) 4814 } 4815 4816 // 16 sums unrolled 4817 buf += uintptr(16) 4818 } 4819 adler = adler % (BASE) 4820 sum2 = sum2 % (BASE) 4821 } 4822 4823 // do remaining bytes (less than NMAX, still just one modulo) 4824 if len != 0 { // avoid modulos if none remaining 4825 for len >= Z_size_t(16) { 4826 len = len - (Z_size_t(16)) 4827 { 4828 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf))))) 4829 sum2 = sum2 + (adler) 4830 } 4831 { 4832 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1)))) 4833 sum2 = sum2 + (adler) 4834 } 4835 4836 { 4837 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2)))) 4838 sum2 = sum2 + (adler) 4839 } 4840 { 4841 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3)))) 4842 sum2 = sum2 + (adler) 4843 } 4844 4845 { 4846 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4)))) 4847 sum2 = sum2 + (adler) 4848 } 4849 { 4850 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5)))) 4851 sum2 = sum2 + (adler) 4852 } 4853 4854 { 4855 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6)))) 4856 sum2 = sum2 + (adler) 4857 } 4858 { 4859 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7)))) 4860 sum2 = sum2 + (adler) 4861 } 4862 4863 { 4864 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8)))) 4865 sum2 = sum2 + (adler) 4866 } 4867 { 4868 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9)))) 4869 sum2 = sum2 + (adler) 4870 } 4871 4872 { 4873 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10)))) 4874 sum2 = sum2 + (adler) 4875 } 4876 { 4877 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11)))) 4878 sum2 = sum2 + (adler) 4879 } 4880 4881 { 4882 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12)))) 4883 sum2 = sum2 + (adler) 4884 } 4885 { 4886 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13)))) 4887 sum2 = sum2 + (adler) 4888 } 4889 4890 { 4891 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14)))) 4892 sum2 = sum2 + (adler) 4893 } 4894 { 4895 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15)))) 4896 sum2 = sum2 + (adler) 4897 } 4898 4899 buf += uintptr(16) 4900 } 4901 for libc.PostDecUint32(&len, 1) != 0 { 4902 adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))) 4903 sum2 = sum2 + (adler) 4904 } 4905 adler = adler % (BASE) 4906 sum2 = sum2 % (BASE) 4907 } 4908 4909 // return recombined sums 4910 return (adler | (sum2 << 16)) 4911 } 4912 4913 // ========================================================================= 4914 func Xadler32(tls *libc.TLS, adler ULong, buf uintptr, len UInt) ULong { /* adler32.c:134:15: */ 4915 return Xadler32_z(tls, adler, buf, len) 4916 } 4917 4918 // ========================================================================= 4919 func adler32_combine_(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:143:13: */ 4920 var sum1 uint32 4921 var sum2 uint32 4922 var rem uint32 4923 4924 // for negative len, return invalid adler32 as a clue for debugging 4925 if len2 < int64(0) { 4926 return 0xffffffff 4927 } 4928 4929 // the derivation of this formula is left as an exercise for the reader 4930 len2 = len2 % (int64(BASE)) // assumes len2 >= 0 4931 rem = uint32(len2) 4932 sum1 = (adler1 & ULong(0xffff)) 4933 sum2 = (uint32(rem) * sum1) 4934 sum2 = sum2 % (BASE) 4935 sum1 = sum1 + (((adler2 & ULong(0xffff)) + BASE) - ULong(1)) 4936 sum2 = sum2 + (((((adler1 >> 16) & ULong(0xffff)) + ((adler2 >> 16) & ULong(0xffff))) + BASE) - ULong(rem)) 4937 if sum1 >= BASE { 4938 sum1 = sum1 - (BASE) 4939 } 4940 if sum1 >= BASE { 4941 sum1 = sum1 - (BASE) 4942 } 4943 if sum2 >= (uint32(BASE) << 1) { 4944 sum2 = sum2 - (uint32(BASE) << 1) 4945 } 4946 if sum2 >= BASE { 4947 sum2 = sum2 - (BASE) 4948 } 4949 return (sum1 | (sum2 << 16)) 4950 } 4951 4952 // ========================================================================= 4953 func Xadler32_combine(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:172:15: */ 4954 return adler32_combine_(tls, adler1, adler2, len2) 4955 } 4956 4957 func Xadler32_combine64(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:180:15: */ 4958 return adler32_combine_(tls, adler1, adler2, len2) 4959 } 4960 4961 // =========================================================================== 4962 // Compresses the source buffer into the destination buffer. The level 4963 // parameter has the same meaning as in deflateInit. sourceLen is the byte 4964 // length of the source buffer. Upon entry, destLen is the total size of the 4965 // destination buffer, which must be at least 0.1% larger than sourceLen plus 4966 // 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. 4967 // 4968 // compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough 4969 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, 4970 // Z_STREAM_ERROR if the level parameter is invalid. 4971 func Xcompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong, level int32) int32 { /* compress.c:22:13: */ 4972 bp := tls.Alloc(56) 4973 defer tls.Free(56) 4974 4975 // var stream Z_stream at bp, 56 4976 4977 var err int32 4978 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 4979 var left ULong 4980 4981 left = *(*ULongf)(unsafe.Pointer(destLen)) 4982 *(*ULongf)(unsafe.Pointer(destLen)) = ULongf(0) 4983 4984 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzalloc = uintptr(0) 4985 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzfree = uintptr(0) 4986 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fopaque = uintptr(0) 4987 4988 err = XdeflateInit_(tls, bp /* &stream */, level, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) 4989 if err != Z_OK { 4990 return err 4991 } 4992 4993 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_out = dest 4994 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = UInt(0) 4995 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_in = source 4996 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = UInt(0) 4997 4998 for ok := true; ok; ok = (err == Z_OK) { 4999 if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out == UInt(0) { 5000 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = func() uint32 { 5001 if left > ULong(max) { 5002 return max 5003 } 5004 return UInt(left) 5005 }() 5006 left = left - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out)) 5007 } 5008 if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in == UInt(0) { 5009 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = func() uint32 { 5010 if sourceLen > ULong(max) { 5011 return max 5012 } 5013 return UInt(sourceLen) 5014 }() 5015 sourceLen = sourceLen - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in)) 5016 } 5017 err = Xdeflate(tls, bp /* &stream */, func() int32 { 5018 if sourceLen != 0 { 5019 return Z_NO_FLUSH 5020 } 5021 return Z_FINISH 5022 }()) 5023 } 5024 5025 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Ftotal_out 5026 XdeflateEnd(tls, bp /* &stream */) 5027 if err == Z_STREAM_END { 5028 return Z_OK 5029 } 5030 return err 5031 } 5032 5033 // =========================================================================== 5034 func Xcompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* compress.c:68:13: */ 5035 return Xcompress2(tls, dest, destLen, source, sourceLen, -1) 5036 } 5037 5038 // =========================================================================== 5039 // If the default memLevel or windowBits for deflateInit() is changed, then 5040 // this function needs to be updated. 5041 // 5042 func XcompressBound(tls *libc.TLS, sourceLen ULong) ULong { /* compress.c:81:15: */ 5043 return ((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + ULong(13)) 5044 } 5045 5046 // ======================================================================== 5047 // Tables of CRC-32s of all single-byte values, made by make_crc_table(). 5048 // crc32.h -- tables for rapid CRC calculation 5049 // Generated automatically by crc32.c 5050 5051 var crc_table = [8][256]Z_crc_t{ 5052 { 5053 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 5054 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 5055 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 5056 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 5057 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 5058 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 5059 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 5060 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 5061 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 5062 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 5063 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 5064 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 5065 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 5066 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 5067 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 5068 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 5069 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 5070 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 5071 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 5072 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 5073 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 5074 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 5075 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 5076 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 5077 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 5078 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 5079 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 5080 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 5081 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 5082 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 5083 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 5084 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 5085 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 5086 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 5087 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 5088 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 5089 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 5090 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 5091 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 5092 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 5093 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 5094 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 5095 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 5096 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 5097 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 5098 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 5099 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 5100 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 5101 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 5102 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 5103 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 5104 0x2d02ef8d, 5105 }, 5106 { 5107 0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, 5108 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, 5109 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, 5110 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, 5111 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, 5112 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, 5113 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, 5114 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, 5115 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae, 5116 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2, 5117 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, 5118 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, 5119 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, 5120 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40, 5121 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, 5122 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, 5123 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, 5124 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, 5125 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, 5126 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, 5127 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af, 5128 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea, 5129 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, 5130 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, 5131 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, 5132 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a, 5133 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, 5134 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, 5135 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, 5136 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, 5137 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, 5138 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, 5139 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed, 5140 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0, 5141 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, 5142 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, 5143 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, 5144 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5, 5145 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, 5146 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, 5147 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, 5148 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, 5149 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, 5150 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, 5151 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec, 5152 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9, 5153 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, 5154 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, 5155 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, 5156 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, 5157 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, 5158 0x9324fd72, 5159 }, 5160 { 5161 0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, 5162 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f, 5163 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a, 5164 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, 5165 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, 5166 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, 5167 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, 5168 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, 5169 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84, 5170 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7, 5171 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, 5172 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, 5173 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, 5174 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b, 5175 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, 5176 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, 5177 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, 5178 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, 5179 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, 5180 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, 5181 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98, 5182 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873, 5183 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, 5184 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, 5185 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, 5186 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, 5187 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732, 5188 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, 5189 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, 5190 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, 5191 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, 5192 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, 5193 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc, 5194 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef, 5195 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, 5196 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, 5197 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, 5198 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43, 5199 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e, 5200 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, 5201 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, 5202 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, 5203 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, 5204 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, 5205 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0, 5206 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b, 5207 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, 5208 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, 5209 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, 5210 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f, 5211 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, 5212 0xbe9834ed, 5213 }, 5214 { 5215 0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, 5216 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, 5217 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, 5218 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, 5219 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, 5220 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, 5221 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, 5222 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, 5223 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086, 5224 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4, 5225 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, 5226 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, 5227 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, 5228 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, 5229 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, 5230 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, 5231 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, 5232 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, 5233 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, 5234 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, 5235 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec, 5236 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde, 5237 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, 5238 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, 5239 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, 5240 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e, 5241 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7, 5242 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, 5243 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, 5244 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, 5245 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, 5246 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, 5247 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52, 5248 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f, 5249 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, 5250 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, 5251 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, 5252 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647, 5253 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d, 5254 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, 5255 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, 5256 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, 5257 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, 5258 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, 5259 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138, 5260 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a, 5261 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, 5262 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, 5263 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, 5264 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, 5265 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194, 5266 0xde0506f1, 5267 }, 5268 { 5269 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07, 5270 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79, 5271 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7, 5272 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84, 5273 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13, 5274 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663, 5275 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5, 5276 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5, 5277 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832, 5278 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51, 5279 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf, 5280 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1, 5281 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76, 5282 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606, 5283 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996, 5284 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6, 5285 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c, 5286 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712, 5287 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c, 5288 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4, 5289 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943, 5290 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333, 5291 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe, 5292 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce, 5293 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359, 5294 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a, 5295 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04, 5296 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a, 5297 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0, 5298 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580, 5299 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10, 5300 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060, 5301 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1, 5302 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf, 5303 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31, 5304 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852, 5305 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5, 5306 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5, 5307 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75, 5308 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005, 5309 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292, 5310 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1, 5311 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f, 5312 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111, 5313 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0, 5314 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0, 5315 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40, 5316 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530, 5317 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba, 5318 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4, 5319 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a, 5320 0x8def022d, 5321 }, 5322 { 5323 0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64, 5324 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1, 5325 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e, 5326 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61, 5327 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82, 5328 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff, 5329 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7, 5330 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da, 5331 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139, 5332 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6, 5333 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89, 5334 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c, 5335 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0, 5336 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d, 5337 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a, 5338 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177, 5339 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de, 5340 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b, 5341 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824, 5342 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e, 5343 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad, 5344 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0, 5345 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d, 5346 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60, 5347 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83, 5348 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822, 5349 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d, 5350 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8, 5351 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171, 5352 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c, 5353 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b, 5354 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6, 5355 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca, 5356 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f, 5357 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430, 5358 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf, 5359 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c, 5360 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51, 5361 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9, 5362 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84, 5363 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67, 5364 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398, 5365 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7, 5366 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62, 5367 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e, 5368 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923, 5369 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4, 5370 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9, 5371 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070, 5372 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5, 5373 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a, 5374 0x72fd2493, 5375 }, 5376 { 5377 0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907, 5378 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f, 5379 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a, 5380 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e, 5381 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512, 5382 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14, 5383 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b, 5384 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d, 5385 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731, 5386 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925, 5387 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620, 5388 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28, 5389 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70, 5390 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176, 5391 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d, 5392 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b, 5393 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b, 5394 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63, 5395 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266, 5396 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a, 5397 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446, 5398 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40, 5399 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557, 5400 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51, 5401 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d, 5402 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0, 5403 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5, 5404 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed, 5405 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd, 5406 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb, 5407 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0, 5408 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6, 5409 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de, 5410 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6, 5411 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3, 5412 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7, 5413 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb, 5414 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd, 5415 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92, 5416 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094, 5417 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598, 5418 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c, 5419 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489, 5420 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81, 5421 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9, 5422 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af, 5423 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4, 5424 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2, 5425 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2, 5426 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba, 5427 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf, 5428 0xed3498be, 5429 }, 5430 { 5431 0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f, 5432 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d, 5433 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0, 5434 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42, 5435 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95, 5436 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2, 5437 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a, 5438 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d, 5439 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea, 5440 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748, 5441 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5, 5442 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27, 5443 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b, 5444 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac, 5445 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4, 5446 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3, 5447 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44, 5448 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6, 5449 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b, 5450 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329, 5451 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe, 5452 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9, 5453 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1, 5454 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6, 5455 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921, 5456 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555, 5457 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8, 5458 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a, 5459 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd, 5460 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a, 5461 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2, 5462 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5, 5463 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2, 5464 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330, 5465 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad, 5466 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f, 5467 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8, 5468 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef, 5469 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc, 5470 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb, 5471 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c, 5472 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e, 5473 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03, 5474 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1, 5475 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6, 5476 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1, 5477 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9, 5478 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e, 5479 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409, 5480 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb, 5481 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966, 5482 0xf10605de, 5483 }, 5484 } /* crc32.h:5:25 */ 5485 5486 // ========================================================================= 5487 // This function can be used by asm versions of crc32() 5488 func Xget_crc_table(tls *libc.TLS) uintptr { /* crc32.c:188:19: */ 5489 return uintptr(uintptr(unsafe.Pointer(&crc_table))) 5490 } 5491 5492 // ========================================================================= 5493 5494 // ========================================================================= 5495 func Xcrc32_z(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:202:23: */ 5496 bp := tls.Alloc(4) 5497 defer tls.Free(4) 5498 5499 if buf == uintptr(Z_NULL) { 5500 return 0 5501 } 5502 5503 if uint32(unsafe.Sizeof(uintptr(0))) == uint32(unsafe.Sizeof(Ptrdiff_t(0))) { 5504 // var endian Z_crc_t at bp, 4 5505 5506 *(*Z_crc_t)(unsafe.Pointer(bp /* endian */)) = Z_crc_t(1) 5507 if *(*uint8)(unsafe.Pointer(bp /* &endian */)) != 0 { 5508 return crc32_little(tls, crc, buf, len) 5509 } else { 5510 return crc32_big(tls, crc, buf, len) 5511 } 5512 } 5513 crc = (crc ^ 0xffffffff) 5514 for len >= Z_size_t(8) { 5515 crc = (uint32(*(*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)) 5516 crc = (uint32(*(*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)) 5517 crc = (uint32(*(*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)) 5518 crc = (uint32(*(*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)) 5519 crc = (uint32(*(*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)) 5520 crc = (uint32(*(*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)) 5521 crc = (uint32(*(*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)) 5522 crc = (uint32(*(*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)) 5523 len = len - (Z_size_t(8)) 5524 } 5525 if len != 0 { 5526 for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 { 5527 crc = (uint32(*(*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)) 5528 } 5529 } 5530 return (crc ^ 0xffffffff) 5531 } 5532 5533 // ========================================================================= 5534 func Xcrc32(tls *libc.TLS, crc uint32, buf uintptr, len UInt) uint32 { /* crc32.c:237:23: */ 5535 return Xcrc32_z(tls, crc, buf, len) 5536 } 5537 5538 // 5539 // This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit 5540 // integer pointer type. This violates the strict aliasing rule, where a 5541 // compiler can assume, for optimization purposes, that two pointers to 5542 // fundamentally different types won't ever point to the same memory. This can 5543 // manifest as a problem only if one of the pointers is written to. This code 5544 // only reads from those pointers. So long as this code remains isolated in 5545 // this compilation unit, there won't be a problem. For this reason, this code 5546 // should not be copied and pasted into a compilation unit in which other code 5547 // writes to the buffer that is passed to these routines. 5548 // 5549 5550 // ========================================================================= 5551 5552 // ========================================================================= 5553 func crc32_little(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:266:21: */ 5554 var c Z_crc_t 5555 var buf4 uintptr 5556 5557 c = Z_crc_t(crc) 5558 c = ^c 5559 for (len != 0) && ((Ptrdiff_t(buf) & 3) != 0) { 5560 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)) 5561 len-- 5562 } 5563 5564 buf4 = buf 5565 for len >= Z_size_t(32) { 5566 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5567 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))) 5568 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5569 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))) 5570 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5571 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))) 5572 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5573 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))) 5574 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5575 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))) 5576 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5577 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))) 5578 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5579 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))) 5580 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5581 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))) 5582 len = len - (Z_size_t(32)) 5583 } 5584 for len >= Z_size_t(4) { 5585 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5586 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))) 5587 len = len - (Z_size_t(4)) 5588 } 5589 buf = buf4 5590 5591 if len != 0 { 5592 for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 { 5593 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)) 5594 } 5595 } 5596 c = ^c 5597 return uint32(c) 5598 } 5599 5600 // ========================================================================= 5601 5602 // ========================================================================= 5603 func crc32_big(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:306:21: */ 5604 var c Z_crc_t 5605 var buf4 uintptr 5606 5607 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)) 5608 c = ^c 5609 for (len != 0) && ((Ptrdiff_t(buf) & 3) != 0) { 5610 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)) 5611 len-- 5612 } 5613 5614 buf4 = buf 5615 for len >= Z_size_t(32) { 5616 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5617 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))) 5618 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5619 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))) 5620 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5621 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))) 5622 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5623 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))) 5624 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5625 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))) 5626 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5627 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))) 5628 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5629 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))) 5630 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5631 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))) 5632 len = len - (Z_size_t(32)) 5633 } 5634 for len >= Z_size_t(4) { 5635 c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4)))) 5636 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))) 5637 len = len - (Z_size_t(4)) 5638 } 5639 buf = buf4 5640 5641 if len != 0 { 5642 for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 { 5643 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)) 5644 } 5645 } 5646 c = ^c 5647 return (uint32((((((c) >> 24) & Z_crc_t(0xff)) + (((c) >> 8) & Z_crc_t(0xff00))) + (((c) & Z_crc_t(0xff00)) << 8)) + (((c) & Z_crc_t(0xff)) << 24))) 5648 } 5649 5650 // ========================================================================= 5651 func gf2_matrix_times(tls *libc.TLS, mat uintptr, vec uint32) uint32 { /* crc32.c:344:21: */ 5652 var sum uint32 5653 5654 sum = uint32(0) 5655 for vec != 0 { 5656 if (vec & uint32(1)) != 0 { 5657 sum = sum ^ (*(*uint32)(unsafe.Pointer(mat))) 5658 } 5659 vec >>= 1 5660 mat += 4 5661 } 5662 return sum 5663 } 5664 5665 // ========================================================================= 5666 func gf2_matrix_square(tls *libc.TLS, square uintptr, mat uintptr) { /* crc32.c:361:12: */ 5667 var n int32 5668 5669 for n = 0; n < GF2_DIM; n++ { 5670 *(*uint32)(unsafe.Pointer(square + uintptr(n)*4)) = gf2_matrix_times(tls, mat, *(*uint32)(unsafe.Pointer(mat + uintptr(n)*4))) 5671 } 5672 } 5673 5674 // ========================================================================= 5675 func crc32_combine_(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:372:13: */ 5676 bp := tls.Alloc(256) 5677 defer tls.Free(256) 5678 5679 var n int32 5680 var row uint32 5681 // var even [32]uint32 at bp+128, 128 5682 // even-power-of-two zeros operator 5683 // var odd [32]uint32 at bp, 128 5684 // odd-power-of-two zeros operator 5685 5686 // degenerate case (also disallow negative lengths) 5687 if len2 <= int64(0) { 5688 return crc1 5689 } 5690 5691 // put operator for one zero bit in odd 5692 *(*uint32)(unsafe.Pointer(bp /* &odd[0] */)) = 0xedb88320 // CRC-32 polynomial 5693 row = uint32(1) 5694 for n = 1; n < GF2_DIM; n++ { 5695 *(*uint32)(unsafe.Pointer(bp /* &odd[0] */ + uintptr(n)*4)) = row 5696 row <<= 1 5697 } 5698 5699 // put operator for two zero bits in even 5700 gf2_matrix_square(tls, bp+128 /* &even[0] */, bp /* &odd[0] */) 5701 5702 // put operator for four zero bits in odd 5703 gf2_matrix_square(tls, bp /* &odd[0] */, bp+128 /* &even[0] */) 5704 5705 // apply len2 zeros to crc1 (first square will put the operator for one 5706 // zero byte, eight zero bits, in even) 5707 for ok := true; ok; ok = (len2 != int64(0)) { 5708 // apply zeros operator for this bit of len2 5709 gf2_matrix_square(tls, bp+128 /* &even[0] */, bp /* &odd[0] */) 5710 if (len2 & int64(1)) != 0 { 5711 crc1 = gf2_matrix_times(tls, bp+128 /* &even[0] */, crc1) 5712 } 5713 len2 >>= 1 5714 5715 // if no more bits set, then done 5716 if len2 == int64(0) { 5717 break 5718 } 5719 5720 // another iteration of the loop with odd and even swapped 5721 gf2_matrix_square(tls, bp /* &odd[0] */, bp+128 /* &even[0] */) 5722 if (len2 & int64(1)) != 0 { 5723 crc1 = gf2_matrix_times(tls, bp /* &odd[0] */, crc1) 5724 } 5725 len2 >>= 1 5726 5727 // if no more bits set, then done 5728 } 5729 5730 // return combined crc 5731 crc1 = crc1 ^ (crc2) 5732 return crc1 5733 } 5734 5735 // ========================================================================= 5736 func Xcrc32_combine(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:428:15: */ 5737 return crc32_combine_(tls, crc1, crc2, len2) 5738 } 5739 5740 func Xcrc32_combine64(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:436:15: */ 5741 return crc32_combine_(tls, crc1, crc2, len2) 5742 } 5743 5744 // Reverse the bytes in a 32-bit value 5745 5746 // define NO_GZIP when compiling if you want to disable gzip header and 5747 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 5748 // the crc code when it is not needed. For shared libraries, gzip encoding 5749 // should be left enabled. 5750 5751 // =========================================================================== 5752 // Internal compression state. 5753 5754 // number of length codes, not counting the special END_BLOCK code 5755 5756 // number of literal bytes 0..255 5757 5758 // number of Literal or Length codes, including the END_BLOCK code 5759 5760 // number of distance codes 5761 5762 // number of codes used to transfer the bit lengths 5763 5764 // maximum heap size 5765 5766 // All codes must not exceed MAX_BITS bits 5767 5768 // size of bit buffer in bi_buf 5769 5770 // Stream status 5771 5772 // Data structure describing a single value and its code string. 5773 type Ct_data_s = struct { 5774 Ffc struct{ Ffreq Ush } 5775 Fdl struct{ Fdad Ush } 5776 } /* zlib.h:84:1 */ 5777 5778 // Reverse the bytes in a 32-bit value 5779 5780 // define NO_GZIP when compiling if you want to disable gzip header and 5781 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 5782 // the crc code when it is not needed. For shared libraries, gzip encoding 5783 // should be left enabled. 5784 5785 // =========================================================================== 5786 // Internal compression state. 5787 5788 // number of length codes, not counting the special END_BLOCK code 5789 5790 // number of literal bytes 0..255 5791 5792 // number of Literal or Length codes, including the END_BLOCK code 5793 5794 // number of distance codes 5795 5796 // number of codes used to transfer the bit lengths 5797 5798 // maximum heap size 5799 5800 // All codes must not exceed MAX_BITS bits 5801 5802 // size of bit buffer in bi_buf 5803 5804 // Stream status 5805 5806 // Data structure describing a single value and its code string. 5807 type Ct_data = Ct_data_s /* deflate.h:77:7 */ 5808 5809 type Static_tree_desc_s = struct { 5810 Fstatic_tree uintptr 5811 Fextra_bits uintptr 5812 Fextra_base int32 5813 Felems int32 5814 Fmax_length int32 5815 } /* deflate.h:84:9 */ 5816 5817 type Tree_desc_s = struct { 5818 Fdyn_tree uintptr 5819 Fmax_code int32 5820 Fstat_desc uintptr 5821 } /* zlib.h:84:1 */ 5822 5823 type Tree_desc = Tree_desc_s /* deflate.h:90:7 */ 5824 5825 type Pos = Ush /* deflate.h:92:13 */ 5826 type Posf = Pos /* deflate.h:93:17 */ 5827 type IPos = uint32 /* deflate.h:94:18 */ 5828 5829 // A Pos is an index in the character window. We use short instead of int to 5830 // save space in the various tables. IPos is used only for parameter passing. 5831 5832 type Deflate_state = Internal_state /* deflate.h:276:7 */ 5833 5834 var Xdeflate_copyright = *(*[69]uint8)(unsafe.Pointer(ts + 7 /* " deflate 1.2.11 ..." */)) /* deflate.c:54:12 */ 5835 // 5836 // If you use the zlib library in a product, an acknowledgment is welcome 5837 // in the documentation of your product. If for some reason you cannot 5838 // include such an acknowledgment, I would appreciate that you keep this 5839 // copyright string in the executable of your product. 5840 // 5841 5842 // =========================================================================== 5843 // Function prototypes. 5844 type Block_state = uint32 /* deflate.c:71:3 */ 5845 5846 type Compress_func = uintptr /* deflate.c:73:21 */ 5847 5848 // =========================================================================== 5849 // Local data 5850 5851 // Tail of hash chains 5852 5853 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 5854 5855 // Values for max_lazy_match, good_match and max_chain_length, depending on 5856 // the desired pack level (0..9). The values given below have been tuned to 5857 // exclude worst case performance for pathological files. Better values may be 5858 // found for specific files. 5859 type Config_s = struct { 5860 Fgood_length Ush 5861 Fmax_lazy Ush 5862 Fnice_length Ush 5863 Fmax_chain Ush 5864 Ffunc Compress_func 5865 } /* deflate.c:120:9 */ 5866 5867 // =========================================================================== 5868 // Local data 5869 5870 // Tail of hash chains 5871 5872 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 5873 5874 // Values for max_lazy_match, good_match and max_chain_length, depending on 5875 // the desired pack level (0..9). The values given below have been tuned to 5876 // exclude worst case performance for pathological files. Better values may be 5877 // found for specific files. 5878 type Config = Config_s /* deflate.c:126:3 */ 5879 5880 var configuration_table = [10]Config{ 5881 // good lazy nice chain 5882 /* 0 */ {Ffunc: 0}, // store only 5883 /* 1 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(8), Fmax_chain: Ush(4), Ffunc: 0}, // max speed, no lazy matches 5884 /* 2 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(5), Fnice_length: Ush(16), Fmax_chain: Ush(8), Ffunc: 0}, 5885 /* 3 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(6), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 5886 5887 /* 4 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(16), Fmax_chain: Ush(16), Ffunc: 0}, // lazy matches 5888 /* 5 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 5889 /* 6 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(128), Fmax_chain: Ush(128), Ffunc: 0}, 5890 /* 7 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(32), Fnice_length: Ush(128), Fmax_chain: Ush(256), Ffunc: 0}, 5891 /* 8 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(128), Fnice_length: Ush(258), Fmax_chain: Ush(1024), Ffunc: 0}, 5892 /* 9 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(258), Fnice_length: Ush(258), Fmax_chain: Ush(4096), Ffunc: 0}} /* deflate.c:134:20 */ 5893 5894 // max compression 5895 5896 // Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 5897 // For deflate_fast() (levels <= 3) good is ignored and lazy has a different 5898 // meaning. 5899 5900 // rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH 5901 5902 // =========================================================================== 5903 // Update a hash value with the given input byte 5904 // IN assertion: all calls to UPDATE_HASH are made with consecutive input 5905 // characters, so that a running hash key can be computed from the previous 5906 // key instead of complete recalculation each time. 5907 5908 // =========================================================================== 5909 // Insert string str in the dictionary and set match_head to the previous head 5910 // of the hash chain (the most recent string with same hash key). Return 5911 // the previous length of the hash chain. 5912 // If this file is compiled with -DFASTEST, the compression level is forced 5913 // to 1, and no hash chains are maintained. 5914 // IN assertion: all calls to INSERT_STRING are made with consecutive input 5915 // characters and the first MIN_MATCH bytes of str are valid (except for 5916 // the last MIN_MATCH-1 bytes of the input file). 5917 5918 // =========================================================================== 5919 // Initialize the hash table (avoiding 64K overflow for 16 bit systems). 5920 // prev[] will be initialized on the fly. 5921 5922 // =========================================================================== 5923 // Slide the hash table when sliding the window down (could be avoided with 32 5924 // bit values at the expense of memory usage). We slide even when level == 0 to 5925 // keep the hash table consistent if we switch back to level > 0 later. 5926 func slide_hash(tls *libc.TLS, s uintptr) { /* deflate.c:201:12: */ 5927 var n uint32 5928 var m uint32 5929 var p uintptr 5930 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5931 5932 n = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size 5933 p = ((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(n)*2) 5934 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 5935 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 5936 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 5937 if m >= wsize { 5938 return (uint16(m - wsize)) 5939 } 5940 return uint16(NIL) 5941 }() 5942 } 5943 n = wsize 5944 p = ((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr(n)*2) 5945 for ok1 := true; ok1; ok1 = libc.PreDecUint32(&n, 1) != 0 { 5946 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 5947 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 5948 if m >= wsize { 5949 return (uint16(m - wsize)) 5950 } 5951 return uint16(NIL) 5952 }() 5953 // If n is not on any hash chain, prev[n] is garbage but 5954 // its value will never be used. 5955 } 5956 } 5957 5958 // ========================================================================= 5959 func XdeflateInit_(tls *libc.TLS, strm Z_streamp, level int32, version uintptr, stream_size int32) int32 { /* deflate.c:228:13: */ 5960 return XdeflateInit2_(tls, strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, 5961 Z_DEFAULT_STRATEGY, version, stream_size) 5962 // To do: ignore strm->next_in if we use it as window 5963 } 5964 5965 // ========================================================================= 5966 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: */ 5967 var s uintptr 5968 var wrap int32 = 1 5969 var overlay uintptr 5970 // We overlay pending_buf and d_buf+l_buf. This works since the average 5971 // output size for (length,distance) codes is <= 24 bits. 5972 5973 if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(my_version[0]))) || (uint32(stream_size) != uint32(unsafe.Sizeof(Z_stream{}))) { 5974 return -6 5975 } 5976 if strm == uintptr(Z_NULL) { 5977 return -2 5978 } 5979 5980 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 5981 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 5982 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 5983 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 5984 }{Xzcalloc})) 5985 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 5986 } 5987 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 5988 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 5989 f func(*libc.TLS, Voidpf, Voidpf) 5990 }{Xzcfree})) 5991 } 5992 5993 if level == (-1) { 5994 level = 6 5995 } 5996 5997 if windowBits < 0 { // suppress zlib wrapper 5998 wrap = 0 5999 windowBits = -windowBits 6000 } else if windowBits > 15 { 6001 wrap = 2 // write gzip wrapper instead 6002 windowBits = windowBits - (16) 6003 } 6004 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)) { 6005 return -2 6006 } 6007 if windowBits == 8 { 6008 windowBits = 9 6009 } // until 256-byte window bug fixed 6010 s = (*struct { 6011 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6012 })(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{}))) 6013 if s == uintptr(Z_NULL) { 6014 return -4 6015 } 6016 (*Z_stream)(unsafe.Pointer(strm)).Fstate = s 6017 (*Deflate_state)(unsafe.Pointer(s)).Fstrm = strm 6018 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = INIT_STATE // to pass state test in deflateReset() 6019 6020 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 6021 (*Deflate_state)(unsafe.Pointer(s)).Fgzhead = Gz_headerp(Z_NULL) 6022 (*Deflate_state)(unsafe.Pointer(s)).Fw_bits = UInt(windowBits) 6023 (*Deflate_state)(unsafe.Pointer(s)).Fw_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fw_bits)) 6024 (*Deflate_state)(unsafe.Pointer(s)).Fw_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(1)) 6025 6026 (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits = (UInt(memLevel) + UInt(7)) 6027 (*Deflate_state)(unsafe.Pointer(s)).Fhash_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits)) 6028 (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) 6029 (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift = ((((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits + UInt(MIN_MATCH)) - UInt(1)) / UInt(MIN_MATCH)) 6030 6031 (*Deflate_state)(unsafe.Pointer(s)).Fwindow = (*struct { 6032 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6033 })(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(2) * uint32(unsafe.Sizeof(Byte(0))))) 6034 (*Deflate_state)(unsafe.Pointer(s)).Fprev = (*struct { 6035 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6036 })(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)))) 6037 (*Deflate_state)(unsafe.Pointer(s)).Fhead = (*struct { 6038 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6039 })(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)))) 6040 6041 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg(0) // nothing written to s->window yet 6042 6043 (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize = (UInt(int32(1) << (memLevel + 6))) // 16K elements by default 6044 6045 overlay = (*struct { 6046 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6047 })(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(unsafe.Sizeof(Ush(0))) + uint32(2))) 6048 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf = overlay 6049 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize) * (uint32(unsafe.Sizeof(Ush(0))) + uint32(2))) 6050 6051 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)) { 6052 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 6053 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-4))] 6054 XdeflateEnd(tls, strm) 6055 return -4 6056 } 6057 (*Deflate_state)(unsafe.Pointer(s)).Fd_buf = (overlay + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize/UInt(unsafe.Sizeof(Ush(0)))))*2) 6058 (*Deflate_state)(unsafe.Pointer(s)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((uint32(1) + uint32(unsafe.Sizeof(Ush(0)))) * (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize))) 6059 6060 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 6061 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 6062 (*Deflate_state)(unsafe.Pointer(s)).Fmethod = Byte(method) 6063 6064 return XdeflateReset(tls, strm) 6065 } 6066 6067 var my_version = *(*[7]uint8)(unsafe.Pointer(ts /* "1.2.11" */)) /* deflate.c:253:23 */ 6068 6069 // ========================================================================= 6070 // Check for a valid deflate stream state. Return 0 if ok, 1 if not. 6071 func deflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:353:11: */ 6072 var s uintptr 6073 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 6074 return 1 6075 } 6076 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6077 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)) { 6078 return 1 6079 } 6080 return 0 6081 } 6082 6083 // ========================================================================= 6084 func XdeflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* deflate.c:376:13: */ 6085 var s uintptr 6086 var str UInt 6087 var n UInt 6088 var wrap int32 6089 var avail uint32 6090 var next uintptr 6091 6092 if (deflateStateCheck(tls, strm) != 0) || (dictionary == uintptr(Z_NULL)) { 6093 return -2 6094 } 6095 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6096 wrap = (*Deflate_state)(unsafe.Pointer(s)).Fwrap 6097 if ((wrap == 2) || ((wrap == 1) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE))) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != 0) { 6098 return -2 6099 } 6100 6101 // when using zlib wrappers, compute Adler-32 for provided dictionary 6102 if wrap == 1 { 6103 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, dictionary, dictLength) 6104 } 6105 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = 0 // avoid computing Adler-32 in read_buf 6106 6107 // if dictionary would fill window, just replace the history 6108 if dictLength >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 6109 if wrap == 0 { // already empty otherwise 6110 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 6111 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0))))) 6112 6113 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 6114 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 6115 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6116 } 6117 dictionary += (uintptr(dictLength - (*Deflate_state)(unsafe.Pointer(s)).Fw_size)) // use the tail 6118 dictLength = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 6119 } 6120 6121 // insert dictionary into window and hash 6122 avail = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 6123 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 6124 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = dictLength 6125 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = dictionary 6126 fill_window(tls, s) 6127 for (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 6128 str = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 6129 n = ((*Deflate_state)(unsafe.Pointer(s)).Flookahead - (UInt(MIN_MATCH - 1))) 6130 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 6131 (*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) 6132 *(*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)) 6133 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 6134 str++ 6135 } 6136 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = str 6137 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = (UInt(MIN_MATCH - 1)) 6138 fill_window(tls, s) 6139 } 6140 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 6141 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6142 (*Deflate_state)(unsafe.Pointer(s)).Finsert = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 6143 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 6144 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+120 /* &.prev_length */, (UInt(MIN_MATCH - 1))) 6145 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 6146 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 6147 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = avail 6148 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 6149 return Z_OK 6150 } 6151 6152 // ========================================================================= 6153 func XdeflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* deflate.c:445:13: */ 6154 var s uintptr 6155 var len UInt 6156 6157 if deflateStateCheck(tls, strm) != 0 { 6158 return -2 6159 } 6160 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6161 len = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) 6162 if len > (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 6163 len = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 6164 } 6165 if (dictionary != uintptr(Z_NULL)) && (len != 0) { 6166 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)), len) 6167 } 6168 if dictLength != uintptr(Z_NULL) { 6169 *(*UInt)(unsafe.Pointer(dictLength)) = len 6170 } 6171 return Z_OK 6172 } 6173 6174 // ========================================================================= 6175 func XdeflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:467:13: */ 6176 var s uintptr 6177 6178 if deflateStateCheck(tls, strm) != 0 { 6179 return -2 6180 } 6181 6182 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint32(strm+20 /* &.total_out */, ULong(0)) 6183 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // use zfree if we ever allocate msg dynamically 6184 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = Z_UNKNOWN 6185 6186 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6187 (*Deflate_state)(unsafe.Pointer(s)).Fpending = Ulg(0) 6188 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 6189 6190 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap < 0 { 6191 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap // was made negative by deflate(..., Z_FINISH); 6192 } 6193 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = func() int32 { 6194 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6195 return GZIP_STATE 6196 } 6197 return func() int32 { 6198 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap != 0 { 6199 return INIT_STATE 6200 } 6201 return BUSY_STATE 6202 }() 6203 }() 6204 (*Z_stream)(unsafe.Pointer(strm)).Fadler = func() uint32 { 6205 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6206 return Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 6207 } 6208 return Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 6209 }() 6210 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = Z_NO_FLUSH 6211 6212 X_tr_init(tls, s) 6213 6214 return Z_OK 6215 } 6216 6217 // ========================================================================= 6218 func XdeflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:505:13: */ 6219 var ret int32 6220 6221 ret = XdeflateResetKeep(tls, strm) 6222 if ret == Z_OK { 6223 lm_init(tls, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 6224 } 6225 return ret 6226 } 6227 6228 // ========================================================================= 6229 func XdeflateSetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* deflate.c:517:13: */ 6230 if (deflateStateCheck(tls, strm) != 0) || ((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap != 2) { 6231 return -2 6232 } 6233 (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fgzhead = head 6234 return Z_OK 6235 } 6236 6237 // ========================================================================= 6238 func XdeflatePending(tls *libc.TLS, strm Z_streamp, pending uintptr, bits uintptr) int32 { /* deflate.c:528:13: */ 6239 if deflateStateCheck(tls, strm) != 0 { 6240 return -2 6241 } 6242 if pending != uintptr(Z_NULL) { 6243 *(*uint32)(unsafe.Pointer(pending)) = uint32((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending) 6244 } 6245 if bits != uintptr(Z_NULL) { 6246 *(*int32)(unsafe.Pointer(bits)) = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fbi_valid 6247 } 6248 return Z_OK 6249 } 6250 6251 // ========================================================================= 6252 func XdeflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* deflate.c:542:13: */ 6253 var s uintptr 6254 var put int32 6255 6256 if deflateStateCheck(tls, strm) != 0 { 6257 return -2 6258 } 6259 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6260 if ((*Deflate_state)(unsafe.Pointer(s)).Fd_buf) < ((*Deflate_state)(unsafe.Pointer(s)).Fpending_out + uintptr((int32((Buf_size + 7)) >> 3))) { 6261 return -5 6262 } 6263 for ok := true; ok; ok = bits != 0 { 6264 put = (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 6265 if put > bits { 6266 put = bits 6267 } 6268 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((value & ((int32(1) << put) - 1)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))))) 6269 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (put) 6270 X_tr_flush_bits(tls, s) 6271 value >>= put 6272 bits = bits - (put) 6273 } 6274 return Z_OK 6275 } 6276 6277 // ========================================================================= 6278 func XdeflateParams(tls *libc.TLS, strm Z_streamp, level int32, strategy int32) int32 { /* deflate.c:568:13: */ 6279 var s uintptr 6280 var func1 Compress_func 6281 6282 if deflateStateCheck(tls, strm) != 0 { 6283 return -2 6284 } 6285 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6286 6287 if level == (-1) { 6288 level = 6 6289 } 6290 if (((level < 0) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED) { 6291 return -2 6292 } 6293 func1 = configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc 6294 6295 if ((strategy != (*Deflate_state)(unsafe.Pointer(s)).Fstrategy) || (func1 != configuration_table[level].Ffunc)) && ((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water != 0) { 6296 // Flush the last buffer: 6297 var err int32 = Xdeflate(tls, strm, Z_BLOCK) 6298 if err == (-2) { 6299 return err 6300 } 6301 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6302 return -5 6303 } 6304 } 6305 if (*Deflate_state)(unsafe.Pointer(s)).Flevel != level { 6306 if ((*Deflate_state)(unsafe.Pointer(s)).Flevel == 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatches != UInt(0)) { 6307 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches == UInt(1) { 6308 slide_hash(tls, s) 6309 } else { 6310 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 6311 } 6312 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0))))) 6313 6314 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(0) 6315 } 6316 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 6317 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[level].Fmax_lazy) 6318 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[level].Fgood_length) 6319 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[level].Fnice_length) 6320 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[level].Fmax_chain) 6321 } 6322 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 6323 return Z_OK 6324 } 6325 6326 // ========================================================================= 6327 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: */ 6328 var s uintptr 6329 6330 if deflateStateCheck(tls, strm) != 0 { 6331 return -2 6332 } 6333 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6334 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(good_length) 6335 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(max_lazy) 6336 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = nice_length 6337 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(max_chain) 6338 return Z_OK 6339 } 6340 6341 // ========================================================================= 6342 // For the default windowBits of 15 and memLevel of 8, this function returns 6343 // a close to exact, as well as small, upper bound on the compressed size. 6344 // They are coded as constants here for a reason--if the #define's are 6345 // changed, then this function needs to be changed as well. The return 6346 // value for 15 and 8 only works for those exact settings. 6347 // 6348 // For any setting other than those defaults for windowBits and memLevel, 6349 // the value returned is a conservative worst case for the maximum expansion 6350 // resulting from using fixed blocks instead of stored blocks, which deflate 6351 // can emit on compressed data for some combinations of the parameters. 6352 // 6353 // This function could be more sophisticated to provide closer upper bounds for 6354 // every combination of windowBits and memLevel. But even the conservative 6355 // upper bound of about 14% expansion does not seem onerous for output buffer 6356 // allocation. 6357 func XdeflateBound(tls *libc.TLS, strm Z_streamp, sourceLen ULong) ULong { /* deflate.c:652:15: */ 6358 var s uintptr 6359 var complen ULong 6360 var wraplen ULong 6361 6362 // conservative upper bound for compressed data 6363 complen = (((sourceLen + ((sourceLen + ULong(7)) >> 3)) + ((sourceLen + ULong(63)) >> 6)) + ULong(5)) 6364 6365 // if can't get parameters, return conservative bound plus zlib wrapper 6366 if deflateStateCheck(tls, strm) != 0 { 6367 return (complen + ULong(6)) 6368 } 6369 6370 // compute wrapper length 6371 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6372 switch (*Deflate_state)(unsafe.Pointer(s)).Fwrap { 6373 case 0: // raw deflate 6374 wraplen = ULong(0) 6375 break 6376 case 1: // zlib wrapper 6377 wraplen = (ULong(6 + (func() int32 { 6378 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != 0 { 6379 return 4 6380 } 6381 return 0 6382 }()))) 6383 break 6384 case 2: // gzip wrapper 6385 wraplen = ULong(18) 6386 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead != uintptr(Z_NULL) { // user-supplied gzip header 6387 var str uintptr 6388 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6389 wraplen = wraplen + (ULong(UInt(2) + (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len)) 6390 } 6391 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname 6392 if str != uintptr(Z_NULL) { 6393 for ok := true; ok; ok = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 6394 wraplen++ 6395 } 6396 } 6397 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment 6398 if str != uintptr(Z_NULL) { 6399 for ok1 := true; ok1; ok1 = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 6400 wraplen++ 6401 } 6402 } 6403 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6404 wraplen = wraplen + (ULong(2)) 6405 } 6406 } 6407 break 6408 default: // for compiler happiness 6409 wraplen = ULong(6) 6410 } 6411 6412 // if not default parameters, return conservative bound 6413 if ((*Deflate_state)(unsafe.Pointer(s)).Fw_bits != UInt(15)) || ((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits != (UInt(8 + 7))) { 6414 return (complen + wraplen) 6415 } 6416 6417 // default settings: return tight bound for that case 6418 return ((((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + ULong(13)) - ULong(6)) + wraplen) 6419 } 6420 6421 // ========================================================================= 6422 // Put a short in the pending buffer. The 16-bit value is put in MSB order. 6423 // IN assertion: the stream state is correct and there is enough room in 6424 // pending_buf. 6425 func putShortMSB(tls *libc.TLS, s uintptr, b UInt) { /* deflate.c:716:12: */ 6426 { 6427 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b >> 8)) 6428 } 6429 6430 { 6431 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b & UInt(0xff))) 6432 } 6433 6434 } 6435 6436 // ========================================================================= 6437 // Flush as much pending output as possible. All deflate() output, except for 6438 // some deflate_stored() output, goes through this function so some 6439 // applications may wish to modify it to avoid allocating a large 6440 // strm->next_out buffer and copying into it. (See also read_buf()). 6441 func flush_pending(tls *libc.TLS, strm Z_streamp) { /* deflate.c:730:12: */ 6442 var len uint32 6443 var s uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6444 6445 X_tr_flush_bits(tls, s) 6446 len = uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending) 6447 if len > (*Z_stream)(unsafe.Pointer(strm)).Favail_out { 6448 len = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 6449 } 6450 if len == uint32(0) { 6451 return 6452 } 6453 6454 libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fpending_out, len) 6455 *(*uintptr)(unsafe.Pointer(strm + 12 /* &.next_out */)) += (uintptr(len)) 6456 *(*uintptr)(unsafe.Pointer(s + 16 /* &.pending_out */)) += (uintptr(len)) 6457 *(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(len)) 6458 *(*UInt)(unsafe.Pointer(strm + 16 /* &.avail_out */)) -= (len) 6459 *(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) -= (Ulg(len)) 6460 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == Ulg(0) { 6461 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 6462 } 6463 } 6464 6465 // =========================================================================== 6466 // Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. 6467 6468 // ========================================================================= 6469 func Xdeflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* deflate.c:763:13: */ 6470 var old_flush int32 // value of flush param for previous deflate call 6471 var s uintptr 6472 6473 if ((deflateStateCheck(tls, strm) != 0) || (flush > Z_BLOCK)) || (flush < 0) { 6474 return -2 6475 } 6476 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6477 6478 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)) { 6479 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-2))]; return -2 }() 6480 } 6481 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6482 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 6483 } 6484 6485 old_flush = (*Deflate_state)(unsafe.Pointer(s)).Flast_flush 6486 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = flush 6487 6488 // Flush as much pending output as possible 6489 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6490 flush_pending(tls, strm) 6491 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6492 // Since avail_out is 0, deflate will be called again with 6493 // more output space, but possibly with both pending and 6494 // avail_in equal to zero. There won't be anything to do, 6495 // but this is not an error situation so make sure we 6496 // return OK instead of BUF_ERROR at next call of deflate: 6497 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6498 return Z_OK 6499 } 6500 6501 // Make sure there is something to do and avoid duplicate consecutive 6502 // flushes. For repeated and useless calls with Z_FINISH, we keep 6503 // returning Z_STREAM_END instead of Z_BUF_ERROR. 6504 } else if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((((flush) * 2) - (func() int32 { 6505 if (flush) > 4 { 6506 return 9 6507 } 6508 return 0 6509 }())) <= (((old_flush) * 2) - (func() int32 { 6510 if (old_flush) > 4 { 6511 return 9 6512 } 6513 return 0 6514 }())))) && (flush != Z_FINISH) { 6515 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 6516 } 6517 6518 // User must not provide more input after the first FINISH: 6519 if ((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) { 6520 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }() 6521 } 6522 6523 // Write the header 6524 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == INIT_STATE { 6525 // zlib header 6526 var header UInt = ((UInt(Z_DEFLATED) + (((*Deflate_state)(unsafe.Pointer(s)).Fw_bits - UInt(8)) << 4)) << 8) 6527 var level_flags UInt 6528 6529 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 6530 level_flags = UInt(0) 6531 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel < 6 { 6532 level_flags = UInt(1) 6533 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 6 { 6534 level_flags = UInt(2) 6535 } else { 6536 level_flags = UInt(3) 6537 } 6538 header = header | (level_flags << 6) 6539 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 6540 header = header | (UInt(PRESET_DICT)) 6541 } 6542 header = header + (UInt(31) - (header % UInt(31))) 6543 6544 putShortMSB(tls, s, header) 6545 6546 // Save the adler32 of the preset dictionary: 6547 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 6548 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16))) 6549 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xffff)))) 6550 } 6551 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 6552 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6553 6554 // Compression must start with an empty pending buffer 6555 flush_pending(tls, strm) 6556 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6557 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6558 return Z_OK 6559 } 6560 } 6561 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == GZIP_STATE { 6562 // gzip header 6563 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 6564 { 6565 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(31) 6566 } 6567 6568 { 6569 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(139) 6570 } 6571 6572 { 6573 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(8) 6574 } 6575 6576 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead == uintptr(Z_NULL) { 6577 { 6578 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6579 } 6580 6581 { 6582 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6583 } 6584 6585 { 6586 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6587 } 6588 6589 { 6590 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6591 } 6592 6593 { 6594 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6595 } 6596 6597 { 6598 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 6599 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 6600 return uint8(2) 6601 } 6602 return func() uint8 { 6603 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 6604 return uint8(4) 6605 } 6606 return uint8(0) 6607 }() 6608 }() 6609 } 6610 6611 { 6612 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(OS_CODE) 6613 } 6614 6615 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6616 6617 // Compression must start with an empty pending buffer 6618 flush_pending(tls, strm) 6619 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6620 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6621 return Z_OK 6622 } 6623 } else { 6624 { 6625 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((((func() int32 { 6626 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftext != 0 { 6627 return 1 6628 } 6629 return 0 6630 }()) + (func() int32 { 6631 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6632 return 2 6633 } 6634 return 0 6635 }())) + (func() int32 { 6636 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra == uintptr(Z_NULL) { 6637 return 0 6638 } 6639 return 4 6640 }())) + (func() int32 { 6641 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname == uintptr(Z_NULL) { 6642 return 0 6643 } 6644 return 8 6645 }())) + (func() int32 { 6646 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment == uintptr(Z_NULL) { 6647 return 0 6648 } 6649 return 16 6650 }()))) 6651 } 6652 6653 { 6654 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime & ULong(0xff))) 6655 } 6656 6657 { 6658 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 8) & ULong(0xff))) 6659 } 6660 6661 { 6662 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 16) & ULong(0xff))) 6663 } 6664 6665 { 6666 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 24) & ULong(0xff))) 6667 } 6668 6669 { 6670 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 6671 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 6672 return uint8(2) 6673 } 6674 return func() uint8 { 6675 if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) { 6676 return uint8(4) 6677 } 6678 return uint8(0) 6679 }() 6680 }() 6681 } 6682 6683 { 6684 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fos & 0xff)) 6685 } 6686 6687 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6688 { 6689 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xff))) 6690 } 6691 6692 { 6693 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len >> 8) & UInt(0xff))) 6694 } 6695 6696 } 6697 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6698 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf, 6699 uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending)) 6700 } 6701 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0) 6702 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = EXTRA_STATE 6703 } 6704 } 6705 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == EXTRA_STATE { 6706 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6707 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6708 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)) 6709 for ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(left)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6710 var copy UInt = (UInt((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fpending)) 6711 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), 6712 ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), copy) 6713 (*Deflate_state)(unsafe.Pointer(s)).Fpending = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size 6714 for ok := true; ok; ok = 0 != 0 { 6715 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6716 (*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)))) 6717 } 6718 } 6719 *(*Ulg)(unsafe.Pointer(s + 32 /* &.gzindex */)) += (Ulg(copy)) 6720 flush_pending(tls, strm) 6721 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6722 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6723 return Z_OK 6724 } 6725 beg = Ulg(0) 6726 left = left - (copy) 6727 } 6728 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), 6729 ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), left) 6730 *(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) += (Ulg(left)) 6731 for ok1 := true; ok1; ok1 = 0 != 0 { 6732 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6733 (*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)))) 6734 } 6735 } 6736 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0) 6737 } 6738 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = NAME_STATE 6739 } 6740 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == NAME_STATE { 6741 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname != uintptr(Z_NULL) { 6742 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6743 var val int32 6744 for ok2 := true; ok2; ok2 = (val != 0) { 6745 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6746 for ok3 := true; ok3; ok3 = 0 != 0 { 6747 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6748 (*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)))) 6749 } 6750 } 6751 flush_pending(tls, strm) 6752 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6753 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6754 return Z_OK 6755 } 6756 beg = Ulg(0) 6757 } 6758 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 6759 { 6760 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 6761 } 6762 6763 } 6764 for ok4 := true; ok4; ok4 = 0 != 0 { 6765 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6766 (*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)))) 6767 } 6768 } 6769 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0) 6770 } 6771 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = COMMENT_STATE 6772 } 6773 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == COMMENT_STATE { 6774 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment != uintptr(Z_NULL) { 6775 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6776 var val int32 6777 for ok5 := true; ok5; ok5 = (val != 0) { 6778 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6779 for ok6 := true; ok6; ok6 = 0 != 0 { 6780 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6781 (*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)))) 6782 } 6783 } 6784 flush_pending(tls, strm) 6785 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6786 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6787 return Z_OK 6788 } 6789 beg = Ulg(0) 6790 } 6791 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 6792 { 6793 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 6794 } 6795 6796 } 6797 for ok7 := true; ok7; ok7 = 0 != 0 { 6798 if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) { 6799 (*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)))) 6800 } 6801 } 6802 } 6803 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = HCRC_STATE 6804 } 6805 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == HCRC_STATE { 6806 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6807 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(2)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6808 flush_pending(tls, strm) 6809 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6810 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6811 return Z_OK 6812 } 6813 } 6814 { 6815 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xff))) 6816 } 6817 6818 { 6819 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & ULong(0xff))) 6820 } 6821 6822 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 6823 } 6824 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6825 6826 // Compression must start with an empty pending buffer 6827 flush_pending(tls, strm) 6828 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6829 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6830 return Z_OK 6831 } 6832 } 6833 6834 // Start a new block or continue the current one. 6835 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)) { 6836 var bstate Block_state 6837 6838 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 { 6839 bstate = deflate_stored(tls, s, flush) 6840 } else { 6841 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_HUFFMAN_ONLY { 6842 bstate = deflate_huff(tls, s, flush) 6843 } else { 6844 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_RLE { 6845 bstate = deflate_rle(tls, s, flush) 6846 } else { 6847 bstate = (*struct { 6848 f func(*libc.TLS, uintptr, int32) Block_state 6849 })(unsafe.Pointer(&struct{ uintptr }{configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc})).f(tls, s, flush) 6850 } 6851 } 6852 } 6853 6854 if (bstate == Finish_started) || (bstate == Finish_done) { 6855 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 6856 } 6857 if (bstate == Need_more) || (bstate == Finish_started) { 6858 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6859 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR next call, see above 6860 } 6861 return Z_OK 6862 // If flush != Z_NO_FLUSH && avail_out == 0, the next call 6863 // of deflate should use the same flush parameter to make sure 6864 // that the flush is complete. So we don't have to output an 6865 // empty block here, this will be done at next call. This also 6866 // ensures that for a very small output buffer, we emit at most 6867 // one empty block. 6868 } 6869 if bstate == Block_done { 6870 if flush == Z_PARTIAL_FLUSH { 6871 X_tr_align(tls, s) 6872 } else if flush != Z_BLOCK { // FULL_FLUSH or SYNC_FLUSH 6873 X_tr_stored_block(tls, s, uintptr(0), uint32(0), 0) 6874 // For a full flush, this empty block will be recognized 6875 // as a special marker by inflate_sync(). 6876 if flush == Z_FULL_FLUSH { 6877 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 6878 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0))))) 6879 // forget history 6880 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6881 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 6882 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 6883 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6884 } 6885 } 6886 } 6887 flush_pending(tls, strm) 6888 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6889 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR at next call, see above 6890 return Z_OK 6891 } 6892 } 6893 } 6894 6895 if flush != Z_FINISH { 6896 return Z_OK 6897 } 6898 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap <= 0 { 6899 return Z_STREAM_END 6900 } 6901 6902 // Write the trailer 6903 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6904 { 6905 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xff))) 6906 } 6907 6908 { 6909 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & ULong(0xff))) 6910 } 6911 6912 { 6913 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16) & ULong(0xff))) 6914 } 6915 6916 { 6917 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 24) & ULong(0xff))) 6918 } 6919 6920 { 6921 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in & ULong(0xff))) 6922 } 6923 6924 { 6925 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 8) & ULong(0xff))) 6926 } 6927 6928 { 6929 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 16) & ULong(0xff))) 6930 } 6931 6932 { 6933 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 24) & ULong(0xff))) 6934 } 6935 6936 } else { 6937 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16))) 6938 putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xffff)))) 6939 } 6940 flush_pending(tls, strm) 6941 // If avail_out is zero, the application will call deflate again 6942 // to flush the rest. 6943 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap > 0 { 6944 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap 6945 } // write the trailer only once! 6946 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) { 6947 return Z_OK 6948 } 6949 return Z_STREAM_END 6950 } 6951 6952 // ========================================================================= 6953 func XdeflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:1076:13: */ 6954 var status int32 6955 6956 if deflateStateCheck(tls, strm) != 0 { 6957 return -2 6958 } 6959 6960 status = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fstatus 6961 6962 /* Deallocate in reverse order of allocations: */ 6963 { 6964 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf != 0 { 6965 (*struct { 6966 f func(*libc.TLS, Voidpf, Voidpf) 6967 })(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) 6968 } 6969 } 6970 6971 { 6972 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead != 0 { 6973 (*struct { 6974 f func(*libc.TLS, Voidpf, Voidpf) 6975 })(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) 6976 } 6977 } 6978 6979 { 6980 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev != 0 { 6981 (*struct { 6982 f func(*libc.TLS, Voidpf, Voidpf) 6983 })(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) 6984 } 6985 } 6986 6987 { 6988 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow != 0 { 6989 (*struct { 6990 f func(*libc.TLS, Voidpf, Voidpf) 6991 })(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) 6992 } 6993 } 6994 6995 (*struct { 6996 f func(*libc.TLS, Voidpf, Voidpf) 6997 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 6998 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 6999 7000 if status == BUSY_STATE { 7001 return -3 7002 } 7003 return Z_OK 7004 } 7005 7006 // ========================================================================= 7007 // Copy the source state to the destination state. 7008 // To simplify the source, this is not supported for 16-bit MSDOS (which 7009 // doesn't have enough memory anyway to duplicate compression states). 7010 func XdeflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* deflate.c:1102:13: */ 7011 var ds uintptr 7012 var ss uintptr 7013 var overlay uintptr 7014 7015 if (deflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) { 7016 return -2 7017 } 7018 7019 ss = (*Z_stream)(unsafe.Pointer(source)).Fstate 7020 7021 libc.Xmemcpy(tls, dest, source, uint32(unsafe.Sizeof(Z_stream{}))) 7022 7023 ds = (*struct { 7024 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7025 })(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{}))) 7026 if ds == uintptr(Z_NULL) { 7027 return -4 7028 } 7029 (*Z_stream)(unsafe.Pointer(dest)).Fstate = ds 7030 libc.Xmemcpy(tls, ds, ss, uint32(unsafe.Sizeof(Deflate_state{}))) 7031 (*Deflate_state)(unsafe.Pointer(ds)).Fstrm = dest 7032 7033 (*Deflate_state)(unsafe.Pointer(ds)).Fwindow = (*struct { 7034 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7035 })(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(2) * uint32(unsafe.Sizeof(Byte(0))))) 7036 (*Deflate_state)(unsafe.Pointer(ds)).Fprev = (*struct { 7037 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7038 })(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)))) 7039 (*Deflate_state)(unsafe.Pointer(ds)).Fhead = (*struct { 7040 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7041 })(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)))) 7042 overlay = (*struct { 7043 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7044 })(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(unsafe.Sizeof(Ush(0))) + uint32(2))) 7045 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf = overlay 7046 7047 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)) { 7048 XdeflateEnd(tls, dest) 7049 return -4 7050 } 7051 // following zmemcpy do not work for 16-bit MSDOS 7052 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fwindow, (*Deflate_state)(unsafe.Pointer(ss)).Fwindow, (((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(2)) * UInt(unsafe.Sizeof(Byte(0))))) 7053 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fprev, (*Deflate_state)(unsafe.Pointer(ss)).Fprev, ((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(unsafe.Sizeof(Pos(0))))) 7054 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fhead, (*Deflate_state)(unsafe.Pointer(ss)).Fhead, ((*Deflate_state)(unsafe.Pointer(ds)).Fhash_size * UInt(unsafe.Sizeof(Pos(0))))) 7055 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf, (*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf, UInt((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf_size)) 7056 7057 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_out = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((int32((*Deflate_state)(unsafe.Pointer(ss)).Fpending_out) - int32((*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf)) / 1))) 7058 (*Deflate_state)(unsafe.Pointer(ds)).Fd_buf = (overlay + uintptr(((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize/UInt(unsafe.Sizeof(Ush(0)))))*2) 7059 (*Deflate_state)(unsafe.Pointer(ds)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((uint32(1) + uint32(unsafe.Sizeof(Ush(0)))) * (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize))) 7060 7061 (*Deflate_state)(unsafe.Pointer(ds)).Fl_desc.Fdyn_tree = ds + 148 /* &.dyn_ltree */ 7062 (*Deflate_state)(unsafe.Pointer(ds)).Fd_desc.Fdyn_tree = ds + 2440 /* &.dyn_dtree */ 7063 (*Deflate_state)(unsafe.Pointer(ds)).Fbl_desc.Fdyn_tree = ds + 2684 /* &.bl_tree */ 7064 7065 return Z_OK 7066 } 7067 7068 // =========================================================================== 7069 // Read a new buffer from the current input stream, update the adler32 7070 // and total number of bytes read. All deflate() input goes through 7071 // this function so some applications may wish to modify it to avoid 7072 // allocating a large strm->next_in buffer and copying from it. 7073 // (See also flush_pending()). 7074 func read_buf(tls *libc.TLS, strm Z_streamp, buf uintptr, size uint32) uint32 { /* deflate.c:1164:16: */ 7075 var len uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 7076 7077 if len > size { 7078 len = size 7079 } 7080 if len == uint32(0) { 7081 return uint32(0) 7082 } 7083 7084 *(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (len) 7085 7086 libc.Xmemcpy(tls, buf, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, len) 7087 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 1 { 7088 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 7089 } else if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 2 { 7090 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 7091 } 7092 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len)) 7093 *(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(len)) 7094 7095 return len 7096 } 7097 7098 // =========================================================================== 7099 // Initialize the "longest match" routines for a new zlib stream 7100 func lm_init(tls *libc.TLS, s uintptr) { /* deflate.c:1194:12: */ 7101 (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size = (Ulg(2) * Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) 7102 7103 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL) 7104 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0))))) 7105 7106 // Set the default configuration parameters: 7107 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_lazy) 7108 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fgood_length) 7109 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fnice_length) 7110 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_chain) 7111 7112 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 7113 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 7114 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 7115 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 7116 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+120 /* &.prev_length */, (UInt(MIN_MATCH - 1))) 7117 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7118 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(0) 7119 } 7120 7121 // =========================================================================== 7122 // Set match_start to the longest match starting at the given string and 7123 // return its length. Matches shorter or equal to prev_length are discarded, 7124 // in which case the result is equal to prev_length and match_start is 7125 // garbage. 7126 // IN assertions: cur_match is the head of the hash chain for the current 7127 // string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 7128 // OUT assertion: the match length is not greater than s->lookahead. 7129 // For 80x86 and 680x0, an optimized version will be provided in match.asm or 7130 // match.S. The code will be functionally equivalent. 7131 func longest_match(tls *libc.TLS, s uintptr, cur_match IPos) UInt { /* deflate.c:1236:12: */ 7132 var chain_length uint32 = (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length // max hash chain length 7133 var scan uintptr = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) // current string 7134 var match uintptr // matched string 7135 var len int32 // length of current match 7136 var best_len int32 = int32((*Deflate_state)(unsafe.Pointer(s)).Fprev_length) // best match length so far 7137 var nice_match int32 = (*Deflate_state)(unsafe.Pointer(s)).Fnice_match // stop if match long enough 7138 var limit IPos 7139 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))) { 7140 limit = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) 7141 } else { 7142 limit = uint32(NIL) 7143 } 7144 // Stop when cur_match becomes <= limit. To simplify the code, 7145 // we prevent matches with the string of window index 0. 7146 var prev uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fprev 7147 var wmask UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_mask 7148 7149 var strend uintptr = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH)) 7150 var scan_end1 Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1)))) 7151 var scan_end Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 7152 7153 // The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. 7154 // It is easy to get rid of this optimization if necessary. 7155 7156 // Do not waste too much time if we already have a good match: 7157 if (*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= (*Deflate_state)(unsafe.Pointer(s)).Fgood_match { 7158 chain_length >>= 2 7159 } 7160 // Do not look for matches beyond the end of the input. This is necessary 7161 // to make deflate deterministic. 7162 if UInt(nice_match) > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 7163 nice_match = int32((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 7164 } 7165 7166 for ok := true; ok; ok = (((libc.AssignUint32(&cur_match, IPos(*(*Posf)(unsafe.Pointer(prev + uintptr((cur_match&wmask))*2))))) > limit) && 7167 (libc.PreDecUint32(&chain_length, 1) != uint32(0))) { 7168 7169 match = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(cur_match)) 7170 7171 // Skip to next match if the match length cannot increase 7172 // or if the match length is less than 2. Note that the checks below 7173 // for insufficient lookahead only occur occasionally for performance 7174 // reasons. Therefore uninitialized memory will be accessed, and 7175 // conditional jumps will be made that depend on those values. 7176 // However the length of the match is limited to the lookahead, so 7177 // the output of deflate is not affected by the uninitialized values. 7178 7179 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)))) { 7180 continue 7181 } 7182 7183 // The check at best_len-1 can be removed because it will be made 7184 // again later. (This heuristic is not always a win.) 7185 // It is not necessary to compare scan[2] and match[2] since they 7186 // are always equal when the other bytes match, given that 7187 // the hash keys are equal and that HASH_BITS >= 8. 7188 scan += uintptr(2) 7189 match++ 7190 7191 // We check for insufficient lookahead only every 8th comparison; 7192 // the 256th check will be made at strstart+258. 7193 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)) { 7194 } 7195 7196 len = (MAX_MATCH - ((int32(strend) - int32(scan)) / 1)) 7197 scan = (strend - uintptr(MAX_MATCH)) 7198 7199 if len > best_len { 7200 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start = cur_match 7201 best_len = len 7202 if len >= nice_match { 7203 break 7204 } 7205 scan_end1 = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1)))) 7206 scan_end = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 7207 } 7208 } 7209 7210 if UInt(best_len) <= (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 7211 return UInt(best_len) 7212 } 7213 return (*Deflate_state)(unsafe.Pointer(s)).Flookahead 7214 } 7215 7216 // =========================================================================== 7217 // Fill the window when the lookahead becomes insufficient. 7218 // Updates strstart and lookahead. 7219 // 7220 // IN assertion: lookahead < MIN_LOOKAHEAD 7221 // OUT assertions: strstart <= window_size-MIN_LOOKAHEAD 7222 // At least one byte has been read, or avail_in == 0; reads are 7223 // performed for at least two bytes (required for the zip translate_eol 7224 // option -- not supported here). 7225 func fill_window(tls *libc.TLS, s uintptr) { /* deflate.c:1482:12: */ 7226 var n uint32 7227 var more uint32 // Amount of free space at the end of the window. 7228 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7229 7230 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))) { 7231 more = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 7232 7233 // Deal with !@#$% 64K limit: 7234 if uint32(unsafe.Sizeof(int32(0))) <= uint32(2) { 7235 if ((more == uint32(0)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart == UInt(0))) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0)) { 7236 more = wsize 7237 7238 } else if more == libc.Uint32(libc.Uint32FromInt32(-1)) { 7239 // Very unlikely, but possible on 16 bit machine if 7240 // strstart == 0 && lookahead == 1 (input done a byte at time) 7241 more-- 7242 } 7243 } 7244 7245 // If the window is almost full and there is insufficient lookahead, 7246 // move the upper half to the lower one to make room in the upper half. 7247 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart >= (wsize + ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) { 7248 7249 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(wsize)), (wsize - more)) 7250 *(*UInt)(unsafe.Pointer(s + 112 /* &.match_start */)) -= (wsize) 7251 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= (wsize) // we now have strstart >= MAX_DIST 7252 *(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) -= (int32(wsize)) 7253 slide_hash(tls, s) 7254 more = more + (wsize) 7255 } 7256 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) { 7257 break 7258 } 7259 7260 // If there was no sliding: 7261 // strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && 7262 // more == window_size - lookahead - strstart 7263 // => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) 7264 // => more >= window_size - 2*WSIZE + 2 7265 // In the BIG_MEM or MMAP case (not yet supported), 7266 // window_size == input_size + MIN_LOOKAHEAD && 7267 // strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. 7268 // Otherwise, window_size == 2*WSIZE so more >= 2. 7269 // If there was sliding, more >= WSIZE. So in all cases, more >= 2. 7270 7271 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) 7272 *(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) += (n) 7273 7274 // Initialize the hash value now that we have some input: 7275 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) >= UInt(MIN_MATCH) { 7276 var str UInt = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Finsert) 7277 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(str)))) 7278 (*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) 7279 for (*Deflate_state)(unsafe.Pointer(s)).Finsert != 0 { 7280 (*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) 7281 *(*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)) 7282 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 7283 str++ 7284 (*Deflate_state)(unsafe.Pointer(s)).Finsert-- 7285 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) < UInt(MIN_MATCH) { 7286 break 7287 } 7288 } 7289 } 7290 // If the whole input has less than MIN_MATCH bytes, ins_h is garbage, 7291 // but this is not important since only literal bytes will be emitted. 7292 7293 } 7294 7295 // If the WIN_INIT bytes after the end of the current data have never been 7296 // written, then zero those bytes in order to avoid memory check reports of 7297 // the use of uninitialized (or uninitialised as Julian writes) bytes by 7298 // the longest match routines. Update the high water mark for the next 7299 // time through here. WIN_INIT is set to MAX_MATCH since the longest match 7300 // routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. 7301 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size { 7302 var curr Ulg = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead))) 7303 var init1 Ulg 7304 7305 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr { 7306 // Previous high water mark below current data -- zero WIN_INIT 7307 // bytes or up to end of window, whichever is less. 7308 init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - curr) 7309 if init1 > Ulg(MAX_MATCH) { 7310 init1 = Ulg(MAX_MATCH) 7311 } 7312 libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(curr)), 0, uint32(init1)) 7313 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = (curr + init1) 7314 } else if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (curr + Ulg(MAX_MATCH)) { 7315 // High water mark at or above current data, but below current data 7316 // plus WIN_INIT -- zero out to current data plus WIN_INIT, or up 7317 // to end of window, whichever is less. 7318 init1 = ((curr + Ulg(MAX_MATCH)) - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) 7319 if init1 > ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) { 7320 init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) 7321 } 7322 libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)), 0, uint32(init1)) 7323 *(*Ulg)(unsafe.Pointer(s + 5824 /* &.high_water */)) += (init1) 7324 } 7325 } 7326 7327 } 7328 7329 // =========================================================================== 7330 // Flush the current block, with given end-of-file flag. 7331 // IN assertion: strstart is set to the end of the current match. 7332 7333 // Same but force premature exit if necessary. 7334 7335 // Maximum stored block length in deflate format (not including header). 7336 7337 // Minimum of a and b. 7338 7339 // =========================================================================== 7340 // Copy without compression as much as possible from the input stream, return 7341 // the current block state. 7342 // 7343 // In case deflateParams() is used to later switch to a non-zero compression 7344 // level, s->matches (otherwise unused when storing) keeps track of the number 7345 // of hash table slides to perform. If s->matches is 1, then one hash table 7346 // slide will be done when switching. If s->matches is 2, the maximum value 7347 // allowed here, then the hash table will be cleared, since two or more slides 7348 // is the same as a clear. 7349 // 7350 // deflate_stored() is written to minimize the number of times an input byte is 7351 // copied. It is most efficient with large input and output buffers, which 7352 // maximizes the opportunites to have a single copy from next_in to next_out. 7353 func deflate_stored(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1643:19: */ 7354 // Smallest worthy block size when not flushing or finishing. By default 7355 // this is 32K. This can be as small as 507 bytes for memLevel == 1. For 7356 // large input and output buffers, the stored block size will be larger. 7357 var min_block uint32 = func() uint32 { 7358 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(5)) > (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) { 7359 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7360 } 7361 return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(5))) 7362 }() 7363 7364 // Copy as many min_block or larger stored blocks directly to next_out as 7365 // possible. If flushing, copy the remaining available input to next_out as 7366 // stored blocks, if there is enough space. 7367 var len uint32 7368 var left uint32 7369 var have uint32 7370 var last uint32 = uint32(0) 7371 var used uint32 = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 7372 for ok := true; ok; ok = (last == uint32(0)) { 7373 // Set len to the maximum size block that we can copy directly with the 7374 // available input data and output space. Set left to how much of that 7375 // would be copied from what's left in the window. 7376 len = uint32(MAX_STORED) // maximum deflate stored block length 7377 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes 7378 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out < have { // need room for header 7379 break 7380 } 7381 // maximum stored block length that will fit in avail_out: 7382 have = ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out - have) 7383 left = (uint32(uint32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) // bytes left in window 7384 if Ulg(len) > (Ulg(left) + Ulg((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) { 7385 len = (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) 7386 } // limit len to the input 7387 if len > have { 7388 len = have 7389 } // limit len to the output 7390 7391 // If the stored block would be less than min_block in length, or if 7392 // unable to copy all of the available input when flushing, then try 7393 // copying to the window and the pending buffer instead. Also don't 7394 // write an empty block when flushing -- deflate() does that. 7395 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))) { 7396 break 7397 } 7398 7399 // Make a dummy stored block in pending to get the header bytes, 7400 // including any pending bits. This also updates the debugging counts. 7401 if (flush == Z_FINISH) && (len == (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) { 7402 last = uint32(1) 7403 } else { 7404 last = uint32(0) 7405 } 7406 X_tr_stored_block(tls, s, uintptr(0), uint32(0), int32(last)) 7407 7408 // Replace the lengths in the dummy stored block with len. 7409 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(4))))) = Bytef(len) 7410 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(3))))) = (Bytef(len >> 8)) 7411 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(2))))) = Bytef(^len) 7412 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(1))))) = (Bytef(^len >> 8)) 7413 7414 // Write the stored block header bytes. 7415 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7416 7417 // Copy uncompressed bytes from the window to next_out. 7418 if left != 0 { 7419 if left > len { 7420 left = len 7421 } 7422 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)), left) 7423 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 12 /* &.next_out */)) += (uintptr(left)) 7424 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 16 /* &.avail_out */)) -= (left) 7425 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 20 /* &.total_out */)) += (ULong(left)) 7426 *(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) += int32((uint32(left))) 7427 len = len - (left) 7428 } 7429 7430 // Copy uncompressed bytes directly from next_in to next_out, updating 7431 // the check value. 7432 if len != 0 { 7433 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, len) 7434 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 12 /* &.next_out */)) += (uintptr(len)) 7435 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 16 /* &.avail_out */)) -= (len) 7436 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 20 /* &.total_out */)) += (ULong(len)) 7437 } 7438 } 7439 7440 // Update the sliding window with the last s->w_size bytes of the copied 7441 // data, or append all of the copied data to the existing window if less 7442 // than s->w_size bytes were copied. Also update the number of bytes to 7443 // insert in the hash tables, in the event that deflateParams() switches to 7444 // a non-zero compression level. 7445 used = used - ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) // number of input bytes directly copied 7446 if used != 0 { 7447 // If any input was used, then no unused input remains in the window, 7448 // therefore s->block_start == s->strstart. 7449 if used >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { // supplant the previous history 7450 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(2) // clear hash 7451 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)), (*Deflate_state)(unsafe.Pointer(s)).Fw_size) 7452 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7453 } else { 7454 if ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) <= Ulg(used) { 7455 // Slide the window down. 7456 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 7457 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), (*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7458 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 7459 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 7460 } // add a pending slide_hash() 7461 } 7462 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)), used) 7463 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += (used) 7464 } 7465 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7466 *(*UInt)(unsafe.Pointer(s + 5812 /* &.insert */)) += (func() uint32 { 7467 if (used) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) { 7468 return ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) 7469 } 7470 return used 7471 }()) 7472 } 7473 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 7474 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7475 } 7476 7477 // If the last block was written to next_out, then done. 7478 if last != 0 { 7479 return Finish_done 7480 } 7481 7482 // If flushing and all input has been consumed, then done. 7483 if (((flush != Z_NO_FLUSH) && (flush != Z_FINISH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) == (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) { 7484 return Block_done 7485 } 7486 7487 // Fill the window with any remaining input. 7488 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - Ulg(1))) 7489 if ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in > have) && ((*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= int32((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) { 7490 // Slide the window down. 7491 *(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) -= int32((uint32((*Deflate_state)(unsafe.Pointer(s)).Fw_size))) 7492 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 7493 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), (*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7494 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 7495 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 7496 } // add a pending slide_hash() 7497 have = have + ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) // more space now 7498 } 7499 if have > (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in { 7500 have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 7501 } 7502 if have != 0 { 7503 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), have) 7504 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += (have) 7505 } 7506 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 7507 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7508 } 7509 7510 // There was not enough avail_out to write a complete worthy or flushed 7511 // stored block to next_out. Write a stored block to pending instead, if we 7512 // have enough input for a worthy block, or if flushing and there is enough 7513 // room for the remaining input as a stored block in the pending buffer. 7514 have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes 7515 // maximum stored block length that will fit in pending: 7516 have = func() uint32 { 7517 if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)) > (Ulg(MAX_STORED)) { 7518 return uint32(MAX_STORED) 7519 } 7520 return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have))) 7521 }() 7522 min_block = func() uint32 { 7523 if (have) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) { 7524 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7525 } 7526 return have 7527 }() 7528 left = (uint32(uint32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7529 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)) { 7530 len = func() uint32 { 7531 if (left) > (have) { 7532 return have 7533 } 7534 return left 7535 }() 7536 if ((flush == Z_FINISH) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (len == left) { 7537 last = uint32(1) 7538 } else { 7539 last = uint32(0) 7540 } 7541 X_tr_stored_block(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint32(len), int32(last)) 7542 *(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) += int32((uint32(len))) 7543 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7544 } 7545 7546 // We've done all we can with the available input and output. 7547 if last != 0 { 7548 return Finish_started 7549 } 7550 return Need_more 7551 } 7552 7553 // =========================================================================== 7554 // Compress as much as possible from the input stream, return the current 7555 // block state. 7556 // This function does not perform lazy evaluation of matches and inserts 7557 // new strings in the dictionary only for unmatched strings or for short 7558 // matches. It is used only for the fast compression options. 7559 func deflate_fast(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1824:19: */ 7560 var hash_head IPos // head of the hash chain 7561 var bflush int32 // set if current block must be flushed 7562 7563 for { 7564 // Make sure that we always have enough lookahead, except 7565 // at the end of the input file. We need MAX_MATCH bytes 7566 // for the next match, plus MIN_MATCH bytes to insert the 7567 // string following the next match. 7568 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) { 7569 fill_window(tls, s) 7570 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) { 7571 return Need_more 7572 } 7573 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7574 break 7575 } // flush the current block 7576 } 7577 7578 // Insert the string window[strstart .. strstart+2] in the 7579 // dictionary, and set hash_head to the head of the hash chain: 7580 hash_head = IPos(NIL) 7581 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 7582 (*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) 7583 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)))) 7584 *(*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) 7585 } 7586 7587 // Find the longest match, discarding those <= prev_length. 7588 // At this point we have always match_length < MIN_MATCH 7589 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)))) { 7590 // To simplify the code, we prevent matches with the string 7591 // of window index 0 (in particular we have to avoid a match 7592 // of the string with itself at the start of the input file). 7593 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 7594 // longest_match() sets match_start 7595 } 7596 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 7597 7598 { 7599 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH))) 7600 var dist Ush = (Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start)) 7601 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 7602 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 7603 dist-- 7604 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 7605 *(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 { 7606 if (int32(dist)) < 256 { 7607 return int32(X_dist_code[dist]) 7608 } 7609 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 7610 }()))*4 /* &.fc */))++ 7611 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7612 } 7613 7614 *(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 7615 7616 // Insert new strings in the hash table only if the match length 7617 // is not too large. This saves time but degrades compression. 7618 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)) { 7619 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length-- // string at strstart already in table 7620 for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length, 1) != UInt(0)) { 7621 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7622 (*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) 7623 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)))) 7624 *(*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) 7625 // strstart never exceeds WSIZE-MAX_MATCH, so there are 7626 // always MIN_MATCH bytes ahead. 7627 } 7628 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7629 } else { 7630 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 7631 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 7632 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))) 7633 (*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) 7634 // If lookahead < MIN_MATCH, ins_h is garbage, but it does not 7635 // matter since it will be recomputed at next deflate call. 7636 } 7637 } else { 7638 // No match, output a literal byte 7639 7640 { 7641 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 7642 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7643 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7644 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 7645 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7646 } 7647 7648 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7649 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7650 } 7651 if bflush != 0 { 7652 { 7653 X_tr_flush_block(tls, s, func() uintptr { 7654 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7655 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7656 } 7657 return uintptr(Z_NULL) 7658 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 7659 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7660 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7661 } 7662 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7663 if 0 != 0 { 7664 return Finish_started 7665 } 7666 return Need_more 7667 } 7668 } 7669 7670 } 7671 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 7672 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) { 7673 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 7674 } 7675 return (uint32(MIN_MATCH - 1)) 7676 }() 7677 if flush == Z_FINISH { 7678 { 7679 { 7680 X_tr_flush_block(tls, s, func() uintptr { 7681 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7682 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7683 } 7684 return uintptr(Z_NULL) 7685 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 7686 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7687 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7688 } 7689 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7690 if 1 != 0 { 7691 return Finish_started 7692 } 7693 return Need_more 7694 } 7695 } 7696 7697 return Finish_done 7698 } 7699 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 7700 { 7701 X_tr_flush_block(tls, s, func() uintptr { 7702 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7703 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7704 } 7705 return uintptr(Z_NULL) 7706 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 7707 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7708 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7709 } 7710 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7711 if 0 != 0 { 7712 return Finish_started 7713 } 7714 return Need_more 7715 } 7716 } 7717 7718 return Block_done 7719 } 7720 7721 // =========================================================================== 7722 // Same as above, but achieves better compression. We use a lazy 7723 // evaluation for matches: a match is finally adopted only if there is 7724 // no better match at the next window position. 7725 func deflate_slow(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1926:19: */ 7726 var hash_head IPos // head of hash chain 7727 var bflush int32 // set if current block must be flushed 7728 7729 // Process the input block. 7730 for { 7731 // Make sure that we always have enough lookahead, except 7732 // at the end of the input file. We need MAX_MATCH bytes 7733 // for the next match, plus MIN_MATCH bytes to insert the 7734 // string following the next match. 7735 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) { 7736 fill_window(tls, s) 7737 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) { 7738 return Need_more 7739 } 7740 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7741 break 7742 } // flush the current block 7743 } 7744 7745 // Insert the string window[strstart .. strstart+2] in the 7746 // dictionary, and set hash_head to the head of the hash chain: 7747 hash_head = IPos(NIL) 7748 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 7749 (*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) 7750 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)))) 7751 *(*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) 7752 } 7753 7754 // Find the longest match, discarding those <= prev_length. 7755 (*Deflate_state)(unsafe.Pointer(s)).Fprev_length = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 7756 (*Deflate_state)(unsafe.Pointer(s)).Fprev_match = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start 7757 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 7758 7759 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)))) { 7760 // To simplify the code, we prevent matches with the string 7761 // of window index 0 (in particular we have to avoid a match 7762 // of the string with itself at the start of the input file). 7763 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 7764 // longest_match() sets match_start 7765 7766 if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= UInt(5)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FILTERED) || 7767 (((*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)))) { 7768 7769 // If prev_match is also MIN_MATCH, match_start is garbage 7770 // but we will ignore the current match anyway. 7771 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 7772 } 7773 } 7774 // If there was a match at the previous step and the current 7775 // match is not better, output the previous match: 7776 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) { 7777 var max_insert UInt = (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) - UInt(MIN_MATCH)) 7778 // Do not insert strings in hash table beyond this. 7779 7780 { 7781 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(MIN_MATCH))) 7782 var dist Ush = (Ush(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)) - (*Deflate_state)(unsafe.Pointer(s)).Fprev_match)) 7783 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 7784 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 7785 dist-- 7786 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 7787 *(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 { 7788 if (int32(dist)) < 256 { 7789 return int32(X_dist_code[dist]) 7790 } 7791 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 7792 }()))*4 /* &.fc */))++ 7793 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7794 } 7795 7796 // Insert in hash table all strings up to the end of the match. 7797 // strstart-1 and strstart are already inserted. If there is not 7798 // enough lookahead, the last two strings are not inserted in 7799 // the hash table. 7800 *(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(1)) 7801 *(*UInt)(unsafe.Pointer(s + 120 /* &.prev_length */)) -= (UInt(2)) 7802 for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fprev_length, 1) != UInt(0)) { 7803 if libc.PreIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fstrstart, 1) <= max_insert { 7804 (*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) 7805 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)))) 7806 *(*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) 7807 } 7808 } 7809 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7810 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1)) 7811 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7812 7813 if bflush != 0 { 7814 { 7815 X_tr_flush_block(tls, s, func() uintptr { 7816 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7817 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7818 } 7819 return uintptr(Z_NULL) 7820 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 7821 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7822 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7823 } 7824 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7825 if 0 != 0 { 7826 return Finish_started 7827 } 7828 return Need_more 7829 } 7830 } 7831 7832 } else if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 7833 // If there was no match at the previous position, output a 7834 // single literal. If there was a match but the current match 7835 // is longer, truncate the previous match to a single literal. 7836 7837 { 7838 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1))))) 7839 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7840 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7841 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 7842 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7843 } 7844 7845 if bflush != 0 { 7846 { 7847 X_tr_flush_block(tls, s, func() uintptr { 7848 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7849 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7850 } 7851 return uintptr(Z_NULL) 7852 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 7853 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7854 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7855 } 7856 7857 } 7858 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7859 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7860 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7861 return Need_more 7862 } 7863 } else { 7864 // There is no previous match to compare with, wait for 7865 // the next step to decide. 7866 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 1 7867 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7868 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7869 } 7870 } 7871 7872 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 7873 7874 { 7875 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1))))) 7876 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7877 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7878 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 7879 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7880 } 7881 7882 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7883 } 7884 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 7885 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) { 7886 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 7887 } 7888 return (uint32(MIN_MATCH - 1)) 7889 }() 7890 if flush == Z_FINISH { 7891 { 7892 { 7893 X_tr_flush_block(tls, s, func() uintptr { 7894 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7895 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7896 } 7897 return uintptr(Z_NULL) 7898 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 7899 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7900 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7901 } 7902 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7903 if 1 != 0 { 7904 return Finish_started 7905 } 7906 return Need_more 7907 } 7908 } 7909 7910 return Finish_done 7911 } 7912 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 7913 { 7914 X_tr_flush_block(tls, s, func() uintptr { 7915 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7916 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 7917 } 7918 return uintptr(Z_NULL) 7919 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 7920 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7921 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7922 } 7923 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7924 if 0 != 0 { 7925 return Finish_started 7926 } 7927 return Need_more 7928 } 7929 } 7930 7931 return Block_done 7932 } 7933 7934 // =========================================================================== 7935 // For Z_RLE, simply look for runs of bytes, generate matches only of distance 7936 // one. Do not maintain a hash table. (It will be regenerated if this run of 7937 // deflate switches away from Z_RLE.) 7938 func deflate_rle(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2057:19: */ 7939 var bflush int32 // set if current block must be flushed 7940 var prev UInt // byte at distance one to match 7941 var scan uintptr 7942 var strend uintptr // scan goes up to strend for length of run 7943 7944 for { 7945 // Make sure that we always have enough lookahead, except 7946 // at the end of the input file. We need MAX_MATCH bytes 7947 // for the longest run, plus one for the unrolled loop. 7948 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) { 7949 fill_window(tls, s) 7950 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH)) && (flush == Z_NO_FLUSH) { 7951 return Need_more 7952 } 7953 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7954 break 7955 } // flush the current block 7956 } 7957 7958 // See how many times the previous byte repeats 7959 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 7960 if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart > UInt(0)) { 7961 scan = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uintptr(1)) 7962 prev = UInt(*(*Bytef)(unsafe.Pointer(scan))) 7963 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))))) { 7964 strend = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH)) 7965 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)) { 7966 } 7967 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MAX_MATCH) - (UInt((int32(strend) - int32(scan)) / 1))) 7968 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 7969 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 7970 } 7971 } 7972 7973 } 7974 7975 // Emit match if have run of MIN_MATCH or longer, else emit literal 7976 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 7977 7978 { 7979 var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH))) 7980 var dist Ush = Ush(1) 7981 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 7982 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 7983 dist-- 7984 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++ 7985 *(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 { 7986 if (int32(dist)) < 256 { 7987 return int32(X_dist_code[dist]) 7988 } 7989 return int32(X_dist_code[(256 + ((int32(dist)) >> 7))]) 7990 }()))*4 /* &.fc */))++ 7991 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 7992 } 7993 7994 *(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 7995 *(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length) 7996 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 7997 } else { 7998 // No match, output a literal byte 7999 8000 { 8001 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 8002 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 8003 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 8004 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 8005 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 8006 } 8007 8008 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 8009 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 8010 } 8011 if bflush != 0 { 8012 { 8013 X_tr_flush_block(tls, s, func() uintptr { 8014 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8015 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8016 } 8017 return uintptr(Z_NULL) 8018 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 8019 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8020 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8021 } 8022 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8023 if 0 != 0 { 8024 return Finish_started 8025 } 8026 return Need_more 8027 } 8028 } 8029 8030 } 8031 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 8032 if flush == Z_FINISH { 8033 { 8034 { 8035 X_tr_flush_block(tls, s, func() uintptr { 8036 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8037 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8038 } 8039 return uintptr(Z_NULL) 8040 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 8041 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8042 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8043 } 8044 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8045 if 1 != 0 { 8046 return Finish_started 8047 } 8048 return Need_more 8049 } 8050 } 8051 8052 return Finish_done 8053 } 8054 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 8055 { 8056 X_tr_flush_block(tls, s, func() uintptr { 8057 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8058 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8059 } 8060 return uintptr(Z_NULL) 8061 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 8062 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8063 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8064 } 8065 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8066 if 0 != 0 { 8067 return Finish_started 8068 } 8069 return Need_more 8070 } 8071 } 8072 8073 return Block_done 8074 } 8075 8076 // =========================================================================== 8077 // For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. 8078 // (It will be regenerated if this run of deflate switches away from Huffman.) 8079 func deflate_huff(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2130:19: */ 8080 var bflush int32 // set if current block must be flushed 8081 8082 for { 8083 // Make sure that we have a literal to write. 8084 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 8085 fill_window(tls, s) 8086 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 8087 if flush == Z_NO_FLUSH { 8088 return Need_more 8089 } 8090 break // flush the current block 8091 } 8092 } 8093 8094 // Output a literal byte 8095 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 8096 8097 { 8098 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 8099 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 8100 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 8101 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++ 8102 bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 8103 } 8104 8105 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 8106 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 8107 if bflush != 0 { 8108 { 8109 X_tr_flush_block(tls, s, func() uintptr { 8110 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8111 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8112 } 8113 return uintptr(Z_NULL) 8114 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 8115 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8116 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8117 } 8118 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8119 if 0 != 0 { 8120 return Finish_started 8121 } 8122 return Need_more 8123 } 8124 } 8125 8126 } 8127 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 8128 if flush == Z_FINISH { 8129 { 8130 { 8131 X_tr_flush_block(tls, s, func() uintptr { 8132 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8133 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8134 } 8135 return uintptr(Z_NULL) 8136 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1) 8137 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8138 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8139 } 8140 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8141 if 1 != 0 { 8142 return Finish_started 8143 } 8144 return Need_more 8145 } 8146 } 8147 8148 return Finish_done 8149 } 8150 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 8151 { 8152 X_tr_flush_block(tls, s, func() uintptr { 8153 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8154 return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) 8155 } 8156 return uintptr(Z_NULL) 8157 }(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0) 8158 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8159 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8160 } 8161 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8162 if 0 != 0 { 8163 return Finish_started 8164 } 8165 return Need_more 8166 } 8167 } 8168 8169 return Block_done 8170 } 8171 8172 // bits/types.h -- definitions of __*_t types underlying *_t types. 8173 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 8174 // This file is part of the GNU C Library. 8175 // 8176 // The GNU C Library is free software; you can redistribute it and/or 8177 // modify it under the terms of the GNU Lesser General Public 8178 // License as published by the Free Software Foundation; either 8179 // version 2.1 of the License, or (at your option) any later version. 8180 // 8181 // The GNU C Library is distributed in the hope that it will be useful, 8182 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8183 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8184 // Lesser General Public License for more details. 8185 // 8186 // You should have received a copy of the GNU Lesser General Public 8187 // License along with the GNU C Library; if not, see 8188 // <https://www.gnu.org/licenses/>. 8189 8190 // Never include this file directly; use <sys/types.h> instead. 8191 8192 // Integral type unchanged by default argument promotions that can 8193 // hold any value corresponding to members of the extended character 8194 // set, as well as at least one value that does not correspond to any 8195 // member of the extended character set. 8196 8197 // Conversion state information. 8198 type X__mbstate_t = struct { 8199 F__count int32 8200 F__value struct{ F__wch uint32 } 8201 } /* __mbstate_t.h:21:3 */ 8202 8203 // The tag name of this struct is _G_fpos_t to preserve historic 8204 // C++ mangled names for functions taking fpos_t arguments. 8205 // That name should not be used in new code. 8206 type X_G_fpos_t = struct { 8207 F__pos X__off_t 8208 F__state X__mbstate_t 8209 } /* __fpos_t.h:10:9 */ 8210 8211 // The tag name of this struct is _G_fpos_t to preserve historic 8212 // C++ mangled names for functions taking fpos_t arguments. 8213 // That name should not be used in new code. 8214 type X__fpos_t = X_G_fpos_t /* __fpos_t.h:14:3 */ 8215 8216 // bits/types.h -- definitions of __*_t types underlying *_t types. 8217 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 8218 // This file is part of the GNU C Library. 8219 // 8220 // The GNU C Library is free software; you can redistribute it and/or 8221 // modify it under the terms of the GNU Lesser General Public 8222 // License as published by the Free Software Foundation; either 8223 // version 2.1 of the License, or (at your option) any later version. 8224 // 8225 // The GNU C Library is distributed in the hope that it will be useful, 8226 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8227 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8228 // Lesser General Public License for more details. 8229 // 8230 // You should have received a copy of the GNU Lesser General Public 8231 // License along with the GNU C Library; if not, see 8232 // <https://www.gnu.org/licenses/>. 8233 8234 // Never include this file directly; use <sys/types.h> instead. 8235 8236 // The tag name of this struct is _G_fpos64_t to preserve historic 8237 // C++ mangled names for functions taking fpos_t and/or fpos64_t 8238 // arguments. That name should not be used in new code. 8239 type X_G_fpos64_t = struct { 8240 F__pos X__off64_t 8241 F__state X__mbstate_t 8242 } /* __fpos64_t.h:10:9 */ 8243 8244 // bits/types.h -- definitions of __*_t types underlying *_t types. 8245 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 8246 // This file is part of the GNU C Library. 8247 // 8248 // The GNU C Library is free software; you can redistribute it and/or 8249 // modify it under the terms of the GNU Lesser General Public 8250 // License as published by the Free Software Foundation; either 8251 // version 2.1 of the License, or (at your option) any later version. 8252 // 8253 // The GNU C Library is distributed in the hope that it will be useful, 8254 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8255 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8256 // Lesser General Public License for more details. 8257 // 8258 // You should have received a copy of the GNU Lesser General Public 8259 // License along with the GNU C Library; if not, see 8260 // <https://www.gnu.org/licenses/>. 8261 8262 // Never include this file directly; use <sys/types.h> instead. 8263 8264 // The tag name of this struct is _G_fpos64_t to preserve historic 8265 // C++ mangled names for functions taking fpos_t and/or fpos64_t 8266 // arguments. That name should not be used in new code. 8267 type X__fpos64_t = X_G_fpos64_t /* __fpos64_t.h:14:3 */ 8268 8269 type X_IO_FILE = struct { 8270 F_flags int32 8271 F_IO_read_ptr uintptr 8272 F_IO_read_end uintptr 8273 F_IO_read_base uintptr 8274 F_IO_write_base uintptr 8275 F_IO_write_ptr uintptr 8276 F_IO_write_end uintptr 8277 F_IO_buf_base uintptr 8278 F_IO_buf_end uintptr 8279 F_IO_save_base uintptr 8280 F_IO_backup_base uintptr 8281 F_IO_save_end uintptr 8282 F_markers uintptr 8283 F_chain uintptr 8284 F_fileno int32 8285 F_flags2 int32 8286 F_old_offset X__off_t 8287 F_cur_column uint16 8288 F_vtable_offset int8 8289 F_shortbuf [1]uint8 8290 F_lock uintptr 8291 F__ccgo_pad1 [4]byte 8292 F_offset X__off64_t 8293 F_codecvt uintptr 8294 F_wide_data uintptr 8295 F_freeres_list uintptr 8296 F_freeres_buf uintptr 8297 F__pad5 Size_t 8298 F_mode int32 8299 F_unused2 [40]uint8 8300 } /* __FILE.h:4:1 */ 8301 8302 type X__FILE = X_IO_FILE /* __FILE.h:5:25 */ 8303 8304 // The opaque type of streams. This is the definition used elsewhere. 8305 type FILE = X_IO_FILE /* FILE.h:7:25 */ 8306 8307 type Off_t1 = X__off_t /* stdio.h:63:17 */ 8308 8309 // The type of the second argument to `fgetpos' and `fsetpos'. 8310 type Fpos_t = X__fpos_t /* stdio.h:84:18 */ 8311 type Fpos64_t = X__fpos64_t /* stdio.h:89:20 */ 8312 8313 type Ino_t1 = X__ino_t /* types.h:47:17 */ 8314 8315 // Types from the Large File Support interface. 8316 type Blkcnt_t1 = X__blkcnt_t /* types.h:192:20 */ // Type to count number of disk blocks. 8317 type Fsblkcnt_t1 = X__fsblkcnt_t /* types.h:196:22 */ // Type to count file system blocks. 8318 type Fsfilcnt_t1 = X__fsfilcnt_t /* types.h:200:22 */ 8319 8320 type Flock64 = struct { 8321 Fl_type int16 8322 Fl_whence int16 8323 F__ccgo_pad1 [4]byte 8324 Fl_start X__off64_t 8325 Fl_len X__off64_t 8326 Fl_pid X__pid_t 8327 F__ccgo_pad2 [4]byte 8328 } /* fcntl.h:43:1 */ 8329 8330 type Stat64 = struct { 8331 Fst_dev X__dev_t 8332 F__pad1 uint32 8333 F__st_ino X__ino_t 8334 Fst_mode X__mode_t 8335 Fst_nlink X__nlink_t 8336 Fst_uid X__uid_t 8337 Fst_gid X__gid_t 8338 Fst_rdev X__dev_t 8339 F__pad2 uint32 8340 F__ccgo_pad1 [4]byte 8341 Fst_size X__off64_t 8342 Fst_blksize X__blksize_t 8343 F__ccgo_pad2 [4]byte 8344 Fst_blocks X__blkcnt64_t 8345 Fst_atim struct { 8346 Ftv_sec X__time_t 8347 Ftv_nsec X__syscall_slong_t 8348 } 8349 Fst_mtim struct { 8350 Ftv_sec X__time_t 8351 Ftv_nsec X__syscall_slong_t 8352 } 8353 Fst_ctim struct { 8354 Ftv_sec X__time_t 8355 Ftv_nsec X__syscall_slong_t 8356 } 8357 Fst_ino X__ino64_t 8358 } /* stat.h:95:1 */ 8359 8360 // provide prototypes for these when building zlib without LFS 8361 8362 // default memLevel 8363 8364 // default i/o buffer size -- double this for output when reading (this and 8365 // twice this must be able to fit in an unsigned type) 8366 8367 // gzip modes, also provide a little integrity check on the passed structure 8368 8369 // values for gz_state how 8370 8371 // internal gzip file state data structure 8372 type Gz_state = struct { 8373 Fx GzFile_s 8374 Fmode int32 8375 Ffd int32 8376 Fpath uintptr 8377 Fsize uint32 8378 Fwant uint32 8379 Fin uintptr 8380 Fout uintptr 8381 Fdirect int32 8382 Fhow int32 8383 F__ccgo_pad1 [4]byte 8384 Fstart Off64_t 8385 Feof int32 8386 Fpast int32 8387 Flevel int32 8388 Fstrategy int32 8389 Fskip Off64_t 8390 Fseek int32 8391 Ferr int32 8392 Fmsg uintptr 8393 Fstrm Z_stream 8394 F__ccgo_pad2 [4]byte 8395 } /* gzguts.h:201:3 */ 8396 type Gz_statep = uintptr /* gzguts.h:202:22 */ 8397 8398 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 8399 // value -- needed when comparing unsigned to z_off64_t, which is signed 8400 // (possible z_off64_t types off_t, off64_t, and long are all signed) 8401 8402 // gzclose() is in a separate file so that it is linked in only if it is used. 8403 // That way the other gzclose functions can be used instead to avoid linking in 8404 // unneeded compression or decompression routines. 8405 func Xgzclose(tls *libc.TLS, file GzFile) int32 { /* gzclose.c:11:13: */ 8406 var state Gz_statep 8407 8408 if file == (uintptr(0)) { 8409 return -2 8410 } 8411 state = file 8412 8413 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8414 return Xgzclose_r(tls, file) 8415 } 8416 return Xgzclose_w(tls, file) 8417 } 8418 8419 // Reset gzip file state 8420 func gz_reset(tls *libc.TLS, state Gz_statep) { /* gzlib.c:75:12: */ 8421 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) // no output data available 8422 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // for reading ... 8423 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 // not at end of file 8424 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 // have not read past end yet 8425 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK // look for gzip header 8426 } 8427 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 // no seek request pending 8428 Xgz_error(tls, state, Z_OK, uintptr(0)) // clear error 8429 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos = int64(0) // no uncompressed data yet 8430 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) // no input data yet 8431 } 8432 8433 // Open a gzip file either by name or file descriptor. 8434 func gz_open(tls *libc.TLS, path uintptr, fd int32, mode uintptr) GzFile { /* gzlib.c:91:14: */ 8435 bp := tls.Alloc(16) 8436 defer tls.Free(16) 8437 8438 var state Gz_statep 8439 var len Z_size_t 8440 var oflag int32 8441 var cloexec int32 = 0 8442 var exclusive int32 = 0 8443 8444 // check input 8445 if path == (uintptr(0)) { 8446 return uintptr(0) 8447 } 8448 8449 // allocate gzFile structure to return 8450 state = libc.Xmalloc(tls, uint32(unsafe.Sizeof(Gz_state{}))) 8451 if state == (uintptr(0)) { 8452 return uintptr(0) 8453 } 8454 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) // no buffers allocated yet 8455 (*Gz_state)(unsafe.Pointer(state)).Fwant = uint32(GZBUFSIZE) // requested buffer size 8456 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) // no error message yet 8457 8458 // interpret mode 8459 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_NONE 8460 (*Gz_state)(unsafe.Pointer(state)).Flevel = -1 8461 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_DEFAULT_STRATEGY 8462 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 8463 for *(*uint8)(unsafe.Pointer(mode)) != 0 { 8464 if (int32(*(*uint8)(unsafe.Pointer(mode))) >= '0') && (int32(*(*uint8)(unsafe.Pointer(mode))) <= '9') { 8465 (*Gz_state)(unsafe.Pointer(state)).Flevel = (int32(*(*uint8)(unsafe.Pointer(mode))) - '0') 8466 } else { 8467 switch int32(*(*uint8)(unsafe.Pointer(mode))) { 8468 case 'r': 8469 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_READ 8470 break 8471 fallthrough 8472 case 'w': 8473 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE 8474 break 8475 fallthrough 8476 case 'a': 8477 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_APPEND 8478 break 8479 fallthrough 8480 case '+': // can't read and write at the same time 8481 libc.Xfree(tls, state) 8482 return uintptr(0) 8483 fallthrough 8484 case 'b': // ignore -- will request binary anyway 8485 break 8486 fallthrough 8487 case 'e': 8488 cloexec = 1 8489 break 8490 fallthrough 8491 case 'x': 8492 exclusive = 1 8493 break 8494 fallthrough 8495 case 'f': 8496 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FILTERED 8497 break 8498 fallthrough 8499 case 'h': 8500 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_HUFFMAN_ONLY 8501 break 8502 fallthrough 8503 case 'R': 8504 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_RLE 8505 break 8506 fallthrough 8507 case 'F': 8508 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FIXED 8509 break 8510 fallthrough 8511 case 'T': 8512 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 8513 break 8514 fallthrough 8515 default: // could consider as an error, but just ignore 8516 8517 } 8518 } 8519 mode++ 8520 } 8521 8522 // must provide an "r", "w", or "a" 8523 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_NONE { 8524 libc.Xfree(tls, state) 8525 return uintptr(0) 8526 } 8527 8528 // can't force transparent read 8529 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8530 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 8531 libc.Xfree(tls, state) 8532 return uintptr(0) 8533 } 8534 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 // for empty file 8535 } 8536 8537 // save the path name for error messages 8538 len = libc.Xstrlen(tls, path) 8539 (*Gz_state)(unsafe.Pointer(state)).Fpath = libc.Xmalloc(tls, (len + Z_size_t(1))) 8540 if (*Gz_state)(unsafe.Pointer(state)).Fpath == (uintptr(0)) { 8541 libc.Xfree(tls, state) 8542 return uintptr(0) 8543 } 8544 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath, (len + Z_size_t(1)), ts+76 /* "%s" */, libc.VaList(bp, path)) 8545 8546 // compute the flags for open() 8547 oflag = ((0400000 | (func() int32 { 8548 if cloexec != 0 { 8549 return 02000000 8550 } 8551 return 0 8552 }())) | (func() int32 { 8553 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8554 return O_RDONLY 8555 } 8556 return (((O_WRONLY | O_CREAT) | (func() int32 { 8557 if exclusive != 0 { 8558 return O_EXCL 8559 } 8560 return 0 8561 }())) | (func() int32 { 8562 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_WRITE { 8563 return O_TRUNC 8564 } 8565 return O_APPEND 8566 }())) 8567 }())) 8568 8569 // open the file with the appropriate flags (or just use fd) 8570 (*Gz_state)(unsafe.Pointer(state)).Ffd = func() int32 { 8571 if fd > -1 { 8572 return fd 8573 } 8574 return libc.Xopen(tls, path, oflag, libc.VaList(bp+8, 0666)) 8575 }() 8576 if (*Gz_state)(unsafe.Pointer(state)).Ffd == -1 { 8577 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 8578 libc.Xfree(tls, state) 8579 return uintptr(0) 8580 } 8581 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_APPEND { 8582 libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_END) // so gzoffset() is correct 8583 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE // simplify later checks 8584 } 8585 8586 // save the current position for rewinding (only if reading) 8587 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8588 (*Gz_state)(unsafe.Pointer(state)).Fstart = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 8589 if (*Gz_state)(unsafe.Pointer(state)).Fstart == int64(-1) { 8590 (*Gz_state)(unsafe.Pointer(state)).Fstart = int64(0) 8591 } 8592 } 8593 8594 // initialize stream 8595 gz_reset(tls, state) 8596 8597 // return stream 8598 return state 8599 } 8600 8601 // -- see zlib.h -- 8602 func Xgzopen(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:270:16: */ 8603 return gz_open(tls, path, -1, mode) 8604 } 8605 8606 // -- see zlib.h -- 8607 func Xgzopen64(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:278:16: */ 8608 return gz_open(tls, path, -1, mode) 8609 } 8610 8611 // -- see zlib.h -- 8612 func Xgzdopen(tls *libc.TLS, fd int32, mode uintptr) GzFile { /* gzlib.c:286:16: */ 8613 bp := tls.Alloc(8) 8614 defer tls.Free(8) 8615 8616 var path uintptr // identifier for error messages 8617 var gz GzFile 8618 8619 if (fd == -1) || ((libc.AssignUintptr(&path, libc.Xmalloc(tls, (uint32(7)+(uint32(3)*uint32(unsafe.Sizeof(int32(0)))))))) == (uintptr(0))) { 8620 return uintptr(0) 8621 } 8622 libc.Xsnprintf(tls, path, (uint32(7) + (uint32(3) * uint32(unsafe.Sizeof(int32(0))))), ts+79 /* "<fd:%d>" */, libc.VaList(bp, fd)) 8623 gz = gz_open(tls, path, fd, mode) 8624 libc.Xfree(tls, path) 8625 return gz 8626 } 8627 8628 // -- see zlib.h -- 8629 8630 // -- see zlib.h -- 8631 func Xgzbuffer(tls *libc.TLS, file GzFile, size uint32) int32 { /* gzlib.c:316:13: */ 8632 var state Gz_statep 8633 8634 // get internal structure and check integrity 8635 if file == (uintptr(0)) { 8636 return -1 8637 } 8638 state = file 8639 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8640 return -1 8641 } 8642 8643 // make sure we haven't already allocated memory 8644 if (*Gz_state)(unsafe.Pointer(state)).Fsize != uint32(0) { 8645 return -1 8646 } 8647 8648 // check and set requested size 8649 if (size << 1) < size { 8650 return -1 8651 } // need to be able to double it 8652 if size < uint32(2) { 8653 size = uint32(2) 8654 } // need two bytes to check magic header 8655 (*Gz_state)(unsafe.Pointer(state)).Fwant = size 8656 return 0 8657 } 8658 8659 // -- see zlib.h -- 8660 func Xgzrewind(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:343:13: */ 8661 var state Gz_statep 8662 8663 // get internal structure 8664 if file == (uintptr(0)) { 8665 return -1 8666 } 8667 state = file 8668 8669 // check that we're reading and that there's no error 8670 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 8671 return -1 8672 } 8673 8674 // back up and start over 8675 if libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fstart, SEEK_SET) == int64(-1) { 8676 return -1 8677 } 8678 gz_reset(tls, state) 8679 return 0 8680 } 8681 8682 // -- see zlib.h -- 8683 func Xgzseek64(tls *libc.TLS, file GzFile, offset Off64_t, whence int32) Off64_t { /* gzlib.c:366:19: */ 8684 var n uint32 8685 var ret Off64_t 8686 var state Gz_statep 8687 8688 // get internal structure and check integrity 8689 if file == (uintptr(0)) { 8690 return int64(-1) 8691 } 8692 state = file 8693 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8694 return int64(-1) 8695 } 8696 8697 // check that there's no error 8698 if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 8699 return int64(-1) 8700 } 8701 8702 // can only seek from start or relative to current position 8703 if (whence != SEEK_SET) && (whence != SEEK_CUR) { 8704 return int64(-1) 8705 } 8706 8707 // normalize offset to a SEEK_CUR specification 8708 if whence == SEEK_SET { 8709 offset = offset - ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos) 8710 } else if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8711 offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fskip) 8712 } 8713 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8714 8715 // if within raw area while reading, just go there 8716 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)) { 8717 ret = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (offset - Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)), SEEK_CUR) 8718 if ret == int64(-1) { 8719 return int64(-1) 8720 } 8721 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 8722 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 8723 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 8724 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 8725 Xgz_error(tls, state, Z_OK, uintptr(0)) 8726 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 8727 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (offset) 8728 return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos 8729 } 8730 8731 // calculate skip amount, rewinding if needed for back seek when reading 8732 if offset < int64(0) { 8733 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { // writing -- can't go backwards 8734 return int64(-1) 8735 } 8736 offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos) 8737 if offset < int64(0) { // before start of file! 8738 return int64(-1) 8739 } 8740 if Xgzrewind(tls, file) == -1 { // rewind, then skip to offset 8741 return int64(-1) 8742 } 8743 } 8744 8745 // if reading, skip what's in output buffer (one less gzgetc() check) 8746 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8747 if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > offset) { 8748 n = uint32(offset) 8749 } else { 8750 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 8751 } 8752 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 8753 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n)) 8754 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n)) 8755 offset = offset - (Off64_t(n)) 8756 } 8757 8758 // request skip (if not zero) 8759 if offset != 0 { 8760 (*Gz_state)(unsafe.Pointer(state)).Fseek = 1 8761 (*Gz_state)(unsafe.Pointer(state)).Fskip = offset 8762 } 8763 return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset) 8764 } 8765 8766 // -- see zlib.h -- 8767 func Xgzseek(tls *libc.TLS, file GzFile, offset Off_t1, whence int32) Off_t1 { /* gzlib.c:443:17: */ 8768 var ret Off64_t 8769 8770 ret = Xgzseek64(tls, file, Off64_t(offset), whence) 8771 if ret == Off64_t(Off_t1(ret)) { 8772 return Off_t1(ret) 8773 } 8774 return -1 8775 } 8776 8777 // -- see zlib.h -- 8778 func Xgztell64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:455:19: */ 8779 var state Gz_statep 8780 8781 // get internal structure and check integrity 8782 if file == (uintptr(0)) { 8783 return int64(-1) 8784 } 8785 state = file 8786 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8787 return int64(-1) 8788 } 8789 8790 // return position 8791 return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + (func() int64 { 8792 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 8793 return (*Gz_state)(unsafe.Pointer(state)).Fskip 8794 } 8795 return int64(0) 8796 }())) 8797 } 8798 8799 // -- see zlib.h -- 8800 func Xgztell(tls *libc.TLS, file GzFile) Off_t1 { /* gzlib.c:472:17: */ 8801 var ret Off64_t 8802 8803 ret = Xgztell64(tls, file) 8804 if ret == Off64_t(Off_t1(ret)) { 8805 return Off_t1(ret) 8806 } 8807 return -1 8808 } 8809 8810 // -- see zlib.h -- 8811 func Xgzoffset64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:482:19: */ 8812 var offset Off64_t 8813 var state Gz_statep 8814 8815 // get internal structure and check integrity 8816 if file == (uintptr(0)) { 8817 return int64(-1) 8818 } 8819 state = file 8820 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8821 return int64(-1) 8822 } 8823 8824 // compute and return effective offset in file 8825 offset = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 8826 if offset == int64(-1) { 8827 return int64(-1) 8828 } 8829 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // reading 8830 offset = offset - (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in)) 8831 } // don't count buffered input 8832 return offset 8833 } 8834 8835 // -- see zlib.h -- 8836 func Xgzoffset(tls *libc.TLS, file GzFile) Off_t1 { /* gzlib.c:505:17: */ 8837 var ret Off64_t 8838 8839 ret = Xgzoffset64(tls, file) 8840 if ret == Off64_t(Off_t1(ret)) { 8841 return Off_t1(ret) 8842 } 8843 return -1 8844 } 8845 8846 // -- see zlib.h -- 8847 func Xgzeof(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:515:13: */ 8848 var state Gz_statep 8849 8850 // get internal structure and check integrity 8851 if file == (uintptr(0)) { 8852 return 0 8853 } 8854 state = file 8855 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8856 return 0 8857 } 8858 8859 // return end-of-file state 8860 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8861 return (*Gz_state)(unsafe.Pointer(state)).Fpast 8862 } 8863 return 0 8864 } 8865 8866 // -- see zlib.h -- 8867 func Xgzerror(tls *libc.TLS, file GzFile, errnum uintptr) uintptr { /* gzlib.c:532:12: */ 8868 var state Gz_statep 8869 8870 // get internal structure and check integrity 8871 if file == (uintptr(0)) { 8872 return uintptr(0) 8873 } 8874 state = file 8875 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8876 return uintptr(0) 8877 } 8878 8879 // return error information 8880 if errnum != (uintptr(0)) { 8881 *(*int32)(unsafe.Pointer(errnum)) = (*Gz_state)(unsafe.Pointer(state)).Ferr 8882 } 8883 if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-4) { 8884 return ts + 87 /* "out of memory" */ 8885 } 8886 return func() uintptr { 8887 if (*Gz_state)(unsafe.Pointer(state)).Fmsg == (uintptr(0)) { 8888 return ts + 101 /* "" */ 8889 } 8890 return (*Gz_state)(unsafe.Pointer(state)).Fmsg 8891 }() 8892 } 8893 8894 // -- see zlib.h -- 8895 func Xgzclearerr(tls *libc.TLS, file GzFile) { /* gzlib.c:553:14: */ 8896 var state Gz_statep 8897 8898 // get internal structure and check integrity 8899 if file == (uintptr(0)) { 8900 return 8901 } 8902 state = file 8903 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) { 8904 return 8905 } 8906 8907 // clear error and end-of-file 8908 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8909 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 8910 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 8911 } 8912 Xgz_error(tls, state, Z_OK, uintptr(0)) 8913 } 8914 8915 // Create an error message in allocated memory and set state->err and 8916 // state->msg accordingly. Free any previous error message already there. Do 8917 // not try to free or allocate space if the error is Z_MEM_ERROR (out of 8918 // memory). Simply save the error message as a static string. If there is an 8919 // allocation failure constructing the error message, then convert the error to 8920 // out of memory. 8921 func Xgz_error(tls *libc.TLS, state Gz_statep, err int32, msg uintptr) { /* gzlib.c:579:20: */ 8922 bp := tls.Alloc(24) 8923 defer tls.Free(24) 8924 8925 // free previously allocated message and clear 8926 if (*Gz_state)(unsafe.Pointer(state)).Fmsg != (uintptr(0)) { 8927 if (*Gz_state)(unsafe.Pointer(state)).Ferr != (-4) { 8928 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg) 8929 } 8930 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) 8931 } 8932 8933 // if fatal, set state->x.have to 0 so that the gzgetc() macro fails 8934 if (err != Z_OK) && (err != (-5)) { 8935 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 8936 } 8937 8938 // set error code, and if no message, then done 8939 (*Gz_state)(unsafe.Pointer(state)).Ferr = err 8940 if msg == (uintptr(0)) { 8941 return 8942 } 8943 8944 // for an out of memory error, return literal string when requested 8945 if err == (-4) { 8946 return 8947 } 8948 8949 // construct error message with path 8950 if (libc.AssignPtrUintptr(state+96 /* &.msg */, libc.Xmalloc(tls, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg))+Size_t(3))))) == (uintptr(0)) { 8951 (*Gz_state)(unsafe.Pointer(state)).Ferr = -4 8952 return 8953 } 8954 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) + libc.Xstrlen(tls, msg)) + Size_t(3)), 8955 ts+102 /* "%s%s%s" */, libc.VaList(bp, (*Gz_state)(unsafe.Pointer(state)).Fpath, ts+109 /* ": " */, msg)) 8956 } 8957 8958 // Use read() to load a buffer -- return -1 on error, otherwise 0. Read from 8959 // state->fd, and update state->eof, state->err, and state->msg as appropriate. 8960 // This function needs to loop on read(), since read() is not guaranteed to 8961 // read the number of bytes requested, depending on the type of descriptor. 8962 func gz_load(tls *libc.TLS, state Gz_statep, buf uintptr, len uint32, have uintptr) int32 { /* gzread.c:21:11: */ 8963 var ret int32 8964 var get uint32 8965 var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1)) 8966 8967 *(*uint32)(unsafe.Pointer(have)) = uint32(0) 8968 for ok := true; ok; ok = (*(*uint32)(unsafe.Pointer(have)) < len) { 8969 get = (len - *(*uint32)(unsafe.Pointer(have))) 8970 if get > max { 8971 get = max 8972 } 8973 ret = libc.Xread(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (buf + uintptr(*(*uint32)(unsafe.Pointer(have)))), get) 8974 if ret <= 0 { 8975 break 8976 } 8977 *(*uint32)(unsafe.Pointer(have)) += (uint32(ret)) 8978 } 8979 if ret < 0 { 8980 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 8981 return -1 8982 } 8983 if ret == 0 { 8984 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 8985 } 8986 return 0 8987 } 8988 8989 // Load up input buffer and set eof flag if last data loaded -- return -1 on 8990 // error, 0 otherwise. Note that the eof flag is set when the end of the input 8991 // file is reached, even though there may be unused data in the buffer. Once 8992 // that data has been used, no more attempts will be made to read the file. 8993 // If strm->avail_in != 0, then the current data is moved to the beginning of 8994 // the input buffer, and then the remainder of the buffer is loaded with the 8995 // available data from the input file. 8996 func gz_avail(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:56:11: */ 8997 bp := tls.Alloc(4) 8998 defer tls.Free(4) 8999 9000 // var got uint32 at bp, 4 9001 9002 var strm Z_streamp = (state + 100 /* &.strm */) 9003 9004 if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 9005 return -1 9006 } 9007 if (*Gz_state)(unsafe.Pointer(state)).Feof == 0 { 9008 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { // copy what's there to the start 9009 var p uintptr = (*Gz_state)(unsafe.Pointer(state)).Fin 9010 var q uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 9011 var n uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9012 for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 { 9013 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) 9014 } 9015 } 9016 if gz_load(tls, state, ((*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)), 9017 ((*Gz_state)(unsafe.Pointer(state)).Fsize-(*Z_stream)(unsafe.Pointer(strm)).Favail_in), bp /* &got */) == -1 { 9018 return -1 9019 } 9020 *(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) += (*(*uint32)(unsafe.Pointer(bp /* got */))) 9021 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 9022 } 9023 return 0 9024 } 9025 9026 // Look for gzip header, set up for inflate or copy. state->x.have must be 0. 9027 // If this is the first time in, allocate required memory. state->how will be 9028 // left unchanged if there is no more input data available, will be set to COPY 9029 // if there is no gzip header and direct copying will be performed, or it will 9030 // be set to GZIP for decompression. If direct copying, then leftover input 9031 // data from the input buffer will be copied to the output buffer. In that 9032 // case, all further file reads will be directly to either the output buffer or 9033 // a user buffer. If decompressing, the inflate state will be initialized. 9034 // gz_look() will return 0 on success or -1 on failure. 9035 func gz_look(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:91:11: */ 9036 var strm Z_streamp = (state + 100 /* &.strm */) 9037 9038 // allocate read buffers and inflate memory 9039 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) { 9040 // allocate buffers 9041 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, (*Gz_state)(unsafe.Pointer(state)).Fwant) 9042 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, ((*Gz_state)(unsafe.Pointer(state)).Fwant << 1)) 9043 if ((*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0))) || ((*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0))) { 9044 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9045 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9046 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9047 return -1 9048 } 9049 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 9050 9051 // allocate inflate memory 9052 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzalloc = Alloc_func(Z_NULL) 9053 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzfree = Free_func(Z_NULL) 9054 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fopaque = Voidpf(Z_NULL) 9055 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 9056 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = uintptr(Z_NULL) 9057 if (XinflateInit2_(tls, (state+100 /* &.strm */), (15+16), ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) != Z_OK) { // gunzip 9058 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9059 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9060 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) 9061 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9062 return -1 9063 } 9064 } 9065 9066 // get at least the magic bytes in the input buffer 9067 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in < UInt(2) { 9068 if gz_avail(tls, state) == -1 { 9069 return -1 9070 } 9071 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 9072 return 0 9073 } 9074 } 9075 9076 // look for gzip magic bytes -- if there, do gzip decoding (note: there is 9077 // a logical dilemma here when considering the case of a partially written 9078 // gzip file, to wit, if a single 31 byte is written, then we cannot tell 9079 // whether this is a single-byte file, or just a partially written gzip 9080 // file -- for here we assume that if a gzip file is being written, then 9081 // the header will be written in a single operation, so that reading a 9082 // single byte is sufficient indication that it is not a gzip file) 9083 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) { 9084 XinflateReset(tls, strm) 9085 (*Gz_state)(unsafe.Pointer(state)).Fhow = /* GZIP */ 2 9086 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 9087 return 0 9088 } 9089 9090 // no gzip header -- if we were decoding gzip before, then this is trailing 9091 // garbage. Ignore the trailing garbage and finish. 9092 if (*Gz_state)(unsafe.Pointer(state)).Fdirect == 0 { 9093 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 9094 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 9095 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9096 return 0 9097 } 9098 9099 // doing raw i/o, copy any leftover input to output -- this assumes that 9100 // the output buffer is larger than the input buffer, which also assures 9101 // space for gzungetc() 9102 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 9103 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 9104 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in) 9105 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9106 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 9107 } 9108 (*Gz_state)(unsafe.Pointer(state)).Fhow = COPY1 9109 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 9110 return 0 9111 } 9112 9113 // Decompress from input to the provided next_out and avail_out in the state. 9114 // On return, state->x.have and state->x.next point to the just decompressed 9115 // data. If the gzip stream completes, state->how is reset to LOOK to look for 9116 // the next gzip stream or raw data, once state->x.have is depleted. Returns 0 9117 // on success, -1 on failure. 9118 func gz_decomp(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:175:11: */ 9119 var ret int32 = Z_OK 9120 var had uint32 9121 var strm Z_streamp = (state + 100 /* &.strm */) 9122 9123 // fill output buffer up to end of deflate stream 9124 had = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 9125 for ok := true; ok; ok = (((*Z_stream)(unsafe.Pointer(strm)).Favail_out != 0) && (ret != Z_STREAM_END)) { 9126 // get more input for inflate() 9127 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && (gz_avail(tls, state) == -1) { 9128 return -1 9129 } 9130 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 9131 Xgz_error(tls, state, -5, ts+112 /* "unexpected end o..." */) 9132 break 9133 } 9134 9135 // decompress and handle errors 9136 ret = Xinflate(tls, strm, Z_NO_FLUSH) 9137 if (ret == (-2)) || (ret == Z_NEED_DICT) { 9138 Xgz_error(tls, state, -2, 9139 ts+135 /* "internal error: ..." */) 9140 return -1 9141 } 9142 if ret == (-4) { 9143 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9144 return -1 9145 } 9146 if ret == (-3) { // deflate stream invalid 9147 Xgz_error(tls, state, -3, 9148 func() uintptr { 9149 if (*Z_stream)(unsafe.Pointer(strm)).Fmsg == (uintptr(0)) { 9150 return ts + 174 /* "compressed data ..." */ 9151 } 9152 return (*Z_stream)(unsafe.Pointer(strm)).Fmsg 9153 }()) 9154 return -1 9155 } 9156 } 9157 9158 // update available output 9159 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (had - (*Z_stream)(unsafe.Pointer(strm)).Favail_out) 9160 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)) 9161 9162 // if the gzip stream completed successfully, look for another 9163 if ret == Z_STREAM_END { 9164 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK 9165 } 9166 9167 // good decompression 9168 return 0 9169 } 9170 9171 // Fetch data and put it in the output buffer. Assumes state->x.have is 0. 9172 // Data is either copied from the input file or decompressed from the input 9173 // file depending on state->how. If state->how is LOOK, then a gzip header is 9174 // looked for to determine whether to copy or decompress. Returns -1 on error, 9175 // otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the 9176 // end of the input file has been reached and all data has been processed. 9177 func gz_fetch(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:229:11: */ 9178 var strm Z_streamp = (state + 100 /* &.strm */) 9179 9180 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))) { 9181 switch (*Gz_state)(unsafe.Pointer(state)).Fhow { 9182 case LOOK: // -> LOOK, COPY (only if never GZIP), or GZIP 9183 if gz_look(tls, state) == -1 { 9184 return -1 9185 } 9186 if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK { 9187 return 0 9188 } 9189 break 9190 case COPY1: // -> COPY 9191 if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fout, ((*Gz_state)(unsafe.Pointer(state)).Fsize<<1), (state /* &.x */ /* &.have */)) == 9192 -1 { 9193 return -1 9194 } 9195 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 9196 return 0 9197 case /* GZIP */ 2: // -> GZIP or LOOK (if end of gzip stream) 9198 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) 9199 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 9200 if gz_decomp(tls, state) == -1 { 9201 return -1 9202 } 9203 } 9204 } 9205 return 0 9206 } 9207 9208 // Skip len uncompressed bytes of output. Return -1 on error, 0 on success. 9209 func gz_skip(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzread.c:259:11: */ 9210 var n uint32 9211 9212 // skip over len bytes or reach end-of-file, whichever comes first 9213 for len != 0 { 9214 // skip over whatever is in output buffer 9215 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9216 if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > len) { 9217 n = uint32(len) 9218 } else { 9219 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9220 } 9221 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 9222 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n)) 9223 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n)) 9224 len = len - (Off64_t(n)) 9225 } else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) { 9226 break 9227 } else { 9228 // get more output, looking for header if required 9229 if gz_fetch(tls, state) == -1 { 9230 return -1 9231 } 9232 } 9233 } 9234 return 0 9235 } 9236 9237 // Read len bytes into buf from file, or less than len up to the end of the 9238 // input. Return the number of bytes read. If zero is returned, either the 9239 // end of file was reached, or there was an error. state->err must be 9240 // consulted in that case to determine which. 9241 func gz_read(tls *libc.TLS, state Gz_statep, buf Voidp, len Z_size_t) Z_size_t { /* gzread.c:294:16: */ 9242 bp := tls.Alloc(4) 9243 defer tls.Free(4) 9244 9245 var got Z_size_t 9246 // var n uint32 at bp, 4 9247 9248 // if len is zero, avoid unnecessary operations 9249 if len == Z_size_t(0) { 9250 return Z_size_t(0) 9251 } 9252 9253 // process a skip request 9254 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9255 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9256 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9257 return Z_size_t(0) 9258 } 9259 } 9260 9261 // get len bytes to buf, or less than len if at the end 9262 got = Z_size_t(0) 9263 for ok := true; ok; ok = len != 0 { 9264 // set n to the maximum amount of len that fits in an unsigned int 9265 *(*uint32)(unsafe.Pointer(bp /* n */)) = libc.Uint32FromInt32(-1) 9266 if *(*uint32)(unsafe.Pointer(bp /* n */)) > len { 9267 *(*uint32)(unsafe.Pointer(bp /* n */)) = len 9268 } 9269 9270 // first just try copying data from the output buffer 9271 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9272 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave < *(*uint32)(unsafe.Pointer(bp /* n */)) { 9273 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9274 } 9275 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, *(*uint32)(unsafe.Pointer(bp /* n */))) 9276 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(*(*uint32)(unsafe.Pointer(bp /* n */)))) 9277 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (*(*uint32)(unsafe.Pointer(bp /* n */))) 9278 } else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) { 9279 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // tried to read past end 9280 break 9281 } else if ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK) || (*(*uint32)(unsafe.Pointer(bp /* n */)) < ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)) { 9282 // get more output, looking for header if required 9283 if gz_fetch(tls, state) == -1 { 9284 return Z_size_t(0) 9285 } 9286 continue // no progress yet -- go back to copy above 9287 // the copy above assures that we will leave with space in the 9288 // output buffer, allowing at least one gzungetc() to succeed 9289 } else if (*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1 { // read directly 9290 if gz_load(tls, state, buf, *(*uint32)(unsafe.Pointer(bp /* n */)), bp /* &n */) == -1 { 9291 return Z_size_t(0) 9292 } 9293 } else { // state->how == GZIP 9294 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_out = *(*uint32)(unsafe.Pointer(bp /* n */)) 9295 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_out = buf 9296 if gz_decomp(tls, state) == -1 { 9297 return Z_size_t(0) 9298 } 9299 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9300 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9301 } 9302 9303 // update progress 9304 len = len - (*(*uint32)(unsafe.Pointer(bp /* n */))) 9305 buf = (buf + uintptr(*(*uint32)(unsafe.Pointer(bp /* n */)))) 9306 got = got + (*(*uint32)(unsafe.Pointer(bp /* n */))) 9307 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(*(*uint32)(unsafe.Pointer(bp /* n */)))) 9308 } 9309 9310 // return number of bytes read into user buffer 9311 return got 9312 } 9313 9314 // -- see zlib.h -- 9315 func Xgzread(tls *libc.TLS, file GzFile, buf Voidp, len uint32) int32 { /* gzread.c:375:13: */ 9316 var state Gz_statep 9317 9318 // get internal structure 9319 if file == (uintptr(0)) { 9320 return -1 9321 } 9322 state = file 9323 9324 // check that we're reading and that there's no (serious) error 9325 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 9326 return -1 9327 } 9328 9329 // since an int is returned, make sure len fits in one, otherwise return 9330 // with an error (this avoids a flaw in the interface) 9331 if int32(len) < 0 { 9332 Xgz_error(tls, state, -2, ts+196 /* "request does not..." */) 9333 return -1 9334 } 9335 9336 // read len or fewer bytes to buf 9337 len = gz_read(tls, state, buf, len) 9338 9339 // check for an error 9340 if ((len == uint32(0)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) { 9341 return -1 9342 } 9343 9344 // return the number of bytes read (this is assured to fit in an int) 9345 return int32(len) 9346 } 9347 9348 // -- see zlib.h -- 9349 func Xgzfread(tls *libc.TLS, buf Voidp, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzread.c:411:18: */ 9350 var len Z_size_t 9351 var state Gz_statep 9352 9353 // get internal structure 9354 if file == (uintptr(0)) { 9355 return Z_size_t(0) 9356 } 9357 state = file 9358 9359 // check that we're reading and that there's no (serious) error 9360 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 9361 return Z_size_t(0) 9362 } 9363 9364 // compute bytes to read -- error on overflow 9365 len = (nitems * size) 9366 if (size != 0) && ((len / size) != nitems) { 9367 Xgz_error(tls, state, -2, ts+227 /* "request does not..." */) 9368 return Z_size_t(0) 9369 } 9370 9371 // read len or fewer bytes to buf, return the number of full items read 9372 if len != 0 { 9373 return (gz_read(tls, state, buf, len) / size) 9374 } 9375 return uint32(0) 9376 } 9377 9378 // -- see zlib.h -- 9379 func Xgzgetc(tls *libc.TLS, file GzFile) int32 { /* gzread.c:447:13: */ 9380 bp := tls.Alloc(1) 9381 defer tls.Free(1) 9382 9383 var ret int32 9384 // var buf [1]uint8 at bp, 1 9385 9386 var state Gz_statep 9387 9388 // get internal structure 9389 if file == (uintptr(0)) { 9390 return -1 9391 } 9392 state = file 9393 9394 // check that we're reading and that there's no (serious) error 9395 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 9396 return -1 9397 } 9398 9399 // try output buffer (no need to check for skip request) 9400 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9401 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave-- 9402 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 9403 return int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext), 1)))) 9404 } 9405 9406 // nothing there -- try gz_read() 9407 ret = int32(gz_read(tls, state, bp /* &buf[0] */, uint32(1))) 9408 if ret < 1 { 9409 return -1 9410 } 9411 return int32(*(*uint8)(unsafe.Pointer(bp /* &buf[0] */))) 9412 } 9413 9414 func Xgzgetc_(tls *libc.TLS, file GzFile) int32 { /* gzread.c:476:13: */ 9415 return Xgzgetc(tls, file) 9416 } 9417 9418 // -- see zlib.h -- 9419 func Xgzungetc(tls *libc.TLS, c int32, file GzFile) int32 { /* gzread.c:483:13: */ 9420 var state Gz_statep 9421 9422 // get internal structure 9423 if file == (uintptr(0)) { 9424 return -1 9425 } 9426 state = file 9427 9428 // check that we're reading and that there's no (serious) error 9429 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 9430 return -1 9431 } 9432 9433 // process a skip request 9434 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9435 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9436 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9437 return -1 9438 } 9439 } 9440 9441 // can't push EOF 9442 if c < 0 { 9443 return -1 9444 } 9445 9446 // if output buffer empty, put byte at end (allows more pushing) 9447 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { 9448 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(1) 9449 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) - uintptr(1)) 9450 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 9451 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 9452 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9453 return c 9454 } 9455 9456 // if no room, give up (must have already done a gzungetc()) 9457 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) { 9458 Xgz_error(tls, state, -3, ts+260 /* "out of room to p..." */) 9459 return -1 9460 } 9461 9462 // slide output data if needed and insert byte before existing data 9463 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext == (*Gz_state)(unsafe.Pointer(state)).Fout { 9464 var src uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)) 9465 var dest uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) 9466 for src > (*Gz_state)(unsafe.Pointer(state)).Fout { 9467 *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&dest, 1))) = *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&src, 1))) 9468 } 9469 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = dest 9470 } 9471 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave++ 9472 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext-- 9473 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 9474 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 9475 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9476 return c 9477 } 9478 9479 // -- see zlib.h -- 9480 func Xgzgets(tls *libc.TLS, file GzFile, buf uintptr, len int32) uintptr { /* gzread.c:543:6: */ 9481 var left uint32 9482 var n uint32 9483 var str uintptr 9484 var eol uintptr 9485 var state Gz_statep 9486 9487 // check parameters and get internal structure 9488 if ((file == (uintptr(0))) || (buf == (uintptr(0)))) || (len < 1) { 9489 return uintptr(0) 9490 } 9491 state = file 9492 9493 // check that we're reading and that there's no (serious) error 9494 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) { 9495 return uintptr(0) 9496 } 9497 9498 // process a skip request 9499 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9500 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9501 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9502 return uintptr(0) 9503 } 9504 } 9505 9506 // copy output bytes up to new line or len - 1, whichever comes first -- 9507 // append a terminating zero to the string (we don't check for a zero in 9508 // the contents, let the user worry about that) 9509 str = buf 9510 left = (uint32(len) - uint32(1)) 9511 if left != 0 { 9512 for ok := true; ok; ok = ((left != 0) && (eol == (uintptr(0)))) { 9513 // assure that something is in the output buffer 9514 if ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (gz_fetch(tls, state) == -1) { 9515 return uintptr(0) 9516 } // error 9517 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { // end of file 9518 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // read past end 9519 break // return what we have 9520 } 9521 9522 // look for end-of-line in current output buffer 9523 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > left { 9524 n = left 9525 } else { 9526 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9527 } 9528 eol = libc.Xmemchr(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, '\n', n) 9529 if eol != (uintptr(0)) { 9530 n = ((uint32((int32(eol) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) + uint32(1)) 9531 } 9532 9533 // copy through end-of-line, or remainder if not found 9534 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, n) 9535 *(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n) 9536 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n)) 9537 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n)) 9538 left = left - (n) 9539 buf += uintptr(n) 9540 } 9541 } 9542 9543 // return terminated string, or if nothing, end of file 9544 if buf == str { 9545 return uintptr(0) 9546 } 9547 *(*uint8)(unsafe.Pointer(buf)) = uint8(0) 9548 return str 9549 } 9550 9551 // -- see zlib.h -- 9552 func Xgzdirect(tls *libc.TLS, file GzFile) int32 { /* gzread.c:607:13: */ 9553 var state Gz_statep 9554 9555 // get internal structure 9556 if file == (uintptr(0)) { 9557 return 0 9558 } 9559 state = file 9560 9561 // if the state is not known, but we can find out, then do so (this is 9562 // mainly for right after a gzopen() or gzdopen()) 9563 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)) { 9564 gz_look(tls, state) 9565 } 9566 9567 // return 1 if transparent, 0 if processing a gzip stream 9568 return (*Gz_state)(unsafe.Pointer(state)).Fdirect 9569 } 9570 9571 // -- see zlib.h -- 9572 func Xgzclose_r(tls *libc.TLS, file GzFile) int32 { /* gzread.c:627:13: */ 9573 var ret int32 9574 var err int32 9575 var state Gz_statep 9576 9577 // get internal structure 9578 if file == (uintptr(0)) { 9579 return -2 9580 } 9581 state = file 9582 9583 // check that we're reading 9584 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { 9585 return -2 9586 } 9587 9588 // free memory and close file 9589 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 9590 XinflateEnd(tls, (state + 100 /* &.strm */)) 9591 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9592 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9593 } 9594 if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-5) { 9595 err = -5 9596 } else { 9597 err = Z_OK 9598 } 9599 Xgz_error(tls, state, Z_OK, uintptr(0)) 9600 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 9601 ret = libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) 9602 libc.Xfree(tls, state) 9603 if ret != 0 { 9604 return -1 9605 } 9606 return err 9607 } 9608 9609 // Initialize state for writing a gzip file. Mark initialization by setting 9610 // state->size to non-zero. Return -1 on a memory allocation failure, or 0 on 9611 // success. 9612 func gz_init(tls *libc.TLS, state Gz_statep) int32 { /* gzwrite.c:17:11: */ 9613 var ret int32 9614 var strm Z_streamp = (state + 100 /* &.strm */) 9615 9616 // allocate input buffer (double size for gzprintf) 9617 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, ((*Gz_state)(unsafe.Pointer(state)).Fwant << 1)) 9618 if (*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0)) { 9619 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9620 return -1 9621 } 9622 9623 // only need output buffer and deflate state if compressing 9624 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 9625 // allocate output buffer 9626 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, (*Gz_state)(unsafe.Pointer(state)).Fwant) 9627 if (*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0)) { 9628 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9629 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9630 return -1 9631 } 9632 9633 // allocate deflate memory, set up for gzip compression 9634 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = Alloc_func(Z_NULL) 9635 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = Free_func(Z_NULL) 9636 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = Voidpf(Z_NULL) 9637 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{}))) 9638 if ret != Z_OK { 9639 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9640 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9641 Xgz_error(tls, state, -4, ts+87 /* "out of memory" */) 9642 return -1 9643 } 9644 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = uintptr(0) 9645 } 9646 9647 // mark state as initialized 9648 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 9649 9650 // initialize write buffer if compressing 9651 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 9652 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 9653 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 9654 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 9655 } 9656 return 0 9657 } 9658 9659 // Compress whatever is at avail_in and next_in and write to the output file. 9660 // Return -1 if there is an error writing to the output file or if gz_init() 9661 // fails to allocate memory, otherwise 0. flush is assumed to be a valid 9662 // deflate() flush value. If flush is Z_FINISH, then the deflate() state is 9663 // reset to start a new gzip stream. If gz->direct is true, then simply write 9664 // to the output file without compressing, and ignore flush. 9665 func gz_comp(tls *libc.TLS, state Gz_statep, flush int32) int32 { /* gzwrite.c:73:11: */ 9666 var ret int32 9667 var writ int32 9668 var have uint32 9669 var put uint32 9670 var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1)) 9671 var strm Z_streamp = (state + 100 /* &.strm */) 9672 9673 // allocate memory if this is the first time through 9674 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 9675 return -1 9676 } 9677 9678 // write directly if requested 9679 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 9680 for (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 9681 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in > max { 9682 put = max 9683 } else { 9684 put = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9685 } 9686 writ = libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, put) 9687 if writ < 0 { 9688 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 9689 return -1 9690 } 9691 *(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (uint32(writ)) 9692 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(writ)) 9693 } 9694 return 0 9695 } 9696 9697 // run deflate() on provided input until it produces no more output 9698 ret = Z_OK 9699 for ok := true; ok; ok = have != 0 { 9700 // write out current buffer contents if full, or if flushing, but if 9701 // doing Z_FINISH then don't write until we get to Z_STREAM_END 9702 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0)) || ((flush != Z_NO_FLUSH) && ((flush != Z_FINISH) || (ret == Z_STREAM_END))) { 9703 for (*Z_stream)(unsafe.Pointer(strm)).Fnext_out > (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext { 9704 if ((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1) > int32(max) { 9705 put = max 9706 } else { 9707 put = (uint32((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) 9708 } 9709 writ = libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, put) 9710 if writ < 0 { 9711 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 9712 return -1 9713 } 9714 *(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(writ)) 9715 } 9716 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 9717 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 9718 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 9719 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 9720 } 9721 } 9722 9723 // compress 9724 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 9725 ret = Xdeflate(tls, strm, flush) 9726 if ret == (-2) { 9727 Xgz_error(tls, state, -2, 9728 ts+291 /* "internal error: ..." */) 9729 return -1 9730 } 9731 have = have - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out) 9732 } 9733 9734 // if that completed a deflate stream, allow another to start 9735 if flush == Z_FINISH { 9736 XdeflateReset(tls, strm) 9737 } 9738 9739 // all done, no errors 9740 return 0 9741 } 9742 9743 // Compress len zeros to output. Return -1 on a write error or memory 9744 // allocation failure by gz_comp(), or 0 on success. 9745 func gz_zero(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzwrite.c:145:11: */ 9746 var first int32 9747 var n uint32 9748 var strm Z_streamp = (state + 100 /* &.strm */) 9749 9750 // consume whatever's left in the input buffer 9751 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 9752 return -1 9753 } 9754 9755 // compress len zeros (len guaranteed > 0) 9756 first = 1 9757 for len != 0 { 9758 if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fsize) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fsize) > len) { 9759 n = uint32(len) 9760 } else { 9761 n = (*Gz_state)(unsafe.Pointer(state)).Fsize 9762 } 9763 if first != 0 { 9764 libc.Xmemset(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, 0, n) 9765 first = 0 9766 } 9767 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = n 9768 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 9769 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n)) 9770 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 9771 return -1 9772 } 9773 len = len - (Off64_t(n)) 9774 } 9775 return 0 9776 } 9777 9778 // Write len bytes from buf to file. Return the number of bytes written. If 9779 // the returned value is less than len, then there was an error. 9780 func gz_write(tls *libc.TLS, state Gz_statep, buf Voidpc, len Z_size_t) Z_size_t { /* gzwrite.c:178:16: */ 9781 var put Z_size_t = len 9782 9783 // if len is zero, avoid unnecessary operations 9784 if len == Z_size_t(0) { 9785 return Z_size_t(0) 9786 } 9787 9788 // allocate memory if this is the first time through 9789 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 9790 return Z_size_t(0) 9791 } 9792 9793 // check for seek request 9794 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9795 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9796 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9797 return Z_size_t(0) 9798 } 9799 } 9800 9801 // for small len, copy to input buffer, otherwise compress directly 9802 if len < (*Gz_state)(unsafe.Pointer(state)).Fsize { 9803 // copy to input buffer, compress when full 9804 for ok := true; ok; ok = len != 0 { 9805 var have uint32 9806 var copy uint32 9807 9808 if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) { 9809 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 9810 } 9811 have = (uint32(((int32((*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in + uintptr((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1)) 9812 copy = ((*Gz_state)(unsafe.Pointer(state)).Fsize - have) 9813 if copy > len { 9814 copy = len 9815 } 9816 libc.Xmemcpy(tls, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have)), buf, copy) 9817 *(*UInt)(unsafe.Pointer(state + 100 /* &.strm */ + 4 /* &.avail_in */)) += (copy) 9818 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(copy)) 9819 buf = (buf + uintptr(copy)) 9820 len = len - (copy) 9821 if (len != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 9822 return Z_size_t(0) 9823 } 9824 } 9825 } else { 9826 // consume whatever's left in the input buffer 9827 if ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) { 9828 return Z_size_t(0) 9829 } 9830 9831 // directly compress user buffer to file 9832 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = buf 9833 for ok1 := true; ok1; ok1 = len != 0 { 9834 var n uint32 = libc.Uint32(libc.Uint32FromInt32(-1)) 9835 if n > len { 9836 n = len 9837 } 9838 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = n 9839 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n)) 9840 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 9841 return Z_size_t(0) 9842 } 9843 len = len - (n) 9844 } 9845 } 9846 9847 // input was all buffered or compressed 9848 return put 9849 } 9850 9851 // -- see zlib.h -- 9852 func Xgzwrite(tls *libc.TLS, file GzFile, buf Voidpc, len uint32) int32 { /* gzwrite.c:246:13: */ 9853 var state Gz_statep 9854 9855 // get internal structure 9856 if file == (uintptr(0)) { 9857 return 0 9858 } 9859 state = file 9860 9861 // check that we're writing and that there's no error 9862 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 9863 return 0 9864 } 9865 9866 // since an int is returned, make sure len fits in one, otherwise return 9867 // with an error (this avoids a flaw in the interface) 9868 if int32(len) < 0 { 9869 Xgz_error(tls, state, -3, ts+330 /* "requested length..." */) 9870 return 0 9871 } 9872 9873 // write len bytes from buf (the return value will fit in an int) 9874 return int32(gz_write(tls, state, buf, len)) 9875 } 9876 9877 // -- see zlib.h -- 9878 func Xgzfwrite(tls *libc.TLS, buf Voidpc, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzwrite.c:274:18: */ 9879 var len Z_size_t 9880 var state Gz_statep 9881 9882 // get internal structure 9883 if file == (uintptr(0)) { 9884 return Z_size_t(0) 9885 } 9886 state = file 9887 9888 // check that we're writing and that there's no error 9889 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 9890 return Z_size_t(0) 9891 } 9892 9893 // compute bytes to read -- error on overflow 9894 len = (nitems * size) 9895 if (size != 0) && ((len / size) != nitems) { 9896 Xgz_error(tls, state, -2, ts+227 /* "request does not..." */) 9897 return Z_size_t(0) 9898 } 9899 9900 // write len bytes to buf, return the number of full items written 9901 if len != 0 { 9902 return (gz_write(tls, state, buf, len) / size) 9903 } 9904 return uint32(0) 9905 } 9906 9907 // -- see zlib.h -- 9908 func Xgzputc(tls *libc.TLS, file GzFile, c int32) int32 { /* gzwrite.c:304:13: */ 9909 bp := tls.Alloc(1) 9910 defer tls.Free(1) 9911 9912 var have uint32 9913 // var buf [1]uint8 at bp, 1 9914 9915 var state Gz_statep 9916 var strm Z_streamp 9917 9918 // get internal structure 9919 if file == (uintptr(0)) { 9920 return -1 9921 } 9922 state = file 9923 strm = (state + 100 /* &.strm */) 9924 9925 // check that we're writing and that there's no error 9926 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 9927 return -1 9928 } 9929 9930 // check for seek request 9931 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9932 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9933 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9934 return -1 9935 } 9936 } 9937 9938 // try writing to input buffer for speed (state->size == 0 if buffer not 9939 // initialized) 9940 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 9941 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 9942 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 9943 } 9944 have = (uint32(((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1)) 9945 if have < (*Gz_state)(unsafe.Pointer(state)).Fsize { 9946 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have))) = uint8(c) 9947 (*Z_stream)(unsafe.Pointer(strm)).Favail_in++ 9948 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 9949 return (c & 0xff) 9950 } 9951 } 9952 9953 // no room in buffer or not initialized, use gz_write() 9954 *(*uint8)(unsafe.Pointer(bp /* &buf[0] */)) = uint8(c) 9955 if gz_write(tls, state, bp /* &buf[0] */, uint32(1)) != Z_size_t(1) { 9956 return -1 9957 } 9958 return (c & 0xff) 9959 } 9960 9961 // -- see zlib.h -- 9962 func Xgzputs(tls *libc.TLS, file GzFile, str uintptr) int32 { /* gzwrite.c:352:13: */ 9963 var ret int32 9964 var len Z_size_t 9965 var state Gz_statep 9966 9967 // get internal structure 9968 if file == (uintptr(0)) { 9969 return -1 9970 } 9971 state = file 9972 9973 // check that we're writing and that there's no error 9974 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 9975 return -1 9976 } 9977 9978 // write string 9979 len = libc.Xstrlen(tls, str) 9980 ret = int32(gz_write(tls, state, str, len)) 9981 if (ret == 0) && (len != Z_size_t(0)) { 9982 return -1 9983 } 9984 return ret 9985 } 9986 9987 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 9988 // 9989 // This file is part of GCC. 9990 // 9991 // GCC is free software; you can redistribute it and/or modify 9992 // it under the terms of the GNU General Public License as published by 9993 // the Free Software Foundation; either version 3, or (at your option) 9994 // any later version. 9995 // 9996 // GCC is distributed in the hope that it will be useful, 9997 // but WITHOUT ANY WARRANTY; without even the implied warranty of 9998 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9999 // GNU General Public License for more details. 10000 // 10001 // Under Section 7 of GPL version 3, you are granted additional 10002 // permissions described in the GCC Runtime Library Exception, version 10003 // 3.1, as published by the Free Software Foundation. 10004 // 10005 // You should have received a copy of the GNU General Public License and 10006 // a copy of the GCC Runtime Library Exception along with this program; 10007 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 10008 // <http://www.gnu.org/licenses/>. 10009 10010 // ISO C Standard: 7.15 Variable arguments <stdarg.h> 10011 10012 // -- see zlib.h -- 10013 func Xgzvprintf(tls *libc.TLS, file GzFile, format uintptr, va Va_list) int32 { /* gzwrite.c:379:15: */ 10014 var len int32 10015 var left uint32 10016 var next uintptr 10017 var state Gz_statep 10018 var strm Z_streamp 10019 10020 // get internal structure 10021 if file == (uintptr(0)) { 10022 return -2 10023 } 10024 state = file 10025 strm = (state + 100 /* &.strm */) 10026 10027 // check that we're writing and that there's no error 10028 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 10029 return -2 10030 } 10031 10032 // make sure we have some buffer space 10033 if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) { 10034 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10035 } 10036 10037 // check for seek request 10038 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10039 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10040 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10041 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10042 } 10043 } 10044 10045 // do the printf() into the input buffer, put length in len -- the input 10046 // buffer is double-sized just for this function, so there is guaranteed to 10047 // be state->size bytes available after the current contents 10048 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 10049 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10050 } 10051 next = (((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_in) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))) + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)) 10052 *(*uint8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1))))) = uint8(0) 10053 len = libc.Xvsnprintf(tls, next, (*Gz_state)(unsafe.Pointer(state)).Fsize, format, va) 10054 10055 // check that printf() results fit in buffer 10056 if ((len == 0) || (uint32(len) >= (*Gz_state)(unsafe.Pointer(state)).Fsize)) || (int32(*(*uint8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1)))))) != 0) { 10057 return 0 10058 } 10059 10060 // update buffer and position, compress first half if past that 10061 *(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) += (uint32(len)) 10062 *(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(len)) 10063 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in >= (*Gz_state)(unsafe.Pointer(state)).Fsize { 10064 left = ((*Z_stream)(unsafe.Pointer(strm)).Favail_in - (*Gz_state)(unsafe.Pointer(state)).Fsize) 10065 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = (*Gz_state)(unsafe.Pointer(state)).Fsize 10066 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10067 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10068 } 10069 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize)), left) 10070 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10071 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = left 10072 } 10073 return len 10074 } 10075 10076 func Xgzprintf(tls *libc.TLS, file GzFile, format uintptr, va uintptr) int32 { /* gzwrite.c:451:15: */ 10077 var va1 Va_list 10078 _ = va1 10079 var ret int32 10080 10081 va1 = va 10082 ret = Xgzvprintf(tls, file, format, va1) 10083 _ = va1 10084 return ret 10085 } 10086 10087 // -- see zlib.h -- 10088 func Xgzflush(tls *libc.TLS, file GzFile, flush int32) int32 { /* gzwrite.c:553:13: */ 10089 var state Gz_statep 10090 10091 // get internal structure 10092 if file == (uintptr(0)) { 10093 return -2 10094 } 10095 state = file 10096 10097 // check that we're writing and that there's no error 10098 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 10099 return -2 10100 } 10101 10102 // check flush parameter 10103 if (flush < 0) || (flush > Z_FINISH) { 10104 return -2 10105 } 10106 10107 // check for seek request 10108 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10109 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10110 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10111 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10112 } 10113 } 10114 10115 // compress remaining data with requested flush 10116 gz_comp(tls, state, flush) 10117 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10118 } 10119 10120 // -- see zlib.h -- 10121 func Xgzsetparams(tls *libc.TLS, file GzFile, level int32, strategy int32) int32 { /* gzwrite.c:585:13: */ 10122 var state Gz_statep 10123 var strm Z_streamp 10124 10125 // get internal structure 10126 if file == (uintptr(0)) { 10127 return -2 10128 } 10129 state = file 10130 strm = (state + 100 /* &.strm */) 10131 10132 // check that we're writing and that there's no error 10133 if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) { 10134 return -2 10135 } 10136 10137 // if no change is requested, then do nothing 10138 if (level == (*Gz_state)(unsafe.Pointer(state)).Flevel) && (strategy == (*Gz_state)(unsafe.Pointer(state)).Fstrategy) { 10139 return Z_OK 10140 } 10141 10142 // check for seek request 10143 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10144 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10145 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10146 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10147 } 10148 } 10149 10150 // change compression parameters for subsequent input 10151 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10152 // flush previous input with previous parameters before changing 10153 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_BLOCK) == -1) { 10154 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10155 } 10156 XdeflateParams(tls, strm, level, strategy) 10157 } 10158 (*Gz_state)(unsafe.Pointer(state)).Flevel = level 10159 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = strategy 10160 return Z_OK 10161 } 10162 10163 // -- see zlib.h -- 10164 func Xgzclose_w(tls *libc.TLS, file GzFile) int32 { /* gzwrite.c:627:13: */ 10165 var ret int32 = Z_OK 10166 var state Gz_statep 10167 10168 // get internal structure 10169 if file == (uintptr(0)) { 10170 return -2 10171 } 10172 state = file 10173 10174 // check that we're writing 10175 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 10176 return -2 10177 } 10178 10179 // check for seek request 10180 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10181 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10182 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10183 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 10184 } 10185 } 10186 10187 // flush, free memory, and close file 10188 if gz_comp(tls, state, Z_FINISH) == -1 { 10189 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 10190 } 10191 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10192 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 10193 XdeflateEnd(tls, (state + 100 /* &.strm */)) 10194 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 10195 } 10196 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 10197 } 10198 Xgz_error(tls, state, Z_OK, uintptr(0)) 10199 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 10200 if libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) == -1 { 10201 ret = -1 10202 } 10203 libc.Xfree(tls, state) 10204 return ret 10205 } 10206 10207 type Ino_t2 = X__ino64_t /* types.h:49:19 */ 10208 10209 type Off_t2 = X__off64_t /* types.h:87:19 */ 10210 10211 // Types from the Large File Support interface. 10212 type Blkcnt_t2 = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks. 10213 type Fsblkcnt_t2 = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks. 10214 type Fsfilcnt_t2 = X__fsfilcnt64_t /* types.h:213:24 */ 10215 10216 // Reverse the bytes in a 32-bit value 10217 10218 // inftrees.h -- header to use inftrees.c 10219 // Copyright (C) 1995-2005, 2010 Mark Adler 10220 // For conditions of distribution and use, see copyright notice in zlib.h 10221 10222 // WARNING: this file should *not* be used by applications. It is 10223 // part of the implementation of the compression library and is 10224 // subject to change. Applications should only use zlib.h. 10225 // 10226 10227 // Structure for decoding tables. Each entry provides either the 10228 // information needed to do the operation requested by the code that 10229 // indexed that table entry, or it provides a pointer to another 10230 // table that indexes more bits of the code. op indicates whether 10231 // the entry is a pointer to another table, a literal, a length or 10232 // distance, an end-of-block, or an invalid code. For a table 10233 // pointer, the low four bits of op is the number of index bits of 10234 // that table. For a length or distance, the low four bits of op 10235 // is the number of extra bits to get after the code. bits is 10236 // the number of bits in this code or part of the code to drop off 10237 // of the bit buffer. val is the actual byte to output in the case 10238 // of a literal, the base length or distance, or the offset from 10239 // the current table to the next table. Each entry is four bytes. 10240 type Code = struct { 10241 Fop uint8 10242 Fbits uint8 10243 Fval uint16 10244 } /* inftrees.h:28:3 */ 10245 10246 // op values as set by inflate_table(): 10247 // 00000000 - literal 10248 // 0000tttt - table link, tttt != 0 is the number of table index bits 10249 // 0001eeee - length or distance, eeee is the number of extra bits 10250 // 01100000 - end of block 10251 // 01000000 - invalid code 10252 // 10253 10254 // Maximum size of the dynamic table. The maximum number of code structures is 10255 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 10256 // codes. These values were found by exhaustive searches using the program 10257 // examples/enough.c found in the zlib distribtution. The arguments to that 10258 // program are the number of symbols, the initial root table size, and the 10259 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 10260 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 10261 // The initial root table size (9 or 6) is found in the fifth argument of the 10262 // inflate_table() calls in inflate.c and infback.c. If the root table size is 10263 // changed, then these maximum sizes would be need to be recalculated and 10264 // updated. 10265 10266 // Type of code to build for inflate_table() 10267 type Codetype = uint32 /* inftrees.h:58:3 */ 10268 // inflate.h -- internal inflate state definition 10269 // Copyright (C) 1995-2016 Mark Adler 10270 // For conditions of distribution and use, see copyright notice in zlib.h 10271 10272 // WARNING: this file should *not* be used by applications. It is 10273 // part of the implementation of the compression library and is 10274 // subject to change. Applications should only use zlib.h. 10275 // 10276 10277 // define NO_GZIP when compiling if you want to disable gzip header and 10278 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 10279 // the crc code when it is not needed. For shared libraries, gzip decoding 10280 // should be left enabled. 10281 10282 // Possible inflate modes between inflate() calls 10283 type Inflate_mode = uint32 /* inflate.h:53:3 */ 10284 10285 // 10286 // State transitions between above modes - 10287 // 10288 // (most modes can go to BAD or MEM on error -- not shown for clarity) 10289 // 10290 // Process header: 10291 // HEAD -> (gzip) or (zlib) or (raw) 10292 // (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> 10293 // HCRC -> TYPE 10294 // (zlib) -> DICTID or TYPE 10295 // DICTID -> DICT -> TYPE 10296 // (raw) -> TYPEDO 10297 // Read deflate blocks: 10298 // TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK 10299 // STORED -> COPY_ -> COPY -> TYPE 10300 // TABLE -> LENLENS -> CODELENS -> LEN_ 10301 // LEN_ -> LEN 10302 // Read deflate codes in fixed or dynamic block: 10303 // LEN -> LENEXT or LIT or TYPE 10304 // LENEXT -> DIST -> DISTEXT -> MATCH -> LEN 10305 // LIT -> LEN 10306 // Process trailer: 10307 // CHECK -> LENGTH -> DONE 10308 // 10309 10310 // State maintained between inflate() calls -- approximately 7K bytes, not 10311 // including the allocated sliding window, which is up to 32K bytes. 10312 type Inflate_state = struct { 10313 Fstrm Z_streamp 10314 Fmode Inflate_mode 10315 Flast int32 10316 Fwrap int32 10317 Fhavedict int32 10318 Fflags int32 10319 Fdmax uint32 10320 Fcheck uint32 10321 Ftotal uint32 10322 Fhead Gz_headerp 10323 Fwbits uint32 10324 Fwsize uint32 10325 Fwhave uint32 10326 Fwnext uint32 10327 Fwindow uintptr 10328 Fhold uint32 10329 Fbits uint32 10330 Flength uint32 10331 Foffset uint32 10332 Fextra uint32 10333 Flencode uintptr 10334 Fdistcode uintptr 10335 Flenbits uint32 10336 Fdistbits uint32 10337 Fncode uint32 10338 Fnlen uint32 10339 Fndist uint32 10340 Fhave uint32 10341 Fnext uintptr 10342 Flens [320]uint16 10343 Fwork [288]uint16 10344 Fcodes [1444]Code 10345 Fsane int32 10346 Fback int32 10347 Fwas uint32 10348 } /* inflate.h:82:1 */ 10349 10350 // 10351 // strm provides memory allocation functions in zalloc and zfree, or 10352 // Z_NULL to use the library memory allocation functions. 10353 // 10354 // windowBits is in the range 8..15, and window is a user-supplied 10355 // window and output buffer that is 2**windowBits bytes. 10356 // 10357 func XinflateBackInit_(tls *libc.TLS, strm Z_streamp, windowBits int32, window uintptr, version uintptr, stream_size int32) int32 { /* infback.c:28:13: */ 10358 var state uintptr 10359 10360 if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) { 10361 return -6 10362 } 10363 if (((strm == uintptr(Z_NULL)) || (window == uintptr(Z_NULL))) || (windowBits < 8)) || (windowBits > 15) { 10364 return -2 10365 } 10366 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 10367 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 10368 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 10369 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 10370 }{Xzcalloc})) 10371 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 10372 } 10373 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 10374 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 10375 f func(*libc.TLS, Voidpf, Voidpf) 10376 }{Xzcfree})) 10377 } 10378 state = (*struct { 10379 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 10380 })(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{}))) 10381 if state == uintptr(Z_NULL) { 10382 return -4 10383 } 10384 10385 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 10386 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 10387 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = UInt(windowBits) 10388 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << windowBits) 10389 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = window 10390 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 10391 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 10392 return Z_OK 10393 } 10394 10395 // 10396 // Return state with length and distance decoding tables and index sizes set to 10397 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 10398 // If BUILDFIXED is defined, then instead this routine builds the tables the 10399 // first time it's called, and returns those tables the first time and 10400 // thereafter. This reduces the size of the code by about 2K bytes, in 10401 // exchange for a little execution time. However, BUILDFIXED should not be 10402 // used for threaded applications, since the rewriting of the tables and virgin 10403 // may not be thread-safe. 10404 // 10405 func fixedtables(tls *libc.TLS, state uintptr) { /* infback.c:82:12: */ 10406 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix)) 10407 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 10408 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix)) 10409 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 10410 } 10411 10412 var lenfix = [512]Code{ 10413 {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)}, 10414 {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)}, 10415 {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)}, 10416 {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)}, 10417 {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)}, 10418 {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)}, 10419 {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)}, 10420 {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)}, 10421 {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)}, 10422 {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)}, 10423 {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)}, 10424 {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)}, 10425 {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)}, 10426 {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)}, 10427 {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)}, 10428 {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)}, 10429 {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)}, 10430 {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)}, 10431 {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)}, 10432 {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)}, 10433 {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)}, 10434 {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)}, 10435 {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)}, 10436 {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)}, 10437 {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)}, 10438 {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)}, 10439 {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)}, 10440 {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)}, 10441 {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)}, 10442 {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)}, 10443 {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)}, 10444 {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)}, 10445 {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)}, 10446 {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)}, 10447 {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)}, 10448 {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)}, 10449 {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)}, 10450 {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)}, 10451 {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)}, 10452 {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)}, 10453 {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)}, 10454 {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)}, 10455 {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)}, 10456 {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)}, 10457 {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)}, 10458 {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)}, 10459 {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)}, 10460 {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)}, 10461 {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)}, 10462 {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)}, 10463 {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)}, 10464 {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)}, 10465 {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)}, 10466 {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)}, 10467 {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)}, 10468 {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)}, 10469 {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)}, 10470 {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)}, 10471 {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)}, 10472 {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)}, 10473 {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)}, 10474 {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)}, 10475 {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)}, 10476 {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)}, 10477 {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)}, 10478 {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)}, 10479 {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)}, 10480 {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)}, 10481 {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)}, 10482 {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)}, 10483 {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)}, 10484 {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)}, 10485 {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)}, 10486 {Fbits: uint8(9), Fval: uint16(255)}, 10487 } /* inffixed.h:10:23 */ 10488 var distfix = [32]Code{ 10489 {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)}, 10490 {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)}, 10491 {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)}, 10492 {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)}, 10493 {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)}, 10494 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 10495 } /* inffixed.h:87:23 */ 10496 10497 // Macros for inflateBack(): 10498 10499 // Load returned state from inflate_fast() 10500 10501 // Set state from registers for inflate_fast() 10502 10503 // Clear the input bit accumulator 10504 10505 // Assure that some input is available. If input is requested, but denied, 10506 // then return a Z_BUF_ERROR from inflateBack(). 10507 10508 // Get a byte of input into the bit accumulator, or return from inflateBack() 10509 // with an error if there is no input available. 10510 10511 // Assure that there are at least n bits in the bit accumulator. If there is 10512 // not enough available input to do that, then return from inflateBack() with 10513 // an error. 10514 10515 // Return the low n bits of the bit accumulator (n < 16) 10516 10517 // Remove n bits from the bit accumulator 10518 10519 // Remove zero to seven bits as needed to go to a byte boundary 10520 10521 // Assure that some output space is available, by writing out the window 10522 // if it's full. If the write fails, return from inflateBack() with a 10523 // Z_BUF_ERROR. 10524 10525 // 10526 // strm provides the memory allocation functions and window buffer on input, 10527 // and provides information on the unused input on return. For Z_DATA_ERROR 10528 // returns, strm will also provide an error message. 10529 // 10530 // in() and out() are the call-back input and output functions. When 10531 // inflateBack() needs more input, it calls in(). When inflateBack() has 10532 // filled the window with output, or when it completes with data in the 10533 // window, it calls out() to write out the data. The application must not 10534 // change the provided input until in() is called again or inflateBack() 10535 // returns. The application must not change the window/output buffer until 10536 // inflateBack() returns. 10537 // 10538 // in() and out() are called with a descriptor parameter provided in the 10539 // inflateBack() call. This parameter can be a structure that provides the 10540 // information required to do the read or write, as well as accumulated 10541 // information on the input and output such as totals and check values. 10542 // 10543 // in() should return zero on failure. out() should return non-zero on 10544 // failure. If either in() or out() fails, than inflateBack() returns a 10545 // Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it 10546 // was in() or out() that caused in the error. Otherwise, inflateBack() 10547 // returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format 10548 // error, or Z_MEM_ERROR if it could not allocate memory for the state. 10549 // inflateBack() can also return Z_STREAM_ERROR if the input parameters 10550 // are not correct, i.e. strm is Z_NULL or the state was not initialized. 10551 // 10552 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: */ 10553 bp := tls.Alloc(4) 10554 defer tls.Free(4) 10555 10556 var state uintptr 10557 // var next uintptr at bp, 4 10558 // next input 10559 var put uintptr // next output 10560 var have uint32 10561 var left uint32 // available input and output 10562 var hold uint32 // bit buffer 10563 var bits uint32 // bits in bit buffer 10564 var copy uint32 // number of stored or match bytes to copy 10565 var from uintptr // where to copy match bytes from 10566 var here Code // current decoding table entry 10567 var last Code // parent table entry 10568 var len uint32 // length to copy for repeats, bits to drop 10569 var ret int32 10570 10571 // Check that the strm exists and that the state was initialized 10572 if !((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) { 10573 goto __1 10574 } 10575 return -2 10576 __1: 10577 ; 10578 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 10579 10580 // Reset the state 10581 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 10582 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 10583 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 10584 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 10585 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 10586 if *(*uintptr)(unsafe.Pointer(bp /* next */)) != uintptr(Z_NULL) { 10587 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 10588 } else { 10589 have = uint32(0) 10590 } 10591 hold = uint32(0) 10592 bits = uint32(0) 10593 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10594 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10595 10596 // Inflate until end of block marked as last 10597 __2: 10598 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 10599 case TYPE: 10600 goto __6 10601 10602 case STORED: 10603 goto __7 10604 10605 case TABLE: 10606 goto __8 10607 10608 case LEN: 10609 goto __9 10610 10611 case DONE: 10612 goto __10 10613 10614 case BAD: 10615 goto __11 10616 10617 default: 10618 goto __12 10619 } 10620 goto __5 10621 __6: 10622 // determine and dispatch block type 10623 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 10624 goto __13 10625 } 10626 __14: 10627 hold >>= (bits & uint32(7)) 10628 bits = bits - (bits & uint32(7)) 10629 goto __15 10630 __15: 10631 if 0 != 0 { 10632 goto __14 10633 } 10634 goto __16 10635 __16: 10636 ; 10637 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 10638 goto __5 10639 __13: 10640 ; 10641 __17: 10642 __20: 10643 if !(bits < (uint32(3))) { 10644 goto __21 10645 } 10646 __22: 10647 __25: 10648 if !(have == uint32(0)) { 10649 goto __28 10650 } 10651 have = (*struct { 10652 f func(*libc.TLS, uintptr, uintptr) uint32 10653 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10654 if !(have == uint32(0)) { 10655 goto __29 10656 } 10657 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10658 ret = -5 10659 goto inf_leave 10660 __29: 10661 ; 10662 __28: 10663 ; 10664 goto __26 10665 __26: 10666 if 0 != 0 { 10667 goto __25 10668 } 10669 goto __27 10670 __27: 10671 ; 10672 have-- 10673 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10674 bits = bits + (uint32(8)) 10675 goto __23 10676 __23: 10677 if 0 != 0 { 10678 goto __22 10679 } 10680 goto __24 10681 __24: 10682 ; 10683 goto __20 10684 __21: 10685 ; 10686 goto __18 10687 __18: 10688 if 0 != 0 { 10689 goto __17 10690 } 10691 goto __19 10692 __19: 10693 ; 10694 (*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1)))) 10695 __30: 10696 hold >>= 1 10697 bits = bits - (uint32(1)) 10698 goto __31 10699 __31: 10700 if 0 != 0 { 10701 goto __30 10702 } 10703 goto __32 10704 __32: 10705 ; 10706 switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) { 10707 case uint32(0): 10708 goto __34 10709 case uint32(1): 10710 goto __35 10711 case uint32(2): 10712 goto __36 10713 case uint32(3): 10714 goto __37 10715 } 10716 goto __33 10717 __34: // stored block 10718 ; 10719 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 10720 goto __33 10721 __35: // fixed block 10722 fixedtables(tls, state) 10723 10724 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN // decode codes 10725 goto __33 10726 __36: // dynamic block 10727 ; 10728 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 10729 goto __33 10730 __37: 10731 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 10732 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10733 __33: 10734 ; 10735 __38: 10736 hold >>= 2 10737 bits = bits - (uint32(2)) 10738 goto __39 10739 __39: 10740 if 0 != 0 { 10741 goto __38 10742 } 10743 goto __40 10744 __40: 10745 ; 10746 goto __5 10747 10748 __7: 10749 // get and verify stored block length 10750 __41: 10751 hold >>= (bits & uint32(7)) 10752 bits = bits - (bits & uint32(7)) 10753 goto __42 10754 __42: 10755 if 0 != 0 { 10756 goto __41 10757 } 10758 goto __43 10759 __43: 10760 ; // go to byte boundary 10761 __44: 10762 __47: 10763 if !(bits < (uint32(32))) { 10764 goto __48 10765 } 10766 __49: 10767 __52: 10768 if !(have == uint32(0)) { 10769 goto __55 10770 } 10771 have = (*struct { 10772 f func(*libc.TLS, uintptr, uintptr) uint32 10773 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10774 if !(have == uint32(0)) { 10775 goto __56 10776 } 10777 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10778 ret = -5 10779 goto inf_leave 10780 __56: 10781 ; 10782 __55: 10783 ; 10784 goto __53 10785 __53: 10786 if 0 != 0 { 10787 goto __52 10788 } 10789 goto __54 10790 __54: 10791 ; 10792 have-- 10793 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10794 bits = bits + (uint32(8)) 10795 goto __50 10796 __50: 10797 if 0 != 0 { 10798 goto __49 10799 } 10800 goto __51 10801 __51: 10802 ; 10803 goto __47 10804 __48: 10805 ; 10806 goto __45 10807 __45: 10808 if 0 != 0 { 10809 goto __44 10810 } 10811 goto __46 10812 __46: 10813 ; 10814 if !((hold & uint32(0xffff)) != ((hold >> 16) ^ uint32(0xffff))) { 10815 goto __57 10816 } 10817 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 10818 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 10819 goto __5 10820 __57: 10821 ; 10822 (*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff)) 10823 10824 __58: 10825 hold = uint32(0) 10826 bits = uint32(0) 10827 goto __59 10828 __59: 10829 if 0 != 0 { 10830 goto __58 10831 } 10832 goto __60 10833 __60: 10834 ; 10835 10836 // copy stored block from input to output 10837 __61: 10838 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0)) { 10839 goto __62 10840 } 10841 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 10842 __63: 10843 if !(have == uint32(0)) { 10844 goto __66 10845 } 10846 have = (*struct { 10847 f func(*libc.TLS, uintptr, uintptr) uint32 10848 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10849 if !(have == uint32(0)) { 10850 goto __67 10851 } 10852 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10853 ret = -5 10854 goto inf_leave 10855 __67: 10856 ; 10857 __66: 10858 ; 10859 goto __64 10860 __64: 10861 if 0 != 0 { 10862 goto __63 10863 } 10864 goto __65 10865 __65: 10866 ; 10867 __68: 10868 if !(left == uint32(0)) { 10869 goto __71 10870 } 10871 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10872 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10873 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 10874 if !((*struct { 10875 f func(*libc.TLS, uintptr, uintptr, uint32) int32 10876 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 10877 goto __72 10878 } 10879 ret = -5 10880 goto inf_leave 10881 __72: 10882 ; 10883 __71: 10884 ; 10885 goto __69 10886 __69: 10887 if 0 != 0 { 10888 goto __68 10889 } 10890 goto __70 10891 __70: 10892 ; 10893 if !(copy > have) { 10894 goto __73 10895 } 10896 copy = have 10897 __73: 10898 ; 10899 if !(copy > left) { 10900 goto __74 10901 } 10902 copy = left 10903 __74: 10904 ; 10905 libc.Xmemcpy(tls, put, *(*uintptr)(unsafe.Pointer(bp /* next */)), copy) 10906 have = have - (copy) 10907 *(*uintptr)(unsafe.Pointer(bp /* next */)) += uintptr(copy) 10908 left = left - (copy) 10909 put += uintptr(copy) 10910 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy) 10911 goto __61 10912 __62: 10913 ; 10914 10915 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 10916 goto __5 10917 10918 __8: 10919 // get dynamic table entries descriptor 10920 __75: 10921 __78: 10922 if !(bits < (uint32(14))) { 10923 goto __79 10924 } 10925 __80: 10926 __83: 10927 if !(have == uint32(0)) { 10928 goto __86 10929 } 10930 have = (*struct { 10931 f func(*libc.TLS, uintptr, uintptr) uint32 10932 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 10933 if !(have == uint32(0)) { 10934 goto __87 10935 } 10936 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 10937 ret = -5 10938 goto inf_leave 10939 __87: 10940 ; 10941 __86: 10942 ; 10943 goto __84 10944 __84: 10945 if 0 != 0 { 10946 goto __83 10947 } 10948 goto __85 10949 __85: 10950 ; 10951 have-- 10952 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 10953 bits = bits + (uint32(8)) 10954 goto __81 10955 __81: 10956 if 0 != 0 { 10957 goto __80 10958 } 10959 goto __82 10960 __82: 10961 ; 10962 goto __78 10963 __79: 10964 ; 10965 goto __76 10966 __76: 10967 if 0 != 0 { 10968 goto __75 10969 } 10970 goto __77 10971 __77: 10972 ; 10973 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257)) 10974 __88: 10975 hold >>= 5 10976 bits = bits - (uint32(5)) 10977 goto __89 10978 __89: 10979 if 0 != 0 { 10980 goto __88 10981 } 10982 goto __90 10983 __90: 10984 ; 10985 (*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1)) 10986 __91: 10987 hold >>= 5 10988 bits = bits - (uint32(5)) 10989 goto __92 10990 __92: 10991 if 0 != 0 { 10992 goto __91 10993 } 10994 goto __93 10995 __93: 10996 ; 10997 (*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4)) 10998 __94: 10999 hold >>= 4 11000 bits = bits - (uint32(4)) 11001 goto __95 11002 __95: 11003 if 0 != 0 { 11004 goto __94 11005 } 11006 goto __96 11007 __96: 11008 ; 11009 if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) { 11010 goto __97 11011 } 11012 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 11013 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11014 goto __5 11015 __97: 11016 ; 11017 11018 // get code length code lengths (not a typo) 11019 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 11020 __98: 11021 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 11022 goto __99 11023 } 11024 __100: 11025 __103: 11026 if !(bits < (uint32(3))) { 11027 goto __104 11028 } 11029 __105: 11030 __108: 11031 if !(have == uint32(0)) { 11032 goto __111 11033 } 11034 have = (*struct { 11035 f func(*libc.TLS, uintptr, uintptr) uint32 11036 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11037 if !(have == uint32(0)) { 11038 goto __112 11039 } 11040 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11041 ret = -5 11042 goto inf_leave 11043 __112: 11044 ; 11045 __111: 11046 ; 11047 goto __109 11048 __109: 11049 if 0 != 0 { 11050 goto __108 11051 } 11052 goto __110 11053 __110: 11054 ; 11055 have-- 11056 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11057 bits = bits + (uint32(8)) 11058 goto __106 11059 __106: 11060 if 0 != 0 { 11061 goto __105 11062 } 11063 goto __107 11064 __107: 11065 ; 11066 goto __103 11067 __104: 11068 ; 11069 goto __101 11070 __101: 11071 if 0 != 0 { 11072 goto __100 11073 } 11074 goto __102 11075 __102: 11076 ; 11077 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 11078 __113: 11079 hold >>= 3 11080 bits = bits - (uint32(3)) 11081 goto __114 11082 __114: 11083 if 0 != 0 { 11084 goto __113 11085 } 11086 goto __115 11087 __115: 11088 ; 11089 goto __98 11090 __99: 11091 ; 11092 __116: 11093 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 11094 goto __117 11095 } 11096 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 11097 goto __116 11098 __117: 11099 ; 11100 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */ 11101 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11102 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 11103 ret = Xinflate_table(tls, CODES, state+116 /* &.lens */, uint32(19), (state + 112 /* &.next */), 11104 (state + 88 /* &.lenbits */), state+756 /* &.work */) 11105 if !(ret != 0) { 11106 goto __118 11107 } 11108 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 11109 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11110 goto __5 11111 __118: 11112 ; 11113 11114 // get length and distance code code lengths 11115 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 11116 __119: 11117 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 11118 goto __120 11119 } 11120 __121: 11121 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 11122 if !((uint32(here.Fbits)) <= bits) { 11123 goto __124 11124 } 11125 goto __123 11126 __124: 11127 ; 11128 __125: 11129 __128: 11130 if !(have == uint32(0)) { 11131 goto __131 11132 } 11133 have = (*struct { 11134 f func(*libc.TLS, uintptr, uintptr) uint32 11135 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11136 if !(have == uint32(0)) { 11137 goto __132 11138 } 11139 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11140 ret = -5 11141 goto inf_leave 11142 __132: 11143 ; 11144 __131: 11145 ; 11146 goto __129 11147 __129: 11148 if 0 != 0 { 11149 goto __128 11150 } 11151 goto __130 11152 __130: 11153 ; 11154 have-- 11155 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11156 bits = bits + (uint32(8)) 11157 goto __126 11158 __126: 11159 if 0 != 0 { 11160 goto __125 11161 } 11162 goto __127 11163 __127: 11164 ; 11165 goto __122 11166 __122: 11167 goto __121 11168 goto __123 11169 __123: 11170 ; 11171 if !(int32(here.Fval) < 16) { 11172 goto __133 11173 } 11174 __135: 11175 hold >>= int32(here.Fbits) 11176 bits = bits - (uint32(here.Fbits)) 11177 goto __136 11178 __136: 11179 if 0 != 0 { 11180 goto __135 11181 } 11182 goto __137 11183 __137: 11184 ; 11185 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 11186 goto __134 11187 __133: 11188 if !(int32(here.Fval) == 16) { 11189 goto __138 11190 } 11191 __140: 11192 __143: 11193 if !(bits < (uint32(int32(here.Fbits) + 2))) { 11194 goto __144 11195 } 11196 __145: 11197 __148: 11198 if !(have == uint32(0)) { 11199 goto __151 11200 } 11201 have = (*struct { 11202 f func(*libc.TLS, uintptr, uintptr) uint32 11203 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11204 if !(have == uint32(0)) { 11205 goto __152 11206 } 11207 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11208 ret = -5 11209 goto inf_leave 11210 __152: 11211 ; 11212 __151: 11213 ; 11214 goto __149 11215 __149: 11216 if 0 != 0 { 11217 goto __148 11218 } 11219 goto __150 11220 __150: 11221 ; 11222 have-- 11223 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11224 bits = bits + (uint32(8)) 11225 goto __146 11226 __146: 11227 if 0 != 0 { 11228 goto __145 11229 } 11230 goto __147 11231 __147: 11232 ; 11233 goto __143 11234 __144: 11235 ; 11236 goto __141 11237 __141: 11238 if 0 != 0 { 11239 goto __140 11240 } 11241 goto __142 11242 __142: 11243 ; 11244 __153: 11245 hold >>= int32(here.Fbits) 11246 bits = bits - (uint32(here.Fbits)) 11247 goto __154 11248 __154: 11249 if 0 != 0 { 11250 goto __153 11251 } 11252 goto __155 11253 __155: 11254 ; 11255 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 11256 goto __156 11257 } 11258 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 11259 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11260 goto __120 11261 __156: 11262 ; 11263 len = uint32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2))) 11264 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1)))) 11265 __157: 11266 hold >>= 2 11267 bits = bits - (uint32(2)) 11268 goto __158 11269 __158: 11270 if 0 != 0 { 11271 goto __157 11272 } 11273 goto __159 11274 __159: 11275 ; 11276 goto __139 11277 __138: 11278 if !(int32(here.Fval) == 17) { 11279 goto __160 11280 } 11281 __162: 11282 __165: 11283 if !(bits < (uint32(int32(here.Fbits) + 3))) { 11284 goto __166 11285 } 11286 __167: 11287 __170: 11288 if !(have == uint32(0)) { 11289 goto __173 11290 } 11291 have = (*struct { 11292 f func(*libc.TLS, uintptr, uintptr) uint32 11293 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11294 if !(have == uint32(0)) { 11295 goto __174 11296 } 11297 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11298 ret = -5 11299 goto inf_leave 11300 __174: 11301 ; 11302 __173: 11303 ; 11304 goto __171 11305 __171: 11306 if 0 != 0 { 11307 goto __170 11308 } 11309 goto __172 11310 __172: 11311 ; 11312 have-- 11313 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11314 bits = bits + (uint32(8)) 11315 goto __168 11316 __168: 11317 if 0 != 0 { 11318 goto __167 11319 } 11320 goto __169 11321 __169: 11322 ; 11323 goto __165 11324 __166: 11325 ; 11326 goto __163 11327 __163: 11328 if 0 != 0 { 11329 goto __162 11330 } 11331 goto __164 11332 __164: 11333 ; 11334 __175: 11335 hold >>= int32(here.Fbits) 11336 bits = bits - (uint32(here.Fbits)) 11337 goto __176 11338 __176: 11339 if 0 != 0 { 11340 goto __175 11341 } 11342 goto __177 11343 __177: 11344 ; 11345 len = uint32(0) 11346 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 11347 __178: 11348 hold >>= 3 11349 bits = bits - (uint32(3)) 11350 goto __179 11351 __179: 11352 if 0 != 0 { 11353 goto __178 11354 } 11355 goto __180 11356 __180: 11357 ; 11358 goto __161 11359 __160: 11360 __181: 11361 __184: 11362 if !(bits < (uint32(int32(here.Fbits) + 7))) { 11363 goto __185 11364 } 11365 __186: 11366 __189: 11367 if !(have == uint32(0)) { 11368 goto __192 11369 } 11370 have = (*struct { 11371 f func(*libc.TLS, uintptr, uintptr) uint32 11372 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11373 if !(have == uint32(0)) { 11374 goto __193 11375 } 11376 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11377 ret = -5 11378 goto inf_leave 11379 __193: 11380 ; 11381 __192: 11382 ; 11383 goto __190 11384 __190: 11385 if 0 != 0 { 11386 goto __189 11387 } 11388 goto __191 11389 __191: 11390 ; 11391 have-- 11392 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11393 bits = bits + (uint32(8)) 11394 goto __187 11395 __187: 11396 if 0 != 0 { 11397 goto __186 11398 } 11399 goto __188 11400 __188: 11401 ; 11402 goto __184 11403 __185: 11404 ; 11405 goto __182 11406 __182: 11407 if 0 != 0 { 11408 goto __181 11409 } 11410 goto __183 11411 __183: 11412 ; 11413 __194: 11414 hold >>= int32(here.Fbits) 11415 bits = bits - (uint32(here.Fbits)) 11416 goto __195 11417 __195: 11418 if 0 != 0 { 11419 goto __194 11420 } 11421 goto __196 11422 __196: 11423 ; 11424 len = uint32(0) 11425 copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1)))) 11426 __197: 11427 hold >>= 7 11428 bits = bits - (uint32(7)) 11429 goto __198 11430 __198: 11431 if 0 != 0 { 11432 goto __197 11433 } 11434 goto __199 11435 __199: 11436 ; 11437 __161: 11438 ; 11439 __139: 11440 ; 11441 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 11442 goto __200 11443 } 11444 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 11445 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11446 goto __120 11447 __200: 11448 ; 11449 __201: 11450 if !(libc.PostDecUint32(©, 1) != 0) { 11451 goto __202 11452 } 11453 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 11454 goto __201 11455 __202: 11456 ; 11457 __134: 11458 ; 11459 goto __119 11460 __120: 11461 ; 11462 11463 // handle error breaks in while 11464 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 11465 goto __203 11466 } 11467 goto __5 11468 __203: 11469 ; 11470 11471 // check for end-of-block code (better have one) 11472 if !(int32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + 256*2))) == 0) { 11473 goto __204 11474 } 11475 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 11476 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11477 goto __5 11478 __204: 11479 ; 11480 11481 // build code tables -- note: do not change the lenbits or distbits 11482 // values here (9 and 6) without reading the comments in inftrees.h 11483 // concerning the ENOUGH constants, which depend on those values 11484 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */ 11485 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11486 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 11487 ret = Xinflate_table(tls, LENS, state+116 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 112 /* &.next */), 11488 (state + 88 /* &.lenbits */), state+756 /* &.work */) 11489 if !(ret != 0) { 11490 goto __205 11491 } 11492 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 11493 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11494 goto __5 11495 __205: 11496 ; 11497 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11498 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 11499 ret = Xinflate_table(tls, DISTS, ((state + 116 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist, 11500 (state + 112 /* &.next */), (state + 92 /* &.distbits */), state+756 /* &.work */) 11501 if !(ret != 0) { 11502 goto __206 11503 } 11504 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 11505 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11506 goto __5 11507 __206: 11508 ; 11509 11510 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 11511 11512 __9: 11513 // use inflate_fast() if we have enough input and output 11514 if !((have >= uint32(6)) && (left >= uint32(258))) { 11515 goto __207 11516 } 11517 __208: 11518 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 11519 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 11520 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 11521 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 11522 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 11523 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 11524 goto __209 11525 __209: 11526 if 0 != 0 { 11527 goto __208 11528 } 11529 goto __210 11530 __210: 11531 ; 11532 if !((*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 11533 goto __211 11534 } 11535 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - left) 11536 __211: 11537 ; 11538 Xinflate_fast(tls, strm, (*Inflate_state)(unsafe.Pointer(state)).Fwsize) 11539 __212: 11540 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 11541 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 11542 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 11543 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 11544 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 11545 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 11546 goto __213 11547 __213: 11548 if 0 != 0 { 11549 goto __212 11550 } 11551 goto __214 11552 __214: 11553 ; 11554 goto __5 11555 __207: 11556 ; 11557 11558 // get a literal, length, or end-of-block code 11559 __215: 11560 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 11561 if !((uint32(here.Fbits)) <= bits) { 11562 goto __218 11563 } 11564 goto __217 11565 __218: 11566 ; 11567 __219: 11568 __222: 11569 if !(have == uint32(0)) { 11570 goto __225 11571 } 11572 have = (*struct { 11573 f func(*libc.TLS, uintptr, uintptr) uint32 11574 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11575 if !(have == uint32(0)) { 11576 goto __226 11577 } 11578 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11579 ret = -5 11580 goto inf_leave 11581 __226: 11582 ; 11583 __225: 11584 ; 11585 goto __223 11586 __223: 11587 if 0 != 0 { 11588 goto __222 11589 } 11590 goto __224 11591 __224: 11592 ; 11593 have-- 11594 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11595 bits = bits + (uint32(8)) 11596 goto __220 11597 __220: 11598 if 0 != 0 { 11599 goto __219 11600 } 11601 goto __221 11602 __221: 11603 ; 11604 goto __216 11605 __216: 11606 goto __215 11607 goto __217 11608 __217: 11609 ; 11610 if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) { 11611 goto __227 11612 } 11613 last = here 11614 __228: 11615 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)) 11616 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 11617 goto __231 11618 } 11619 goto __230 11620 __231: 11621 ; 11622 __232: 11623 __235: 11624 if !(have == uint32(0)) { 11625 goto __238 11626 } 11627 have = (*struct { 11628 f func(*libc.TLS, uintptr, uintptr) uint32 11629 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11630 if !(have == uint32(0)) { 11631 goto __239 11632 } 11633 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11634 ret = -5 11635 goto inf_leave 11636 __239: 11637 ; 11638 __238: 11639 ; 11640 goto __236 11641 __236: 11642 if 0 != 0 { 11643 goto __235 11644 } 11645 goto __237 11646 __237: 11647 ; 11648 have-- 11649 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11650 bits = bits + (uint32(8)) 11651 goto __233 11652 __233: 11653 if 0 != 0 { 11654 goto __232 11655 } 11656 goto __234 11657 __234: 11658 ; 11659 goto __229 11660 __229: 11661 goto __228 11662 goto __230 11663 __230: 11664 ; 11665 __240: 11666 hold >>= int32(last.Fbits) 11667 bits = bits - (uint32(last.Fbits)) 11668 goto __241 11669 __241: 11670 if 0 != 0 { 11671 goto __240 11672 } 11673 goto __242 11674 __242: 11675 ; 11676 __227: 11677 ; 11678 __243: 11679 hold >>= int32(here.Fbits) 11680 bits = bits - (uint32(here.Fbits)) 11681 goto __244 11682 __244: 11683 if 0 != 0 { 11684 goto __243 11685 } 11686 goto __245 11687 __245: 11688 ; 11689 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 11690 11691 // process literal 11692 if !(int32(here.Fop) == 0) { 11693 goto __246 11694 } 11695 11696 __247: 11697 if !(left == uint32(0)) { 11698 goto __250 11699 } 11700 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 11701 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 11702 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 11703 if !((*struct { 11704 f func(*libc.TLS, uintptr, uintptr, uint32) int32 11705 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 11706 goto __251 11707 } 11708 ret = -5 11709 goto inf_leave 11710 __251: 11711 ; 11712 __250: 11713 ; 11714 goto __248 11715 __248: 11716 if 0 != 0 { 11717 goto __247 11718 } 11719 goto __249 11720 __249: 11721 ; 11722 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 11723 left-- 11724 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 11725 goto __5 11726 __246: 11727 ; 11728 11729 // process end of block 11730 if !((int32(here.Fop) & 32) != 0) { 11731 goto __252 11732 } 11733 11734 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 11735 goto __5 11736 __252: 11737 ; 11738 11739 // invalid code 11740 if !((int32(here.Fop) & 64) != 0) { 11741 goto __253 11742 } 11743 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 11744 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11745 goto __5 11746 __253: 11747 ; 11748 11749 // length code -- get extra bits, if any 11750 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 11751 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 11752 goto __254 11753 } 11754 __255: 11755 __258: 11756 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 11757 goto __259 11758 } 11759 __260: 11760 __263: 11761 if !(have == uint32(0)) { 11762 goto __266 11763 } 11764 have = (*struct { 11765 f func(*libc.TLS, uintptr, uintptr) uint32 11766 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11767 if !(have == uint32(0)) { 11768 goto __267 11769 } 11770 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11771 ret = -5 11772 goto inf_leave 11773 __267: 11774 ; 11775 __266: 11776 ; 11777 goto __264 11778 __264: 11779 if 0 != 0 { 11780 goto __263 11781 } 11782 goto __265 11783 __265: 11784 ; 11785 have-- 11786 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11787 bits = bits + (uint32(8)) 11788 goto __261 11789 __261: 11790 if 0 != 0 { 11791 goto __260 11792 } 11793 goto __262 11794 __262: 11795 ; 11796 goto __258 11797 __259: 11798 ; 11799 goto __256 11800 __256: 11801 if 0 != 0 { 11802 goto __255 11803 } 11804 goto __257 11805 __257: 11806 ; 11807 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 11808 __268: 11809 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 11810 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 11811 goto __269 11812 __269: 11813 if 0 != 0 { 11814 goto __268 11815 } 11816 goto __270 11817 __270: 11818 ; 11819 __254: 11820 ; 11821 11822 // get distance code 11823 __271: 11824 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4)) 11825 if !((uint32(here.Fbits)) <= bits) { 11826 goto __274 11827 } 11828 goto __273 11829 __274: 11830 ; 11831 __275: 11832 __278: 11833 if !(have == uint32(0)) { 11834 goto __281 11835 } 11836 have = (*struct { 11837 f func(*libc.TLS, uintptr, uintptr) uint32 11838 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11839 if !(have == uint32(0)) { 11840 goto __282 11841 } 11842 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11843 ret = -5 11844 goto inf_leave 11845 __282: 11846 ; 11847 __281: 11848 ; 11849 goto __279 11850 __279: 11851 if 0 != 0 { 11852 goto __278 11853 } 11854 goto __280 11855 __280: 11856 ; 11857 have-- 11858 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11859 bits = bits + (uint32(8)) 11860 goto __276 11861 __276: 11862 if 0 != 0 { 11863 goto __275 11864 } 11865 goto __277 11866 __277: 11867 ; 11868 goto __272 11869 __272: 11870 goto __271 11871 goto __273 11872 __273: 11873 ; 11874 if !((int32(here.Fop) & 0xf0) == 0) { 11875 goto __283 11876 } 11877 last = here 11878 __284: 11879 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)) 11880 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 11881 goto __287 11882 } 11883 goto __286 11884 __287: 11885 ; 11886 __288: 11887 __291: 11888 if !(have == uint32(0)) { 11889 goto __294 11890 } 11891 have = (*struct { 11892 f func(*libc.TLS, uintptr, uintptr) uint32 11893 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11894 if !(have == uint32(0)) { 11895 goto __295 11896 } 11897 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11898 ret = -5 11899 goto inf_leave 11900 __295: 11901 ; 11902 __294: 11903 ; 11904 goto __292 11905 __292: 11906 if 0 != 0 { 11907 goto __291 11908 } 11909 goto __293 11910 __293: 11911 ; 11912 have-- 11913 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 11914 bits = bits + (uint32(8)) 11915 goto __289 11916 __289: 11917 if 0 != 0 { 11918 goto __288 11919 } 11920 goto __290 11921 __290: 11922 ; 11923 goto __285 11924 __285: 11925 goto __284 11926 goto __286 11927 __286: 11928 ; 11929 __296: 11930 hold >>= int32(last.Fbits) 11931 bits = bits - (uint32(last.Fbits)) 11932 goto __297 11933 __297: 11934 if 0 != 0 { 11935 goto __296 11936 } 11937 goto __298 11938 __298: 11939 ; 11940 __283: 11941 ; 11942 __299: 11943 hold >>= int32(here.Fbits) 11944 bits = bits - (uint32(here.Fbits)) 11945 goto __300 11946 __300: 11947 if 0 != 0 { 11948 goto __299 11949 } 11950 goto __301 11951 __301: 11952 ; 11953 if !((int32(here.Fop) & 64) != 0) { 11954 goto __302 11955 } 11956 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 11957 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11958 goto __5 11959 __302: 11960 ; 11961 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 11962 11963 // get distance extra bits, if any 11964 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 11965 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 11966 goto __303 11967 } 11968 __304: 11969 __307: 11970 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 11971 goto __308 11972 } 11973 __309: 11974 __312: 11975 if !(have == uint32(0)) { 11976 goto __315 11977 } 11978 have = (*struct { 11979 f func(*libc.TLS, uintptr, uintptr) uint32 11980 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11981 if !(have == uint32(0)) { 11982 goto __316 11983 } 11984 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11985 ret = -5 11986 goto inf_leave 11987 __316: 11988 ; 11989 __315: 11990 ; 11991 goto __313 11992 __313: 11993 if 0 != 0 { 11994 goto __312 11995 } 11996 goto __314 11997 __314: 11998 ; 11999 have-- 12000 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits) 12001 bits = bits + (uint32(8)) 12002 goto __310 12003 __310: 12004 if 0 != 0 { 12005 goto __309 12006 } 12007 goto __311 12008 __311: 12009 ; 12010 goto __307 12011 __308: 12012 ; 12013 goto __305 12014 __305: 12015 if 0 != 0 { 12016 goto __304 12017 } 12018 goto __306 12019 __306: 12020 ; 12021 *(*uint32)(unsafe.Pointer(state + 72 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 12022 __317: 12023 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 12024 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 12025 goto __318 12026 __318: 12027 if 0 != 0 { 12028 goto __317 12029 } 12030 goto __319 12031 __319: 12032 ; 12033 __303: 12034 ; 12035 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (func() uint32 { 12036 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 12037 return left 12038 } 12039 return uint32(0) 12040 }()))) { 12041 goto __320 12042 } 12043 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 12044 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12045 goto __5 12046 __320: 12047 ; 12048 12049 // copy match from window to output 12050 __321: 12051 __324: 12052 if !(left == uint32(0)) { 12053 goto __327 12054 } 12055 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 12056 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12057 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 12058 if !((*struct { 12059 f func(*libc.TLS, uintptr, uintptr, uint32) int32 12060 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 12061 goto __328 12062 } 12063 ret = -5 12064 goto inf_leave 12065 __328: 12066 ; 12067 __327: 12068 ; 12069 goto __325 12070 __325: 12071 if 0 != 0 { 12072 goto __324 12073 } 12074 goto __326 12075 __326: 12076 ; 12077 copy = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Foffset) 12078 if !(copy < left) { 12079 goto __329 12080 } 12081 from = (put + uintptr(copy)) 12082 copy = (left - copy) 12083 goto __330 12084 __329: 12085 from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset)) 12086 copy = left 12087 __330: 12088 ; 12089 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 12090 goto __331 12091 } 12092 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 12093 __331: 12094 ; 12095 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy) 12096 left = left - (copy) 12097 __332: 12098 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12099 goto __333 12100 __333: 12101 if libc.PreDecUint32(©, 1) != 0 { 12102 goto __332 12103 } 12104 goto __334 12105 __334: 12106 ; 12107 goto __322 12108 __322: 12109 if (*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0) { 12110 goto __321 12111 } 12112 goto __323 12113 __323: 12114 ; 12115 goto __5 12116 12117 __10: 12118 // inflate stream terminated properly -- write leftover output 12119 ret = Z_STREAM_END 12120 if !(left < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 12121 goto __335 12122 } 12123 if !((*struct { 12124 f func(*libc.TLS, uintptr, uintptr, uint32) int32 12125 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, ((*Inflate_state)(unsafe.Pointer(state)).Fwsize-left)) != 0) { 12126 goto __336 12127 } 12128 ret = -5 12129 __336: 12130 ; 12131 __335: 12132 ; 12133 goto inf_leave 12134 12135 __11: 12136 ret = -3 12137 goto inf_leave 12138 12139 __12: // can't happen, but makes compilers happy 12140 ret = -2 12141 goto inf_leave 12142 __5: 12143 ; 12144 goto __3 12145 __3: 12146 goto __2 12147 goto __4 12148 __4: 12149 ; 12150 12151 // Return unused input 12152 inf_leave: 12153 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 12154 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 12155 return ret 12156 } 12157 12158 var order = // permutation of code lengths 12159 [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 */ 12160 12161 func XinflateBackEnd(tls *libc.TLS, strm Z_streamp) int32 { /* infback.c:631:13: */ 12162 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 12163 return -2 12164 } 12165 (*struct { 12166 f func(*libc.TLS, Voidpf, Voidpf) 12167 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 12168 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 12169 12170 return Z_OK 12171 } 12172 12173 // 12174 // Decode literal, length, and distance codes and write out the resulting 12175 // literal and match bytes until either not enough input or output is 12176 // available, an end-of-block is encountered, or a data error is encountered. 12177 // When large enough input and output buffers are supplied to inflate(), for 12178 // example, a 16K input buffer and a 64K output buffer, more than 95% of the 12179 // inflate execution time is spent in this routine. 12180 // 12181 // Entry assumptions: 12182 // 12183 // state->mode == LEN 12184 // strm->avail_in >= 6 12185 // strm->avail_out >= 258 12186 // start >= strm->avail_out 12187 // state->bits < 8 12188 // 12189 // On return, state->mode is one of: 12190 // 12191 // LEN -- ran out of enough output space or enough available input 12192 // TYPE -- reached end of block code, inflate() to interpret next block 12193 // BAD -- error in block data 12194 // 12195 // Notes: 12196 // 12197 // - The maximum input bits used by a length/distance pair is 15 bits for the 12198 // length code, 5 bits for the length extra, 15 bits for the distance code, 12199 // and 13 bits for the distance extra. This totals 48 bits, or six bytes. 12200 // Therefore if strm->avail_in >= 6, then there is enough input to avoid 12201 // checking for available input while decoding. 12202 // 12203 // - The maximum bytes that a single length/distance pair can output is 258 12204 // bytes, which is the maximum length that can be coded. inflate_fast() 12205 // requires strm->avail_out >= 258 for each loop to avoid checking for 12206 // output space. 12207 // 12208 func Xinflate_fast(tls *libc.TLS, strm Z_streamp, start uint32) { /* inffast.c:50:20: */ 12209 var state uintptr 12210 var in uintptr // local strm->next_in 12211 var last uintptr // have enough input while in < last 12212 var out uintptr // local strm->next_out 12213 var beg uintptr // inflate()'s initial strm->next_out 12214 var end uintptr // while out < end, enough space available 12215 var wsize uint32 // window size or zero if not using window 12216 var whave uint32 // valid bytes in the window 12217 var wnext uint32 // window write index 12218 var window uintptr // allocated sliding window, if wsize != 0 12219 var hold uint32 // local strm->hold 12220 var bits uint32 // local strm->bits 12221 var lcode uintptr // local strm->lencode 12222 var dcode uintptr // local strm->distcode 12223 var lmask uint32 // mask for first level of length codes 12224 var dmask uint32 // mask for first level of distance codes 12225 var here Code // retrieved table entry 12226 var op uint32 // code bits, operation, extra bits, or 12227 // window position, window bytes to copy 12228 var len uint32 // match length, unused bytes 12229 var dist uint32 // match distance 12230 var from uintptr // where to copy match from 12231 12232 // copy state to local variables 12233 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12234 in = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 12235 last = (in + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_in - UInt(5)))) 12236 out = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 12237 beg = (out - uintptr((start - (*Z_stream)(unsafe.Pointer(strm)).Favail_out))) 12238 end = (out + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_out - UInt(257)))) 12239 wsize = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12240 whave = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 12241 wnext = (*Inflate_state)(unsafe.Pointer(state)).Fwnext 12242 window = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 12243 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 12244 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 12245 lcode = (*Inflate_state)(unsafe.Pointer(state)).Flencode 12246 dcode = (*Inflate_state)(unsafe.Pointer(state)).Fdistcode 12247 lmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Flenbits) - uint32(1)) 12248 dmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fdistbits) - uint32(1)) 12249 12250 // decode literals and length/distances until end-of-block or not enough 12251 // input data or output space 12252 __1: 12253 if !(bits < uint32(15)) { 12254 goto __4 12255 } 12256 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12257 bits = bits + (uint32(8)) 12258 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12259 bits = bits + (uint32(8)) 12260 __4: 12261 ; 12262 here = *(*Code)(unsafe.Pointer(lcode + uintptr((hold&uint32(lmask)))*4)) 12263 dolen: 12264 op = uint32(here.Fbits) 12265 hold >>= op 12266 bits = bits - (op) 12267 op = uint32(here.Fop) 12268 if !(op == uint32(0)) { 12269 goto __5 12270 } // literal 12271 12272 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = uint8(here.Fval) 12273 goto __6 12274 __5: 12275 if !((op & uint32(16)) != 0) { 12276 goto __7 12277 } // length base 12278 len = uint32(here.Fval) 12279 op = op & (uint32(15)) // number of extra bits 12280 if !(op != 0) { 12281 goto __9 12282 } 12283 if !(bits < op) { 12284 goto __10 12285 } 12286 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12287 bits = bits + (uint32(8)) 12288 __10: 12289 ; 12290 len = len + (uint32(hold) & ((uint32(1) << op) - uint32(1))) 12291 hold >>= op 12292 bits = bits - (op) 12293 __9: 12294 ; 12295 12296 if !(bits < uint32(15)) { 12297 goto __11 12298 } 12299 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12300 bits = bits + (uint32(8)) 12301 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12302 bits = bits + (uint32(8)) 12303 __11: 12304 ; 12305 here = *(*Code)(unsafe.Pointer(dcode + uintptr((hold&uint32(dmask)))*4)) 12306 dodist: 12307 op = uint32(here.Fbits) 12308 hold >>= op 12309 bits = bits - (op) 12310 op = uint32(here.Fop) 12311 if !((op & uint32(16)) != 0) { 12312 goto __12 12313 } // distance base 12314 dist = uint32(here.Fval) 12315 op = op & (uint32(15)) // number of extra bits 12316 if !(bits < op) { 12317 goto __14 12318 } 12319 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12320 bits = bits + (uint32(8)) 12321 if !(bits < op) { 12322 goto __15 12323 } 12324 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits) 12325 bits = bits + (uint32(8)) 12326 __15: 12327 ; 12328 __14: 12329 ; 12330 dist = dist + (uint32(hold) & ((uint32(1) << op) - uint32(1))) 12331 hold >>= op 12332 bits = bits - (op) 12333 12334 op = (uint32((int32(out) - int32(beg)) / 1)) // max distance in output 12335 if !(dist > op) { 12336 goto __16 12337 } // see if copy from window 12338 op = (dist - op) // distance back in window 12339 if !(op > whave) { 12340 goto __18 12341 } 12342 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 12343 goto __19 12344 } 12345 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 12346 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12347 goto __3 12348 __19: 12349 ; 12350 __18: 12351 ; 12352 from = window 12353 if !(wnext == uint32(0)) { 12354 goto __20 12355 } // very common case 12356 from += (uintptr(wsize - op)) 12357 if !(op < len) { 12358 goto __22 12359 } // some from window 12360 len = len - (op) 12361 __23: 12362 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12363 goto __24 12364 __24: 12365 if libc.PreDecUint32(&op, 1) != 0 { 12366 goto __23 12367 } 12368 goto __25 12369 __25: 12370 ; 12371 from = (out - uintptr(dist)) // rest from output 12372 __22: 12373 ; 12374 goto __21 12375 __20: 12376 if !(wnext < op) { 12377 goto __26 12378 } // wrap around window 12379 from += (uintptr((wsize + wnext) - op)) 12380 op = op - (wnext) 12381 if !(op < len) { 12382 goto __28 12383 } // some from end of window 12384 len = len - (op) 12385 __29: 12386 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12387 goto __30 12388 __30: 12389 if libc.PreDecUint32(&op, 1) != 0 { 12390 goto __29 12391 } 12392 goto __31 12393 __31: 12394 ; 12395 from = window 12396 if !(wnext < len) { 12397 goto __32 12398 } // some from start of window 12399 op = wnext 12400 len = len - (op) 12401 __33: 12402 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12403 goto __34 12404 __34: 12405 if libc.PreDecUint32(&op, 1) != 0 { 12406 goto __33 12407 } 12408 goto __35 12409 __35: 12410 ; 12411 from = (out - uintptr(dist)) // rest from output 12412 __32: 12413 ; 12414 __28: 12415 ; 12416 goto __27 12417 __26: // contiguous in window 12418 from += (uintptr(wnext - op)) 12419 if !(op < len) { 12420 goto __36 12421 } // some from window 12422 len = len - (op) 12423 __37: 12424 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12425 goto __38 12426 __38: 12427 if libc.PreDecUint32(&op, 1) != 0 { 12428 goto __37 12429 } 12430 goto __39 12431 __39: 12432 ; 12433 from = (out - uintptr(dist)) // rest from output 12434 __36: 12435 ; 12436 __27: 12437 ; 12438 __21: 12439 ; 12440 __40: 12441 if !(len > uint32(2)) { 12442 goto __41 12443 } 12444 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12445 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12446 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12447 len = len - (uint32(3)) 12448 goto __40 12449 __41: 12450 ; 12451 if !(len != 0) { 12452 goto __42 12453 } 12454 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12455 if !(len > uint32(1)) { 12456 goto __43 12457 } 12458 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12459 __43: 12460 ; 12461 __42: 12462 ; 12463 goto __17 12464 __16: 12465 from = (out - uintptr(dist)) // copy direct from output 12466 __44: // minimum length is three 12467 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12468 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12469 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12470 len = len - (uint32(3)) 12471 goto __45 12472 __45: 12473 if len > uint32(2) { 12474 goto __44 12475 } 12476 goto __46 12477 __46: 12478 ; 12479 if !(len != 0) { 12480 goto __47 12481 } 12482 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12483 if !(len > uint32(1)) { 12484 goto __48 12485 } 12486 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12487 __48: 12488 ; 12489 __47: 12490 ; 12491 __17: 12492 ; 12493 goto __13 12494 __12: 12495 if !((op & uint32(64)) == uint32(0)) { 12496 goto __49 12497 } // 2nd level distance code 12498 here = *(*Code)(unsafe.Pointer(dcode + uintptr((uint32(here.Fval)+(hold&(uint32((uint32(1)<<op)-uint32(1))))))*4)) 12499 goto dodist 12500 goto __50 12501 __49: 12502 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 12503 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12504 goto __3 12505 __50: 12506 ; 12507 __13: 12508 ; 12509 goto __8 12510 __7: 12511 if !((op & uint32(64)) == uint32(0)) { 12512 goto __51 12513 } // 2nd level length code 12514 here = *(*Code)(unsafe.Pointer(lcode + uintptr((uint32(here.Fval)+(hold&(uint32((uint32(1)<<op)-uint32(1))))))*4)) 12515 goto dolen 12516 goto __52 12517 __51: 12518 if !((op & uint32(32)) != 0) { 12519 goto __53 12520 } // end-of-block 12521 12522 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12523 goto __3 12524 goto __54 12525 __53: 12526 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 12527 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12528 goto __3 12529 __54: 12530 ; 12531 __52: 12532 ; 12533 __8: 12534 ; 12535 __6: 12536 ; 12537 goto __2 12538 __2: 12539 if (in < last) && (out < end) { 12540 goto __1 12541 } 12542 goto __3 12543 __3: 12544 ; 12545 12546 // return unused bytes (on entry, bits < 8, so in won't go too far back) 12547 len = (bits >> 3) 12548 in -= uintptr(len) 12549 bits = bits - (len << 3) 12550 hold = hold & (uint32((uint32(1) << bits) - uint32(1))) 12551 12552 // update state and return 12553 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = in 12554 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = out 12555 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = func() uint32 { 12556 if in < last { 12557 return (uint32(5 + ((int32(last) - int32(in)) / 1))) 12558 } 12559 return (uint32(5 - ((int32(in) - int32(last)) / 1))) 12560 }() 12561 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = func() uint32 { 12562 if out < end { 12563 return (uint32(257 + ((int32(end) - int32(out)) / 1))) 12564 } 12565 return (uint32(257 - ((int32(out) - int32(end)) / 1))) 12566 }() 12567 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 12568 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 12569 return 12570 } 12571 12572 // 12573 // inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): 12574 // - Using bit fields for code structure 12575 // - Different op definition to avoid & for extra bits (do & for table bits) 12576 // - Three separate decoding do-loops for direct, window, and wnext == 0 12577 // - Special case for distance > 1 copies to do overlapped load and store copy 12578 // - Explicit branch predictions (based on measured branch probabilities) 12579 // - Deferring match copy and interspersed it with decoding subsequent codes 12580 // - Swapping literal/length else 12581 // - Swapping window/direct else 12582 // - Larger unrolled copy loops (three is about right) 12583 // - Moving len -= 3 statement into middle of loop 12584 // 12585 12586 func inflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:105:11: */ 12587 var state uintptr 12588 if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) { 12589 return 1 12590 } 12591 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12592 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) { 12593 return 1 12594 } 12595 return 0 12596 } 12597 12598 func XinflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:119:13: */ 12599 var state uintptr 12600 12601 if inflateStateCheck(tls, strm) != 0 { 12602 return -2 12603 } 12604 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12605 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint32(strm+20 /* &.total_out */, libc.AssignPtrUint32(state+32 /* &.total */, uint32(0))) 12606 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 12607 if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 { // to support ill-conceived Java test suite 12608 (*Z_stream)(unsafe.Pointer(strm)).Fadler = (ULong((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1)) 12609 } 12610 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD 12611 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 12612 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 0 12613 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 12614 (*Inflate_state)(unsafe.Pointer(state)).Fhead = Gz_headerp(Z_NULL) 12615 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint32(0) 12616 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 12617 (*Inflate_state)(unsafe.Pointer(state)).Flencode = libc.AssignPtrUintptr(state+84 /* &.distcode */, libc.AssignPtrUintptr(state+112 /* &.next */, state+1332 /* &.codes */)) 12618 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 12619 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 12620 12621 return Z_OK 12622 } 12623 12624 func XinflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:144:13: */ 12625 var state uintptr 12626 12627 if inflateStateCheck(tls, strm) != 0 { 12628 return -2 12629 } 12630 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12631 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(0) 12632 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 12633 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 12634 return XinflateResetKeep(tls, strm) 12635 } 12636 12637 func XinflateReset2(tls *libc.TLS, strm Z_streamp, windowBits int32) int32 { /* inflate.c:157:13: */ 12638 var wrap int32 12639 var state uintptr 12640 12641 // get the state 12642 if inflateStateCheck(tls, strm) != 0 { 12643 return -2 12644 } 12645 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12646 12647 // extract wrap request from windowBits parameter 12648 if windowBits < 0 { 12649 wrap = 0 12650 windowBits = -windowBits 12651 } else { 12652 wrap = ((windowBits >> 4) + 5) 12653 if windowBits < 48 { 12654 windowBits = windowBits & (15) 12655 } 12656 } 12657 12658 // set number of window bits, free window if different 12659 if (windowBits != 0) && ((windowBits < 8) || (windowBits > 15)) { 12660 return -2 12661 } 12662 if ((*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL)) && ((*Inflate_state)(unsafe.Pointer(state)).Fwbits != uint32(windowBits)) { 12663 (*struct { 12664 f func(*libc.TLS, Voidpf, Voidpf) 12665 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 12666 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 12667 } 12668 12669 // update state and reset the rest of it 12670 (*Inflate_state)(unsafe.Pointer(state)).Fwrap = wrap 12671 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(windowBits) 12672 return XinflateReset(tls, strm) 12673 } 12674 12675 func XinflateInit2_(tls *libc.TLS, strm Z_streamp, windowBits int32, version uintptr, stream_size int32) int32 { /* inflate.c:195:13: */ 12676 var ret int32 12677 var state uintptr 12678 12679 if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) { 12680 return -6 12681 } 12682 if strm == uintptr(Z_NULL) { 12683 return -2 12684 } 12685 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 12686 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 12687 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 12688 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 12689 }{Xzcalloc})) 12690 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 12691 } 12692 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 12693 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 12694 f func(*libc.TLS, Voidpf, Voidpf) 12695 }{Xzcfree})) 12696 } 12697 state = (*struct { 12698 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 12699 })(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{}))) 12700 if state == uintptr(Z_NULL) { 12701 return -4 12702 } 12703 12704 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 12705 (*Inflate_state)(unsafe.Pointer(state)).Fstrm = strm 12706 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 12707 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD // to pass state test in inflateReset2() 12708 ret = XinflateReset2(tls, strm, windowBits) 12709 if ret != Z_OK { 12710 (*struct { 12711 f func(*libc.TLS, Voidpf, Voidpf) 12712 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, state) 12713 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 12714 } 12715 return ret 12716 } 12717 12718 func XinflateInit_(tls *libc.TLS, strm Z_streamp, version uintptr, stream_size int32) int32 { /* inflate.c:239:13: */ 12719 return XinflateInit2_(tls, strm, MAX_WBITS, version, stream_size) 12720 } 12721 12722 func XinflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* inflate.c:247:13: */ 12723 var state uintptr 12724 12725 if inflateStateCheck(tls, strm) != 0 { 12726 return -2 12727 } 12728 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12729 if bits < 0 { 12730 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint32(0) 12731 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 12732 return Z_OK 12733 } 12734 if (bits > 16) || (((*Inflate_state)(unsafe.Pointer(state)).Fbits + UInt(bits)) > uint32(32)) { 12735 return -2 12736 } 12737 value = int32(int32(value) & ((int32(1) << bits) - 1)) 12738 *(*uint32)(unsafe.Pointer(state + 60 /* &.hold */)) += (uint32(uint32(value) << (*Inflate_state)(unsafe.Pointer(state)).Fbits)) 12739 *(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) += (UInt(bits)) 12740 return Z_OK 12741 } 12742 12743 // 12744 // Return state with length and distance decoding tables and index sizes set to 12745 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 12746 // If BUILDFIXED is defined, then instead this routine builds the tables the 12747 // first time it's called, and returns those tables the first time and 12748 // thereafter. This reduces the size of the code by about 2K bytes, in 12749 // exchange for a little execution time. However, BUILDFIXED should not be 12750 // used for threaded applications, since the rewriting of the tables and virgin 12751 // may not be thread-safe. 12752 // 12753 func fixedtables1(tls *libc.TLS, state uintptr) { /* inflate.c:278:12: */ 12754 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix1)) 12755 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 12756 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix1)) 12757 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 12758 } 12759 12760 var lenfix1 = [512]Code{ 12761 {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)}, 12762 {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)}, 12763 {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)}, 12764 {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)}, 12765 {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)}, 12766 {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)}, 12767 {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)}, 12768 {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)}, 12769 {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)}, 12770 {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)}, 12771 {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)}, 12772 {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)}, 12773 {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)}, 12774 {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)}, 12775 {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)}, 12776 {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)}, 12777 {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)}, 12778 {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)}, 12779 {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)}, 12780 {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)}, 12781 {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)}, 12782 {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)}, 12783 {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)}, 12784 {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)}, 12785 {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)}, 12786 {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)}, 12787 {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)}, 12788 {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)}, 12789 {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)}, 12790 {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)}, 12791 {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)}, 12792 {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)}, 12793 {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)}, 12794 {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)}, 12795 {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)}, 12796 {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)}, 12797 {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)}, 12798 {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)}, 12799 {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)}, 12800 {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)}, 12801 {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)}, 12802 {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)}, 12803 {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)}, 12804 {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)}, 12805 {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)}, 12806 {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)}, 12807 {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)}, 12808 {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)}, 12809 {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)}, 12810 {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)}, 12811 {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)}, 12812 {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)}, 12813 {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)}, 12814 {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)}, 12815 {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)}, 12816 {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)}, 12817 {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)}, 12818 {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)}, 12819 {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)}, 12820 {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)}, 12821 {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)}, 12822 {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)}, 12823 {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)}, 12824 {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)}, 12825 {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)}, 12826 {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)}, 12827 {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)}, 12828 {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)}, 12829 {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)}, 12830 {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)}, 12831 {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)}, 12832 {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)}, 12833 {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)}, 12834 {Fbits: uint8(9), Fval: uint16(255)}, 12835 } /* inffixed.h:10:23 */ 12836 var distfix1 = [32]Code{ 12837 {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)}, 12838 {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)}, 12839 {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)}, 12840 {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)}, 12841 {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)}, 12842 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 12843 } /* inffixed.h:87:23 */ 12844 12845 // 12846 // Update the window with the last wsize (normally 32K) bytes written before 12847 // returning. If window does not exist yet, create it. This is only called 12848 // when a window is already in use, or when output has been written during this 12849 // inflate call, but the end of the deflate stream has not been reached yet. 12850 // It is also called to create a window for dictionary data when a dictionary 12851 // is loaded. 12852 // 12853 // Providing output buffers larger than 32K to inflate() should provide a speed 12854 // advantage, since only the last 32K of output is copied to the sliding window 12855 // upon return from inflate(), and since all distances after the first 32K of 12856 // output will fall in the output data, making match copies simpler and faster. 12857 // The advantage may be dependent on the size of the processor's data caches. 12858 // 12859 func updatewindow(tls *libc.TLS, strm Z_streamp, end uintptr, copy uint32) int32 { /* inflate.c:396:11: */ 12860 var state uintptr 12861 var dist uint32 12862 12863 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12864 12865 // if it hasn't been done already, allocate space for the window 12866 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 12867 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = (*struct { 12868 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 12869 })(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)))) 12870 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 12871 return 1 12872 } 12873 } 12874 12875 // if window not in use yet, initialize 12876 if (*Inflate_state)(unsafe.Pointer(state)).Fwsize == uint32(0) { 12877 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits) 12878 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 12879 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 12880 } 12881 12882 // copy state->wsize or less output bytes into the circular window 12883 if copy >= (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 12884 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize)), (*Inflate_state)(unsafe.Pointer(state)).Fwsize) 12885 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 12886 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12887 } else { 12888 dist = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Fwnext) 12889 if dist > copy { 12890 dist = copy 12891 } 12892 libc.Xmemcpy(tls, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), (end - uintptr(copy)), dist) 12893 copy = copy - (dist) 12894 if copy != 0 { 12895 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr(copy)), copy) 12896 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = copy 12897 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12898 } else { 12899 *(*uint32)(unsafe.Pointer(state + 52 /* &.wnext */)) += (dist) 12900 if (*Inflate_state)(unsafe.Pointer(state)).Fwnext == (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 12901 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 12902 } 12903 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 12904 *(*uint32)(unsafe.Pointer(state + 48 /* &.whave */)) += (dist) 12905 } 12906 } 12907 } 12908 return 0 12909 } 12910 12911 // Macros for inflate(): 12912 12913 // check function to use adler32() for zlib or crc32() for gzip 12914 12915 // check macros for header crc 12916 12917 // Load registers with state in inflate() for speed 12918 12919 // Restore state from registers in inflate() 12920 12921 // Clear the input bit accumulator 12922 12923 // Get a byte of input into the bit accumulator, or return from inflate() 12924 // if there is no input available. 12925 12926 // Assure that there are at least n bits in the bit accumulator. If there is 12927 // not enough available input to do that, then return from inflate(). 12928 12929 // Return the low n bits of the bit accumulator (n < 16) 12930 12931 // Remove n bits from the bit accumulator 12932 12933 // Remove zero to seven bits as needed to go to a byte boundary 12934 12935 // 12936 // inflate() uses a state machine to process as much input data and generate as 12937 // much output data as possible before returning. The state machine is 12938 // structured roughly as follows: 12939 // 12940 // for (;;) switch (state) { 12941 // ... 12942 // case STATEn: 12943 // if (not enough input data or output space to make progress) 12944 // return; 12945 // ... make progress ... 12946 // state = STATEm; 12947 // break; 12948 // ... 12949 // } 12950 // 12951 // so when inflate() is called again, the same case is attempted again, and 12952 // if the appropriate resources are provided, the machine proceeds to the 12953 // next state. The NEEDBITS() macro is usually the way the state evaluates 12954 // whether it can proceed or should return. NEEDBITS() does the return if 12955 // the requested bits are not available. The typical use of the BITS macros 12956 // is: 12957 // 12958 // NEEDBITS(n); 12959 // ... do something with BITS(n) ... 12960 // DROPBITS(n); 12961 // 12962 // where NEEDBITS(n) either returns from inflate() if there isn't enough 12963 // input left to load n bits into the accumulator, or it continues. BITS(n) 12964 // gives the low n bits in the accumulator. When done, DROPBITS(n) drops 12965 // the low n bits off the accumulator. INITBITS() clears the accumulator 12966 // and sets the number of available bits to zero. BYTEBITS() discards just 12967 // enough bits to put the accumulator on a byte boundary. After BYTEBITS() 12968 // and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. 12969 // 12970 // NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return 12971 // if there is no input available. The decoding of variable length codes uses 12972 // PULLBYTE() directly in order to pull just enough bytes to decode the next 12973 // code, and no more. 12974 // 12975 // Some states loop until they get enough input, making sure that enough 12976 // state information is maintained to continue the loop where it left off 12977 // if NEEDBITS() returns in the loop. For example, want, need, and keep 12978 // would all have to actually be part of the saved state in case NEEDBITS() 12979 // returns: 12980 // 12981 // case STATEw: 12982 // while (want < need) { 12983 // NEEDBITS(n); 12984 // keep[want++] = BITS(n); 12985 // DROPBITS(n); 12986 // } 12987 // state = STATEx; 12988 // case STATEx: 12989 // 12990 // As shown above, if the next state is also the next case, then the break 12991 // is omitted. 12992 // 12993 // A state may also return if there is not enough output space available to 12994 // complete that state. Those states are copying stored data, writing a 12995 // literal byte, and copying a matching string. 12996 // 12997 // When returning, a "goto inf_leave" is used to update the total counters, 12998 // update the check value, and determine whether any progress has been made 12999 // during that inflate() call in order to return the proper return code. 13000 // Progress is defined as a change in either strm->avail_in or strm->avail_out. 13001 // When there is a window, goto inf_leave will update the window with the last 13002 // output written. If a goto inf_leave occurs in the middle of decompression 13003 // and there is no window currently, goto inf_leave will create one and copy 13004 // output to the window for the next call of inflate(). 13005 // 13006 // In this implementation, the flush parameter of inflate() only affects the 13007 // return code (per zlib.h). inflate() always writes as much as possible to 13008 // strm->next_out, given the space available and the provided input--the effect 13009 // documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers 13010 // the allocation of and copying into a sliding window until necessary, which 13011 // provides the effect documented in zlib.h for Z_FINISH when the entire input 13012 // stream available. So the only thing the flush parameter actually does is: 13013 // when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it 13014 // will return Z_BUF_ERROR if it has not reached the end of the stream. 13015 // 13016 13017 func Xinflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* inflate.c:622:13: */ 13018 bp := tls.Alloc(4) 13019 defer tls.Free(4) 13020 13021 var state uintptr 13022 var next uintptr // next input 13023 var put uintptr // next output 13024 var have uint32 13025 var left uint32 // available input and output 13026 var hold uint32 // bit buffer 13027 var bits uint32 // bits in bit buffer 13028 var in uint32 13029 var out uint32 // save starting available input and output 13030 var copy uint32 // number of stored or match bytes to copy 13031 var from uintptr // where to copy match bytes from 13032 var here Code // current decoding table entry 13033 var last Code // parent table entry 13034 var len uint32 // length to copy for repeats, bits to drop 13035 var ret int32 // return code 13036 // var hbuf [4]uint8 at bp, 4 13037 13038 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)))) { 13039 goto __1 13040 } 13041 return -2 13042 __1: 13043 ; 13044 13045 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13046 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 13047 goto __2 13048 } 13049 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 13050 __2: 13051 ; // skip check 13052 __3: 13053 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 13054 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 13055 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 13056 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 13057 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 13058 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 13059 goto __4 13060 __4: 13061 if 0 != 0 { 13062 goto __3 13063 } 13064 goto __5 13065 __5: 13066 ; 13067 in = have 13068 out = left 13069 ret = Z_OK 13070 __6: 13071 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 13072 case HEAD: 13073 goto __10 13074 case FLAGS: 13075 goto __11 13076 case TIME: 13077 goto __12 13078 case OS: 13079 goto __13 13080 case EXLEN: 13081 goto __14 13082 case EXTRA: 13083 goto __15 13084 case NAME: 13085 goto __16 13086 case COMMENT: 13087 goto __17 13088 case HCRC: 13089 goto __18 13090 case DICTID: 13091 goto __19 13092 case DICT: 13093 goto __20 13094 case TYPE: 13095 goto __21 13096 case TYPEDO: 13097 goto __22 13098 case STORED: 13099 goto __23 13100 case COPY_: 13101 goto __24 13102 case COPY: 13103 goto __25 13104 case TABLE: 13105 goto __26 13106 case LENLENS: 13107 goto __27 13108 case CODELENS: 13109 goto __28 13110 case LEN_: 13111 goto __29 13112 case LEN: 13113 goto __30 13114 case LENEXT: 13115 goto __31 13116 case DIST: 13117 goto __32 13118 case DISTEXT: 13119 goto __33 13120 case MATCH: 13121 goto __34 13122 case LIT: 13123 goto __35 13124 case CHECK: 13125 goto __36 13126 case LENGTH: 13127 goto __37 13128 case DONE: 13129 goto __38 13130 case BAD: 13131 goto __39 13132 case MEM: 13133 goto __40 13134 case SYNC: 13135 goto __41 13136 default: 13137 goto __42 13138 } 13139 goto __9 13140 __10: 13141 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap == 0) { 13142 goto __43 13143 } 13144 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 13145 goto __9 13146 __43: 13147 ; 13148 __44: 13149 __47: 13150 if !(bits < (uint32(16))) { 13151 goto __48 13152 } 13153 __49: 13154 if !(have == uint32(0)) { 13155 goto __52 13156 } 13157 goto inf_leave 13158 __52: 13159 ; 13160 have-- 13161 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13162 bits = bits + (uint32(8)) 13163 goto __50 13164 __50: 13165 if 0 != 0 { 13166 goto __49 13167 } 13168 goto __51 13169 __51: 13170 ; 13171 goto __47 13172 __48: 13173 ; 13174 goto __45 13175 __45: 13176 if 0 != 0 { 13177 goto __44 13178 } 13179 goto __46 13180 __46: 13181 ; 13182 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) != 0) && (hold == uint32(0x8b1f))) { 13183 goto __53 13184 } // gzip header 13185 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 13186 goto __54 13187 } 13188 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(15) 13189 __54: 13190 ; 13191 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 13192 __55: 13193 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 13194 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 13195 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 13196 goto __56 13197 __56: 13198 if 0 != 0 { 13199 goto __55 13200 } 13201 goto __57 13202 __57: 13203 ; 13204 __58: 13205 hold = uint32(0) 13206 bits = uint32(0) 13207 goto __59 13208 __59: 13209 if 0 != 0 { 13210 goto __58 13211 } 13212 goto __60 13213 __60: 13214 ; 13215 (*Inflate_state)(unsafe.Pointer(state)).Fmode = FLAGS 13216 goto __9 13217 __53: 13218 ; 13219 (*Inflate_state)(unsafe.Pointer(state)).Fflags = 0 // expect zlib header 13220 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13221 goto __61 13222 } 13223 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = -1 13224 __61: 13225 ; 13226 if !(!(((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1) != 0) || ((((uint32((uint32(hold) & ((uint32(1) << (8)) - uint32(1))) << 8)) + (hold >> 8)) % uint32(31)) != 0)) { 13227 goto __62 13228 } 13229 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 669 /* "incorrect header..." */ 13230 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13231 goto __9 13232 __62: 13233 ; 13234 if !((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) != uint32(Z_DEFLATED)) { 13235 goto __63 13236 } 13237 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 13238 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13239 goto __9 13240 __63: 13241 ; 13242 __64: 13243 hold >>= 4 13244 bits = bits - (uint32(4)) 13245 goto __65 13246 __65: 13247 if 0 != 0 { 13248 goto __64 13249 } 13250 goto __66 13251 __66: 13252 ; 13253 len = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(8)) 13254 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 13255 goto __67 13256 } 13257 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = len 13258 __67: 13259 ; 13260 if !((len > uint32(15)) || (len > (*Inflate_state)(unsafe.Pointer(state)).Fwbits)) { 13261 goto __68 13262 } 13263 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 719 /* "invalid window s..." */ 13264 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13265 goto __9 13266 __68: 13267 ; 13268 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = (uint32(1) << len) 13269 13270 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0))) 13271 (*Inflate_state)(unsafe.Pointer(state)).Fmode = func() uint32 { 13272 if (hold & uint32(0x200)) != 0 { 13273 return DICTID 13274 } 13275 return TYPE 13276 }() 13277 __69: 13278 hold = uint32(0) 13279 bits = uint32(0) 13280 goto __70 13281 __70: 13282 if 0 != 0 { 13283 goto __69 13284 } 13285 goto __71 13286 __71: 13287 ; 13288 goto __9 13289 __11: 13290 __72: 13291 __75: 13292 if !(bits < (uint32(16))) { 13293 goto __76 13294 } 13295 __77: 13296 if !(have == uint32(0)) { 13297 goto __80 13298 } 13299 goto inf_leave 13300 __80: 13301 ; 13302 have-- 13303 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13304 bits = bits + (uint32(8)) 13305 goto __78 13306 __78: 13307 if 0 != 0 { 13308 goto __77 13309 } 13310 goto __79 13311 __79: 13312 ; 13313 goto __75 13314 __76: 13315 ; 13316 goto __73 13317 __73: 13318 if 0 != 0 { 13319 goto __72 13320 } 13321 goto __74 13322 __74: 13323 ; 13324 (*Inflate_state)(unsafe.Pointer(state)).Fflags = int32(hold) 13325 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xff) != Z_DEFLATED) { 13326 goto __81 13327 } 13328 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 13329 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13330 goto __9 13331 __81: 13332 ; 13333 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xe000) != 0) { 13334 goto __82 13335 } 13336 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 739 /* "unknown header f..." */ 13337 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13338 goto __9 13339 __82: 13340 ; 13341 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13342 goto __83 13343 } 13344 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftext = (int32((hold >> 8) & uint32(1))) 13345 __83: 13346 ; 13347 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13348 goto __84 13349 } 13350 __85: 13351 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 13352 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 13353 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 13354 goto __86 13355 __86: 13356 if 0 != 0 { 13357 goto __85 13358 } 13359 goto __87 13360 __87: 13361 ; 13362 __84: 13363 ; 13364 __88: 13365 hold = uint32(0) 13366 bits = uint32(0) 13367 goto __89 13368 __89: 13369 if 0 != 0 { 13370 goto __88 13371 } 13372 goto __90 13373 __90: 13374 ; 13375 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TIME 13376 __12: 13377 __91: 13378 __94: 13379 if !(bits < (uint32(32))) { 13380 goto __95 13381 } 13382 __96: 13383 if !(have == uint32(0)) { 13384 goto __99 13385 } 13386 goto inf_leave 13387 __99: 13388 ; 13389 have-- 13390 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13391 bits = bits + (uint32(8)) 13392 goto __97 13393 __97: 13394 if 0 != 0 { 13395 goto __96 13396 } 13397 goto __98 13398 __98: 13399 ; 13400 goto __94 13401 __95: 13402 ; 13403 goto __92 13404 __92: 13405 if 0 != 0 { 13406 goto __91 13407 } 13408 goto __93 13409 __93: 13410 ; 13411 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13412 goto __100 13413 } 13414 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftime = hold 13415 __100: 13416 ; 13417 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13418 goto __101 13419 } 13420 __102: 13421 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 13422 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 13423 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 2)) = (uint8((hold) >> 16)) 13424 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 3)) = (uint8((hold) >> 24)) 13425 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(4)) 13426 goto __103 13427 __103: 13428 if 0 != 0 { 13429 goto __102 13430 } 13431 goto __104 13432 __104: 13433 ; 13434 __101: 13435 ; 13436 __105: 13437 hold = uint32(0) 13438 bits = uint32(0) 13439 goto __106 13440 __106: 13441 if 0 != 0 { 13442 goto __105 13443 } 13444 goto __107 13445 __107: 13446 ; 13447 (*Inflate_state)(unsafe.Pointer(state)).Fmode = OS 13448 __13: 13449 __108: 13450 __111: 13451 if !(bits < (uint32(16))) { 13452 goto __112 13453 } 13454 __113: 13455 if !(have == uint32(0)) { 13456 goto __116 13457 } 13458 goto inf_leave 13459 __116: 13460 ; 13461 have-- 13462 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13463 bits = bits + (uint32(8)) 13464 goto __114 13465 __114: 13466 if 0 != 0 { 13467 goto __113 13468 } 13469 goto __115 13470 __115: 13471 ; 13472 goto __111 13473 __112: 13474 ; 13475 goto __109 13476 __109: 13477 if 0 != 0 { 13478 goto __108 13479 } 13480 goto __110 13481 __110: 13482 ; 13483 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13484 goto __117 13485 } 13486 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fxflags = (int32(hold & uint32(0xff))) 13487 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fos = (int32(hold >> 8)) 13488 __117: 13489 ; 13490 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13491 goto __118 13492 } 13493 __119: 13494 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 13495 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 13496 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 13497 goto __120 13498 __120: 13499 if 0 != 0 { 13500 goto __119 13501 } 13502 goto __121 13503 __121: 13504 ; 13505 __118: 13506 ; 13507 __122: 13508 hold = uint32(0) 13509 bits = uint32(0) 13510 goto __123 13511 __123: 13512 if 0 != 0 { 13513 goto __122 13514 } 13515 goto __124 13516 __124: 13517 ; 13518 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXLEN 13519 __14: 13520 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) { 13521 goto __125 13522 } 13523 __127: 13524 __130: 13525 if !(bits < (uint32(16))) { 13526 goto __131 13527 } 13528 __132: 13529 if !(have == uint32(0)) { 13530 goto __135 13531 } 13532 goto inf_leave 13533 __135: 13534 ; 13535 have-- 13536 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13537 bits = bits + (uint32(8)) 13538 goto __133 13539 __133: 13540 if 0 != 0 { 13541 goto __132 13542 } 13543 goto __134 13544 __134: 13545 ; 13546 goto __130 13547 __131: 13548 ; 13549 goto __128 13550 __128: 13551 if 0 != 0 { 13552 goto __127 13553 } 13554 goto __129 13555 __129: 13556 ; 13557 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold) 13558 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13559 goto __136 13560 } 13561 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len = uint32(hold) 13562 __136: 13563 ; 13564 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13565 goto __137 13566 } 13567 __138: 13568 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold) 13569 *(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8)) 13570 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2)) 13571 goto __139 13572 __139: 13573 if 0 != 0 { 13574 goto __138 13575 } 13576 goto __140 13577 __140: 13578 ; 13579 __137: 13580 ; 13581 __141: 13582 hold = uint32(0) 13583 bits = uint32(0) 13584 goto __142 13585 __142: 13586 if 0 != 0 { 13587 goto __141 13588 } 13589 goto __143 13590 __143: 13591 ; 13592 goto __126 13593 __125: 13594 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13595 goto __144 13596 } 13597 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra = uintptr(Z_NULL) 13598 __144: 13599 ; 13600 __126: 13601 ; 13602 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXTRA 13603 __15: 13604 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) { 13605 goto __145 13606 } 13607 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 13608 if !(copy > have) { 13609 goto __146 13610 } 13611 copy = have 13612 __146: 13613 ; 13614 if !(copy != 0) { 13615 goto __147 13616 } 13617 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra != uintptr(Z_NULL))) { 13618 goto __148 13619 } 13620 len = ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len - (*Inflate_state)(unsafe.Pointer(state)).Flength) 13621 libc.Xmemcpy(tls, ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra + uintptr(len)), next, 13622 func() uint32 { 13623 if (len + copy) > (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max { 13624 return ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max - len) 13625 } 13626 return copy 13627 }()) 13628 __148: 13629 ; 13630 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13631 goto __149 13632 } 13633 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 13634 __149: 13635 ; 13636 have = have - (copy) 13637 next += uintptr(copy) 13638 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy) 13639 __147: 13640 ; 13641 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != 0) { 13642 goto __150 13643 } 13644 goto inf_leave 13645 __150: 13646 ; 13647 __145: 13648 ; 13649 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 13650 (*Inflate_state)(unsafe.Pointer(state)).Fmode = NAME 13651 __16: 13652 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0800) != 0) { 13653 goto __151 13654 } 13655 if !(have == uint32(0)) { 13656 goto __153 13657 } 13658 goto inf_leave 13659 __153: 13660 ; 13661 copy = uint32(0) 13662 __154: 13663 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 13664 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)) { 13665 goto __157 13666 } 13667 *(*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) 13668 __157: 13669 ; 13670 goto __155 13671 __155: 13672 if (len != 0) && (copy < have) { 13673 goto __154 13674 } 13675 goto __156 13676 __156: 13677 ; 13678 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13679 goto __158 13680 } 13681 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 13682 __158: 13683 ; 13684 have = have - (copy) 13685 next += uintptr(copy) 13686 if !(len != 0) { 13687 goto __159 13688 } 13689 goto inf_leave 13690 __159: 13691 ; 13692 goto __152 13693 __151: 13694 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13695 goto __160 13696 } 13697 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname = uintptr(Z_NULL) 13698 __160: 13699 ; 13700 __152: 13701 ; 13702 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 13703 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COMMENT 13704 __17: 13705 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x1000) != 0) { 13706 goto __161 13707 } 13708 if !(have == uint32(0)) { 13709 goto __163 13710 } 13711 goto inf_leave 13712 __163: 13713 ; 13714 copy = uint32(0) 13715 __164: 13716 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 13717 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)) { 13718 goto __167 13719 } 13720 *(*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) 13721 __167: 13722 ; 13723 goto __165 13724 __165: 13725 if (len != 0) && (copy < have) { 13726 goto __164 13727 } 13728 goto __166 13729 __166: 13730 ; 13731 if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) { 13732 goto __168 13733 } 13734 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 13735 __168: 13736 ; 13737 have = have - (copy) 13738 next += uintptr(copy) 13739 if !(len != 0) { 13740 goto __169 13741 } 13742 goto inf_leave 13743 __169: 13744 ; 13745 goto __162 13746 __161: 13747 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13748 goto __170 13749 } 13750 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment = uintptr(Z_NULL) 13751 __170: 13752 ; 13753 __162: 13754 ; 13755 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HCRC 13756 __18: 13757 if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) { 13758 goto __171 13759 } 13760 __172: 13761 __175: 13762 if !(bits < (uint32(16))) { 13763 goto __176 13764 } 13765 __177: 13766 if !(have == uint32(0)) { 13767 goto __180 13768 } 13769 goto inf_leave 13770 __180: 13771 ; 13772 have-- 13773 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13774 bits = bits + (uint32(8)) 13775 goto __178 13776 __178: 13777 if 0 != 0 { 13778 goto __177 13779 } 13780 goto __179 13781 __179: 13782 ; 13783 goto __175 13784 __176: 13785 ; 13786 goto __173 13787 __173: 13788 if 0 != 0 { 13789 goto __172 13790 } 13791 goto __174 13792 __174: 13793 ; 13794 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (hold != ((*Inflate_state)(unsafe.Pointer(state)).Fcheck & uint32(0xffff)))) { 13795 goto __181 13796 } 13797 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 764 /* "header crc misma..." */ 13798 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13799 goto __9 13800 __181: 13801 ; 13802 __182: 13803 hold = uint32(0) 13804 bits = uint32(0) 13805 goto __183 13806 __183: 13807 if 0 != 0 { 13808 goto __182 13809 } 13810 goto __184 13811 __184: 13812 ; 13813 __171: 13814 ; 13815 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13816 goto __185 13817 } 13818 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fhcrc = (((*Inflate_state)(unsafe.Pointer(state)).Fflags >> 9) & 1) 13819 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = 1 13820 __185: 13821 ; 13822 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0))) 13823 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 13824 goto __9 13825 __19: 13826 __186: 13827 __189: 13828 if !(bits < (uint32(32))) { 13829 goto __190 13830 } 13831 __191: 13832 if !(have == uint32(0)) { 13833 goto __194 13834 } 13835 goto inf_leave 13836 __194: 13837 ; 13838 have-- 13839 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13840 bits = bits + (uint32(8)) 13841 goto __192 13842 __192: 13843 if 0 != 0 { 13844 goto __191 13845 } 13846 goto __193 13847 __193: 13848 ; 13849 goto __189 13850 __190: 13851 ; 13852 goto __187 13853 __187: 13854 if 0 != 0 { 13855 goto __186 13856 } 13857 goto __188 13858 __188: 13859 ; 13860 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, ((((((hold) >> 24) & uint32(0xff)) + (((hold) >> 8) & uint32(0xff00))) + (((hold) & uint32(0xff00)) << 8)) + (((hold) & uint32(0xff)) << 24))) 13861 __195: 13862 hold = uint32(0) 13863 bits = uint32(0) 13864 goto __196 13865 __196: 13866 if 0 != 0 { 13867 goto __195 13868 } 13869 goto __197 13870 __197: 13871 ; 13872 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DICT 13873 __20: 13874 if !((*Inflate_state)(unsafe.Pointer(state)).Fhavedict == 0) { 13875 goto __198 13876 } 13877 __199: 13878 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 13879 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 13880 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 13881 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 13882 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 13883 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 13884 goto __200 13885 __200: 13886 if 0 != 0 { 13887 goto __199 13888 } 13889 goto __201 13890 __201: 13891 ; 13892 return Z_NEED_DICT 13893 __198: 13894 ; 13895 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0))) 13896 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 13897 __21: 13898 if !((flush == Z_BLOCK) || (flush == Z_TREES)) { 13899 goto __202 13900 } 13901 goto inf_leave 13902 __202: 13903 ; 13904 __22: 13905 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 13906 goto __203 13907 } 13908 __204: 13909 hold >>= (bits & uint32(7)) 13910 bits = bits - (bits & uint32(7)) 13911 goto __205 13912 __205: 13913 if 0 != 0 { 13914 goto __204 13915 } 13916 goto __206 13917 __206: 13918 ; 13919 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CHECK 13920 goto __9 13921 __203: 13922 ; 13923 __207: 13924 __210: 13925 if !(bits < (uint32(3))) { 13926 goto __211 13927 } 13928 __212: 13929 if !(have == uint32(0)) { 13930 goto __215 13931 } 13932 goto inf_leave 13933 __215: 13934 ; 13935 have-- 13936 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 13937 bits = bits + (uint32(8)) 13938 goto __213 13939 __213: 13940 if 0 != 0 { 13941 goto __212 13942 } 13943 goto __214 13944 __214: 13945 ; 13946 goto __210 13947 __211: 13948 ; 13949 goto __208 13950 __208: 13951 if 0 != 0 { 13952 goto __207 13953 } 13954 goto __209 13955 __209: 13956 ; 13957 (*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1)))) 13958 __216: 13959 hold >>= 1 13960 bits = bits - (uint32(1)) 13961 goto __217 13962 __217: 13963 if 0 != 0 { 13964 goto __216 13965 } 13966 goto __218 13967 __218: 13968 ; 13969 switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) { 13970 case uint32(0): 13971 goto __220 13972 case uint32(1): 13973 goto __221 13974 case uint32(2): 13975 goto __222 13976 case uint32(3): 13977 goto __223 13978 } 13979 goto __219 13980 __220: // stored block 13981 ; 13982 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 13983 goto __219 13984 __221: // fixed block 13985 fixedtables1(tls, state) 13986 13987 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ // decode codes 13988 if !(flush == Z_TREES) { 13989 goto __224 13990 } 13991 __225: 13992 hold >>= 2 13993 bits = bits - (uint32(2)) 13994 goto __226 13995 __226: 13996 if 0 != 0 { 13997 goto __225 13998 } 13999 goto __227 14000 __227: 14001 ; 14002 goto inf_leave 14003 __224: 14004 ; 14005 goto __219 14006 __222: // dynamic block 14007 ; 14008 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 14009 goto __219 14010 __223: 14011 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 14012 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14013 __219: 14014 ; 14015 __228: 14016 hold >>= 2 14017 bits = bits - (uint32(2)) 14018 goto __229 14019 __229: 14020 if 0 != 0 { 14021 goto __228 14022 } 14023 goto __230 14024 __230: 14025 ; 14026 goto __9 14027 __23: 14028 __231: 14029 hold >>= (bits & uint32(7)) 14030 bits = bits - (bits & uint32(7)) 14031 goto __232 14032 __232: 14033 if 0 != 0 { 14034 goto __231 14035 } 14036 goto __233 14037 __233: 14038 ; // go to byte boundary 14039 __234: 14040 __237: 14041 if !(bits < (uint32(32))) { 14042 goto __238 14043 } 14044 __239: 14045 if !(have == uint32(0)) { 14046 goto __242 14047 } 14048 goto inf_leave 14049 __242: 14050 ; 14051 have-- 14052 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14053 bits = bits + (uint32(8)) 14054 goto __240 14055 __240: 14056 if 0 != 0 { 14057 goto __239 14058 } 14059 goto __241 14060 __241: 14061 ; 14062 goto __237 14063 __238: 14064 ; 14065 goto __235 14066 __235: 14067 if 0 != 0 { 14068 goto __234 14069 } 14070 goto __236 14071 __236: 14072 ; 14073 if !((hold & uint32(0xffff)) != ((hold >> 16) ^ uint32(0xffff))) { 14074 goto __243 14075 } 14076 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 14077 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14078 goto __9 14079 __243: 14080 ; 14081 (*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff)) 14082 14083 __244: 14084 hold = uint32(0) 14085 bits = uint32(0) 14086 goto __245 14087 __245: 14088 if 0 != 0 { 14089 goto __244 14090 } 14091 goto __246 14092 __246: 14093 ; 14094 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY_ 14095 if !(flush == Z_TREES) { 14096 goto __247 14097 } 14098 goto inf_leave 14099 __247: 14100 ; 14101 __24: 14102 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY 14103 __25: 14104 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 14105 if !(copy != 0) { 14106 goto __248 14107 } 14108 if !(copy > have) { 14109 goto __249 14110 } 14111 copy = have 14112 __249: 14113 ; 14114 if !(copy > left) { 14115 goto __250 14116 } 14117 copy = left 14118 __250: 14119 ; 14120 if !(copy == uint32(0)) { 14121 goto __251 14122 } 14123 goto inf_leave 14124 __251: 14125 ; 14126 libc.Xmemcpy(tls, put, next, copy) 14127 have = have - (copy) 14128 next += uintptr(copy) 14129 left = left - (copy) 14130 put += uintptr(copy) 14131 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy) 14132 goto __9 14133 __248: 14134 ; 14135 14136 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14137 goto __9 14138 __26: 14139 __252: 14140 __255: 14141 if !(bits < (uint32(14))) { 14142 goto __256 14143 } 14144 __257: 14145 if !(have == uint32(0)) { 14146 goto __260 14147 } 14148 goto inf_leave 14149 __260: 14150 ; 14151 have-- 14152 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14153 bits = bits + (uint32(8)) 14154 goto __258 14155 __258: 14156 if 0 != 0 { 14157 goto __257 14158 } 14159 goto __259 14160 __259: 14161 ; 14162 goto __255 14163 __256: 14164 ; 14165 goto __253 14166 __253: 14167 if 0 != 0 { 14168 goto __252 14169 } 14170 goto __254 14171 __254: 14172 ; 14173 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257)) 14174 __261: 14175 hold >>= 5 14176 bits = bits - (uint32(5)) 14177 goto __262 14178 __262: 14179 if 0 != 0 { 14180 goto __261 14181 } 14182 goto __263 14183 __263: 14184 ; 14185 (*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1)) 14186 __264: 14187 hold >>= 5 14188 bits = bits - (uint32(5)) 14189 goto __265 14190 __265: 14191 if 0 != 0 { 14192 goto __264 14193 } 14194 goto __266 14195 __266: 14196 ; 14197 (*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4)) 14198 __267: 14199 hold >>= 4 14200 bits = bits - (uint32(4)) 14201 goto __268 14202 __268: 14203 if 0 != 0 { 14204 goto __267 14205 } 14206 goto __269 14207 __269: 14208 ; 14209 if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) { 14210 goto __270 14211 } 14212 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 14213 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14214 goto __9 14215 __270: 14216 ; 14217 14218 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 14219 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENLENS 14220 __27: 14221 __271: 14222 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 14223 goto __272 14224 } 14225 __273: 14226 __276: 14227 if !(bits < (uint32(3))) { 14228 goto __277 14229 } 14230 __278: 14231 if !(have == uint32(0)) { 14232 goto __281 14233 } 14234 goto inf_leave 14235 __281: 14236 ; 14237 have-- 14238 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14239 bits = bits + (uint32(8)) 14240 goto __279 14241 __279: 14242 if 0 != 0 { 14243 goto __278 14244 } 14245 goto __280 14246 __280: 14247 ; 14248 goto __276 14249 __277: 14250 ; 14251 goto __274 14252 __274: 14253 if 0 != 0 { 14254 goto __273 14255 } 14256 goto __275 14257 __275: 14258 ; 14259 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 14260 __282: 14261 hold >>= 3 14262 bits = bits - (uint32(3)) 14263 goto __283 14264 __283: 14265 if 0 != 0 { 14266 goto __282 14267 } 14268 goto __284 14269 __284: 14270 ; 14271 goto __271 14272 __272: 14273 ; 14274 __285: 14275 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 14276 goto __286 14277 } 14278 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 14279 goto __285 14280 __286: 14281 ; 14282 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */ 14283 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 14284 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 14285 ret = Xinflate_table(tls, CODES, state+116 /* &.lens */, uint32(19), (state + 112 /* &.next */), 14286 (state + 88 /* &.lenbits */), state+756 /* &.work */) 14287 if !(ret != 0) { 14288 goto __287 14289 } 14290 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 14291 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14292 goto __9 14293 __287: 14294 ; 14295 14296 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 14297 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CODELENS 14298 __28: 14299 __288: 14300 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 14301 goto __289 14302 } 14303 __290: 14304 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 14305 if !((uint32(here.Fbits)) <= bits) { 14306 goto __293 14307 } 14308 goto __292 14309 __293: 14310 ; 14311 __294: 14312 if !(have == uint32(0)) { 14313 goto __297 14314 } 14315 goto inf_leave 14316 __297: 14317 ; 14318 have-- 14319 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14320 bits = bits + (uint32(8)) 14321 goto __295 14322 __295: 14323 if 0 != 0 { 14324 goto __294 14325 } 14326 goto __296 14327 __296: 14328 ; 14329 goto __291 14330 __291: 14331 goto __290 14332 goto __292 14333 __292: 14334 ; 14335 if !(int32(here.Fval) < 16) { 14336 goto __298 14337 } 14338 __300: 14339 hold >>= int32(here.Fbits) 14340 bits = bits - (uint32(here.Fbits)) 14341 goto __301 14342 __301: 14343 if 0 != 0 { 14344 goto __300 14345 } 14346 goto __302 14347 __302: 14348 ; 14349 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 14350 goto __299 14351 __298: 14352 if !(int32(here.Fval) == 16) { 14353 goto __303 14354 } 14355 __305: 14356 __308: 14357 if !(bits < (uint32(int32(here.Fbits) + 2))) { 14358 goto __309 14359 } 14360 __310: 14361 if !(have == uint32(0)) { 14362 goto __313 14363 } 14364 goto inf_leave 14365 __313: 14366 ; 14367 have-- 14368 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14369 bits = bits + (uint32(8)) 14370 goto __311 14371 __311: 14372 if 0 != 0 { 14373 goto __310 14374 } 14375 goto __312 14376 __312: 14377 ; 14378 goto __308 14379 __309: 14380 ; 14381 goto __306 14382 __306: 14383 if 0 != 0 { 14384 goto __305 14385 } 14386 goto __307 14387 __307: 14388 ; 14389 __314: 14390 hold >>= int32(here.Fbits) 14391 bits = bits - (uint32(here.Fbits)) 14392 goto __315 14393 __315: 14394 if 0 != 0 { 14395 goto __314 14396 } 14397 goto __316 14398 __316: 14399 ; 14400 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 14401 goto __317 14402 } 14403 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 14404 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14405 goto __289 14406 __317: 14407 ; 14408 len = uint32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2))) 14409 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1)))) 14410 __318: 14411 hold >>= 2 14412 bits = bits - (uint32(2)) 14413 goto __319 14414 __319: 14415 if 0 != 0 { 14416 goto __318 14417 } 14418 goto __320 14419 __320: 14420 ; 14421 goto __304 14422 __303: 14423 if !(int32(here.Fval) == 17) { 14424 goto __321 14425 } 14426 __323: 14427 __326: 14428 if !(bits < (uint32(int32(here.Fbits) + 3))) { 14429 goto __327 14430 } 14431 __328: 14432 if !(have == uint32(0)) { 14433 goto __331 14434 } 14435 goto inf_leave 14436 __331: 14437 ; 14438 have-- 14439 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14440 bits = bits + (uint32(8)) 14441 goto __329 14442 __329: 14443 if 0 != 0 { 14444 goto __328 14445 } 14446 goto __330 14447 __330: 14448 ; 14449 goto __326 14450 __327: 14451 ; 14452 goto __324 14453 __324: 14454 if 0 != 0 { 14455 goto __323 14456 } 14457 goto __325 14458 __325: 14459 ; 14460 __332: 14461 hold >>= int32(here.Fbits) 14462 bits = bits - (uint32(here.Fbits)) 14463 goto __333 14464 __333: 14465 if 0 != 0 { 14466 goto __332 14467 } 14468 goto __334 14469 __334: 14470 ; 14471 len = uint32(0) 14472 copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1)))) 14473 __335: 14474 hold >>= 3 14475 bits = bits - (uint32(3)) 14476 goto __336 14477 __336: 14478 if 0 != 0 { 14479 goto __335 14480 } 14481 goto __337 14482 __337: 14483 ; 14484 goto __322 14485 __321: 14486 __338: 14487 __341: 14488 if !(bits < (uint32(int32(here.Fbits) + 7))) { 14489 goto __342 14490 } 14491 __343: 14492 if !(have == uint32(0)) { 14493 goto __346 14494 } 14495 goto inf_leave 14496 __346: 14497 ; 14498 have-- 14499 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14500 bits = bits + (uint32(8)) 14501 goto __344 14502 __344: 14503 if 0 != 0 { 14504 goto __343 14505 } 14506 goto __345 14507 __345: 14508 ; 14509 goto __341 14510 __342: 14511 ; 14512 goto __339 14513 __339: 14514 if 0 != 0 { 14515 goto __338 14516 } 14517 goto __340 14518 __340: 14519 ; 14520 __347: 14521 hold >>= int32(here.Fbits) 14522 bits = bits - (uint32(here.Fbits)) 14523 goto __348 14524 __348: 14525 if 0 != 0 { 14526 goto __347 14527 } 14528 goto __349 14529 __349: 14530 ; 14531 len = uint32(0) 14532 copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1)))) 14533 __350: 14534 hold >>= 7 14535 bits = bits - (uint32(7)) 14536 goto __351 14537 __351: 14538 if 0 != 0 { 14539 goto __350 14540 } 14541 goto __352 14542 __352: 14543 ; 14544 __322: 14545 ; 14546 __304: 14547 ; 14548 if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) { 14549 goto __353 14550 } 14551 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 14552 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14553 goto __289 14554 __353: 14555 ; 14556 __354: 14557 if !(libc.PostDecUint32(©, 1) != 0) { 14558 goto __355 14559 } 14560 *(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 14561 goto __354 14562 __355: 14563 ; 14564 __299: 14565 ; 14566 goto __288 14567 __289: 14568 ; 14569 14570 // handle error breaks in while 14571 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 14572 goto __356 14573 } 14574 goto __9 14575 __356: 14576 ; 14577 14578 // check for end-of-block code (better have one) 14579 if !(int32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + 256*2))) == 0) { 14580 goto __357 14581 } 14582 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 14583 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14584 goto __9 14585 __357: 14586 ; 14587 14588 // build code tables -- note: do not change the lenbits or distbits 14589 // values here (9 and 6) without reading the comments in inftrees.h 14590 // concerning the ENOUGH constants, which depend on those values 14591 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */ 14592 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 14593 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 14594 ret = Xinflate_table(tls, LENS, state+116 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 112 /* &.next */), 14595 (state + 88 /* &.lenbits */), state+756 /* &.work */) 14596 if !(ret != 0) { 14597 goto __358 14598 } 14599 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 14600 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14601 goto __9 14602 __358: 14603 ; 14604 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 14605 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 14606 ret = Xinflate_table(tls, DISTS, ((state + 116 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist, 14607 (state + 112 /* &.next */), (state + 92 /* &.distbits */), state+756 /* &.work */) 14608 if !(ret != 0) { 14609 goto __359 14610 } 14611 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 14612 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14613 goto __9 14614 __359: 14615 ; 14616 14617 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ 14618 if !(flush == Z_TREES) { 14619 goto __360 14620 } 14621 goto inf_leave 14622 __360: 14623 ; 14624 __29: 14625 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 14626 __30: 14627 if !((have >= uint32(6)) && (left >= uint32(258))) { 14628 goto __361 14629 } 14630 __362: 14631 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 14632 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 14633 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 14634 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 14635 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 14636 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 14637 goto __363 14638 __363: 14639 if 0 != 0 { 14640 goto __362 14641 } 14642 goto __364 14643 __364: 14644 ; 14645 Xinflate_fast(tls, strm, out) 14646 __365: 14647 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 14648 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 14649 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 14650 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 14651 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 14652 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 14653 goto __366 14654 __366: 14655 if 0 != 0 { 14656 goto __365 14657 } 14658 goto __367 14659 __367: 14660 ; 14661 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 14662 goto __368 14663 } 14664 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 14665 __368: 14666 ; 14667 goto __9 14668 __361: 14669 ; 14670 (*Inflate_state)(unsafe.Pointer(state)).Fback = 0 14671 __369: 14672 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4)) 14673 if !((uint32(here.Fbits)) <= bits) { 14674 goto __372 14675 } 14676 goto __371 14677 __372: 14678 ; 14679 __373: 14680 if !(have == uint32(0)) { 14681 goto __376 14682 } 14683 goto inf_leave 14684 __376: 14685 ; 14686 have-- 14687 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14688 bits = bits + (uint32(8)) 14689 goto __374 14690 __374: 14691 if 0 != 0 { 14692 goto __373 14693 } 14694 goto __375 14695 __375: 14696 ; 14697 goto __370 14698 __370: 14699 goto __369 14700 goto __371 14701 __371: 14702 ; 14703 if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) { 14704 goto __377 14705 } 14706 last = here 14707 __378: 14708 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)) 14709 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 14710 goto __381 14711 } 14712 goto __380 14713 __381: 14714 ; 14715 __382: 14716 if !(have == uint32(0)) { 14717 goto __385 14718 } 14719 goto inf_leave 14720 __385: 14721 ; 14722 have-- 14723 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14724 bits = bits + (uint32(8)) 14725 goto __383 14726 __383: 14727 if 0 != 0 { 14728 goto __382 14729 } 14730 goto __384 14731 __384: 14732 ; 14733 goto __379 14734 __379: 14735 goto __378 14736 goto __380 14737 __380: 14738 ; 14739 __386: 14740 hold >>= int32(last.Fbits) 14741 bits = bits - (uint32(last.Fbits)) 14742 goto __387 14743 __387: 14744 if 0 != 0 { 14745 goto __386 14746 } 14747 goto __388 14748 __388: 14749 ; 14750 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(last.Fbits)) 14751 __377: 14752 ; 14753 __389: 14754 hold >>= int32(here.Fbits) 14755 bits = bits - (uint32(here.Fbits)) 14756 goto __390 14757 __390: 14758 if 0 != 0 { 14759 goto __389 14760 } 14761 goto __391 14762 __391: 14763 ; 14764 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(here.Fbits)) 14765 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 14766 if !((int32(here.Fop)) == 0) { 14767 goto __392 14768 } 14769 14770 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LIT 14771 goto __9 14772 __392: 14773 ; 14774 if !((int32(here.Fop) & 32) != 0) { 14775 goto __393 14776 } 14777 14778 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 14779 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14780 goto __9 14781 __393: 14782 ; 14783 if !((int32(here.Fop) & 64) != 0) { 14784 goto __394 14785 } 14786 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 14787 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14788 goto __9 14789 __394: 14790 ; 14791 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 14792 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENEXT 14793 __31: 14794 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 14795 goto __395 14796 } 14797 __396: 14798 __399: 14799 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 14800 goto __400 14801 } 14802 __401: 14803 if !(have == uint32(0)) { 14804 goto __404 14805 } 14806 goto inf_leave 14807 __404: 14808 ; 14809 have-- 14810 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14811 bits = bits + (uint32(8)) 14812 goto __402 14813 __402: 14814 if 0 != 0 { 14815 goto __401 14816 } 14817 goto __403 14818 __403: 14819 ; 14820 goto __399 14821 __400: 14822 ; 14823 goto __397 14824 __397: 14825 if 0 != 0 { 14826 goto __396 14827 } 14828 goto __398 14829 __398: 14830 ; 14831 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 14832 __405: 14833 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 14834 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 14835 goto __406 14836 __406: 14837 if 0 != 0 { 14838 goto __405 14839 } 14840 goto __407 14841 __407: 14842 ; 14843 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra)) 14844 __395: 14845 ; 14846 14847 (*Inflate_state)(unsafe.Pointer(state)).Fwas = (*Inflate_state)(unsafe.Pointer(state)).Flength 14848 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DIST 14849 __32: 14850 __408: 14851 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4)) 14852 if !((uint32(here.Fbits)) <= bits) { 14853 goto __411 14854 } 14855 goto __410 14856 __411: 14857 ; 14858 __412: 14859 if !(have == uint32(0)) { 14860 goto __415 14861 } 14862 goto inf_leave 14863 __415: 14864 ; 14865 have-- 14866 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14867 bits = bits + (uint32(8)) 14868 goto __413 14869 __413: 14870 if 0 != 0 { 14871 goto __412 14872 } 14873 goto __414 14874 __414: 14875 ; 14876 goto __409 14877 __409: 14878 goto __408 14879 goto __410 14880 __410: 14881 ; 14882 if !((int32(here.Fop) & 0xf0) == 0) { 14883 goto __416 14884 } 14885 last = here 14886 __417: 14887 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)) 14888 if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) { 14889 goto __420 14890 } 14891 goto __419 14892 __420: 14893 ; 14894 __421: 14895 if !(have == uint32(0)) { 14896 goto __424 14897 } 14898 goto inf_leave 14899 __424: 14900 ; 14901 have-- 14902 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14903 bits = bits + (uint32(8)) 14904 goto __422 14905 __422: 14906 if 0 != 0 { 14907 goto __421 14908 } 14909 goto __423 14910 __423: 14911 ; 14912 goto __418 14913 __418: 14914 goto __417 14915 goto __419 14916 __419: 14917 ; 14918 __425: 14919 hold >>= int32(last.Fbits) 14920 bits = bits - (uint32(last.Fbits)) 14921 goto __426 14922 __426: 14923 if 0 != 0 { 14924 goto __425 14925 } 14926 goto __427 14927 __427: 14928 ; 14929 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(last.Fbits)) 14930 __416: 14931 ; 14932 __428: 14933 hold >>= int32(here.Fbits) 14934 bits = bits - (uint32(here.Fbits)) 14935 goto __429 14936 __429: 14937 if 0 != 0 { 14938 goto __428 14939 } 14940 goto __430 14941 __430: 14942 ; 14943 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(here.Fbits)) 14944 if !((int32(here.Fop) & 64) != 0) { 14945 goto __431 14946 } 14947 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 14948 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14949 goto __9 14950 __431: 14951 ; 14952 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 14953 (*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15)) 14954 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DISTEXT 14955 __33: 14956 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 14957 goto __432 14958 } 14959 __433: 14960 __436: 14961 if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) { 14962 goto __437 14963 } 14964 __438: 14965 if !(have == uint32(0)) { 14966 goto __441 14967 } 14968 goto inf_leave 14969 __441: 14970 ; 14971 have-- 14972 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 14973 bits = bits + (uint32(8)) 14974 goto __439 14975 __439: 14976 if 0 != 0 { 14977 goto __438 14978 } 14979 goto __440 14980 __440: 14981 ; 14982 goto __436 14983 __437: 14984 ; 14985 goto __434 14986 __434: 14987 if 0 != 0 { 14988 goto __433 14989 } 14990 goto __435 14991 __435: 14992 ; 14993 *(*uint32)(unsafe.Pointer(state + 72 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1))) 14994 __442: 14995 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 14996 bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra) 14997 goto __443 14998 __443: 14999 if 0 != 0 { 15000 goto __442 15001 } 15002 goto __444 15003 __444: 15004 ; 15005 *(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra)) 15006 __432: 15007 ; 15008 15009 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MATCH 15010 __34: 15011 if !(left == uint32(0)) { 15012 goto __445 15013 } 15014 goto inf_leave 15015 __445: 15016 ; 15017 copy = (out - left) 15018 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > copy) { 15019 goto __446 15020 } // copy from window 15021 copy = ((*Inflate_state)(unsafe.Pointer(state)).Foffset - copy) 15022 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwhave) { 15023 goto __448 15024 } 15025 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 15026 goto __449 15027 } 15028 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 15029 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15030 goto __9 15031 __449: 15032 ; 15033 __448: 15034 ; 15035 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwnext) { 15036 goto __450 15037 } 15038 copy = copy - ((*Inflate_state)(unsafe.Pointer(state)).Fwnext) 15039 from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwsize - copy))) 15040 goto __451 15041 __450: 15042 from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwnext - copy))) 15043 __451: 15044 ; 15045 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 15046 goto __452 15047 } 15048 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 15049 __452: 15050 ; 15051 goto __447 15052 __446: // copy from output 15053 from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset)) 15054 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 15055 __447: 15056 ; 15057 if !(copy > left) { 15058 goto __453 15059 } 15060 copy = left 15061 __453: 15062 ; 15063 left = left - (copy) 15064 *(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy) 15065 __454: 15066 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 15067 goto __455 15068 __455: 15069 if libc.PreDecUint32(©, 1) != 0 { 15070 goto __454 15071 } 15072 goto __456 15073 __456: 15074 ; 15075 if !((*Inflate_state)(unsafe.Pointer(state)).Flength == uint32(0)) { 15076 goto __457 15077 } 15078 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 15079 __457: 15080 ; 15081 goto __9 15082 __35: 15083 if !(left == uint32(0)) { 15084 goto __458 15085 } 15086 goto inf_leave 15087 __458: 15088 ; 15089 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 15090 left-- 15091 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 15092 goto __9 15093 __36: 15094 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) { 15095 goto __459 15096 } 15097 __460: 15098 __463: 15099 if !(bits < (uint32(32))) { 15100 goto __464 15101 } 15102 __465: 15103 if !(have == uint32(0)) { 15104 goto __468 15105 } 15106 goto inf_leave 15107 __468: 15108 ; 15109 have-- 15110 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 15111 bits = bits + (uint32(8)) 15112 goto __466 15113 __466: 15114 if 0 != 0 { 15115 goto __465 15116 } 15117 goto __467 15118 __467: 15119 ; 15120 goto __463 15121 __464: 15122 ; 15123 goto __461 15124 __461: 15125 if 0 != 0 { 15126 goto __460 15127 } 15128 goto __462 15129 __462: 15130 ; 15131 out = out - (left) 15132 *(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(out)) 15133 *(*uint32)(unsafe.Pointer(state + 32 /* &.total */)) += (uint32(out)) 15134 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) { 15135 goto __469 15136 } 15137 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, func() uint32 { 15138 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15139 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out) 15140 } 15141 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out) 15142 }()) 15143 __469: 15144 ; 15145 out = left 15146 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && ((func() uint32 { 15147 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15148 return hold 15149 } 15150 return ((((((hold) >> 24) & uint32(0xff)) + (((hold) >> 8) & uint32(0xff00))) + (((hold) & uint32(0xff00)) << 8)) + (((hold) & uint32(0xff)) << 24)) 15151 }()) != (*Inflate_state)(unsafe.Pointer(state)).Fcheck)) { 15152 goto __470 15153 } 15154 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 784 /* "incorrect data c..." */ 15155 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15156 goto __9 15157 __470: 15158 ; 15159 __471: 15160 hold = uint32(0) 15161 bits = uint32(0) 15162 goto __472 15163 __472: 15164 if 0 != 0 { 15165 goto __471 15166 } 15167 goto __473 15168 __473: 15169 ; 15170 15171 __459: 15172 ; 15173 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENGTH 15174 __37: 15175 if !(((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fflags != 0)) { 15176 goto __474 15177 } 15178 __475: 15179 __478: 15180 if !(bits < (uint32(32))) { 15181 goto __479 15182 } 15183 __480: 15184 if !(have == uint32(0)) { 15185 goto __483 15186 } 15187 goto inf_leave 15188 __483: 15189 ; 15190 have-- 15191 hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits) 15192 bits = bits + (uint32(8)) 15193 goto __481 15194 __481: 15195 if 0 != 0 { 15196 goto __480 15197 } 15198 goto __482 15199 __482: 15200 ; 15201 goto __478 15202 __479: 15203 ; 15204 goto __476 15205 __476: 15206 if 0 != 0 { 15207 goto __475 15208 } 15209 goto __477 15210 __477: 15211 ; 15212 if !(hold != ((*Inflate_state)(unsafe.Pointer(state)).Ftotal & 0xffffffff)) { 15213 goto __484 15214 } 15215 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 805 /* "incorrect length..." */ 15216 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15217 goto __9 15218 __484: 15219 ; 15220 __485: 15221 hold = uint32(0) 15222 bits = uint32(0) 15223 goto __486 15224 __486: 15225 if 0 != 0 { 15226 goto __485 15227 } 15228 goto __487 15229 __487: 15230 ; 15231 15232 __474: 15233 ; 15234 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 15235 __38: 15236 ret = Z_STREAM_END 15237 goto inf_leave 15238 __39: 15239 ret = -3 15240 goto inf_leave 15241 __40: 15242 return -4 15243 __41: 15244 __42: 15245 return -2 15246 __9: 15247 ; 15248 goto __7 15249 __7: 15250 goto __6 15251 goto __8 15252 __8: 15253 ; 15254 15255 // 15256 // Return from inflate(), updating the total counts and the check value. 15257 // If there was no progress during the inflate() call, return a buffer 15258 // error. Call updatewindow() to create and/or update the window state. 15259 // Note: a memory error from inflate() is non-recoverable. 15260 // 15261 inf_leave: 15262 __488: 15263 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 15264 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 15265 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 15266 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 15267 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 15268 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 15269 goto __489 15270 __489: 15271 if 0 != 0 { 15272 goto __488 15273 } 15274 goto __490 15275 __490: 15276 ; 15277 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)))) { 15278 goto __491 15279 } 15280 if !(updatewindow(tls, strm, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (out-(*Z_stream)(unsafe.Pointer(strm)).Favail_out)) != 0) { 15281 goto __492 15282 } 15283 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 15284 return -4 15285 __492: 15286 ; 15287 __491: 15288 ; 15289 in = in - ((*Z_stream)(unsafe.Pointer(strm)).Favail_in) 15290 out = out - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out) 15291 *(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(in)) 15292 *(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(out)) 15293 *(*uint32)(unsafe.Pointer(state + 32 /* &.total */)) += (uint32(out)) 15294 if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) { 15295 goto __493 15296 } 15297 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, func() uint32 { 15298 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15299 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out) 15300 } 15301 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out) 15302 }()) 15303 __493: 15304 ; 15305 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = (((int32((*Inflate_state)(unsafe.Pointer(state)).Fbits) + (func() int32 { 15306 if (*Inflate_state)(unsafe.Pointer(state)).Flast != 0 { 15307 return 64 15308 } 15309 return 0 15310 }())) + (func() int32 { 15311 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE { 15312 return 128 15313 } 15314 return 0 15315 }())) + (func() int32 { 15316 if ((*Inflate_state)(unsafe.Pointer(state)).Fmode == LEN_) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY_) { 15317 return 256 15318 } 15319 return 0 15320 }())) 15321 if !((((in == uint32(0)) && (out == uint32(0))) || (flush == Z_FINISH)) && (ret == Z_OK)) { 15322 goto __494 15323 } 15324 ret = -5 15325 __494: 15326 ; 15327 return ret 15328 } 15329 15330 var order1 = // permutation of code lengths 15331 [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 */ 15332 15333 func XinflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1277:13: */ 15334 var state uintptr 15335 if inflateStateCheck(tls, strm) != 0 { 15336 return -2 15337 } 15338 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15339 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 15340 (*struct { 15341 f func(*libc.TLS, Voidpf, Voidpf) 15342 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 15343 } 15344 (*struct { 15345 f func(*libc.TLS, Voidpf, Voidpf) 15346 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 15347 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 15348 15349 return Z_OK 15350 } 15351 15352 func XinflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* inflate.c:1291:13: */ 15353 var state uintptr 15354 15355 // check state 15356 if inflateStateCheck(tls, strm) != 0 { 15357 return -2 15358 } 15359 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15360 15361 // copy dictionary 15362 if ((*Inflate_state)(unsafe.Pointer(state)).Fwhave != 0) && (dictionary != uintptr(Z_NULL)) { 15363 libc.Xmemcpy(tls, dictionary, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), 15364 ((*Inflate_state)(unsafe.Pointer(state)).Fwhave - (*Inflate_state)(unsafe.Pointer(state)).Fwnext)) 15365 libc.Xmemcpy(tls, ((dictionary + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwhave)) - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), 15366 (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (*Inflate_state)(unsafe.Pointer(state)).Fwnext) 15367 } 15368 if dictLength != uintptr(Z_NULL) { 15369 *(*UInt)(unsafe.Pointer(dictLength)) = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 15370 } 15371 return Z_OK 15372 } 15373 15374 func XinflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* inflate.c:1314:13: */ 15375 var state uintptr 15376 var dictid uint32 15377 var ret int32 15378 15379 // check state 15380 if inflateStateCheck(tls, strm) != 0 { 15381 return -2 15382 } 15383 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15384 if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode != DICT) { 15385 return -2 15386 } 15387 15388 // check for correct dictionary identifier 15389 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == DICT { 15390 dictid = Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0)) 15391 dictid = Xadler32(tls, dictid, dictionary, dictLength) 15392 if dictid != (*Inflate_state)(unsafe.Pointer(state)).Fcheck { 15393 return -3 15394 } 15395 } 15396 15397 // copy dictionary to window using updatewindow(), which will amend the 15398 // existing dictionary if appropriate 15399 ret = updatewindow(tls, strm, (dictionary + uintptr(dictLength)), dictLength) 15400 if ret != 0 { 15401 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 15402 return -4 15403 } 15404 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 1 15405 15406 return Z_OK 15407 } 15408 15409 func XinflateGetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* inflate.c:1349:13: */ 15410 var state uintptr 15411 15412 // check state 15413 if inflateStateCheck(tls, strm) != 0 { 15414 return -2 15415 } 15416 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15417 if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) == 0 { 15418 return -2 15419 } 15420 15421 // save header structure 15422 (*Inflate_state)(unsafe.Pointer(state)).Fhead = head 15423 (*Gz_header)(unsafe.Pointer(head)).Fdone = 0 15424 return Z_OK 15425 } 15426 15427 // 15428 // Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found 15429 // or when out of input. When called, *have is the number of pattern bytes 15430 // found in order so far, in 0..3. On return *have is updated to the new 15431 // state. If on return *have equals four, then the pattern was found and the 15432 // return value is how many bytes were read including the last byte of the 15433 // pattern. If *have is less than four, then the pattern has not been found 15434 // yet and the return value is len. In the latter case, syncsearch() can be 15435 // called again with more data and the *have state. *have is initialized to 15436 // zero for the first call. 15437 // 15438 func syncsearch(tls *libc.TLS, have uintptr, buf uintptr, len uint32) uint32 { /* inflate.c:1377:16: */ 15439 var got uint32 15440 var next uint32 15441 15442 got = *(*uint32)(unsafe.Pointer(have)) 15443 next = uint32(0) 15444 for (next < len) && (got < uint32(4)) { 15445 if (int32(*(*uint8)(unsafe.Pointer(buf + uintptr(next))))) == (func() int32 { 15446 if got < uint32(2) { 15447 return 0 15448 } 15449 return 0xff 15450 }()) { 15451 got++ 15452 } else if *(*uint8)(unsafe.Pointer(buf + uintptr(next))) != 0 { 15453 got = uint32(0) 15454 } else { 15455 got = (uint32(4) - got) 15456 } 15457 next++ 15458 } 15459 *(*uint32)(unsafe.Pointer(have)) = got 15460 return next 15461 } 15462 15463 func XinflateSync(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1400:13: */ 15464 bp := tls.Alloc(4) 15465 defer tls.Free(4) 15466 15467 var len uint32 // number of bytes to look at or looked at 15468 var in uint32 15469 var out uint32 // temporary to save total_in and total_out 15470 // var buf [4]uint8 at bp, 4 15471 // to restore bit buffer to byte string 15472 var state uintptr 15473 15474 // check parameters 15475 if inflateStateCheck(tls, strm) != 0 { 15476 return -2 15477 } 15478 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15479 if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits < uint32(8)) { 15480 return -5 15481 } 15482 15483 // if first time, start search in bit buffer 15484 if (*Inflate_state)(unsafe.Pointer(state)).Fmode != SYNC { 15485 (*Inflate_state)(unsafe.Pointer(state)).Fmode = SYNC 15486 libc.AssignShlPtrUint32(state+60 /* &.hold */, int(((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7)))) 15487 *(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) -= ((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7)) 15488 len = uint32(0) 15489 for (*Inflate_state)(unsafe.Pointer(state)).Fbits >= uint32(8) { 15490 *(*uint8)(unsafe.Pointer(bp /* &buf[0] */ + uintptr(libc.PostIncUint32(&len, 1)))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Fhold) 15491 libc.AssignShrPtrUint32(state+60 /* &.hold */, int(8)) 15492 *(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) -= (uint32(8)) 15493 } 15494 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 15495 syncsearch(tls, (state + 108 /* &.have */), bp /* &buf[0] */, len) 15496 } 15497 15498 // search available input 15499 len = syncsearch(tls, (state + 108 /* &.have */), (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in) 15500 *(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (len) 15501 *(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len)) 15502 *(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(len)) 15503 15504 // return no joy or set up to restart inflate() on a new block 15505 if (*Inflate_state)(unsafe.Pointer(state)).Fhave != uint32(4) { 15506 return -3 15507 } 15508 in = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in 15509 out = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out 15510 XinflateReset(tls, strm) 15511 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = in 15512 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out = out 15513 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 15514 return Z_OK 15515 } 15516 15517 // 15518 // Returns true if inflate is currently at the end of a block generated by 15519 // Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP 15520 // implementation to provide an additional safety check. PPP uses 15521 // Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored 15522 // block. When decompressing, PPP checks that at the end of input packet, 15523 // inflate is waiting for these length bytes. 15524 // 15525 func XinflateSyncPoint(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1451:13: */ 15526 var state uintptr 15527 15528 if inflateStateCheck(tls, strm) != 0 { 15529 return -2 15530 } 15531 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15532 return (libc.Bool32(((*Inflate_state)(unsafe.Pointer(state)).Fmode == STORED) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits == uint32(0)))) 15533 } 15534 15535 func XinflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* inflate.c:1461:13: */ 15536 var state uintptr 15537 var copy uintptr 15538 var window uintptr 15539 var wsize uint32 15540 15541 // check input 15542 if (inflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) { 15543 return -2 15544 } 15545 state = (*Z_stream)(unsafe.Pointer(source)).Fstate 15546 15547 // allocate space 15548 copy = (*struct { 15549 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 15550 })(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{}))) 15551 if copy == uintptr(Z_NULL) { 15552 return -4 15553 } 15554 window = uintptr(Z_NULL) 15555 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 15556 window = (*struct { 15557 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 15558 })(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)))) 15559 if window == uintptr(Z_NULL) { 15560 (*struct { 15561 f func(*libc.TLS, Voidpf, Voidpf) 15562 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, copy) 15563 return -4 15564 } 15565 } 15566 15567 // copy state 15568 libc.Xmemcpy(tls, dest, source, uint32(unsafe.Sizeof(Z_stream{}))) 15569 libc.Xmemcpy(tls, copy, state, uint32(unsafe.Sizeof(Inflate_state{}))) 15570 (*Inflate_state)(unsafe.Pointer(copy)).Fstrm = dest 15571 if ((*Inflate_state)(unsafe.Pointer(state)).Flencode >= state+1332 /* &.codes */) && ((*Inflate_state)(unsafe.Pointer(state)).Flencode <= (((state + 1332 /* &.codes */) + uintptr((ENOUGH_LENS+ENOUGH_DISTS))*4) - uintptr(1)*4)) { 15572 (*Inflate_state)(unsafe.Pointer(copy)).Flencode = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Flencode-(state+1332 /* &.codes */))/4)))*4) 15573 (*Inflate_state)(unsafe.Pointer(copy)).Fdistcode = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Fdistcode-(state+1332 /* &.codes */))/4)))*4) 15574 } 15575 (*Inflate_state)(unsafe.Pointer(copy)).Fnext = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Fnext-(state+1332 /* &.codes */))/4)))*4) 15576 if window != uintptr(Z_NULL) { 15577 wsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits) 15578 libc.Xmemcpy(tls, window, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, wsize) 15579 } 15580 (*Inflate_state)(unsafe.Pointer(copy)).Fwindow = window 15581 (*Z_stream)(unsafe.Pointer(dest)).Fstate = copy 15582 return Z_OK 15583 } 15584 15585 func XinflateUndermine(tls *libc.TLS, strm Z_streamp, subvert int32) int32 { /* inflate.c:1508:13: */ 15586 var state uintptr 15587 15588 if inflateStateCheck(tls, strm) != 0 { 15589 return -2 15590 } 15591 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15592 _ = subvert 15593 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 15594 return -3 15595 } 15596 15597 func XinflateValidate(tls *libc.TLS, strm Z_streamp, check int32) int32 { /* inflate.c:1526:13: */ 15598 var state uintptr 15599 15600 if inflateStateCheck(tls, strm) != 0 { 15601 return -2 15602 } 15603 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15604 if check != 0 { 15605 *(*int32)(unsafe.Pointer(state + 12 /* &.wrap */)) |= (4) 15606 } else { 15607 *(*int32)(unsafe.Pointer(state + 12 /* &.wrap */)) &= (libc.CplInt32(4)) 15608 } 15609 return Z_OK 15610 } 15611 15612 func XinflateMark(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1541:14: */ 15613 var state uintptr 15614 15615 if inflateStateCheck(tls, strm) != 0 { 15616 return -(int32(1) << 16) 15617 } 15618 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15619 return (int32(uint32((int32((uint32(int32((*Inflate_state)(unsafe.Pointer(state)).Fback))) << 16))) + (func() uint32 { 15620 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY { 15621 return uint32((*Inflate_state)(unsafe.Pointer(state)).Flength) 15622 } 15623 return func() uint32 { 15624 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == MATCH { 15625 return (uint32((*Inflate_state)(unsafe.Pointer(state)).Fwas - (*Inflate_state)(unsafe.Pointer(state)).Flength)) 15626 } 15627 return uint32(0) 15628 }() 15629 }()))) 15630 } 15631 15632 func XinflateCodesUsed(tls *libc.TLS, strm Z_streamp) uint32 { /* inflate.c:1554:23: */ 15633 var state uintptr 15634 if inflateStateCheck(tls, strm) != 0 { 15635 return libc.Uint32(libc.Uint32FromInt32(-1)) 15636 } 15637 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15638 return (uint32(int32(((*Inflate_state)(unsafe.Pointer(state)).Fnext - (state + 1332 /* &.codes */)) / 4))) 15639 } 15640 15641 var Xinflate_copyright = *(*[48]uint8)(unsafe.Pointer(ts + 828 /* " inflate 1.2.11 ..." */)) /* inftrees.c:11:12 */ 15642 15643 // 15644 // If you use the zlib library in a product, an acknowledgment is welcome 15645 // in the documentation of your product. If for some reason you cannot 15646 // include such an acknowledgment, I would appreciate that you keep this 15647 // copyright string in the executable of your product. 15648 // 15649 15650 // 15651 // Build a set of tables to decode the provided canonical Huffman code. 15652 // The code lengths are lens[0..codes-1]. The result starts at *table, 15653 // whose indices are 0..2^bits-1. work is a writable array of at least 15654 // lens shorts, which is used as a work area. type is the type of code 15655 // to be generated, CODES, LENS, or DISTS. On return, zero is success, 15656 // -1 is an invalid code, and +1 means that ENOUGH isn't enough. table 15657 // on return points to the next available entry's address. bits is the 15658 // requested root table index bits, and on return it is the actual root 15659 // table index bits. It will differ if the request is greater than the 15660 // longest code or if it is less than the shortest code. 15661 // 15662 func Xinflate_table(tls *libc.TLS, type1 Codetype, lens uintptr, codes uint32, table uintptr, bits uintptr, work uintptr) int32 { /* inftrees.c:32:19: */ 15663 bp := tls.Alloc(64) 15664 defer tls.Free(64) 15665 15666 var len uint32 // a code's length in bits 15667 var sym uint32 // index of code symbols 15668 var min uint32 15669 var max uint32 // minimum and maximum code lengths 15670 var root uint32 // number of index bits for root table 15671 var curr uint32 // number of index bits for current table 15672 var drop uint32 // code bits to drop for sub-table 15673 var left int32 // number of prefix codes available 15674 var used uint32 // code entries in table used 15675 var huff uint32 // Huffman code 15676 var incr uint32 // for incrementing code, index 15677 var fill uint32 // index for replicating entries 15678 var low uint32 // low bits for current root entry 15679 var mask uint32 // mask for low root bits 15680 var here Code // table entry for duplication 15681 var next uintptr // next available space in table 15682 var base uintptr // base value table to use 15683 var extra uintptr // extra bits table to use 15684 var match uint32 // use base and extra for symbol >= match 15685 // var count [16]uint16 at bp, 32 15686 // number of codes of each length 15687 // var offs [16]uint16 at bp+32, 32 15688 15689 // 15690 // Process a set of code lengths to create a canonical Huffman code. The 15691 // code lengths are lens[0..codes-1]. Each length corresponds to the 15692 // symbols 0..codes-1. The Huffman code is generated by first sorting the 15693 // symbols by length from short to long, and retaining the symbol order 15694 // for codes with equal lengths. Then the code starts with all zero bits 15695 // for the first code of the shortest length, and the codes are integer 15696 // increments for the same length, and zeros are appended as the length 15697 // increases. For the deflate format, these bits are stored backwards 15698 // from their more natural integer increment ordering, and so when the 15699 // decoding tables are built in the large loop below, the integer codes 15700 // are incremented backwards. 15701 // 15702 // This routine assumes, but does not check, that all of the entries in 15703 // lens[] are in the range 0..MAXBITS. The caller must assure this. 15704 // 1..MAXBITS is interpreted as that code length. zero means that that 15705 // symbol does not occur in this code. 15706 // 15707 // The codes are sorted by computing a count of codes for each length, 15708 // creating from that a table of starting indices for each length in the 15709 // sorted table, and then entering the symbols in order in the sorted 15710 // table. The sorted table is work[], with that space being provided by 15711 // the caller. 15712 // 15713 // The length counts are used for other purposes as well, i.e. finding 15714 // the minimum and maximum length codes, determining if there are any 15715 // codes at all, checking for a valid set of lengths, and looking ahead 15716 // at length counts to determine sub-table sizes when building the 15717 // decoding tables. 15718 // 15719 15720 // accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) 15721 for len = uint32(0); len <= uint32(MAXBITS); len++ { 15722 *(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)) = uint16(0) 15723 } 15724 for sym = uint32(0); sym < codes; sym++ { 15725 *(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2))++ 15726 } 15727 15728 // bound code lengths, force root to be within code lengths 15729 root = *(*uint32)(unsafe.Pointer(bits)) 15730 for max = uint32(MAXBITS); max >= uint32(1); max-- { 15731 if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(max)*2))) != 0 { 15732 break 15733 } 15734 } 15735 if root > max { 15736 root = max 15737 } 15738 if max == uint32(0) { // no symbols to code at all 15739 here.Fop = uint8(64) // invalid code marker 15740 here.Fbits = uint8(1) 15741 here.Fval = uint16(0) 15742 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here // make a table to force an error 15743 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here 15744 *(*uint32)(unsafe.Pointer(bits)) = uint32(1) 15745 return 0 // no symbols, but wait for decoding to report error 15746 } 15747 for min = uint32(1); min < max; min++ { 15748 if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(min)*2))) != 0 { 15749 break 15750 } 15751 } 15752 if root < min { 15753 root = min 15754 } 15755 15756 // check for an over-subscribed or incomplete set of lengths 15757 left = 1 15758 for len = uint32(1); len <= uint32(MAXBITS); len++ { 15759 left <<= 1 15760 left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)))) 15761 if left < 0 { 15762 return -1 15763 } // over-subscribed 15764 } 15765 if (left > 0) && ((type1 == CODES) || (max != uint32(1))) { 15766 return -1 15767 } // incomplete set 15768 15769 // generate offsets into symbol table for each length for sorting 15770 *(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + 1*2)) = uint16(0) 15771 for len = uint32(1); len < uint32(MAXBITS); len++ { 15772 *(*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))))) 15773 } 15774 15775 // sort symbols by length, by symbol order within each length 15776 for sym = uint32(0); sym < codes; sym++ { 15777 if int32(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2))) != 0 { 15778 *(*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) 15779 } 15780 } 15781 15782 // 15783 // Create and fill in decoding tables. In this loop, the table being 15784 // filled is at next and has curr index bits. The code being used is huff 15785 // with length len. That code is converted to an index by dropping drop 15786 // bits off of the bottom. For codes where len is less than drop + curr, 15787 // those top drop + curr - len bits are incremented through all values to 15788 // fill the table with replicated entries. 15789 // 15790 // root is the number of index bits for the root table. When len exceeds 15791 // root, sub-tables are created pointed to by the root entry with an index 15792 // of the low root bits of huff. This is saved in low to check for when a 15793 // new sub-table should be started. drop is zero when the root table is 15794 // being filled, and drop is root when sub-tables are being filled. 15795 // 15796 // When a new sub-table is needed, it is necessary to look ahead in the 15797 // code lengths to determine what size sub-table is needed. The length 15798 // counts are used for this, and so count[] is decremented as codes are 15799 // entered in the tables. 15800 // 15801 // used keeps track of how many table entries have been allocated from the 15802 // provided *table space. It is checked for LENS and DIST tables against 15803 // the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in 15804 // the initial root table size constants. See the comments in inftrees.h 15805 // for more information. 15806 // 15807 // sym increments through all symbols, and the loop terminates when 15808 // all codes of length max, i.e. all codes, have been processed. This 15809 // routine permits incomplete codes, so another loop after this one fills 15810 // in the rest of the decoding tables with invalid code markers. 15811 // 15812 15813 // set up for code type 15814 switch type1 { 15815 case CODES: 15816 base = libc.AssignUintptr(&extra, work) // dummy value--not used 15817 match = uint32(20) 15818 break 15819 case LENS: 15820 base = uintptr(unsafe.Pointer(&lbase)) 15821 extra = uintptr(unsafe.Pointer(&lext)) 15822 match = uint32(257) 15823 break 15824 default: // DISTS 15825 base = uintptr(unsafe.Pointer(&dbase)) 15826 extra = uintptr(unsafe.Pointer(&dext)) 15827 match = uint32(0) 15828 } 15829 15830 // initialize state for loop 15831 huff = uint32(0) // starting code 15832 sym = uint32(0) // starting code symbol 15833 len = min // starting code length 15834 next = *(*uintptr)(unsafe.Pointer(table)) // current table to fill in 15835 curr = root // current table index bits 15836 drop = uint32(0) // current bits to drop from code for index 15837 low = libc.Uint32(libc.Uint32FromInt32(-1)) // trigger new sub-table when len > root 15838 used = (uint32(1) << root) // use root table entries 15839 mask = (used - uint32(1)) // mask for comparing low 15840 15841 // check available table space 15842 if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) { 15843 return 1 15844 } 15845 15846 // process all codes and make table entries 15847 for { 15848 // create table entry 15849 here.Fbits = (uint8(len - drop)) 15850 if (uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) + 1) < match { 15851 here.Fop = uint8(0) 15852 here.Fval = *(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)) 15853 } else if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) >= match { 15854 here.Fop = uint8(*(*uint16)(unsafe.Pointer(extra + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2))) 15855 here.Fval = *(*uint16)(unsafe.Pointer(base + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2)) 15856 } else { 15857 here.Fop = (uint8(32 + 64)) // end of block 15858 here.Fval = uint16(0) 15859 } 15860 15861 // replicate for those indices with low len bits equal to huff 15862 incr = (uint32(1) << (len - drop)) 15863 fill = (uint32(1) << curr) 15864 min = fill // save offset to next table 15865 for ok := true; ok; ok = (fill != uint32(0)) { 15866 fill = fill - (incr) 15867 *(*Code)(unsafe.Pointer(next + uintptr(((huff>>drop)+fill))*4)) = here 15868 } 15869 15870 // backwards increment the len-bit code huff 15871 incr = (uint32(1) << (len - uint32(1))) 15872 for (huff & incr) != 0 { 15873 incr >>= 1 15874 } 15875 if incr != uint32(0) { 15876 huff = huff & (incr - uint32(1)) 15877 huff = huff + (incr) 15878 } else { 15879 huff = uint32(0) 15880 } 15881 15882 // go to next symbol, update count, len 15883 sym++ 15884 if int32(libc.PreDecUint16(&(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))), 1)) == 0 { 15885 if len == max { 15886 break 15887 } 15888 len = uint32(*(*uint16)(unsafe.Pointer(lens + uintptr(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))*2))) 15889 } 15890 15891 // create new sub-table if needed 15892 if (len > root) && ((huff & mask) != low) { 15893 // if first time, transition to sub-tables 15894 if drop == uint32(0) { 15895 drop = root 15896 } 15897 15898 // increment past last table 15899 next += 4 * (uintptr(min)) // here min is 1 << curr 15900 15901 // determine length of next table 15902 curr = (len - drop) 15903 left = (int32(1) << curr) 15904 for (curr + drop) < max { 15905 left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr((curr+drop))*2)))) 15906 if left <= 0 { 15907 break 15908 } 15909 curr++ 15910 left <<= 1 15911 } 15912 15913 // check for enough space 15914 used = used + (uint32(1) << curr) 15915 if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) { 15916 return 1 15917 } 15918 15919 // point entry in root table to sub-table 15920 low = (huff & mask) 15921 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fop = uint8(curr) 15922 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fbits = uint8(root) 15923 (*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fval = (uint16((int32(next) - int32(*(*uintptr)(unsafe.Pointer(table)))) / 4)) 15924 } 15925 } 15926 15927 // fill in remaining table entry if code is incomplete (guaranteed to have 15928 // at most one remaining entry, since if the code is incomplete, the 15929 // maximum code length that was allowed to get this far is one bit) 15930 if huff != uint32(0) { 15931 here.Fop = uint8(64) // invalid code marker 15932 here.Fbits = (uint8(len - drop)) 15933 here.Fval = uint16(0) 15934 *(*Code)(unsafe.Pointer(next + uintptr(huff)*4)) = here 15935 } 15936 15937 // set return parameters 15938 *(*uintptr)(unsafe.Pointer(table)) += (uintptr(used)) * 4 15939 *(*uint32)(unsafe.Pointer(bits)) = root 15940 return 0 15941 } 15942 15943 var lbase = [31]uint16{ // Length codes 257..285 base 15944 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), 15945 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 */ 15946 var lext = [31]uint16{ // Length codes 257..285 extra 15947 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), 15948 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 */ 15949 var dbase = [32]uint16{ // Distance codes 0..29 base 15950 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), 15951 uint16(257), uint16(385), uint16(513), uint16(769), uint16(1025), uint16(1537), uint16(2049), uint16(3073), uint16(4097), uint16(6145), 15952 uint16(8193), uint16(12289), uint16(16385), uint16(24577), uint16(0), uint16(0)} /* inftrees.c:66:33 */ 15953 var dext = [32]uint16{ // Distance codes 0..29 extra 15954 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), 15955 uint16(23), uint16(23), uint16(24), uint16(24), uint16(25), uint16(25), uint16(26), uint16(26), uint16(27), uint16(27), 15956 uint16(28), uint16(28), uint16(29), uint16(29), uint16(64), uint16(64)} /* inftrees.c:70:33 */ 15957 15958 type Static_tree_desc = Static_tree_desc_s /* deflate.h:84:36 */ 15959 15960 // =========================================================================== 15961 // Constants 15962 15963 // Bit length codes must not exceed MAX_BL_BITS bits 15964 15965 // end of block literal code 15966 15967 // repeat previous bit length 3-6 times (2 bits of repeat count) 15968 15969 // repeat a zero length 3-10 times (3 bits of repeat count) 15970 15971 // repeat a zero length 11-138 times (7 bits of repeat count) 15972 15973 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 */ 15974 15975 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 */ 15976 15977 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 */ 15978 15979 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 */ 15980 // The lengths of the bit length codes are sent in order of decreasing 15981 // probability, to avoid transmitting the lengths for unused bit length codes. 15982 15983 // =========================================================================== 15984 // Local data. These are initialized only once. 15985 15986 // header created automatically with -DGEN_TREES_H 15987 15988 var static_ltree = [288]Ct_data{{Ffc: func() (r struct{ Ffreq Ush }) { 15989 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 15990 return r 15991 }(), Fdl: func() (r struct{ Fdad Ush }) { 15992 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15993 return r 15994 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 15995 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(140) 15996 return r 15997 }(), Fdl: func() (r struct{ Fdad Ush }) { 15998 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 15999 return r 16000 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16001 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(76) 16002 return r 16003 }(), Fdl: func() (r struct{ Fdad Ush }) { 16004 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16005 return r 16006 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16007 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(204) 16008 return r 16009 }(), Fdl: func() (r struct{ Fdad Ush }) { 16010 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16011 return r 16012 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16013 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(44) 16014 return r 16015 }(), Fdl: func() (r struct{ Fdad Ush }) { 16016 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16017 return r 16018 }()}, 16019 {Ffc: func() (r struct{ Ffreq Ush }) { 16020 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(172) 16021 return r 16022 }(), Fdl: func() (r struct{ Fdad Ush }) { 16023 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16024 return r 16025 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16026 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(108) 16027 return r 16028 }(), Fdl: func() (r struct{ Fdad Ush }) { 16029 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16030 return r 16031 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16032 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(236) 16033 return r 16034 }(), Fdl: func() (r struct{ Fdad Ush }) { 16035 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16036 return r 16037 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16038 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 16039 return r 16040 }(), Fdl: func() (r struct{ Fdad Ush }) { 16041 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16042 return r 16043 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16044 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(156) 16045 return r 16046 }(), Fdl: func() (r struct{ Fdad Ush }) { 16047 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16048 return r 16049 }()}, 16050 {Ffc: func() (r struct{ Ffreq Ush }) { 16051 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(92) 16052 return r 16053 }(), Fdl: func() (r struct{ Fdad Ush }) { 16054 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16055 return r 16056 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16057 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(220) 16058 return r 16059 }(), Fdl: func() (r struct{ Fdad Ush }) { 16060 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16061 return r 16062 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16063 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(60) 16064 return r 16065 }(), Fdl: func() (r struct{ Fdad Ush }) { 16066 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16067 return r 16068 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16069 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(188) 16070 return r 16071 }(), Fdl: func() (r struct{ Fdad Ush }) { 16072 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16073 return r 16074 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16075 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(124) 16076 return r 16077 }(), Fdl: func() (r struct{ Fdad Ush }) { 16078 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16079 return r 16080 }()}, 16081 {Ffc: func() (r struct{ Ffreq Ush }) { 16082 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(252) 16083 return r 16084 }(), Fdl: func() (r struct{ Fdad Ush }) { 16085 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16086 return r 16087 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16088 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 16089 return r 16090 }(), Fdl: func() (r struct{ Fdad Ush }) { 16091 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16092 return r 16093 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16094 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(130) 16095 return r 16096 }(), Fdl: func() (r struct{ Fdad Ush }) { 16097 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16098 return r 16099 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16100 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(66) 16101 return r 16102 }(), Fdl: func() (r struct{ Fdad Ush }) { 16103 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16104 return r 16105 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16106 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(194) 16107 return r 16108 }(), Fdl: func() (r struct{ Fdad Ush }) { 16109 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16110 return r 16111 }()}, 16112 {Ffc: func() (r struct{ Ffreq Ush }) { 16113 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(34) 16114 return r 16115 }(), Fdl: func() (r struct{ Fdad Ush }) { 16116 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16117 return r 16118 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16119 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(162) 16120 return r 16121 }(), Fdl: func() (r struct{ Fdad Ush }) { 16122 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16123 return r 16124 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16125 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(98) 16126 return r 16127 }(), Fdl: func() (r struct{ Fdad Ush }) { 16128 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16129 return r 16130 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16131 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(226) 16132 return r 16133 }(), Fdl: func() (r struct{ Fdad Ush }) { 16134 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16135 return r 16136 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16137 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 16138 return r 16139 }(), Fdl: func() (r struct{ Fdad Ush }) { 16140 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16141 return r 16142 }()}, 16143 {Ffc: func() (r struct{ Ffreq Ush }) { 16144 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(146) 16145 return r 16146 }(), Fdl: func() (r struct{ Fdad Ush }) { 16147 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16148 return r 16149 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16150 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(82) 16151 return r 16152 }(), Fdl: func() (r struct{ Fdad Ush }) { 16153 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16154 return r 16155 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16156 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(210) 16157 return r 16158 }(), Fdl: func() (r struct{ Fdad Ush }) { 16159 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16160 return r 16161 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16162 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(50) 16163 return r 16164 }(), Fdl: func() (r struct{ Fdad Ush }) { 16165 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16166 return r 16167 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16168 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(178) 16169 return r 16170 }(), Fdl: func() (r struct{ Fdad Ush }) { 16171 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16172 return r 16173 }()}, 16174 {Ffc: func() (r struct{ Ffreq Ush }) { 16175 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(114) 16176 return r 16177 }(), Fdl: func() (r struct{ Fdad Ush }) { 16178 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16179 return r 16180 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16181 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(242) 16182 return r 16183 }(), Fdl: func() (r struct{ Fdad Ush }) { 16184 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16185 return r 16186 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16187 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 16188 return r 16189 }(), Fdl: func() (r struct{ Fdad Ush }) { 16190 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16191 return r 16192 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16193 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(138) 16194 return r 16195 }(), Fdl: func() (r struct{ Fdad Ush }) { 16196 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16197 return r 16198 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16199 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(74) 16200 return r 16201 }(), Fdl: func() (r struct{ Fdad Ush }) { 16202 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16203 return r 16204 }()}, 16205 {Ffc: func() (r struct{ Ffreq Ush }) { 16206 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(202) 16207 return r 16208 }(), Fdl: func() (r struct{ Fdad Ush }) { 16209 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16210 return r 16211 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16212 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(42) 16213 return r 16214 }(), Fdl: func() (r struct{ Fdad Ush }) { 16215 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16216 return r 16217 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16218 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(170) 16219 return r 16220 }(), Fdl: func() (r struct{ Fdad Ush }) { 16221 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16222 return r 16223 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16224 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(106) 16225 return r 16226 }(), Fdl: func() (r struct{ Fdad Ush }) { 16227 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16228 return r 16229 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16230 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(234) 16231 return r 16232 }(), Fdl: func() (r struct{ Fdad Ush }) { 16233 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16234 return r 16235 }()}, 16236 {Ffc: func() (r struct{ Ffreq Ush }) { 16237 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 16238 return r 16239 }(), Fdl: func() (r struct{ Fdad Ush }) { 16240 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16241 return r 16242 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16243 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(154) 16244 return r 16245 }(), Fdl: func() (r struct{ Fdad Ush }) { 16246 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16247 return r 16248 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16249 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(90) 16250 return r 16251 }(), Fdl: func() (r struct{ Fdad Ush }) { 16252 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16253 return r 16254 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16255 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(218) 16256 return r 16257 }(), Fdl: func() (r struct{ Fdad Ush }) { 16258 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16259 return r 16260 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16261 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(58) 16262 return r 16263 }(), Fdl: func() (r struct{ Fdad Ush }) { 16264 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16265 return r 16266 }()}, 16267 {Ffc: func() (r struct{ Ffreq Ush }) { 16268 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(186) 16269 return r 16270 }(), Fdl: func() (r struct{ Fdad Ush }) { 16271 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16272 return r 16273 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16274 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(122) 16275 return r 16276 }(), Fdl: func() (r struct{ Fdad Ush }) { 16277 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16278 return r 16279 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16280 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(250) 16281 return r 16282 }(), Fdl: func() (r struct{ Fdad Ush }) { 16283 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16284 return r 16285 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16286 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 16287 return r 16288 }(), Fdl: func() (r struct{ Fdad Ush }) { 16289 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16290 return r 16291 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16292 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(134) 16293 return r 16294 }(), Fdl: func() (r struct{ Fdad Ush }) { 16295 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16296 return r 16297 }()}, 16298 {Ffc: func() (r struct{ Ffreq Ush }) { 16299 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(70) 16300 return r 16301 }(), Fdl: func() (r struct{ Fdad Ush }) { 16302 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16303 return r 16304 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16305 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(198) 16306 return r 16307 }(), Fdl: func() (r struct{ Fdad Ush }) { 16308 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16309 return r 16310 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16311 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(38) 16312 return r 16313 }(), Fdl: func() (r struct{ Fdad Ush }) { 16314 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16315 return r 16316 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16317 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(166) 16318 return r 16319 }(), Fdl: func() (r struct{ Fdad Ush }) { 16320 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16321 return r 16322 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16323 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(102) 16324 return r 16325 }(), Fdl: func() (r struct{ Fdad Ush }) { 16326 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16327 return r 16328 }()}, 16329 {Ffc: func() (r struct{ Ffreq Ush }) { 16330 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(230) 16331 return r 16332 }(), Fdl: func() (r struct{ Fdad Ush }) { 16333 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16334 return r 16335 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16336 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 16337 return r 16338 }(), Fdl: func() (r struct{ Fdad Ush }) { 16339 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16340 return r 16341 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16342 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(150) 16343 return r 16344 }(), Fdl: func() (r struct{ Fdad Ush }) { 16345 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16346 return r 16347 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16348 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(86) 16349 return r 16350 }(), Fdl: func() (r struct{ Fdad Ush }) { 16351 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16352 return r 16353 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16354 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(214) 16355 return r 16356 }(), Fdl: func() (r struct{ Fdad Ush }) { 16357 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16358 return r 16359 }()}, 16360 {Ffc: func() (r struct{ Ffreq Ush }) { 16361 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(54) 16362 return r 16363 }(), Fdl: func() (r struct{ Fdad Ush }) { 16364 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16365 return r 16366 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16367 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(182) 16368 return r 16369 }(), Fdl: func() (r struct{ Fdad Ush }) { 16370 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16371 return r 16372 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16373 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(118) 16374 return r 16375 }(), Fdl: func() (r struct{ Fdad Ush }) { 16376 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16377 return r 16378 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16379 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(246) 16380 return r 16381 }(), Fdl: func() (r struct{ Fdad Ush }) { 16382 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16383 return r 16384 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16385 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 16386 return r 16387 }(), Fdl: func() (r struct{ Fdad Ush }) { 16388 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16389 return r 16390 }()}, 16391 {Ffc: func() (r struct{ Ffreq Ush }) { 16392 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(142) 16393 return r 16394 }(), Fdl: func() (r struct{ Fdad Ush }) { 16395 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16396 return r 16397 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16398 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(78) 16399 return r 16400 }(), Fdl: func() (r struct{ Fdad Ush }) { 16401 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16402 return r 16403 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16404 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(206) 16405 return r 16406 }(), Fdl: func() (r struct{ Fdad Ush }) { 16407 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16408 return r 16409 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16410 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(46) 16411 return r 16412 }(), Fdl: func() (r struct{ Fdad Ush }) { 16413 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16414 return r 16415 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16416 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(174) 16417 return r 16418 }(), Fdl: func() (r struct{ Fdad Ush }) { 16419 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16420 return r 16421 }()}, 16422 {Ffc: func() (r struct{ Ffreq Ush }) { 16423 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(110) 16424 return r 16425 }(), Fdl: func() (r struct{ Fdad Ush }) { 16426 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16427 return r 16428 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16429 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(238) 16430 return r 16431 }(), Fdl: func() (r struct{ Fdad Ush }) { 16432 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16433 return r 16434 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16435 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 16436 return r 16437 }(), Fdl: func() (r struct{ Fdad Ush }) { 16438 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16439 return r 16440 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16441 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(158) 16442 return r 16443 }(), Fdl: func() (r struct{ Fdad Ush }) { 16444 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16445 return r 16446 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16447 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(94) 16448 return r 16449 }(), Fdl: func() (r struct{ Fdad Ush }) { 16450 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16451 return r 16452 }()}, 16453 {Ffc: func() (r struct{ Ffreq Ush }) { 16454 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(222) 16455 return r 16456 }(), Fdl: func() (r struct{ Fdad Ush }) { 16457 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16458 return r 16459 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16460 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(62) 16461 return r 16462 }(), Fdl: func() (r struct{ Fdad Ush }) { 16463 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16464 return r 16465 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16466 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(190) 16467 return r 16468 }(), Fdl: func() (r struct{ Fdad Ush }) { 16469 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16470 return r 16471 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16472 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(126) 16473 return r 16474 }(), Fdl: func() (r struct{ Fdad Ush }) { 16475 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16476 return r 16477 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16478 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(254) 16479 return r 16480 }(), Fdl: func() (r struct{ Fdad Ush }) { 16481 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16482 return r 16483 }()}, 16484 {Ffc: func() (r struct{ Ffreq Ush }) { 16485 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 16486 return r 16487 }(), Fdl: func() (r struct{ Fdad Ush }) { 16488 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16489 return r 16490 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16491 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(129) 16492 return r 16493 }(), Fdl: func() (r struct{ Fdad Ush }) { 16494 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16495 return r 16496 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16497 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(65) 16498 return r 16499 }(), Fdl: func() (r struct{ Fdad Ush }) { 16500 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16501 return r 16502 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16503 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(193) 16504 return r 16505 }(), Fdl: func() (r struct{ Fdad Ush }) { 16506 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16507 return r 16508 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16509 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(33) 16510 return r 16511 }(), Fdl: func() (r struct{ Fdad Ush }) { 16512 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16513 return r 16514 }()}, 16515 {Ffc: func() (r struct{ Ffreq Ush }) { 16516 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(161) 16517 return r 16518 }(), Fdl: func() (r struct{ Fdad Ush }) { 16519 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16520 return r 16521 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16522 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(97) 16523 return r 16524 }(), Fdl: func() (r struct{ Fdad Ush }) { 16525 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16526 return r 16527 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16528 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(225) 16529 return r 16530 }(), Fdl: func() (r struct{ Fdad Ush }) { 16531 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16532 return r 16533 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16534 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 16535 return r 16536 }(), Fdl: func() (r struct{ Fdad Ush }) { 16537 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16538 return r 16539 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16540 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(145) 16541 return r 16542 }(), Fdl: func() (r struct{ Fdad Ush }) { 16543 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16544 return r 16545 }()}, 16546 {Ffc: func() (r struct{ Ffreq Ush }) { 16547 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(81) 16548 return r 16549 }(), Fdl: func() (r struct{ Fdad Ush }) { 16550 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16551 return r 16552 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16553 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(209) 16554 return r 16555 }(), Fdl: func() (r struct{ Fdad Ush }) { 16556 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16557 return r 16558 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16559 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(49) 16560 return r 16561 }(), Fdl: func() (r struct{ Fdad Ush }) { 16562 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16563 return r 16564 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16565 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(177) 16566 return r 16567 }(), Fdl: func() (r struct{ Fdad Ush }) { 16568 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16569 return r 16570 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16571 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(113) 16572 return r 16573 }(), Fdl: func() (r struct{ Fdad Ush }) { 16574 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16575 return r 16576 }()}, 16577 {Ffc: func() (r struct{ Ffreq Ush }) { 16578 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(241) 16579 return r 16580 }(), Fdl: func() (r struct{ Fdad Ush }) { 16581 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16582 return r 16583 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16584 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16585 return r 16586 }(), Fdl: func() (r struct{ Fdad Ush }) { 16587 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16588 return r 16589 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16590 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(137) 16591 return r 16592 }(), Fdl: func() (r struct{ Fdad Ush }) { 16593 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16594 return r 16595 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16596 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(73) 16597 return r 16598 }(), Fdl: func() (r struct{ Fdad Ush }) { 16599 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16600 return r 16601 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16602 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(201) 16603 return r 16604 }(), Fdl: func() (r struct{ Fdad Ush }) { 16605 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16606 return r 16607 }()}, 16608 {Ffc: func() (r struct{ Ffreq Ush }) { 16609 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(41) 16610 return r 16611 }(), Fdl: func() (r struct{ Fdad Ush }) { 16612 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16613 return r 16614 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16615 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(169) 16616 return r 16617 }(), Fdl: func() (r struct{ Fdad Ush }) { 16618 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16619 return r 16620 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16621 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(105) 16622 return r 16623 }(), Fdl: func() (r struct{ Fdad Ush }) { 16624 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16625 return r 16626 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16627 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(233) 16628 return r 16629 }(), Fdl: func() (r struct{ Fdad Ush }) { 16630 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16631 return r 16632 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16633 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 16634 return r 16635 }(), Fdl: func() (r struct{ Fdad Ush }) { 16636 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16637 return r 16638 }()}, 16639 {Ffc: func() (r struct{ Ffreq Ush }) { 16640 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(153) 16641 return r 16642 }(), Fdl: func() (r struct{ Fdad Ush }) { 16643 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16644 return r 16645 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16646 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(89) 16647 return r 16648 }(), Fdl: func() (r struct{ Fdad Ush }) { 16649 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16650 return r 16651 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16652 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(217) 16653 return r 16654 }(), Fdl: func() (r struct{ Fdad Ush }) { 16655 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16656 return r 16657 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16658 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(57) 16659 return r 16660 }(), Fdl: func() (r struct{ Fdad Ush }) { 16661 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16662 return r 16663 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16664 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(185) 16665 return r 16666 }(), Fdl: func() (r struct{ Fdad Ush }) { 16667 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16668 return r 16669 }()}, 16670 {Ffc: func() (r struct{ Ffreq Ush }) { 16671 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(121) 16672 return r 16673 }(), Fdl: func() (r struct{ Fdad Ush }) { 16674 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16675 return r 16676 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16677 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(249) 16678 return r 16679 }(), Fdl: func() (r struct{ Fdad Ush }) { 16680 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16681 return r 16682 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16683 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 16684 return r 16685 }(), Fdl: func() (r struct{ Fdad Ush }) { 16686 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16687 return r 16688 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16689 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(133) 16690 return r 16691 }(), Fdl: func() (r struct{ Fdad Ush }) { 16692 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16693 return r 16694 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16695 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(69) 16696 return r 16697 }(), Fdl: func() (r struct{ Fdad Ush }) { 16698 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16699 return r 16700 }()}, 16701 {Ffc: func() (r struct{ Ffreq Ush }) { 16702 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(197) 16703 return r 16704 }(), Fdl: func() (r struct{ Fdad Ush }) { 16705 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16706 return r 16707 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16708 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(37) 16709 return r 16710 }(), Fdl: func() (r struct{ Fdad Ush }) { 16711 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16712 return r 16713 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16714 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(165) 16715 return r 16716 }(), Fdl: func() (r struct{ Fdad Ush }) { 16717 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16718 return r 16719 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16720 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(101) 16721 return r 16722 }(), Fdl: func() (r struct{ Fdad Ush }) { 16723 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16724 return r 16725 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16726 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(229) 16727 return r 16728 }(), Fdl: func() (r struct{ Fdad Ush }) { 16729 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16730 return r 16731 }()}, 16732 {Ffc: func() (r struct{ Ffreq Ush }) { 16733 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 16734 return r 16735 }(), Fdl: func() (r struct{ Fdad Ush }) { 16736 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16737 return r 16738 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16739 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(149) 16740 return r 16741 }(), Fdl: func() (r struct{ Fdad Ush }) { 16742 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16743 return r 16744 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16745 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(85) 16746 return r 16747 }(), Fdl: func() (r struct{ Fdad Ush }) { 16748 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16749 return r 16750 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16751 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(213) 16752 return r 16753 }(), Fdl: func() (r struct{ Fdad Ush }) { 16754 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16755 return r 16756 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16757 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(53) 16758 return r 16759 }(), Fdl: func() (r struct{ Fdad Ush }) { 16760 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16761 return r 16762 }()}, 16763 {Ffc: func() (r struct{ Ffreq Ush }) { 16764 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(181) 16765 return r 16766 }(), Fdl: func() (r struct{ Fdad Ush }) { 16767 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16768 return r 16769 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16770 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(117) 16771 return r 16772 }(), Fdl: func() (r struct{ Fdad Ush }) { 16773 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16774 return r 16775 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16776 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(245) 16777 return r 16778 }(), Fdl: func() (r struct{ Fdad Ush }) { 16779 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16780 return r 16781 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16782 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 16783 return r 16784 }(), Fdl: func() (r struct{ Fdad Ush }) { 16785 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16786 return r 16787 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16788 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(141) 16789 return r 16790 }(), Fdl: func() (r struct{ Fdad Ush }) { 16791 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16792 return r 16793 }()}, 16794 {Ffc: func() (r struct{ Ffreq Ush }) { 16795 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(77) 16796 return r 16797 }(), Fdl: func() (r struct{ Fdad Ush }) { 16798 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16799 return r 16800 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16801 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(205) 16802 return r 16803 }(), Fdl: func() (r struct{ Fdad Ush }) { 16804 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16805 return r 16806 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16807 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(45) 16808 return r 16809 }(), Fdl: func() (r struct{ Fdad Ush }) { 16810 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16811 return r 16812 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16813 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(173) 16814 return r 16815 }(), Fdl: func() (r struct{ Fdad Ush }) { 16816 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16817 return r 16818 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16819 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(109) 16820 return r 16821 }(), Fdl: func() (r struct{ Fdad Ush }) { 16822 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16823 return r 16824 }()}, 16825 {Ffc: func() (r struct{ Ffreq Ush }) { 16826 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(237) 16827 return r 16828 }(), Fdl: func() (r struct{ Fdad Ush }) { 16829 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16830 return r 16831 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16832 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 16833 return r 16834 }(), Fdl: func() (r struct{ Fdad Ush }) { 16835 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16836 return r 16837 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16838 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(157) 16839 return r 16840 }(), Fdl: func() (r struct{ Fdad Ush }) { 16841 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16842 return r 16843 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16844 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(93) 16845 return r 16846 }(), Fdl: func() (r struct{ Fdad Ush }) { 16847 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16848 return r 16849 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16850 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(221) 16851 return r 16852 }(), Fdl: func() (r struct{ Fdad Ush }) { 16853 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16854 return r 16855 }()}, 16856 {Ffc: func() (r struct{ Ffreq Ush }) { 16857 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(61) 16858 return r 16859 }(), Fdl: func() (r struct{ Fdad Ush }) { 16860 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16861 return r 16862 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16863 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(189) 16864 return r 16865 }(), Fdl: func() (r struct{ Fdad Ush }) { 16866 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16867 return r 16868 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16869 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(125) 16870 return r 16871 }(), Fdl: func() (r struct{ Fdad Ush }) { 16872 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16873 return r 16874 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16875 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(253) 16876 return r 16877 }(), Fdl: func() (r struct{ Fdad Ush }) { 16878 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16879 return r 16880 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16881 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 16882 return r 16883 }(), Fdl: func() (r struct{ Fdad Ush }) { 16884 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16885 return r 16886 }()}, 16887 {Ffc: func() (r struct{ Ffreq Ush }) { 16888 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(275) 16889 return r 16890 }(), Fdl: func() (r struct{ Fdad Ush }) { 16891 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16892 return r 16893 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16894 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(147) 16895 return r 16896 }(), Fdl: func() (r struct{ Fdad Ush }) { 16897 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16898 return r 16899 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16900 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(403) 16901 return r 16902 }(), Fdl: func() (r struct{ Fdad Ush }) { 16903 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16904 return r 16905 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16906 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(83) 16907 return r 16908 }(), Fdl: func() (r struct{ Fdad Ush }) { 16909 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16910 return r 16911 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16912 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(339) 16913 return r 16914 }(), Fdl: func() (r struct{ Fdad Ush }) { 16915 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16916 return r 16917 }()}, 16918 {Ffc: func() (r struct{ Ffreq Ush }) { 16919 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(211) 16920 return r 16921 }(), Fdl: func() (r struct{ Fdad Ush }) { 16922 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16923 return r 16924 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16925 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(467) 16926 return r 16927 }(), Fdl: func() (r struct{ Fdad Ush }) { 16928 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16929 return r 16930 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16931 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(51) 16932 return r 16933 }(), Fdl: func() (r struct{ Fdad Ush }) { 16934 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16935 return r 16936 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16937 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(307) 16938 return r 16939 }(), Fdl: func() (r struct{ Fdad Ush }) { 16940 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16941 return r 16942 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16943 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(179) 16944 return r 16945 }(), Fdl: func() (r struct{ Fdad Ush }) { 16946 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16947 return r 16948 }()}, 16949 {Ffc: func() (r struct{ Ffreq Ush }) { 16950 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(435) 16951 return r 16952 }(), Fdl: func() (r struct{ Fdad Ush }) { 16953 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16954 return r 16955 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16956 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(115) 16957 return r 16958 }(), Fdl: func() (r struct{ Fdad Ush }) { 16959 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16960 return r 16961 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16962 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(371) 16963 return r 16964 }(), Fdl: func() (r struct{ Fdad Ush }) { 16965 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16966 return r 16967 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16968 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(243) 16969 return r 16970 }(), Fdl: func() (r struct{ Fdad Ush }) { 16971 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16972 return r 16973 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16974 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(499) 16975 return r 16976 }(), Fdl: func() (r struct{ Fdad Ush }) { 16977 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16978 return r 16979 }()}, 16980 {Ffc: func() (r struct{ Ffreq Ush }) { 16981 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 16982 return r 16983 }(), Fdl: func() (r struct{ Fdad Ush }) { 16984 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16985 return r 16986 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16987 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(267) 16988 return r 16989 }(), Fdl: func() (r struct{ Fdad Ush }) { 16990 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16991 return r 16992 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16993 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(139) 16994 return r 16995 }(), Fdl: func() (r struct{ Fdad Ush }) { 16996 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16997 return r 16998 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16999 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(395) 17000 return r 17001 }(), Fdl: func() (r struct{ Fdad Ush }) { 17002 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17003 return r 17004 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17005 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(75) 17006 return r 17007 }(), Fdl: func() (r struct{ Fdad Ush }) { 17008 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17009 return r 17010 }()}, 17011 {Ffc: func() (r struct{ Ffreq Ush }) { 17012 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(331) 17013 return r 17014 }(), Fdl: func() (r struct{ Fdad Ush }) { 17015 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17016 return r 17017 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17018 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(203) 17019 return r 17020 }(), Fdl: func() (r struct{ Fdad Ush }) { 17021 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17022 return r 17023 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17024 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(459) 17025 return r 17026 }(), Fdl: func() (r struct{ Fdad Ush }) { 17027 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17028 return r 17029 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17030 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(43) 17031 return r 17032 }(), Fdl: func() (r struct{ Fdad Ush }) { 17033 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17034 return r 17035 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17036 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(299) 17037 return r 17038 }(), Fdl: func() (r struct{ Fdad Ush }) { 17039 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17040 return r 17041 }()}, 17042 {Ffc: func() (r struct{ Ffreq Ush }) { 17043 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(171) 17044 return r 17045 }(), Fdl: func() (r struct{ Fdad Ush }) { 17046 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17047 return r 17048 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17049 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(427) 17050 return r 17051 }(), Fdl: func() (r struct{ Fdad Ush }) { 17052 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17053 return r 17054 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17055 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(107) 17056 return r 17057 }(), Fdl: func() (r struct{ Fdad Ush }) { 17058 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17059 return r 17060 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17061 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(363) 17062 return r 17063 }(), Fdl: func() (r struct{ Fdad Ush }) { 17064 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17065 return r 17066 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17067 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(235) 17068 return r 17069 }(), Fdl: func() (r struct{ Fdad Ush }) { 17070 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17071 return r 17072 }()}, 17073 {Ffc: func() (r struct{ Ffreq Ush }) { 17074 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(491) 17075 return r 17076 }(), Fdl: func() (r struct{ Fdad Ush }) { 17077 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17078 return r 17079 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17080 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 17081 return r 17082 }(), Fdl: func() (r struct{ Fdad Ush }) { 17083 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17084 return r 17085 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17086 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(283) 17087 return r 17088 }(), Fdl: func() (r struct{ Fdad Ush }) { 17089 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17090 return r 17091 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17092 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(155) 17093 return r 17094 }(), Fdl: func() (r struct{ Fdad Ush }) { 17095 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17096 return r 17097 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17098 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(411) 17099 return r 17100 }(), Fdl: func() (r struct{ Fdad Ush }) { 17101 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17102 return r 17103 }()}, 17104 {Ffc: func() (r struct{ Ffreq Ush }) { 17105 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(91) 17106 return r 17107 }(), Fdl: func() (r struct{ Fdad Ush }) { 17108 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17109 return r 17110 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17111 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(347) 17112 return r 17113 }(), Fdl: func() (r struct{ Fdad Ush }) { 17114 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17115 return r 17116 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17117 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(219) 17118 return r 17119 }(), Fdl: func() (r struct{ Fdad Ush }) { 17120 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17121 return r 17122 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17123 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(475) 17124 return r 17125 }(), Fdl: func() (r struct{ Fdad Ush }) { 17126 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17127 return r 17128 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17129 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(59) 17130 return r 17131 }(), Fdl: func() (r struct{ Fdad Ush }) { 17132 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17133 return r 17134 }()}, 17135 {Ffc: func() (r struct{ Ffreq Ush }) { 17136 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(315) 17137 return r 17138 }(), Fdl: func() (r struct{ Fdad Ush }) { 17139 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17140 return r 17141 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17142 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(187) 17143 return r 17144 }(), Fdl: func() (r struct{ Fdad Ush }) { 17145 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17146 return r 17147 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17148 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(443) 17149 return r 17150 }(), Fdl: func() (r struct{ Fdad Ush }) { 17151 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17152 return r 17153 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17154 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(123) 17155 return r 17156 }(), Fdl: func() (r struct{ Fdad Ush }) { 17157 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17158 return r 17159 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17160 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(379) 17161 return r 17162 }(), Fdl: func() (r struct{ Fdad Ush }) { 17163 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17164 return r 17165 }()}, 17166 {Ffc: func() (r struct{ Ffreq Ush }) { 17167 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(251) 17168 return r 17169 }(), Fdl: func() (r struct{ Fdad Ush }) { 17170 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17171 return r 17172 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17173 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(507) 17174 return r 17175 }(), Fdl: func() (r struct{ Fdad Ush }) { 17176 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17177 return r 17178 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17179 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17180 return r 17181 }(), Fdl: func() (r struct{ Fdad Ush }) { 17182 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17183 return r 17184 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17185 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(263) 17186 return r 17187 }(), Fdl: func() (r struct{ Fdad Ush }) { 17188 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17189 return r 17190 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17191 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(135) 17192 return r 17193 }(), Fdl: func() (r struct{ Fdad Ush }) { 17194 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17195 return r 17196 }()}, 17197 {Ffc: func() (r struct{ Ffreq Ush }) { 17198 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(391) 17199 return r 17200 }(), Fdl: func() (r struct{ Fdad Ush }) { 17201 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17202 return r 17203 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17204 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(71) 17205 return r 17206 }(), Fdl: func() (r struct{ Fdad Ush }) { 17207 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17208 return r 17209 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17210 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(327) 17211 return r 17212 }(), Fdl: func() (r struct{ Fdad Ush }) { 17213 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17214 return r 17215 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17216 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(199) 17217 return r 17218 }(), Fdl: func() (r struct{ Fdad Ush }) { 17219 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17220 return r 17221 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17222 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(455) 17223 return r 17224 }(), Fdl: func() (r struct{ Fdad Ush }) { 17225 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17226 return r 17227 }()}, 17228 {Ffc: func() (r struct{ Ffreq Ush }) { 17229 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(39) 17230 return r 17231 }(), Fdl: func() (r struct{ Fdad Ush }) { 17232 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17233 return r 17234 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17235 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(295) 17236 return r 17237 }(), Fdl: func() (r struct{ Fdad Ush }) { 17238 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17239 return r 17240 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17241 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(167) 17242 return r 17243 }(), Fdl: func() (r struct{ Fdad Ush }) { 17244 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17245 return r 17246 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17247 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(423) 17248 return r 17249 }(), Fdl: func() (r struct{ Fdad Ush }) { 17250 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17251 return r 17252 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17253 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(103) 17254 return r 17255 }(), Fdl: func() (r struct{ Fdad Ush }) { 17256 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17257 return r 17258 }()}, 17259 {Ffc: func() (r struct{ Ffreq Ush }) { 17260 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(359) 17261 return r 17262 }(), Fdl: func() (r struct{ Fdad Ush }) { 17263 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17264 return r 17265 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17266 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(231) 17267 return r 17268 }(), Fdl: func() (r struct{ Fdad Ush }) { 17269 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17270 return r 17271 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17272 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(487) 17273 return r 17274 }(), Fdl: func() (r struct{ Fdad Ush }) { 17275 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17276 return r 17277 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17278 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 17279 return r 17280 }(), Fdl: func() (r struct{ Fdad Ush }) { 17281 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17282 return r 17283 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17284 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(279) 17285 return r 17286 }(), Fdl: func() (r struct{ Fdad Ush }) { 17287 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17288 return r 17289 }()}, 17290 {Ffc: func() (r struct{ Ffreq Ush }) { 17291 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(151) 17292 return r 17293 }(), Fdl: func() (r struct{ Fdad Ush }) { 17294 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17295 return r 17296 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17297 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(407) 17298 return r 17299 }(), Fdl: func() (r struct{ Fdad Ush }) { 17300 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17301 return r 17302 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17303 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(87) 17304 return r 17305 }(), Fdl: func() (r struct{ Fdad Ush }) { 17306 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17307 return r 17308 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17309 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(343) 17310 return r 17311 }(), Fdl: func() (r struct{ Fdad Ush }) { 17312 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17313 return r 17314 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17315 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(215) 17316 return r 17317 }(), Fdl: func() (r struct{ Fdad Ush }) { 17318 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17319 return r 17320 }()}, 17321 {Ffc: func() (r struct{ Ffreq Ush }) { 17322 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(471) 17323 return r 17324 }(), Fdl: func() (r struct{ Fdad Ush }) { 17325 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17326 return r 17327 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17328 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(55) 17329 return r 17330 }(), Fdl: func() (r struct{ Fdad Ush }) { 17331 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17332 return r 17333 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17334 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(311) 17335 return r 17336 }(), Fdl: func() (r struct{ Fdad Ush }) { 17337 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17338 return r 17339 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17340 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(183) 17341 return r 17342 }(), Fdl: func() (r struct{ Fdad Ush }) { 17343 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17344 return r 17345 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17346 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(439) 17347 return r 17348 }(), Fdl: func() (r struct{ Fdad Ush }) { 17349 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17350 return r 17351 }()}, 17352 {Ffc: func() (r struct{ Ffreq Ush }) { 17353 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(119) 17354 return r 17355 }(), Fdl: func() (r struct{ Fdad Ush }) { 17356 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17357 return r 17358 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17359 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(375) 17360 return r 17361 }(), Fdl: func() (r struct{ Fdad Ush }) { 17362 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17363 return r 17364 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17365 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(247) 17366 return r 17367 }(), Fdl: func() (r struct{ Fdad Ush }) { 17368 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17369 return r 17370 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17371 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(503) 17372 return r 17373 }(), Fdl: func() (r struct{ Fdad Ush }) { 17374 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17375 return r 17376 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17377 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(15) 17378 return r 17379 }(), Fdl: func() (r struct{ Fdad Ush }) { 17380 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17381 return r 17382 }()}, 17383 {Ffc: func() (r struct{ Ffreq Ush }) { 17384 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(271) 17385 return r 17386 }(), Fdl: func() (r struct{ Fdad Ush }) { 17387 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17388 return r 17389 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17390 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(143) 17391 return r 17392 }(), Fdl: func() (r struct{ Fdad Ush }) { 17393 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17394 return r 17395 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17396 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(399) 17397 return r 17398 }(), Fdl: func() (r struct{ Fdad Ush }) { 17399 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17400 return r 17401 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17402 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(79) 17403 return r 17404 }(), Fdl: func() (r struct{ Fdad Ush }) { 17405 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17406 return r 17407 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17408 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(335) 17409 return r 17410 }(), Fdl: func() (r struct{ Fdad Ush }) { 17411 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17412 return r 17413 }()}, 17414 {Ffc: func() (r struct{ Ffreq Ush }) { 17415 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(207) 17416 return r 17417 }(), Fdl: func() (r struct{ Fdad Ush }) { 17418 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17419 return r 17420 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17421 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(463) 17422 return r 17423 }(), Fdl: func() (r struct{ Fdad Ush }) { 17424 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17425 return r 17426 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17427 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(47) 17428 return r 17429 }(), Fdl: func() (r struct{ Fdad Ush }) { 17430 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17431 return r 17432 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17433 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(303) 17434 return r 17435 }(), Fdl: func() (r struct{ Fdad Ush }) { 17436 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17437 return r 17438 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17439 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(175) 17440 return r 17441 }(), Fdl: func() (r struct{ Fdad Ush }) { 17442 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17443 return r 17444 }()}, 17445 {Ffc: func() (r struct{ Ffreq Ush }) { 17446 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(431) 17447 return r 17448 }(), Fdl: func() (r struct{ Fdad Ush }) { 17449 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17450 return r 17451 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17452 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(111) 17453 return r 17454 }(), Fdl: func() (r struct{ Fdad Ush }) { 17455 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17456 return r 17457 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17458 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(367) 17459 return r 17460 }(), Fdl: func() (r struct{ Fdad Ush }) { 17461 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17462 return r 17463 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17464 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(239) 17465 return r 17466 }(), Fdl: func() (r struct{ Fdad Ush }) { 17467 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17468 return r 17469 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17470 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(495) 17471 return r 17472 }(), Fdl: func() (r struct{ Fdad Ush }) { 17473 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17474 return r 17475 }()}, 17476 {Ffc: func() (r struct{ Ffreq Ush }) { 17477 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(31) 17478 return r 17479 }(), Fdl: func() (r struct{ Fdad Ush }) { 17480 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17481 return r 17482 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17483 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(287) 17484 return r 17485 }(), Fdl: func() (r struct{ Fdad Ush }) { 17486 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17487 return r 17488 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17489 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(159) 17490 return r 17491 }(), Fdl: func() (r struct{ Fdad Ush }) { 17492 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17493 return r 17494 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17495 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(415) 17496 return r 17497 }(), Fdl: func() (r struct{ Fdad Ush }) { 17498 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17499 return r 17500 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17501 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(95) 17502 return r 17503 }(), Fdl: func() (r struct{ Fdad Ush }) { 17504 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17505 return r 17506 }()}, 17507 {Ffc: func() (r struct{ Ffreq Ush }) { 17508 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(351) 17509 return r 17510 }(), Fdl: func() (r struct{ Fdad Ush }) { 17511 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17512 return r 17513 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17514 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(223) 17515 return r 17516 }(), Fdl: func() (r struct{ Fdad Ush }) { 17517 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17518 return r 17519 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17520 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(479) 17521 return r 17522 }(), Fdl: func() (r struct{ Fdad Ush }) { 17523 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17524 return r 17525 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17526 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(63) 17527 return r 17528 }(), Fdl: func() (r struct{ Fdad Ush }) { 17529 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17530 return r 17531 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17532 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(319) 17533 return r 17534 }(), Fdl: func() (r struct{ Fdad Ush }) { 17535 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17536 return r 17537 }()}, 17538 {Ffc: func() (r struct{ Ffreq Ush }) { 17539 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(191) 17540 return r 17541 }(), Fdl: func() (r struct{ Fdad Ush }) { 17542 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17543 return r 17544 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17545 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(447) 17546 return r 17547 }(), Fdl: func() (r struct{ Fdad Ush }) { 17548 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17549 return r 17550 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17551 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(127) 17552 return r 17553 }(), Fdl: func() (r struct{ Fdad Ush }) { 17554 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17555 return r 17556 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17557 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(383) 17558 return r 17559 }(), Fdl: func() (r struct{ Fdad Ush }) { 17560 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17561 return r 17562 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17563 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(255) 17564 return r 17565 }(), Fdl: func() (r struct{ Fdad Ush }) { 17566 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17567 return r 17568 }()}, 17569 {Ffc: func() (r struct{ Ffreq Ush }) { 17570 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(511) 17571 return r 17572 }(), Fdl: func() (r struct{ Fdad Ush }) { 17573 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17574 return r 17575 }()}, {Fdl: func() (r struct{ Fdad Ush }) { 17576 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17577 return r 17578 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17579 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(64) 17580 return r 17581 }(), Fdl: func() (r struct{ Fdad Ush }) { 17582 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17583 return r 17584 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17585 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(32) 17586 return r 17587 }(), Fdl: func() (r struct{ Fdad Ush }) { 17588 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17589 return r 17590 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17591 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(96) 17592 return r 17593 }(), Fdl: func() (r struct{ Fdad Ush }) { 17594 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17595 return r 17596 }()}, 17597 {Ffc: func() (r struct{ Ffreq Ush }) { 17598 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 17599 return r 17600 }(), Fdl: func() (r struct{ Fdad Ush }) { 17601 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17602 return r 17603 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17604 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(80) 17605 return r 17606 }(), Fdl: func() (r struct{ Fdad Ush }) { 17607 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17608 return r 17609 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17610 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(48) 17611 return r 17612 }(), Fdl: func() (r struct{ Fdad Ush }) { 17613 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17614 return r 17615 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17616 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(112) 17617 return r 17618 }(), Fdl: func() (r struct{ Fdad Ush }) { 17619 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17620 return r 17621 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17622 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17623 return r 17624 }(), Fdl: func() (r struct{ Fdad Ush }) { 17625 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17626 return r 17627 }()}, 17628 {Ffc: func() (r struct{ Ffreq Ush }) { 17629 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(72) 17630 return r 17631 }(), Fdl: func() (r struct{ Fdad Ush }) { 17632 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17633 return r 17634 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17635 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(40) 17636 return r 17637 }(), Fdl: func() (r struct{ Fdad Ush }) { 17638 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17639 return r 17640 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17641 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(104) 17642 return r 17643 }(), Fdl: func() (r struct{ Fdad Ush }) { 17644 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17645 return r 17646 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17647 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 17648 return r 17649 }(), Fdl: func() (r struct{ Fdad Ush }) { 17650 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17651 return r 17652 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17653 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(88) 17654 return r 17655 }(), Fdl: func() (r struct{ Fdad Ush }) { 17656 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17657 return r 17658 }()}, 17659 {Ffc: func() (r struct{ Ffreq Ush }) { 17660 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(56) 17661 return r 17662 }(), Fdl: func() (r struct{ Fdad Ush }) { 17663 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17664 return r 17665 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17666 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(120) 17667 return r 17668 }(), Fdl: func() (r struct{ Fdad Ush }) { 17669 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17670 return r 17671 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17672 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 17673 return r 17674 }(), Fdl: func() (r struct{ Fdad Ush }) { 17675 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17676 return r 17677 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17678 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(68) 17679 return r 17680 }(), Fdl: func() (r struct{ Fdad Ush }) { 17681 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17682 return r 17683 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17684 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(36) 17685 return r 17686 }(), Fdl: func() (r struct{ Fdad Ush }) { 17687 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17688 return r 17689 }()}, 17690 {Ffc: func() (r struct{ Ffreq Ush }) { 17691 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(100) 17692 return r 17693 }(), Fdl: func() (r struct{ Fdad Ush }) { 17694 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17695 return r 17696 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17697 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 17698 return r 17699 }(), Fdl: func() (r struct{ Fdad Ush }) { 17700 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17701 return r 17702 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17703 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(84) 17704 return r 17705 }(), Fdl: func() (r struct{ Fdad Ush }) { 17706 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17707 return r 17708 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17709 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(52) 17710 return r 17711 }(), Fdl: func() (r struct{ Fdad Ush }) { 17712 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17713 return r 17714 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17715 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(116) 17716 return r 17717 }(), Fdl: func() (r struct{ Fdad Ush }) { 17718 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17719 return r 17720 }()}, 17721 {Ffc: func() (r struct{ Ffreq Ush }) { 17722 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 17723 return r 17724 }(), Fdl: func() (r struct{ Fdad Ush }) { 17725 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17726 return r 17727 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17728 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(131) 17729 return r 17730 }(), Fdl: func() (r struct{ Fdad Ush }) { 17731 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17732 return r 17733 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17734 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(67) 17735 return r 17736 }(), Fdl: func() (r struct{ Fdad Ush }) { 17737 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17738 return r 17739 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17740 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(195) 17741 return r 17742 }(), Fdl: func() (r struct{ Fdad Ush }) { 17743 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17744 return r 17745 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17746 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(35) 17747 return r 17748 }(), Fdl: func() (r struct{ Fdad Ush }) { 17749 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17750 return r 17751 }()}, 17752 {Ffc: func() (r struct{ Ffreq Ush }) { 17753 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(163) 17754 return r 17755 }(), Fdl: func() (r struct{ Fdad Ush }) { 17756 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17757 return r 17758 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17759 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(99) 17760 return r 17761 }(), Fdl: func() (r struct{ Fdad Ush }) { 17762 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17763 return r 17764 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17765 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(227) 17766 return r 17767 }(), Fdl: func() (r struct{ Fdad Ush }) { 17768 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17769 return r 17770 }()}} /* trees.h:3:21 */ 17771 17772 var static_dtree = [30]Ct_data{{Fdl: func() (r struct{ Fdad Ush }) { 17773 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17774 return r 17775 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17776 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 17777 return r 17778 }(), Fdl: func() (r struct{ Fdad Ush }) { 17779 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17780 return r 17781 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17782 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17783 return r 17784 }(), Fdl: func() (r struct{ Fdad Ush }) { 17785 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17786 return r 17787 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17788 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 17789 return r 17790 }(), Fdl: func() (r struct{ Fdad Ush }) { 17791 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17792 return r 17793 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17794 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 17795 return r 17796 }(), Fdl: func() (r struct{ Fdad Ush }) { 17797 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17798 return r 17799 }()}, 17800 {Ffc: func() (r struct{ Ffreq Ush }) { 17801 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 17802 return r 17803 }(), Fdl: func() (r struct{ Fdad Ush }) { 17804 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17805 return r 17806 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17807 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 17808 return r 17809 }(), Fdl: func() (r struct{ Fdad Ush }) { 17810 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17811 return r 17812 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17813 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 17814 return r 17815 }(), Fdl: func() (r struct{ Fdad Ush }) { 17816 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17817 return r 17818 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17819 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 17820 return r 17821 }(), Fdl: func() (r struct{ Fdad Ush }) { 17822 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17823 return r 17824 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17825 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 17826 return r 17827 }(), Fdl: func() (r struct{ Fdad Ush }) { 17828 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17829 return r 17830 }()}, 17831 {Ffc: func() (r struct{ Ffreq Ush }) { 17832 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 17833 return r 17834 }(), Fdl: func() (r struct{ Fdad Ush }) { 17835 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17836 return r 17837 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17838 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 17839 return r 17840 }(), Fdl: func() (r struct{ Fdad Ush }) { 17841 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17842 return r 17843 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17844 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 17845 return r 17846 }(), Fdl: func() (r struct{ Fdad Ush }) { 17847 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17848 return r 17849 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17850 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 17851 return r 17852 }(), Fdl: func() (r struct{ Fdad Ush }) { 17853 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17854 return r 17855 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17856 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 17857 return r 17858 }(), Fdl: func() (r struct{ Fdad Ush }) { 17859 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17860 return r 17861 }()}, 17862 {Ffc: func() (r struct{ Ffreq Ush }) { 17863 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 17864 return r 17865 }(), Fdl: func() (r struct{ Fdad Ush }) { 17866 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17867 return r 17868 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17869 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 17870 return r 17871 }(), Fdl: func() (r struct{ Fdad Ush }) { 17872 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17873 return r 17874 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17875 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 17876 return r 17877 }(), Fdl: func() (r struct{ Fdad Ush }) { 17878 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17879 return r 17880 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17881 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17882 return r 17883 }(), Fdl: func() (r struct{ Fdad Ush }) { 17884 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17885 return r 17886 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17887 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 17888 return r 17889 }(), Fdl: func() (r struct{ Fdad Ush }) { 17890 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17891 return r 17892 }()}, 17893 {Ffc: func() (r struct{ Ffreq Ush }) { 17894 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17895 return r 17896 }(), Fdl: func() (r struct{ Fdad Ush }) { 17897 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17898 return r 17899 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17900 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 17901 return r 17902 }(), Fdl: func() (r struct{ Fdad Ush }) { 17903 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17904 return r 17905 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17906 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 17907 return r 17908 }(), Fdl: func() (r struct{ Fdad Ush }) { 17909 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17910 return r 17911 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17912 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 17913 return r 17914 }(), Fdl: func() (r struct{ Fdad Ush }) { 17915 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17916 return r 17917 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17918 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 17919 return r 17920 }(), Fdl: func() (r struct{ Fdad Ush }) { 17921 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17922 return r 17923 }()}, 17924 {Ffc: func() (r struct{ Ffreq Ush }) { 17925 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 17926 return r 17927 }(), Fdl: func() (r struct{ Fdad Ush }) { 17928 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17929 return r 17930 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17931 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 17932 return r 17933 }(), Fdl: func() (r struct{ Fdad Ush }) { 17934 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17935 return r 17936 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17937 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 17938 return r 17939 }(), Fdl: func() (r struct{ Fdad Ush }) { 17940 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17941 return r 17942 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17943 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17944 return r 17945 }(), Fdl: func() (r struct{ Fdad Ush }) { 17946 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17947 return r 17948 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17949 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 17950 return r 17951 }(), Fdl: func() (r struct{ Fdad Ush }) { 17952 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17953 return r 17954 }()}} /* trees.h:64:21 */ 17955 17956 var X_dist_code = [512]Uch{ 17957 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), 17958 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), 17959 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), 17960 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), 17961 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), 17962 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), 17963 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), 17964 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), 17965 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), 17966 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), 17967 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), 17968 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), 17969 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), 17970 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), 17971 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), 17972 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), 17973 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), 17974 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), 17975 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), 17976 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), 17977 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), 17978 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), 17979 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), 17980 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), 17981 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), 17982 Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 17983 } /* trees.h:73:25 */ 17984 17985 var X_length_code = [256]Uch{ 17986 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), 17987 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), 17988 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), 17989 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), 17990 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), 17991 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), 17992 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), 17993 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), 17994 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), 17995 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), 17996 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), 17997 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), 17998 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), 17999 } /* trees.h:102:25 */ 18000 18001 var base_length = [29]int32{ 18002 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 18003 64, 80, 96, 112, 128, 160, 192, 224, 0, 18004 } /* trees.h:118:17 */ 18005 18006 var base_dist = [30]int32{ 18007 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 18008 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 18009 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 18010 } /* trees.h:123:17 */ 18011 18012 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 */ 18013 18014 var static_d_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Felems: D_CODES, Fmax_length: MAX_BITS} /* trees.c:128:31 */ 18015 18016 var static_bl_desc = Static_tree_desc{Fextra_bits: 0, Felems: BL_CODES, Fmax_length: MAX_BL_BITS} /* trees.c:131:31 */ 18017 18018 // Send a code of the given tree. c and tree must not have side effects 18019 18020 // =========================================================================== 18021 // Output a short LSB first on the stream. 18022 // IN assertion: there is enough room in pendingBuf. 18023 18024 // =========================================================================== 18025 // Send a value on a given number of bits. 18026 // IN assertion: length <= 16 and value fits in length bits. 18027 18028 // the arguments must not have side effects 18029 18030 // =========================================================================== 18031 // Initialize the various 'constant' tables. 18032 func tr_static_init(tls *libc.TLS) { /* trees.c:232:12: */ 18033 } 18034 18035 // =========================================================================== 18036 // Genererate the file trees.h describing the static trees. 18037 18038 // =========================================================================== 18039 // Initialize the tree data structures for a new zlib stream. 18040 func X_tr_init(tls *libc.TLS, s uintptr) { /* trees.c:379:20: */ 18041 tr_static_init(tls) 18042 18043 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fdyn_tree = s + 148 /* &.dyn_ltree */ 18044 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_l_desc)) 18045 18046 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fdyn_tree = s + 2440 /* &.dyn_dtree */ 18047 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_d_desc)) 18048 18049 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fdyn_tree = s + 2684 /* &.bl_tree */ 18050 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_bl_desc)) 18051 18052 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 18053 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 18054 18055 // Initialize the first block of the first file: 18056 init_block(tls, s) 18057 } 18058 18059 // =========================================================================== 18060 // Initialize a new block. 18061 func init_block(tls *libc.TLS, s uintptr) { /* trees.c:407:12: */ 18062 var n int32 // iterates over tree elements 18063 18064 // Initialize the trees. 18065 for n = 0; n < ((LITERALS + 1) + LENGTH_CODES); n++ { 18066 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 18067 } 18068 for n = 0; n < D_CODES; n++ { 18069 *(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 18070 } 18071 for n = 0; n < BL_CODES; n++ { 18072 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(n)*4 /* &.fc */)) = Ush(0) 18073 } 18074 18075 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 256*4 /* &.fc */)) = Ush(1) 18076 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len = libc.AssignPtrUint32(s+5804 /* &.static_len */, Ulg(0)) 18077 (*Deflate_state)(unsafe.Pointer(s)).Flast_lit = libc.AssignPtrUint32(s+5808 /* &.matches */, UInt(0)) 18078 } 18079 18080 // Index within the heap array of least frequent node in the Huffman tree 18081 18082 // =========================================================================== 18083 // Remove the smallest element from the heap and recreate the heap with 18084 // one less element. Updates heap and heap_len. 18085 18086 // =========================================================================== 18087 // Compares to subtrees, using the tree depth as tie breaker when 18088 // the subtrees have equal frequency. This minimizes the worst case length. 18089 18090 // =========================================================================== 18091 // Restore the heap property by moving down the tree starting at node k, 18092 // exchanging a node with the smallest of its two sons if necessary, stopping 18093 // when the heap property is re-established (each father smaller than its 18094 // two sons). 18095 func pqdownheap(tls *libc.TLS, s uintptr, tree uintptr, k int32) { /* trees.c:451:12: */ 18096 var v int32 = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4)) 18097 var j int32 = (k << 1) // left son of k 18098 for j <= (*Deflate_state)(unsafe.Pointer(s)).Fheap_len { 18099 // Set j to the smallest of the two sons: 18100 if (j < (*Deflate_state)(unsafe.Pointer(s)).Fheap_len) && ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))))) <= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4))))))))) { 18101 j++ 18102 } 18103 // Exit if v is smaller than both sons 18104 if (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.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 + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(v)))) <= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))))))) { 18105 break 18106 } 18107 18108 // Exchange v with the smallest son 18109 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)) 18110 k = j 18111 18112 // And continue down the tree, setting j to the left son of k 18113 j <<= 1 18114 } 18115 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4)) = v 18116 } 18117 18118 // =========================================================================== 18119 // Compute the optimal bit lengths for a tree and update the total bit length 18120 // for the current block. 18121 // IN assertion: the fields freq and dad are set, heap[heap_max] and 18122 // above are the tree nodes sorted by increasing frequency. 18123 // OUT assertions: the field len is set to the optimal bit length, the 18124 // array bl_count contains the frequencies for each bit length. 18125 // The length opt_len is updated; static_len is also updated if stree is 18126 // not null. 18127 func gen_bitlen(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:486:12: */ 18128 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 18129 var max_code int32 = (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code 18130 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 18131 var extra uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_bits 18132 var base int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_base 18133 var max_length int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fmax_length 18134 var h int32 // heap index 18135 var n int32 18136 var m int32 // iterate over the tree elements 18137 var bits int32 // bit length 18138 var xbits int32 // extra bits 18139 var f Ush // frequency 18140 var overflow int32 = 0 // number of elements with bit length too large 18141 18142 for bits = 0; bits <= MAX_BITS; bits++ { 18143 *(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2)) = Ush(0) 18144 } 18145 18146 // In a first pass, compute the optimal bit lengths (which may 18147 // overflow in the case of the bit length tree). 18148 *(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fheap_max)*4)))*4 + 2 /* &.dl */)) = Ush(0) // root of the heap 18149 18150 for h = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_max + 1); h < ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1); h++ { 18151 n = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(h)*4)) 18152 bits = (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))*4 + 2 /* &.dl */))) + 1) 18153 if bits > max_length { 18154 bits = max_length 18155 overflow++ 18156 } 18157 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(bits) 18158 // We overwrite tree[n].Dad which is no longer needed 18159 18160 if n > max_code { 18161 continue 18162 } // not a leaf node 18163 18164 *(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))++ 18165 xbits = 0 18166 if n >= base { 18167 xbits = *(*Intf)(unsafe.Pointer(extra + uintptr((n-base))*4)) 18168 } 18169 f = *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */)) 18170 *(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += (Ulg(f) * Ulg((uint32(bits + xbits)))) 18171 if stree != 0 { 18172 *(*Ulg)(unsafe.Pointer(s + 5804 /* &.static_len */)) += (Ulg(f) * Ulg((uint32(int32(*(*Ush)(unsafe.Pointer(stree + uintptr(n)*4 + 2 /* &.dl */))) + xbits)))) 18173 } 18174 } 18175 if overflow == 0 { 18176 return 18177 } 18178 18179 // This happens for example on obj2 and pic of the Calgary corpus 18180 18181 // Find the first bit length which could increase: 18182 for ok := true; ok; ok = (overflow > 0) { 18183 bits = (max_length - 1) 18184 for int32(*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))) == 0 { 18185 bits-- 18186 } 18187 *(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))-- // move one leaf down the tree 18188 *(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr((bits+1))*2)) += Ush((2)) // move one overflow item as its brother 18189 *(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(max_length)*2))-- 18190 // The brother of the overflow item also moves one step up, 18191 // but this does not affect bl_count[max_length] 18192 overflow = overflow - (2) 18193 } 18194 18195 // Now recompute all bit lengths, scanning in increasing frequency. 18196 // h is still equal to HEAP_SIZE. (It is simpler to reconstruct all 18197 // lengths instead of fixing only the wrong ones. This idea is taken 18198 // from 'ar' written by Haruhiko Okumura.) 18199 for bits = max_length; bits != 0; bits-- { 18200 n = int32(*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))) 18201 for n != 0 { 18202 m = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&h, 1))*4)) 18203 if m > max_code { 18204 continue 18205 } 18206 if uint32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */))) != uint32(bits) { 18207 18208 *(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += ((Ulg(bits) - Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)))) * Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */)))) 18209 *(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)) = Ush(bits) 18210 } 18211 n-- 18212 } 18213 } 18214 } 18215 18216 // =========================================================================== 18217 // Generate the codes for a given tree and bit counts (which need not be 18218 // optimal). 18219 // IN assertion: the array bl_count contains the bit length statistics for 18220 // the given tree and the field len is set for all tree elements. 18221 // OUT assertion: the field code is set for all tree elements of non 18222 // zero code length. 18223 func gen_codes(tls *libc.TLS, tree uintptr, max_code int32, bl_count uintptr) { /* trees.c:572:12: */ 18224 bp := tls.Alloc(32) 18225 defer tls.Free(32) 18226 18227 // var next_code [16]Ush at bp, 32 18228 // next code value for each bit length 18229 var code uint32 = uint32(0) // running code value 18230 var bits int32 // bit index 18231 var n int32 // code index 18232 18233 // The distribution counts are first used to generate the code values 18234 // without bit reversal. 18235 for bits = 1; bits <= MAX_BITS; bits++ { 18236 code = ((code + uint32(*(*Ushf)(unsafe.Pointer(bl_count + uintptr((bits-1))*2)))) << 1) 18237 *(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(bits)*2)) = Ush(code) 18238 } 18239 // Check that the bit counts in bl_count are consistent. The last code 18240 // must be all ones. 18241 18242 for n = 0; n <= max_code; n++ { 18243 var len int32 = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */))) 18244 if len == 0 { 18245 continue 18246 } 18247 // Now reverse the bits 18248 *(*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)) 18249 18250 } 18251 } 18252 18253 // =========================================================================== 18254 // Construct one Huffman tree and assigns the code bit strings and lengths. 18255 // Update the total bit length for the current block. 18256 // IN assertion: the field freq is set for all tree elements. 18257 // OUT assertions: the fields len and code are set to the optimal bit length 18258 // and corresponding code. The length opt_len is updated; static_len is 18259 // also updated if stree is not null. The field max_code is set. 18260 func build_tree(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:615:12: */ 18261 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 18262 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 18263 var elems int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Felems 18264 var n int32 18265 var m int32 // iterate over heap elements 18266 var max_code int32 = -1 // largest code with non zero frequency 18267 var node int32 // new node being created 18268 18269 // Construct the initial heap, with least frequent element in 18270 // heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. 18271 // heap[0] is not used. 18272 (*Deflate_state)(unsafe.Pointer(s)).Fheap_len = 0 18273 (*Deflate_state)(unsafe.Pointer(s)).Fheap_max = ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1) 18274 18275 for n = 0; n < elems; n++ { 18276 if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) != 0 { 18277 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4)) = libc.AssignInt32(&max_code, n) 18278 *(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n))) = Uch(0) 18279 } else { 18280 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(0) 18281 } 18282 } 18283 18284 // The pkzip format requires that at least one distance code exists, 18285 // and that at least one bit should be sent even if there is only one 18286 // possible code. So to avoid special checks later on we force at least 18287 // two codes of non zero frequency. 18288 for (*Deflate_state)(unsafe.Pointer(s)).Fheap_len < 2 { 18289 node = libc.AssignPtrInt32((s+2908 /* &.heap */)+uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4, func() int32 { 18290 if max_code < 2 { 18291 return libc.PreIncInt32(&max_code, 1) 18292 } 18293 return 0 18294 }()) 18295 *(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = Ush(1) 18296 *(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(node))) = Uch(0) 18297 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len-- 18298 if stree != 0 { 18299 *(*Ulg)(unsafe.Pointer(s + 5804 /* &.static_len */)) -= (Ulg(*(*Ush)(unsafe.Pointer(stree + uintptr(node)*4 + 2 /* &.dl */)))) 18300 } 18301 // node is 0 or 1 so it does not have extra bits 18302 } 18303 (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code = max_code 18304 18305 // The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, 18306 // establish sub-heaps of increasing lengths: 18307 for n = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len / 2); n >= 1; n-- { 18308 pqdownheap(tls, s, tree, n) 18309 } 18310 18311 // Construct the Huffman tree by repeatedly combining the least two 18312 // frequent nodes. 18313 node = elems // next internal node of the tree 18314 for ok := true; ok; ok = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len >= 2) { 18315 { 18316 n = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) 18317 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PostDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4)) 18318 pqdownheap(tls, s, tree, SMALLEST) 18319 } 18320 // n = node of least frequency 18321 m = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) // m = node of next least frequency 18322 18323 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = n // keep the nodes sorted by frequency 18324 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = m 18325 18326 // Create a new node father of n and m 18327 *(*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 */))))) 18328 *(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(node))) = (Uch((func() int32 { 18329 if int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n)))) >= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(m)))) { 18330 return int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n)))) 18331 } 18332 return int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(m)))) 18333 }()) + 1)) 18334 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = libc.AssignPtrUint16(tree+uintptr(m)*4+2 /* &.dl */ /* &.dad */, Ush(node)) 18335 // and insert the new node in the heap 18336 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) = libc.PostIncInt32(&node, 1) 18337 pqdownheap(tls, s, tree, SMALLEST) 18338 18339 } 18340 18341 *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) 18342 18343 // At this point, the fields freq and dad are set. We can now 18344 // generate the bit lengths. 18345 gen_bitlen(tls, s, desc) 18346 18347 // The field len is now set, we can generate the bit codes 18348 gen_codes(tls, tree, max_code, s+2876 /* &.bl_count */) 18349 } 18350 18351 // =========================================================================== 18352 // Scan a literal or distance tree to determine the frequencies of the codes 18353 // in the bit length tree. 18354 func scan_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:703:12: */ 18355 var n int32 // iterates over all tree elements 18356 var prevlen int32 = -1 // last emitted length 18357 var curlen int32 // length of current code 18358 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code 18359 var count int32 = 0 // repeat count of the current code 18360 var max_count int32 = 7 // max repeat count 18361 var min_count int32 = 4 // min repeat count 18362 18363 if nextlen == 0 { 18364 max_count = 138 18365 min_count = 3 18366 } 18367 *(*Ush)(unsafe.Pointer(tree + uintptr((max_code+1))*4 + 2 /* &.dl */)) = Ush(0xffff) // guard 18368 18369 for n = 0; n <= max_code; n++ { 18370 curlen = nextlen 18371 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */))) 18372 if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) { 18373 continue 18374 } else if count < min_count { 18375 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */ /* &.freq */)) += Ush((count)) 18376 } else if curlen != 0 { 18377 if curlen != prevlen { 18378 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))++ 18379 } 18380 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */))++ 18381 } else if count <= 10 { 18382 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */))++ 18383 } else { 18384 *(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */))++ 18385 } 18386 count = 0 18387 prevlen = curlen 18388 if nextlen == 0 { 18389 max_count = 138 18390 min_count = 3 18391 } else if curlen == nextlen { 18392 max_count = 6 18393 min_count = 3 18394 } else { 18395 max_count = 7 18396 min_count = 4 18397 } 18398 } 18399 } 18400 18401 // =========================================================================== 18402 // Send a literal or distance tree in compressed form, using the codes in 18403 // bl_tree. 18404 func send_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:748:12: */ 18405 var n int32 // iterates over all tree elements 18406 var prevlen int32 = -1 // last emitted length 18407 var curlen int32 // length of current code 18408 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code 18409 var count int32 = 0 // repeat count of the current code 18410 var max_count int32 = 7 // max repeat count 18411 var min_count int32 = 4 // min repeat count 18412 18413 /* tree[max_code+1].Len = -1; */ // guard already set 18414 if nextlen == 0 { 18415 max_count = 138 18416 min_count = 3 18417 } 18418 18419 for n = 0; n <= max_code; n++ { 18420 curlen = nextlen 18421 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */))) 18422 if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) { 18423 continue 18424 } else if count < min_count { 18425 for ok := true; ok; ok = (libc.PreDecInt32(&count, 1) != 0) { 18426 { 18427 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */))) 18428 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18429 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))) 18430 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18431 { 18432 { 18433 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18434 } 18435 { 18436 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18437 } 18438 18439 } 18440 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18441 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18442 } else { 18443 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18444 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18445 } 18446 } 18447 } 18448 18449 } else if curlen != 0 { 18450 if curlen != prevlen { 18451 { 18452 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */))) 18453 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18454 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))) 18455 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18456 { 18457 { 18458 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18459 } 18460 { 18461 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18462 } 18463 18464 } 18465 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18466 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18467 } else { 18468 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18469 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18470 } 18471 } 18472 count-- 18473 } 18474 18475 { 18476 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 + 2 /* &.dl */))) 18477 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18478 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */))) 18479 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18480 { 18481 { 18482 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18483 } 18484 { 18485 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18486 } 18487 18488 } 18489 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18490 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18491 } else { 18492 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18493 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18494 } 18495 } 18496 { 18497 var len int32 = 2 18498 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18499 var val int32 = (count - 3) 18500 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18501 { 18502 { 18503 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18504 } 18505 { 18506 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18507 } 18508 18509 } 18510 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18511 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18512 } else { 18513 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18514 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18515 } 18516 } 18517 18518 } else if count <= 10 { 18519 { 18520 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 + 2 /* &.dl */))) 18521 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18522 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */))) 18523 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18524 { 18525 { 18526 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18527 } 18528 { 18529 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18530 } 18531 18532 } 18533 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18534 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18535 } else { 18536 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18537 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18538 } 18539 } 18540 { 18541 var len int32 = 3 18542 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18543 var val int32 = (count - 3) 18544 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18545 { 18546 { 18547 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18548 } 18549 { 18550 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18551 } 18552 18553 } 18554 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18555 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18556 } else { 18557 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18558 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18559 } 18560 } 18561 18562 } else { 18563 { 18564 var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 + 2 /* &.dl */))) 18565 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18566 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */))) 18567 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18568 { 18569 { 18570 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18571 } 18572 { 18573 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18574 } 18575 18576 } 18577 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18578 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18579 } else { 18580 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18581 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18582 } 18583 } 18584 { 18585 var len int32 = 7 18586 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18587 var val int32 = (count - 11) 18588 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18589 { 18590 { 18591 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18592 } 18593 { 18594 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18595 } 18596 18597 } 18598 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18599 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18600 } else { 18601 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 11))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18602 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18603 } 18604 } 18605 18606 } 18607 count = 0 18608 prevlen = curlen 18609 if nextlen == 0 { 18610 max_count = 138 18611 min_count = 3 18612 } else if curlen == nextlen { 18613 max_count = 6 18614 min_count = 3 18615 } else { 18616 max_count = 7 18617 min_count = 4 18618 } 18619 } 18620 } 18621 18622 // =========================================================================== 18623 // Construct the Huffman tree for the bit lengths and return the index in 18624 // bl_order of the last bit length code to send. 18625 func build_bl_tree(tls *libc.TLS, s uintptr) int32 { /* trees.c:799:11: */ 18626 var max_blindex int32 // index of last bit length code of non zero freq 18627 18628 // Determine the bit length frequencies for literal and distance trees 18629 scan_tree(tls, s, s+148 /* &.dyn_ltree */, (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code) 18630 scan_tree(tls, s, s+2440 /* &.dyn_dtree */, (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code) 18631 18632 // Build the bit length tree: 18633 build_tree(tls, s, (s + 2864 /* &.bl_desc */)) 18634 // opt_len now includes the length of the tree representations, except 18635 // the lengths of the bit lengths codes and the 5+5+4 bits for the counts. 18636 18637 // Determine the number of bit length codes to send. The pkzip format 18638 // requires that at least 4 bit length codes be sent. (appnote.txt says 18639 // 3 but the actual value used is 4.) 18640 for max_blindex = (BL_CODES - 1); max_blindex >= 3; max_blindex-- { 18641 if int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[max_blindex])*4 + 2 /* &.dl */))) != 0 { 18642 break 18643 } 18644 } 18645 // Update opt_len to include the bit length tree and counts 18646 *(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += ((((Ulg(3) * (Ulg(max_blindex) + Ulg(1))) + Ulg(5)) + Ulg(5)) + Ulg(4)) 18647 18648 return max_blindex 18649 } 18650 18651 // =========================================================================== 18652 // Send the header for a block using dynamic Huffman trees: the counts, the 18653 // lengths of the bit length codes, the literal tree and the distance tree. 18654 // IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. 18655 func send_all_trees(tls *libc.TLS, s uintptr, lcodes int32, dcodes int32, blcodes int32) { /* trees.c:834:12: */ 18656 var rank int32 // index in bl_order 18657 18658 { 18659 var len int32 = 5 18660 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18661 var val int32 = (lcodes - 257) 18662 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18663 { 18664 { 18665 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18666 } 18667 { 18668 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18669 } 18670 18671 } 18672 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18673 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18674 } else { 18675 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(lcodes - 257))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18676 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18677 } 18678 } 18679 /* not +255 as stated in appnote.txt */ 18680 { 18681 var len int32 = 5 18682 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18683 var val int32 = (dcodes - 1) 18684 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18685 { 18686 { 18687 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18688 } 18689 { 18690 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18691 } 18692 18693 } 18694 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18695 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18696 } else { 18697 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(dcodes - 1))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18698 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18699 } 18700 } 18701 18702 { 18703 var len int32 = 4 18704 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18705 var val int32 = (blcodes - 4) 18706 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18707 { 18708 { 18709 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18710 } 18711 { 18712 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18713 } 18714 18715 } 18716 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18717 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18718 } else { 18719 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(blcodes - 4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18720 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18721 } 18722 } 18723 // not -3 as stated in appnote.txt 18724 for rank = 0; rank < blcodes; rank++ { 18725 18726 { 18727 var len int32 = 3 18728 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18729 var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */))) 18730 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18731 { 18732 { 18733 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18734 } 18735 { 18736 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18737 } 18738 18739 } 18740 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18741 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18742 } else { 18743 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18744 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18745 } 18746 } 18747 18748 } 18749 18750 send_tree(tls, s, s+148 /* &.dyn_ltree */, (lcodes - 1)) // literal tree 18751 18752 send_tree(tls, s, s+2440 /* &.dyn_dtree */, (dcodes - 1)) // distance tree 18753 18754 } 18755 18756 // =========================================================================== 18757 // Send a stored block 18758 func X_tr_stored_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:863:20: */ 18759 { 18760 var len int32 = 3 18761 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18762 var val int32 = ((int32(STORED_BLOCK) << 1) + last) 18763 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18764 { 18765 { 18766 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18767 } 18768 { 18769 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18770 } 18771 18772 } 18773 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18774 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18775 } else { 18776 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STORED_BLOCK) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18777 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18778 } 18779 } 18780 // send block type 18781 bi_windup(tls, s) /* align on byte boundary */ 18782 { 18783 { 18784 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(stored_len))) & 0xff)) 18785 } 18786 { 18787 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(stored_len))) >> 8)) 18788 } 18789 18790 } 18791 18792 { 18793 { 18794 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(^stored_len))) & 0xff)) 18795 } 18796 { 18797 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(^stored_len))) >> 8)) 18798 } 18799 18800 } 18801 18802 libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), buf, uint32(stored_len)) 18803 *(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) += (stored_len) 18804 } 18805 18806 // =========================================================================== 18807 // Flush the bits in the bit buffer to pending output (leaves at most 7 bits) 18808 func X_tr_flush_bits(tls *libc.TLS, s uintptr) { /* trees.c:886:20: */ 18809 bi_flush(tls, s) 18810 } 18811 18812 // =========================================================================== 18813 // Send one empty static block to give enough lookahead for inflate. 18814 // This takes 10 bits, of which 7 may remain in the bit buffer. 18815 func X_tr_align(tls *libc.TLS, s uintptr) { /* trees.c:896:20: */ 18816 { 18817 var len int32 = 3 18818 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18819 var val int32 = (int32(STATIC_TREES) << 1) 18820 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18821 { 18822 { 18823 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18824 } 18825 { 18826 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18827 } 18828 18829 } 18830 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18831 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18832 } else { 18833 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(int32((Ush(int32(STATIC_TREES) << 1)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18834 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18835 } 18836 } 18837 18838 { 18839 var len int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 + 2 /* &.dl */))) 18840 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18841 var val int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */))) 18842 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18843 { 18844 { 18845 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18846 } 18847 { 18848 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18849 } 18850 18851 } 18852 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18853 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18854 } else { 18855 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18856 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18857 } 18858 } 18859 18860 bi_flush(tls, s) 18861 } 18862 18863 // =========================================================================== 18864 // Determine the best encoding for the current block: dynamic trees, static 18865 // trees or store, and write out the encoded block. 18866 func X_tr_flush_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:911:20: */ 18867 var opt_lenb Ulg 18868 var static_lenb Ulg // opt_len and static_len in bytes 18869 var max_blindex int32 = 0 // index of last bit length code of non zero freq 18870 18871 // Build the Huffman trees unless a stored block is forced 18872 if (*Deflate_state)(unsafe.Pointer(s)).Flevel > 0 { 18873 18874 // Check if the file is binary or text 18875 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type == Z_UNKNOWN { 18876 (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type = detect_data_type(tls, s) 18877 } 18878 18879 // Construct the literal and distance trees 18880 build_tree(tls, s, (s + 2840 /* &.l_desc */)) 18881 18882 build_tree(tls, s, (s + 2852 /* &.d_desc */)) 18883 18884 // At this point, opt_len and static_len are the total bit lengths of 18885 // the compressed block data, excluding the tree representations. 18886 18887 // Build the bit length tree for the above two trees, and get the index 18888 // in bl_order of the last bit length code to send. 18889 max_blindex = build_bl_tree(tls, s) 18890 18891 // Determine the best encoding. Compute the block lengths in bytes. 18892 opt_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fopt_len + Ulg(3)) + Ulg(7)) >> 3) 18893 static_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fstatic_len + Ulg(3)) + Ulg(7)) >> 3) 18894 18895 if static_lenb <= opt_lenb { 18896 opt_lenb = static_lenb 18897 } 18898 18899 } else { 18900 18901 opt_lenb = libc.AssignUint32(&static_lenb, (stored_len + Ulg(5))) // force a stored block 18902 } 18903 18904 if ((stored_len + Ulg(4)) <= opt_lenb) && (buf != uintptr(0)) { 18905 // 4: two words for the lengths 18906 // The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. 18907 // Otherwise we can't have processed more than WSIZE input bytes since 18908 // the last block flush, because compression would have been 18909 // successful. If LIT_BUFSIZE <= WSIZE, it is never too late to 18910 // transform a block into a stored block. 18911 X_tr_stored_block(tls, s, buf, stored_len, last) 18912 18913 } else if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FIXED) || (static_lenb == opt_lenb) { 18914 { 18915 var len int32 = 3 18916 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18917 var val int32 = ((int32(STATIC_TREES) << 1) + last) 18918 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18919 { 18920 { 18921 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18922 } 18923 { 18924 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18925 } 18926 18927 } 18928 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18929 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18930 } else { 18931 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STATIC_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18932 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18933 } 18934 } 18935 18936 compress_block(tls, s, uintptr(uintptr(unsafe.Pointer(&static_ltree))), 18937 uintptr(uintptr(unsafe.Pointer(&static_dtree)))) 18938 } else { 18939 { 18940 var len int32 = 3 18941 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 18942 var val int32 = ((int32(DYN_TREES) << 1) + last) 18943 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18944 { 18945 { 18946 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 18947 } 18948 { 18949 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 18950 } 18951 18952 } 18953 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 18954 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 18955 } else { 18956 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(DYN_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18957 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 18958 } 18959 } 18960 18961 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), 18962 (max_blindex + 1)) 18963 compress_block(tls, s, s+148, /* &.dyn_ltree */ 18964 s+2440 /* &.dyn_dtree */) 18965 } 18966 18967 // The above check is made mod 2^32, for files larger than 512 MB 18968 // and uLong implemented on 32 bits. 18969 init_block(tls, s) 18970 18971 if last != 0 { 18972 bi_windup(tls, s) 18973 } 18974 18975 } 18976 18977 // =========================================================================== 18978 // Save the match info and tally the frequency counts. Return true if 18979 // the current block must be flushed. 18980 func X_tr_tally(tls *libc.TLS, s uintptr, dist uint32, lc uint32) int32 { /* trees.c:1014:19: */ 18981 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ush(dist) 18982 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = Uch(lc) 18983 if dist == uint32(0) { 18984 // lc is the unmatched char 18985 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(lc)*4 /* &.fc */))++ 18986 } else { 18987 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 18988 // Here, lc is the match length - MIN_MATCH 18989 dist-- // dist = match distance - 1 18990 18991 *(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[lc])+LITERALS)+1))*4 /* &.fc */))++ 18992 *(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 { 18993 if (dist) < uint32(256) { 18994 return int32(X_dist_code[dist]) 18995 } 18996 return int32(X_dist_code[(uint32(256) + ((dist) >> 7))]) 18997 }()))*4 /* &.fc */))++ 18998 } 18999 19000 return (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1)))) 19001 // We avoid equality with lit_bufsize because of wraparound at 64K 19002 // on 16 bit machines and because stored blocks are restricted to 19003 // 64K-1 bytes. 19004 } 19005 19006 // =========================================================================== 19007 // Send the block data compressed using the given Huffman trees 19008 func compress_block(tls *libc.TLS, s uintptr, ltree uintptr, dtree uintptr) { /* trees.c:1064:12: */ 19009 var dist uint32 // distance of matched string 19010 var lc int32 // match length or unmatched char (if dist == 0) 19011 var lx uint32 = uint32(0) // running index in l_buf 19012 var code uint32 // the code to send 19013 var extra int32 // number of extra bits to send 19014 19015 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != UInt(0) { 19016 for ok := true; ok; ok = (lx < (*Deflate_state)(unsafe.Pointer(s)).Flast_lit) { 19017 dist = uint32(*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr(lx)*2))) 19018 lc = int32(*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&lx, 1))))) 19019 if dist == uint32(0) { 19020 { 19021 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 + 2 /* &.dl */))) 19022 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19023 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */))) 19024 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19025 { 19026 { 19027 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19028 } 19029 { 19030 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19031 } 19032 19033 } 19034 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19035 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19036 } else { 19037 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19038 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19039 } 19040 } 19041 // send a literal byte 19042 19043 } else { 19044 // Here, lc is the match length - MIN_MATCH 19045 code = uint32(X_length_code[lc]) 19046 { 19047 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 + 2 /* &.dl */))) 19048 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19049 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */))) 19050 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19051 { 19052 { 19053 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19054 } 19055 { 19056 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19057 } 19058 19059 } 19060 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19061 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19062 } else { 19063 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19064 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19065 } 19066 } 19067 // send the length code 19068 extra = extra_lbits[code] 19069 if extra != 0 { 19070 lc = lc - (base_length[code]) 19071 { 19072 var len int32 = extra 19073 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19074 var val int32 = lc 19075 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19076 { 19077 { 19078 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19079 } 19080 { 19081 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19082 } 19083 19084 } 19085 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19086 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19087 } else { 19088 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(lc))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19089 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19090 } 19091 } 19092 // send the extra length bits 19093 } 19094 dist-- // dist is now the match distance - 1 19095 code = func() uint32 { 19096 if (dist) < uint32(256) { 19097 return uint32(X_dist_code[dist]) 19098 } 19099 return uint32(X_dist_code[(uint32(256) + ((dist) >> 7))]) 19100 }() 19101 19102 { 19103 var len int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 + 2 /* &.dl */))) 19104 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19105 var val int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */))) 19106 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19107 { 19108 { 19109 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19110 } 19111 { 19112 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19113 } 19114 19115 } 19116 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19117 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19118 } else { 19119 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19120 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19121 } 19122 } 19123 // send the distance code 19124 extra = extra_dbits[code] 19125 if extra != 0 { 19126 dist = dist - (uint32(base_dist[code])) 19127 { 19128 var len int32 = extra 19129 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19130 var val int32 = int32(dist) 19131 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19132 { 19133 { 19134 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19135 } 19136 { 19137 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19138 } 19139 19140 } 19141 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19142 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19143 } else { 19144 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(dist))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19145 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19146 } 19147 } 19148 // send the extra distance bits 19149 } 19150 } // literal or match pair ? 19151 19152 // Check that the overlay between pending_buf and d_buf+l_buf is ok: 19153 19154 } 19155 } 19156 19157 { 19158 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 + 2 /* &.dl */))) 19159 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) { 19160 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */))) 19161 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19162 { 19163 { 19164 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19165 } 19166 { 19167 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19168 } 19169 19170 } 19171 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 19172 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size) 19173 } else { 19174 *(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19175 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len) 19176 } 19177 } 19178 19179 } 19180 19181 // =========================================================================== 19182 // Check if the data type is TEXT or BINARY, using the following algorithm: 19183 // - TEXT if the two conditions below are satisfied: 19184 // a) There are no non-portable control characters belonging to the 19185 // "black list" (0..6, 14..25, 28..31). 19186 // b) There is at least one printable character belonging to the 19187 // "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). 19188 // - BINARY otherwise. 19189 // - The following partially-portable control characters form a 19190 // "gray list" that is ignored in this detection algorithm: 19191 // (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). 19192 // IN assertion: the fields Freq of dyn_ltree are set. 19193 func detect_data_type(tls *libc.TLS, s uintptr) int32 { /* trees.c:1124:11: */ 19194 // black_mask is the bit mask of black-listed bytes 19195 // set bits 0..6, 14..25, and 28..31 19196 // 0xf3ffc07f = binary 11110011111111111100000001111111 19197 var black_mask uint32 = 0xf3ffc07f 19198 var n int32 19199 19200 // Check for non-textual ("black-listed") bytes. 19201 n = 0 19202 __1: 19203 if !(n <= 31) { 19204 goto __3 19205 } 19206 if ((black_mask & uint32(1)) != 0) && (int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0) { 19207 return Z_BINARY 19208 } 19209 goto __2 19210 __2: 19211 n++ 19212 black_mask >>= 1 19213 goto __1 19214 goto __3 19215 __3: 19216 ; 19217 19218 // Check for textual ("white-listed") bytes. 19219 if ((int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 9*4 /* &.fc */))) != 0) || (int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 10*4 /* &.fc */))) != 0)) || 19220 (int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 13*4 /* &.fc */))) != 0) { 19221 return Z_TEXT 19222 } 19223 for n = 32; n < LITERALS; n++ { 19224 if int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0 { 19225 return Z_TEXT 19226 } 19227 } 19228 19229 // There are no "black-listed" or "white-listed" bytes: 19230 // this stream either is empty or has tolerated ("gray-listed") bytes only. 19231 return Z_BINARY 19232 } 19233 19234 // =========================================================================== 19235 // Reverse the first len bits of a code, using straightforward code (a faster 19236 // method would use a table) 19237 // IN assertion: 1 <= len <= 15 19238 func bi_reverse(tls *libc.TLS, code uint32, len int32) uint32 { /* trees.c:1158:16: */ 19239 var res uint32 = uint32(0) 19240 for ok := true; ok; ok = (libc.PreDecInt32(&len, 1) > 0) { 19241 res = res | (code & uint32(1)) 19242 code >>= 1 19243 res <<= 1 19244 } 19245 return (res >> 1) 19246 } 19247 19248 // =========================================================================== 19249 // Flush the bit buffer, keeping at most 7 bits in it. 19250 func bi_flush(tls *libc.TLS, s uintptr) { /* trees.c:1173:12: */ 19251 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid == 16 { 19252 { 19253 { 19254 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19255 } 19256 { 19257 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19258 } 19259 19260 } 19261 19262 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 19263 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 19264 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid >= 8 { 19265 { 19266 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 19267 } 19268 19269 libc.AssignShrPtrUint16(s+5816 /* &.bi_buf */, int(8)) 19270 *(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) -= (8) 19271 } 19272 } 19273 19274 // =========================================================================== 19275 // Flush the bit buffer and align the output on a byte boundary 19276 func bi_windup(tls *libc.TLS, s uintptr) { /* trees.c:1190:12: */ 19277 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 8 { 19278 { 19279 { 19280 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff)) 19281 } 19282 { 19283 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8)) 19284 } 19285 19286 } 19287 19288 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 0 { 19289 { 19290 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 19291 } 19292 19293 } 19294 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 19295 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 19296 } 19297 19298 // =========================================================================== 19299 // Decompresses the source buffer into the destination buffer. *sourceLen is 19300 // the byte length of the source buffer. Upon entry, *destLen is the total size 19301 // of the destination buffer, which must be large enough to hold the entire 19302 // uncompressed data. (The size of the uncompressed data must have been saved 19303 // previously by the compressor and transmitted to the decompressor by some 19304 // mechanism outside the scope of this compression library.) Upon exit, 19305 // *destLen is the size of the decompressed data and *sourceLen is the number 19306 // of source bytes consumed. Upon return, source + *sourceLen points to the 19307 // first unused input byte. 19308 // 19309 // uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough 19310 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, or 19311 // Z_DATA_ERROR if the input data was corrupted, including if the input data is 19312 // an incomplete zlib stream. 19313 func Xuncompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen uintptr) int32 { /* uncompr.c:27:13: */ 19314 bp := tls.Alloc(60) 19315 defer tls.Free(60) 19316 19317 // var stream Z_stream at bp+4, 56 19318 19319 var err int32 19320 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 19321 var len ULong 19322 var left ULong 19323 // var buf [1]Byte at bp, 1 19324 // for detection of incomplete stream when *destLen == 0 19325 19326 len = *(*ULong)(unsafe.Pointer(sourceLen)) 19327 if *(*ULongf)(unsafe.Pointer(destLen)) != 0 { 19328 left = *(*ULongf)(unsafe.Pointer(destLen)) 19329 *(*ULongf)(unsafe.Pointer(destLen)) = ULongf(0) 19330 } else { 19331 left = ULong(1) 19332 dest = bp /* &buf[0] */ 19333 } 19334 19335 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fnext_in = source 19336 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in = UInt(0) 19337 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fzalloc = uintptr(0) 19338 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fzfree = uintptr(0) 19339 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fopaque = uintptr(0) 19340 19341 err = XinflateInit_(tls, bp+4 /* &stream */, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) 19342 if err != Z_OK { 19343 return err 19344 } 19345 19346 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fnext_out = dest 19347 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out = UInt(0) 19348 19349 for ok := true; ok; ok = (err == Z_OK) { 19350 if (*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_out == UInt(0) { 19351 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out = func() uint32 { 19352 if left > ULong(max) { 19353 return max 19354 } 19355 return UInt(left) 19356 }() 19357 left = left - (ULong((*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out)) 19358 } 19359 if (*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_in == UInt(0) { 19360 (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in = func() uint32 { 19361 if len > ULong(max) { 19362 return max 19363 } 19364 return UInt(len) 19365 }() 19366 len = len - (ULong((*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in)) 19367 } 19368 err = Xinflate(tls, bp+4 /* &stream */, Z_NO_FLUSH) 19369 } 19370 19371 *(*ULong)(unsafe.Pointer(sourceLen)) -= (len + ULong((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_in)) 19372 if dest != bp /* buf */ { 19373 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Ftotal_out 19374 } else if ((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Ftotal_out != 0) && (err == (-5)) { 19375 left = ULong(1) 19376 } 19377 19378 XinflateEnd(tls, bp+4 /* &stream */) 19379 if err == Z_STREAM_END { 19380 return Z_OK 19381 } 19382 if err == Z_NEED_DICT { 19383 return -3 19384 } 19385 if (err == (-5)) && ((left + ULong((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_out)) != 0) { 19386 return -3 19387 } 19388 return err 19389 } 19390 19391 func Xuncompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* uncompr.c:86:13: */ 19392 bp := tls.Alloc(4) 19393 defer tls.Free(4) 19394 *(*ULong)(unsafe.Pointer(bp)) = sourceLen 19395 19396 return Xuncompress2(tls, dest, destLen, source, bp /* &sourceLen */) 19397 } 19398 19399 // These macros are used by bits/stdio.h and internal headers. 19400 19401 // Many more flag bits are defined internally. 19402 19403 // The type of the second argument to `fgetpos' and `fsetpos'. 19404 type Fpos_t1 = X__fpos64_t /* stdio.h:86:20 */ 19405 19406 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 19407 // value -- needed when comparing unsigned to z_off64_t, which is signed 19408 // (possible z_off64_t types off_t, off64_t, and long are all signed) 19409 19410 var Xz_errmsg = [10]uintptr{ 19411 uintptr(ts + 876 /* "need dictionary" */), // Z_NEED_DICT 2 19412 uintptr(ts + 892 /* "stream end" */), // Z_STREAM_END 1 19413 uintptr(ts + 101 /* "" */), // Z_OK 0 19414 uintptr(ts + 903 /* "file error" */), // Z_ERRNO (-1) 19415 uintptr(ts + 914 /* "stream error" */), // Z_STREAM_ERROR (-2) 19416 uintptr(ts + 927 /* "data error" */), // Z_DATA_ERROR (-3) 19417 uintptr(ts + 938 /* "insufficient mem..." */), // Z_MEM_ERROR (-4) 19418 uintptr(ts + 958 /* "buffer error" */), // Z_BUF_ERROR (-5) 19419 uintptr(ts + 971 /* "incompatible ver..." */), // Z_VERSION_ERROR (-6) 19420 uintptr(ts + 101 /* "" */), 19421 } /* zutil.c:13:14 */ 19422 19423 func XzlibVersion(tls *libc.TLS) uintptr { /* zutil.c:27:12: */ 19424 return ts /* "1.2.11" */ 19425 } 19426 19427 func XzlibCompileFlags(tls *libc.TLS) ULong { /* zutil.c:32:15: */ 19428 var flags ULong 19429 19430 flags = ULong(0) 19431 switch int32(unsafe.Sizeof(UInt(0))) { 19432 case 2: 19433 break 19434 case 4: 19435 flags = flags + (ULong(1)) 19436 break 19437 case 8: 19438 flags = flags + (ULong(2)) 19439 break 19440 default: 19441 flags = flags + (ULong(3)) 19442 } 19443 switch int32(unsafe.Sizeof(ULong(0))) { 19444 case 2: 19445 break 19446 case 4: 19447 flags = flags + (ULong(int32(1) << 2)) 19448 break 19449 case 8: 19450 flags = flags + (ULong(int32(2) << 2)) 19451 break 19452 default: 19453 flags = flags + (ULong(int32(3) << 2)) 19454 } 19455 switch int32(unsafe.Sizeof(Voidpf(0))) { 19456 case 2: 19457 break 19458 case 4: 19459 flags = flags + (ULong(int32(1) << 4)) 19460 break 19461 case 8: 19462 flags = flags + (ULong(int32(2) << 4)) 19463 break 19464 default: 19465 flags = flags + (ULong(int32(3) << 4)) 19466 } 19467 switch int32(unsafe.Sizeof(Off_t2(0))) { 19468 case 2: 19469 break 19470 case 4: 19471 flags = flags + (ULong(int32(1) << 6)) 19472 break 19473 case 8: 19474 flags = flags + (ULong(int32(2) << 6)) 19475 break 19476 default: 19477 flags = flags + (ULong(int32(3) << 6)) 19478 } 19479 return flags 19480 } 19481 19482 // exported to allow conversion of error code to string for compress() and 19483 // uncompress() 19484 func XzError(tls *libc.TLS, err int32) uintptr { /* zutil.c:133:12: */ 19485 return Xz_errmsg[(Z_NEED_DICT - (err))] 19486 } 19487 19488 func Xzcalloc(tls *libc.TLS, opaque Voidpf, items uint32, size uint32) Voidpf { /* zutil.c:305:22: */ 19489 _ = opaque 19490 if uint32(unsafe.Sizeof(UInt(0))) > uint32(2) { 19491 return libc.Xmalloc(tls, (items * size)) 19492 } 19493 return libc.Xcalloc(tls, items, size) 19494 } 19495 19496 func Xzcfree(tls *libc.TLS, opaque Voidpf, ptr Voidpf) { /* zutil.c:315:20: */ 19497 _ = opaque 19498 libc.Xfree(tls, ptr) 19499 } 19500 19501 func init() { 19502 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 8 /* .func */)) = deflate_stored // deflate.c:136:29: 19503 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 20 /* .func */)) = deflate_fast // deflate.c:137:29: 19504 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 32 /* .func */)) = deflate_fast // deflate.c:138:29: 19505 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 44 /* .func */)) = deflate_fast // deflate.c:139:29: 19506 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 56 /* .func */)) = deflate_slow // deflate.c:141:29: 19507 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 68 /* .func */)) = deflate_slow // deflate.c:142:29: 19508 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 80 /* .func */)) = deflate_slow // deflate.c:143:29: 19509 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 92 /* .func */)) = deflate_slow // deflate.c:144:29: 19510 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 104 /* .func */)) = deflate_slow // deflate.c:145:30: 19511 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 116 /* .func */)) = deflate_slow // deflate.c:146:30: 19512 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_bl_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_blbits)) // trees.c:132:22: 19513 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_dtree)) // trees.c:129:2: 19514 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_dbits)) // trees.c:129:16: 19515 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_ltree)) // trees.c:126:2: 19516 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_lbits)) // trees.c:126:16: 19517 } 19518 19519 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" 19520 var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data